MUAでFromアドレス毎にISPのメールサーバを指定するのが面倒なので、このように利用していたのですがDMARCも普及してきているようなので正しくISPのメールサーバを経由させるように設定変更することにしました。
まあ、なりすましメールと同じなので仕方ないですが、SPFの認証結果は気にはなっていたけど面倒なので長年放置していたと言う感じです。
ちなみに独自ドメインについては一応SPF設定はしてありますが、こちらのアドレスでメールを送信することはほとんどありません。
前置きが長くなりましたが、環境と条件は下記になります。
- CentOS 8.2
- postfix 3.3.1
- Envelope FromがISPのメールアドレスの場合は、ISPのメールサーバを経由する。
- 上記以外のメールアドレスの場合は、直接配送する。
- ISPのメールサーバは、SMTP over SSLで認証(SMTP Auth)ありとする。
1 2 3 4 | sender_dependent_default_transport_maps = hash:/etc/postfix/sender_dependent_transport smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/password_maps smtp_sasl_security_options = noanonymous |
次にsmtp_sasl_password_mapsに指定した/etc/postfix/password_mapsを下記の形式で記述します。
1 | [ISPメールサーバ]:ポート アカウント名:パスワード |
password_maps, password_maps.dbはプレーンなパスワード情報を含むため、rootのみ参照可能に設定します。
例えば、下記のようになります。
1 2 3 4 5 6 7 | # cd /etc/postfix # cat password_maps [mail.example1.com]:465 foo@example1.com:password1 [mail.example2.com]:465 var@example2.com:password2 # # postmap hash:password_maps # chmod og-rxw password_maps* |
1 | メールアドレス relay-smtps:[ISPメールサーバ]:ポート |
例えば、下記のようになります。
1 2 3 4 5 | # cat sender_dependent_transport foo@example1.com relay-smtps:[mail.example1.com]:465 var@example2.com relay-smtps:[mail.example2.com]:465 # # postmap hash:sender_dependent_transport |
次に/etc/postfix/master.cfに下記のようにrelay-smtpsサービスを追加します。
1 2 3 | relay-smtps unix - - n - - smtp -o smtp_tls_security_level=encrypt -o smtp_tls_wrappermode=yes |
これで通常は適宜STARTTLSを使用し直接配送、設定したメールアドレスの場合はSMTPS(SMTP over SSL)を使用し各ISP経由で配送するようになります。
最後にsyslogに下記のメッセージを出し認証に失敗する場合は、SMTP Authの認証メカニズムが不足しているのでSASLのパッケージを追加します。
1 | warning: SASL authentication failure: No worthy mechs found |
認証アルゴリズムは、CRAM-MD5, DIGEST-MD5, PLAINがあれば問題ないかと思います。
参考)
Postfix Configuration Parameters: sender_dependent_default_transport_maps
Postfix TLS Support: Sending only mail for a specific destination via SMTPS
0 件のコメント:
コメントを投稿