三毛猫の楽園

猫好きエンジニアの雑記帳

サーバー

Outbound Port25 Blocking 対策(So-netの場合)

2017/06/13

20161007-so-1

Outbound Port25 Blocking(OP25B)対策方法をご紹介します。

PostfixからSo-netのSMTPサーバに送信する場合の例になりますが
他のサーバに向ける場合も基本的な考え方は同じです。

※自宅サーバ向けの内容になります。

スポンサーリンク

Googleアドセンス用336px

なぜ今さらOP25B対策なのか?

大学4年の頃から10年以上自宅でメールサーバを管理してきましたが
ここ最近、So-netのSMTPサーバからrejectされる現象が度々発生しました。

ルータを再起動してIPアドレスを変えると普通に送信できるようになるため
ブラックリストに登録されているIPアドレスがたまたま割り振られたのかと思い
裏付けを取るためにSo-netサポートデスクに問い合わせたところ、なんと

数年前にSo-netのセキュリティ方針が変更されており
今はOP25B対応をしていない環境からは送信できない

との回答。
なぜ今まで送信できていたのか謎ですが、いつ完全に送信できなくなっても
おかしくない状況とのことなので、今さらながら対策を行うことにしました。

なお、ブラックリスト説は結局調べてもらえず。

変更概要

Postfixの設定をいじるだけです。

詳しく説明されているサイトは山のようにありますので
手順のみご紹介します。

1. main.cfのバックアップ

/etc/postfix/main.cf をバックアップとしてコピーしてください。

2. main.cfの編集

main.cf の最下部に以下の内容を追記します。
relayhost の行が既に存在する場合はコメントアウトしてください。

relayhost = [mail.so-net.ne.jp]:587
smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = plain
smtp_sasl_password_maps = hash:/etc/postfix/so-net_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_use_tls = yes
smtp_tls_CApath = /usr/share/ssl/certs/ca-bundle.crt ←環境によりパスは異なる

3. パスワードファイルの作成

/etc/postfix/so-net_passwd を作成し、下記内容を記載します。
[mail.so-net.ne.jp]:587 ユーザID:パスワード

4. パスワードファイルのハッシュ化

postmap hash:/etc/postfix/so-net_passwd

5. postfixサービス再起動

service postfix restart

6. メール送信テスト

echo "test mail" | mail -s "test mail" 送信先メールアドレス

7. ログ確認

250 2.0.0 Message accepted for delivery となっていれば成功

550 5.7.1 ... Relay operation rejected の場合は設定を見直してください

まとめ

So-netはこの手順で問題ないのですが
同じ方法でリレー先をgmailにすると、受信メールの送信者がgmailのアカウントで上書きされる謎現象が起きます。

今後のIPv6対応も悩みどころなので、そろそろ自宅サーバをやめて
Gmailに一本化する方向で検討中。

参考:
So-net Outbound Port25 Blocking(OP25B)

So-net メールの設定値一覧

-サーバー