印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
Linux 自宅サーバで Outbound Port 25 Blocking 対策

自宅の Linux サーバの Postfix に Outbound Port 25 Blocking 対策のための設定を行う。

■ ■ ■

ことの発端

このブログでは,バックアップのために mysqldump2email を使ってブログのデータベースを Gmail に送っているのだが,そのメールが戻ってくるようになってしまった。Postfix が次のように言って戻してきていたのである。

<my_account@gmail.com>: connect to
    alt4.gmail-smtp-in.l.google.com[209.85.229.26]: No route to host

久しぶりにメールをチェックしたところ,このメールが大量に来ていた。今年の10月から遅れていなかったことが判明。

実は,メールが戻ってきたアドレスは,Gmail から POP で吸い出しているので,すべてのメールがチェックできていると思っていた。しかし,このエラーメールは POP では取ってこれていなかった (なぜだろうか)。これが,発見が遅くなった理由である。

動作環境

自宅サーバの環境は,OS Vine Linux 4.2, Postfix 2.2.10 である。自宅は ADSL 回線で結ばれており,インターネットサービスプロバイダは So-net である。

自宅サーバからメールが出せなくなったのは,Outbound Port 25 Blocking が原因である。So-net がこれを10月に実施したのだ (Outbound Port25 Blocking(OP25B) | So-net)。So-net では,25番ポートをブロックする代わりに,587番ポートをサブミッションポートとして開放している。

以下では Postfix の設定ファイルに,So-net のメールサーバの587番ポート経由でメールを出す設定を行う。設定情報は以下の通り (So-net の設定値: メールの設定値一覧|So-net 会員サポート)。

■ 送信用の設定値

項目 設定値
送信メール (SMTP) サーバ名 mail.so-net.ne.jp を入力
ポート番号 587
SSL [Secure Socket Layer] 使用します
SMTP 認証 使用します
【設定には下記の値を入力】
  • ユーザー名 : [メールアドレス] 例) taro_s@aa2.so-ne.ne.jp
  • パスワード : [メールアドレスパスワード]

SSL は「使用します」になっているが,今回は使用しない設定にする。

設定

似た環境の方がいらしたので (Postfix + インストール + OP25B設定 | ninxit.blog),これを参考に。

So-net SMTP サーバの調査

So-net SMTP サーバのサブミッションポートに telnet でアクセスし,認証方式を調べる。

$ telnet mail.so-net.ne.jp 587
Trying 202.238.82.20...
Connected to mail.so-net.ne.jp.
Escape character is '^]'.
220 mx61.ms.so-net.ne.jp ESMTP
ehlo localhost
250-mx61.ms.so-net.ne.jp Hello pd3874f.tkyoac00.ap.so-net.ne.jp [220.211.135.79], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 20480000
250-DSN
250-AUTH LOGIN PLAIN CRAM-MD5
250-STARTTLS
250-DELIVERBY
250 HELP
quit
221 2.0.0 mx61.ms.so-net.ne.jp closing connection
Connection closed by foreign host.

「250-AUTH LOGIN PLAIN CRAM-MD5」が返ってきているので,認証方式は LOGIN, PLAIN, CRAM-MD5 の3つに対応していることになる。「CRAM-MD5」はパスワードが暗号化されるので (SMTP Authenticationとは【SMTP-AUTH】: IT用語辞典),これを使うことにする。

CRAM-MD5 パッケージの導入

CRAM-MD5 に対応させるため,パッケージを導入する。

# apt-get install cyrus-sasl-md5

これがないと,メールの送信に失敗し,ログファイル /var/log/maillog には次のログ

status=deferred (Authentication failed: cannot SASL authenticate to server mail.so-net.ne.jp[202.238.82.20]: no mechanism available)

が残される。

Postfix 設定ファイルの編集

Postfix の設定ファイルである /etc/postfix/main.cf を編集する。

リレーホストとポートを記述する。

relayhost = [mail.so-net.ne.jp]:587

最後に次の行を追加する。

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/authinfo
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = CRAM-MD5

これで設定は終了。

認証ファイルの生成

メールサーバとポート番号,メールアドレスとパスワードを記述した authinfo という名前のファイルを作成する。

# echo [mail.so-net.ne.jp]:587 my_account@xxx.so-net.ne.jp:password > /etc/postfix/authinfo
# chmod 640 /etc/postfix/authinfo
# postmap /etc/postfix/authinfo

postmap コマンドで authinfo.db が生成される。これが上の Postfix の設定で「smtp_sasl_password_maps」の箇所で指定したファイルになる。

Postfix の再起動

Postfix を再起動し,設定を反映させる。

# /etc/init.d/postfix restart

テスト

最後にテストして,上手くいけば完了である。

$ echo "test" | mail -s "test" my_account@gmail.com
Posted by n at 2011-12-14 23:52 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?