Outbound port 25 Blocking対応


近頃ISPではOutbound port 25 Blocking(OP25B)を導入してスパムメールやウィルスメールに対策に乗り出しています。
これはその名の通り25番ポートをブロックすることを意味します。

ISPが用意したメールサーバーを使用する場合には影響はありませんが、自宅にSMTPサーバーを設置して外部とやり取りしている場合には、25番ポート使った外部との通信がブロックされているためメールが送信できなくなります。以下その対策です。

OP25Bを導入されるとmail.logは以下のようなログになり、25番ポートを使った外部との通信が遮断されています。

Mar 13 21:40:41 localhost postfix/smtp[2120]: 1AB922FD5: to=<hogehoge@hoge.com>, relay=none, delay=1893, status=deferred (connect to mail.hoge.com[XXX.XXX.XXX.XXX]: No route to host)
Mar 13 22:14:10 localhost postfix/smtp[2213]: connect to mail.hoge.com[XXX.XXX.XXX.XXX]: No route to host (port 25)
Mar 13 22:14:10 localhost postfix/smtp[2213]: connect to mail.hoge.com[XXX.XXX.XXX.XXX]: No route tohost (port 25)
Mar 13 22:14:13 localhost postfix/smtp[2213]: connect to mail.hoge.com[XXX.XXX.XXX.XXX]: No route to host (port 25)

Submission Port

多くのISPではOP25Pの代替としてSubmission Portの利用を進めています。

従来は、メールの投稿(クライアントからメールサーバへの送信)と配送(メールサーバ間のやり取り)には、どちらも25番ポートを利用することになっていましたが、これを分離して、25番ポートはメールの配送専用とし、メールの投稿は新たに587番ポートを利用することとなりました。

このようにメールの投稿と配送を分けるのは、近年増加している迷惑メールに対する対策のためです。

OP25B(Outbound Port 25 Blocking)は、迷惑メール対策の一つですが、プロバイダー(ISP)がOP25Bを導入しただけでは、他のプロバイダー経由のメールが一切送信できなくなり、利用者にとってはかえって不便になります。
そこで、正規の利用者だけはメールを送信できるようにするために、メール投稿用の587番ポートが設けられました。

このポートは、SMTP認証を用いることによって、正規の利用者以外のメールの投稿を拒否できるようになります。

自宅でメールサーバーを使っている場合、以下の対応が必要になります。

  1. ISPのメールサーバーにメールを中継
  2. MTAのSubmission Portの使用
  3. SMTP-AUTH認証の設定

ISPのメールサーバーにメールを中継

/etc/postfix/main.cfに以下を追記し、メールを中継させます。

relayhost = [ISPのメールサーバ]:587

MTAのSubmission Portの使用

/etc/postfix/master.cfの以下のコメントアウトを削除します。

#submission inet n      -       -       -       -       smtpd
#  -o smtpd_enforce_tls=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

    ↓

submission inet n      -       -       -       -       smtpd
 -o smtpd_enforce_tls=yes
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject

SMTP-AUTHの設定

ISP側のSMTPに接続するにはSMTP-AUTHで認証が必要になります。

/etc/postfix/isppasswdに(ファイルの名前はなんでも良い)メールサーバのアカウント情報を記述します。

# vi /etc/postfix/isppasswd

[ISPのメールサーバの名前] [ISPのメールID]:[ISPのメールパスワード]

次にアカウント情報をDB化します。

# postmap /etc/postfix/isppasswd

すると/etc/postfixにisppasswd.dbが生成されます。

/etc/postfix/main.cf に以下を追記します。

#SMTP AUTH
smtp_sasl_auth_enable=yes
smtp_sasl_password_maps=hash:/etc/postfix/isppasswd.db
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter =

最後のmechanism_filterですが、本来ここにはplainとかMD5などを記述しますが、Postfixを使用する場合には必要ないようです。

リレー先のサーバーのSASLメカニズムを確認するために、サーバーにtelnetでログインしてみましょう。

# telnet smtp.isp.ne.jp 587
Trying 202.216.231.130...
Connected to smtp.isp.ne.jp.
Escape character is '^]'.
220 smtp.isp.ne.jp ESMTP mail 3.11v; Tue, 13 Mar 2007 22:29:42 +0900 (JST)
EHLO smtp.isp.ne.jp
250-smtp.isp.ne.jp Hello XXXX, pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 5242880
250-AUTH CRAM-MD5 PLAIN LOGIN
250-DELIVERBY
250 HELP
quit

Connection closed by foreign host.
#

このサーバーではCRAM-MD5,PLAINで認証することになります。

次はSMTP-AUTHを行うためのモジュールをインストールします。
apt-getコマンドでsaslをインストールします。

# apt-get install libsasl2 libsasl2-modules sasl2-bin

設定が終わったらpostfixのreloadをします。

# /etc/init.d/postfix reload

以上でメールが送れるようになります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


+ 6 = 11

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>