株式会社イプリオ
代表取締役
石田卓也
2006年3月
1. 背景と概要
2. 設定
2.1. 必要な環境
2.2. 標準の587番ポートを使用する設定を変更
2.3. 新たに、587番ポートを認証付きで使用する設定を追加
2.4. 適用したsendmail.mcの例
2.5. 設定の確認
3. 注意事項
3.1. MSPが587番ポートを利用する場合
1. 背景と概要
いくつかのISPなどにおいて、そのネットワーク外部に位置するホストの25番ポートへの接続を規制する「Outbound Port25 Blocking(OP25B)」が始まっています。それに伴い、ISPなどのメールサーバに、「Message Submission (TCP 587番ポート)」を新たにメール送信(投稿)用のポートとして開放することが求められるようになりました。
広くメール送信用のサーバとして使われている「Sendmail」では、最近のバージョンにおいて、標準のインストールをすることで、587番ポートが利用できるようになっています。このことは、通常のバージョンアップにおいて行われるため、管理者が気づいていないこともあるようです。
投稿する際に使用するポートを25番から587番に変更する意味は、単にポート番号を変更するだけではなく、メールサーバ、ことにISPやホスティング事業者などに使われているものについて、ウィルスに冒されたり(ボットなどにより)外部から操られている状態のパソコンなどが送信する大量の迷惑メールを送信できなくするため、IPアドレスだけでなくユーザIDなどの情報で送信を遮断することができるようにすることにあります。
しかし、現在のSendmailの標準設定は、25番ポートと同じアクセス制限を施す内容になっており、標準で/etc/mail/accessに置かれるアクセス制御ファイルで開放されているIPアドレスに関しては、送信者のIDなどを特定することなしに投稿を行うことができてしまいます。本稿は、587 番ポートを使った送信に関しては、アクセス制御ファイルの内容にかかわらず、「SMTP AUTH」を用いて送信者の認証を行うように変更する設定を説明します。
2. 設定
2.1. 必要な環境
本稿は、Sendmailの現時点での最新の環境(8.13.6)を想定して記述されています。8.12系などでも同じ内容が使用できると思いますが、読み替えが必要になることもあります。また、基本的に、Sendmail付属のcfツールを使用して設定をするものとします。
2.2. 標準の587番ポートを使用する設定を変更
標準の設定では、25番ポートとほぼ同じ設定で587番ポートをバインドするようになっているため、これを停止する設定を、sendmail.mcに記述します。
FEATURE(`no_default_msa') |
これで、sendmail.cfの下記の行が削除されます。
O DaemonPortOptions=Port=587, Name=MSA, M=E |
2.3. 新たに、587番ポートを認証付きで使用する設定を追加
587番ポートを認証が必須の状態でバインドする設定を追加します。Mの値に、“aE”を設定します(“a”はESMTPでの認証を必須とする指定、“E”はETRNコマンドを禁止する指定です)。
DAEMON_OPTIONS(`Port=587, Name=MSA, M=aE') |
これで、sendmail.cfに下記の行が追加されます。
O DaemonPortOptions=Port=587, Name=MSA, M=aE |
2.4. 適用したsendmail.mcの例
OSTYPE(`solaris8')dnl DOMAIN(`generic')dnl FEATURE(`access_db')dnl FEATURE(`no_default_msa')dnl MAILER(`local')dnl MAILER(`smtp')dnl define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl define(`confPRIVACY_FLAGS', `goaway')dnl DAEMON_OPTIONS(`Port=smtp, Name=MTA, Family=inet')dnl DAEMON_OPTIONS(`Port=587, Name=MSA, M=aE')dnl TRUST_AUTH_MECH(`LOGIN PLAIN')dnl |
2.5. 設定の確認
sendmail.cfを作成し、sendmailを再起動し、ポートに接続して確認します(下記は接続例です)。
% telnet localhost 587 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mail.example.jp ESMTP Sendmail 8.13.6/8.13.6; Mon, 27 Mar 2006 01:50:45 +0900 (JST) EHLO localhost.example.jp 250-mail.example.jp Hello localhost [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-AUTH LOGIN PLAIN 250-DELIVERBY 250 HELP MAIL From:<nobody@example.jp> 530 5.7.0 Authentication required ← 認証が必要と言われます |
25番ポートにも同様に接続し、認証が必要ないことを確認します。
3. 注意事項
3.1. MSPが587番ポートを利用する場合
標準では、MSP(Mail Submission Program – ローカルホストからからメールを送るプログラム)は25番ポートに投稿しますが、例えば、submit.mc に下記のように書いてある場合、MSP(Mail Submission Program)は投稿用にローカルホストの587番ポートを使用します。
FEATURE(`msp', `[127.0.0.1]', MSA) |
587番ポートでは、ローカルホストからの投稿であっても認証が必要ですので、配送に失敗します。標準の25番ポートを使用するか、あるいは配送用にパスワードを準備することが必要です。
FEATURE(`authinfo', `DATABASE_MAP_TYPE /etc/mail/msp-authinfo') |
などのようにして、パスワードを記述したファイルを使用します。