OCNメールサーバーのポリシー変更
私のプロバイダーのOCNから、2019年10月以降メール転送において認証を必須とする旨のメールが届きました。
今までは Postfix の設定ファイル内に
relayhost = [xxx.ocn.ne.jp]:25
と記載してさえいればメールをリレーできたのですが、今後はそうもいかなくなります。
実際、OCNからの周知メールのことをスッカリ忘れていて何もしないまま放置していたところ、2019年10月以降はPostfixからのLAN外へのメール送信ができなくなってしまいました…
そこでOCNの認証にも対応するようリレー設定を変更したいと思います。
私が現時点で理解しているメール送信のあれこれ
リレー設定を変更するに当たり、今自分が理解していることを徒然に並べてみます。
- メールを送信する際、自宅SMTPサーバーがダイレクトに宛先SMTPサーバーに接続することはできない。(OCNの迷惑メール対策である OP25B に引っかかるため。)
- 外部インターネット網にあってはSMTPサーバー間の通信には25番ポートが主に使用されるが、自宅SMTPサーバーとOCNのSMTPサーバー間の通信のように相手の素性が分かっているSMTPサーバー間の通信であれば25番ポート以外で通信することに何ら問題はない。
- 2020年5月の時点では OCNのSMTPサーバーはサブミッションポート (587番ポート) でのアクセスを受け付けてくれており、必ずしも465番ポートでリレーする必要はない。
※私は外出先でも安心してまた確実にメール送信できるように (外出先のOP25BとOCNのIP25Bに引っかからないように) 自宅PostfixをSMTPサーバーとして動作させるときは465番ポートを使用していますが、SMTPクライアントとして OCNのSMTPサーバーにSMTPSでアクセスするための設定方法については私は未だ分かっていません… 誰か設定方法を教えて下さい。 - OCNの587番ポートではSTARTTLS方式による暗号化通信が可能である。
これらのことを踏まえながら Postfixの設定をしていきたいと思います。
なお、一般的なPostfixの設定については完了しています。
前提条件は以下の通りです。
- CentOS 7.8
- Postfix 2.10.1
- インターネットサービスプロバイダー OCN
- OCNのSMTPサーバーのサブミッションポート587番にSTARTTLSで接続
- SMTP-Auth ソフトウェアとして Cyrus SASLを使用
Postfix の設定
リレーホストの設定
「/etc/postfix/main.cf」をテキストエディタで開き、以下の部分を書き換えます。
relayhost = [smtp.ocn.ne.jp]:587
これまでは [xxx.ocn.ne.jp] の形式 (メールアドレスの@以降と同じ) でしたが、今後は [smtp.ocn.ne.jp] を使います。
送信元アドレス (envelope-from) を書き換えるための設定
「/etc/postfix/main.cf」をテキストエディタで開き、以下の行を末尾に追加します。
local_header_rewrite_clients = permit_mynetworks sender_canonical_classes = envelope_sender sender_canonical_maps = regexp:/etc/postfix/sender_maps
これまでは envelope-from を書き換える必要がありませんでしたが、現在は envelope-from がOCNアカウント (OCNのメールアドレス) でないとその時点で弾かれてしまうようです。
なお「/etc/postfix/sender_maps」後ほど作成します。
SMTPクライアントとして先方のSMTP認証要求に応えるための設定
「/etc/postfix/main.cf」をテキストエディタで開き、以下の行を末尾に追加します。
smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/ocn_pass smtp_sasl_security_options = noanonymous smtp_sasl_mechanism_filter = plain,login
認証時に参照させる情報ファイル「/etc/postfix/ocn_pass」は後ほど作成します。
OCNサーバーにSTARTTLSでアクセスするための設定
「/etc/postfix/main.cf」をテキストエディタで開き、以下の行を末尾に追加します。
smtp_tls_security_level = may smtp_tls_CApath = /etc/letsencrypt/live/xxx.example.com/yyyyyy.pem smtp_sasl_tls_security_options = noanonymous smtp_tls_loglevel = 1
2行目には別途取得したSSL証明書 (私の場合は Let’s Encrypt で取得した証明書) までのパスを指定します。
envelope-from の書き換えに用いる情報ファイルの作成
上で保留していた「/etc/postfix/sender_maps」の中身を作成します。
# nano /etc/postfix/sender_maps /^.*$/ zzzzz@xxx.ocn.ne.jp # OCNメールアドレスを記述
OCNアカウント情報ファイルの作成
同じく上で保留していた「/etc/postfix/ocn_pass」の中身を作成します。
[smtp.ocn.ne.jp]:587 zzzzz@xxx.ocn.ne.jp:******** # OCNアカウントとパスワードを記述
こちらはパスワードが丸見えなのでアクセス権を変更し、加えてデータベース化します。
# chmod 600 /etc/postfix/ocn_pass # postmap /etc/postfix/ocn_pass
動作確認
試しに自分のドメインメールアドレスからメールを送信してみます。
無事にOCNのSMTPサーバーがリレーを受け付けてくれてメールが送信されました。
メールヘッダーを見ると envelope-from はOCNメールアドレスに置き換わっていました。
あとがき
今回はOCNのサブミッションポートにリレーをしましたが、将来的には465番ポートしか受け付けなくなるのでしょうか??
突然送信できなくなるのはもう勘弁ですが、その時までに465番ポートへのリレーも実験しておきたいと思います。
コメント
[…] ぐぐってみると以下のサイトを発見。OCNメルサーバーへのリレー設定 – CentOSで作る自宅サーバー どうやらenvelope-fromがOCNのメールアドレスでないといけないらしい。上記サイトそのままだけど、設定を記載しておく。 […]