[Postfix][自宅サーバ]Outbound port 25 Blocking対策してメール送信する方法

No route to host (port 25)の原因と対策

自宅サーバから自分の携帯やらGmailやらにメール送信しようしたら、送れませんでした。
Postfixのメールログを見るとこんな感じでした。

Jul 18 18:16:41 centos postfix/smtp[3250]: connect to gmail-smtp-in.l.google.com[74.125.53.27]: Connection timed out (port 25)
Jul 18 18:16:52 centos postfix/smtp[3250]: connect to alt1.gmail-smtp-in.l.google.com[74.125.95.27]: No route to host (port 25)
Jul 18 18:17:22 centos postfix/smtp[3250]: connect to alt2.gmail-smtp-in.l.google.com[74.125.65.27]: Connection timed out (port 25)
Jul 18 18:17:36 centos postfix/smtp[3250]: connect to alt3.gmail-smtp-in.l.google.com[74.125.93.27]: No route to host (port 25)
Jul 18 18:17:47 centos postfix/smtp[3250]: connect to alt4.gmail-smtp-in.l.google.com[209.85.227.27]: No route to host (port 25)
Jul 18 18:17:47 centos postfix/smtp[3250]: 96E9D78834A: to=<********@gmail.com>, relay=none, 
delay=96, delays=0.07/0.01/96/0, dsn=4.4.1, status=deferred (
connect to alt4.gmail-smtp-in.l.google.com[209.85.227.27]: No route to host)
調べたところ、どうやら「Outbound port 25 Blocking(OP25B)」というやつが原因のようでした。
ISPが迷惑メール対策として25番ポートに制限をかけているそうです。

対策


準備
契約しているISPのアカウント、パスワード、smtpサーバのアドレスを確認します。
ここでは、ISPの契約情報が下記の通りになっていると仮定します。
メールアカウント hoge001
パスワード mypasswd
送信メールサーバ(smtp) smtp.example.ne.jp

main.cnf
main.cnfに下記を追記します。
# OP25B対策の設定
relayhost = [smtp.example.ne.jp]:587
smtp_sasl_auth_enable=yes
smtp_sasl_password_maps=hash:/etc/postfix/isppasswd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter =

master.cnf
master.cnfで、#submission inet ..... あたりがコメントアウトされているので#を削除して有効にします。
CentOS5.3の場合
submission inet n       -       n       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

Ubuntu9.04の場合
submission inet n       -       -       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

パスワードファイルを作る
/etc/postfix/ の下に"isppasswd"というファイルを作成します。
vi /etc/postfix/isppasswd
smtp.example.ne.jp hoge001:mypasswd
postmapコマンドを実行します。
postmap /etc/postfix/isppasswd

sasl関係のライブラリをインストール
Ubuntuの場合
# apt-get install libsasl2-2 libsasl2-modules sasl2-bin
CentOSの場合 何もインストールしないで行けました。
postfixを再起動
# /etc/init.d/postfix reload
以上でメール送信できるようになりました。

参考

Outbound port 25 Blocking対応 | Debian LennyでLinuxサーバー構築:
カテゴリ: