Sendmail で Submission ポートでのメール送信を可能にする (CentOS 5.5)
Sendmail で Submission ポートを有効化する
SPAM メールの氾濫によって、平成 22 年 10 月 28 日現在、ほとんどのプロバイダーで OP25B (Outbound Port 25 Blocking) という対策が行われています。
これは、メールを相手に届けるために使用する 25/TCP ポートの自由な使用をプロバイダーによって制限するというやり方で、これにより直接メールサーバーとやり取りが制限されるため、どこかのメールサーバーを経由しないメール送信は原則禁止となっています。
メールサーバーは以前は、メールの送信をお願いするメールサーバーと、そのメールを最終的に受け取るメールサーバーとが、両方とも 25/TCP を利用していた経緯があり、登録されているユーザーからの送信要求と不特定多数からの受け取りとを上手く区別して処理することが難しいという事情がありました。
そこで、メールの受け取りを従来通りの 25/TCP で行って、送信要求は Submission と呼ばれる 587/TCP を利用するよう、これらを明確に区別することにより、予期しないユーザーからの SPAM メールの送信元とされないような対策が取られていった感じです。
OP25B についても、迷惑メールの拡散を防止するという効果もありますが、こういった対策の一環として採用された対策なのではないかと思います。
このようないきさつから、従前どおりの 25/TCP でのメール送信だけでは対応しきれない環境が出てくることが予想されるので、円滑に利用できるようにするために Submission ポートを有効化して置こうと思います。
そのためには、"/etc/mail/sendmail.mc" で、次の行を設定します。
DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
CentOS 5.5 ではコメントアウトされた状態で上記設定が記載されているようでしたので、先頭の "dnl " を削除して有効化しました。
また、Submission によるメール送信の場合には、併せて SMTP-AUTH 認証も有効にする必要があります。
Sendmail で SMTP-AUTH を利用するためには、SASL (Simple Authentication and Security Layer) というパッケージが必要となりますので、必要に応じて次のようにして、SASL に関するパッケージをインストールしておきます。
yum install cyrus-sasl cyrus-sasl-md5
その上で "/etc/mail/sendmail.mc" で、次のように設定をします。
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
こちらも CentOS 5.5 ではコメントアウトされた状態で上記設定が記載されているようでしたので、先頭の "dnl " を削除して有効化しました。
これらの設定が終わったら、次のようにして設定を反映します。
make sendmail.cf
make restart
また、SMTP-AUTH による認証を行うにあたって SASL が動作している必要があるので、起動していないようなら、次のようにして SASL の起動をしておきます。
service saslauthd start
chkconfig saslauthd on
これで Submission (587/TCP) によるメール送信ができるようになりました。
外部へメール送信する際には SMTP-AUTH による認証が必要になります。その際に使用するユーザー名とパスワードは Linux に登録されているユーザアカウントを使用して認証を行う感じになります。