まずはOP25Bって何なんでしょ?
自分もきちんと把握できていたわけではなかったので一度整理してみることにしました。
用は、ISP(インターネットサービスプロバイダ)が契約者に対して課する制限の一つで、SMTPサーバの標準である25番ポートを使用した外部メールサーバへの送信をブロックするというものです。
目的はISP利用者によるスパムメール送信の削減やボット化してしまったサーバからのメール送信抑制などセキュリティに関わるものです。
ただ、これをやられるとメール送信が行えない状態になってしまうので大抵のプロバイダは587番ポートを代替ポートとして開放すると共にSMTP-AUTHを組み合わせることで安全なメール送信を行うことのできる環境を提供しています。
契約しているISPがOP25Bを導入した場合、当然自前のメールサーバも25番ポートを使用したメール送信はできなくなりますので対策を取る必要が発生するわけです。
PostfixとOP25B対策
いくつかの手法があるようですが、自分の場合は契約しているISPのメールサーバを中継する手法をとることにしました。
/etc/postfix/main.cfの修正
まずは外部メールサーバを中継するための設定を行います。
$ sudo vi /etc/postfix/main.cf 以下を追記 relayhost = [smtp-auth.example.com]:587 ←[中継するメールサーバ名]:587と記述 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/isp_auth ←中継するメールサーバの接続情報 smtp_sasl_security_options = noanonymous smtp_sasl_mechanism_filter = plain, login 「:wq」で保存
「relayhost」に関する記述はプロバイダのメールサーバとサブミッションポートの587番を指定しています。また、「smtp_sasl_password_maps」以下はプロバイダのメールサーバの接続情報をデータベース化したもの(後ほど作成)を指定します。ファイル名はisp_authでなくても良いと思われます。
中継するメールサーバ情報をDB化する
上のmain.cfに記述したとおりの名称で以下のファイルを作成していきます。
$ sudo vi /etc/postfix/isp_auth (新規作成) [smtp-auth.example.com]:587 ISPのメールユーザ名:ISPのパスワード 「:wq」で保存 端末で以下のとおり入力してデータベース化する $ postmap /etc/postfix/isp_auth
master.cfを編集
いよいよ最後です。以下のとおりコマンドから修正していきましょう。
$ sudo vi /etc/postfix/master.cf 以下を入力 submission inet n - - - - smtpd -o smtpd_etrn_restrictions=reject -o smtpd_client_restrictions=permit_sasl_authenticated,reject 「:wq」で保存 最後にPostfixを再起動する $ sudo /etc/init.d/postfix restart * Stopping Postfix Mail Transport Agent postfix [ OK ] * Starting Postfix Mail Transport Agent postfix [ OK ]
これで設定完了のはず・・・じゃなかった。かならずサーバとルータの587番ポートを開放しましょう。
クライアントからSMTP-AUTHの設定と使用するポートを587番に変更してメール送信できれば完了!
まとめ
いやぁ、長い道のりでした。なにがってサーバの復旧です。
今回軽い思いつきでアップグレードを試みたら、素人の自分には運用の継続が困難な状態になってしまったのが発端。
なにごとも計画が大事だと改めて知りました。