OCNメールサーバのポリシー変更
私が利用しているプロバイダのOCNから「2019年10月以降のメール送信において、TCP25による接続を受け付けず、またSub-missionポート (TCP587) においてはSMTP認証は必須である」というお知らせメールが来ました。
これまでは Postfix の設定ファイル(/etc/postfix/main.cf)に
relayhost = [xxx.ocn.ne.jp]:25
を記述しておけば、自ドメインからの送信メールはOCNメールサーバにリレーされ、OCNのOP25B規制を受けることなく送信可能でしたが、今後はTCP25を用いたリレーはできなくなります。
追記(2023年 6月):「AlmaLinux9でSSH公開鍵認証やPostfixのrelayhostがうまくいかない件」を追加しました。Almalinux9でOCNメールサーバと通信するには、本記事に設定に加えてシステムの暗号化ポリシーを変更する必要があります。
私が理解しているメール送信のあれこれ
リレー設定を変更するに当たり、以下のことを念頭に設定を進めていきます。
- 自ドメインからOCN網の外に向けてメール送信しようとする際、自宅SMTPサーバから外部SMTPサーバに直接接続しようとすると、OCNの迷惑メール対策OP25Bの規制を受けてしまい、接続することができない(メール送信できない)。
- SMTPサーバ間の通信には主にTCP25が使用されるが、「自宅SMTPサーバからOCNのSMTPサーバへの通信」といった素性の分かっている者同士の通信であればTCP25以外による通信も何ら問題ない。
- OCNのSMTPサーバはSub-missionポート (TCP587) またはSMTPSポート (TCP465) による接続を受け付けており、今回のOCNメールサーバのポリシー変更によりSub-missionポート (TCP587) であっても必ずSMTP認証が行われるようになった。
- OCNのSMTPサーバとのTCP587による通信では暗号化通信は必須でないが、STARTTLS方式による暗号化通信に対応している。
これらを踏まえながら、今回は「TCP587を用いたOCNメールサーバへのリレー設定」をしていきたいと思います。(TCP465を用いたリレー設定については後日記事にしたいと思います。)
追記(2022年11月):「OCNメールサーバへのリレー設定 ~SMTPSポート編~」を追加しました
設定環境・設定方針
今回の設定環境・設定方針は以下の通りです。
- CentOS7.8
- インターネットサービスプロバイダー OCN
- OCNメールサーバのSub-missionポート (TCP587) に対してメールをリレーする
- Postfix 2.10.1(一般的なPostfixの設定については完了している)
- SMTP-AuthソフトウェアとしてCyrus SASLを使用する(メーラから自サーバへの接続、すなわちサーバ用途としての設定は完了しており、今回は自サーバをSMTPクライアントとして動作させるための設定を行う)
- OCNメールサーバとの通信にSTARTTLS方式による暗号化通信を行う場合は、別途 SSL証明を取得しておく
追記(2023年 6月): AlmaLinux9に移行したら、OCNメールサーバと暗号スイートが噛み合わず、リレーができなくなりました。システムの暗号化ポリシーを変更する必要があります。その記事はこちら。
Postfix の設定
リレーホストの設定
Postfixの設定ファイル「/etc/postfix/main.cf」の以下の部分を書き換えます。
relayhost = [smtp.ocn.ne.jp]:587
これまではリレー先OCNメールサーバを [xxx.ocn.ne.jp] の形式 (メールアドレスの@以降と同じ)で指定していましたが、今後は [smtp.ocn.ne.jp] と記述します。
OCNメールサーバーからのSMTP認証要求に応えるための設定
自宅SMTPサーバがクライアントとなってOCNメールサーバーと接続するためには、OCNのポリシー変更によりSub-missionポート (TCP587) においても必須となってしまった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
この設定により、OCNメールサーバからのSMTP認証要求時にはOCNアカウント情報を記した「/etc/postfix/ocn_pass」が参照されることになります。
「/etc/postfix/ocn_pass」の中身を作成します。
# nano /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メールサーバとSTARTTLS方式で通信するための設定
OCNメールサーバとの TCP587による通信は STARTTLS方式による暗号化通信に対応しています。
これを利用する場合には「/etc/postfix/main.cf」の末尾に以下の行を追記します。
smtp_tls_security_level = may smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt smtp_sasl_tls_security_options = noanonymous smtp_tls_loglevel = 1
2行目にはSMTPクライアントとして接続先SMTPサーバ証明書を検証するためのCA証明書を指定します。
Let’s Encryptで取得した「/etc/letsencrypt/live/xxx.example.com/chain.pem (fullchain.pem)」からでもサーバ証明書は辿れますが、元からインストールされている「/etc/pki/tls/certs/ca-bundle.crt」で十分です。
送信元アドレス (envelope-from) を書き換えるための設定
以前は送信メールのenvelope-fromヘッダの書き換えは不要でしたが、今後はenvelope-fromヘッダを OCNアカウント (OCN のメールアドレス) にしなければ弾かれてしまうようです。
Postfixの設定ファイルの設定ファイル「/etc/postfix/main.cf」の末尾に以下の行を追記します。
local_header_rewrite_clients = permit_mynetworks sender_canonical_classes = envelope_sender sender_canonical_maps = regexp:/etc/postfix/sender_maps
ここで登場した「/etc/postfix/sender_maps」についても作成します。
envelope-from の書き換えに用いる情報をファイル内に記述します。
# nano /etc/postfix/sender_maps /^.*$/ zzzzz@xxx.ocn.ne.jp ← OCNメールアドレスを記述
動作確認
試しに自ドメインから OCN網の外に向けてメールを送信してみます。
無事にOCNメールサーバが自ドメインメールのリレーを受け付けてくれて、メールが転送されました。
あとがき
今回はOCNの Sub-missionポート(TCP587)を用いてリレー設定を行いましたが、いずれ SMTPSポート(TCP465)を用いたリレー設定について記事にします。
追記(2022年11月):「OCNメールサーバへのリレー設定 ~SMTPSポート編~」を追加しました。
追記(2023年 6月):「AlmaLinux9でSSH公開鍵認証やPostfixのrelayhostがうまくいかない件」を追加しました。
コメント
[…] ぐぐってみると以下のサイトを発見。OCNメルサーバーへのリレー設定 – CentOSで作る自宅サーバー どうやらenvelope-fromがOCNのメールアドレスでないといけないらしい。上記サイトそのままだけど、設定を記載しておく。 […]