|
今まで、メールの配送にはポート番号として25番が使われてきた。ゾンビ
(ボットネット) やウイルス感染の広がりにより、ISPはこのポート25番を使えなくする対策をとり始めている。その代わりに提供しようとしているのが、投稿用のポート587番+ユーザ認証(SMTP認証)である。まずは、この投稿用ポートの設定について解説する。
sendmailが利用するポート番号は、sendmail.cfのオプションDaemonPortOptionsで指定する。M4マクロ設定ファイル(.mc
ファイル)ではDAEMON_OPTIONSだ。通常、何も指定しない場合は、以下を指定した場合と同じ設定となる。
DAEMON_OPTIONS(`Name=MTA')
DAEMON_OPTIONS(`Port=587, Name=MSA, M=E')
DaemonPortOptionsでは、いくつかのパラメータが設定可能で、そのうちポート番号を示すものが“Portパラメータ”だ。Portパラメータの指定を省略した場合は
“smtp”(25番)となる。上の例の一行目ではポート25番の設定を、2行目は、投稿用ポート(Message Submission Agent)の設定をしていることになる。
sendmailでは、バージョン8.10から、メール配送用のポート25番と投稿用のポート587が標準で設定されるようになった。逆に投稿用ポートを使わないような設定や、投稿用ポートの設定パラメータを変更する場合は“no_default_msa機能”の追加が必要だ。
FEATURE(`no_default_msa')
たとえば、投稿用ポートではSMTP認証必須にする、という場合にはパラメータの変更が必要となるので、上記no_default_msaの追加設定を行ない、DAEMON_OPTIONSの再設定を行なう必要がある。
SMTP認証(SMTP Authentication)は、RFC2554でSMTPに追加された拡張機能だ。受信したメールを取り出すためのPOPやIMAPでは、操作の前に必ずユーザ認証が必要だが、メール投稿にはMTA間のメール配送と同じSMTPを使っているため、もともと認証機構は備わっていなかった。
SMTPには標準で認証機構がなかったため、以前は誰でもメールが送信できてしまう“open relay”の問題なども発生した。現在ではsendmailが標準で投稿を制限するようにしており、投稿を可能にするための条件に以下を設定する場合が多い。
- 自組織内のIPアドレスから接続した場合は投稿可能
- 投稿の前に、POPによるユーザ認証を行なわせ、POP認証が通った接続元からの投稿を可能にする「POP
before SMTP」
SMTP認証は、こういったIPアドレスやPOPなどの外部要因を利用せず、SMTP単体でユーザ認証を可能にする技術だ。
SMTP認証が利用可能かどうかは、SMTPのEHLOコマンドの応答から判断できる。以下の例では、2行目以降がメールサーバからの応答で、7行目がSMTP認証をサポートしていることを示している。
EHLO example.jp
250-mbox00.iij4u.or.jp Hello example.jp [xxx.xxx.xxx.xxx], pleased to meet
you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 10485760
250-AUTH PLAIN LOGIN CRAM-MD5
250-STARTTLS
250 HELP
7行目の“250-AUTH”に続く“PLAIN”と“LOGIN”、“CRAM-MD5”などがユーザ認証を行なうための機構(メカニズム)の種類である。ユーザ認証には、ユーザを区別する認証IDと、それに対応するパスワードによって行なわれるが、このやりとりの方法を定めたものが認証機構だ。
PLAINとLOGINは手順は異なるものの、いずれもパスワードが生のままやりとりされる(実際には多少わかりづらくさせているが)。CRAM-MD5は、メールサーバからチャレンジと呼ばれるランダムな文字列を受け取り、それを使って加工した文字列をパスワードの代わりに交換し合う。SSLやTLSなどで別途通信路を暗号化しないのであれば、CRAM-MD5などの生パスワードが流れない機構を使うべきだろう。ほかに安全な機構としてはDIGEST-MD5などがある。
MUAによっては、SMTP認証をサポートしていない場合や、使える認証機構が限られていることがある。メールサーバでSMTP認証を導入する前に、利用者の環境を調べておくことも重要だ。
|