J:COMのようなOP25Bをしていてサブミッションポート(587)をサポートしていないプロバイダでTLS(465)でメールをリレー送信する
J:COMに完全に移行してメールが送信できなくなった
OP25Bのせいです.
J:COMは一応リレー用メールサーバを用意している
マンションが契約した時に配られた書類をひっくり返して確認しました.
しかし世の中の手順書はみんなサブミッションポートを前提にしている
postfixでOutbound Port 25 Blocking(OP25B) 対策 -自宅サーバ編- | server-memo.net など色々資料がありますが, みんな587を前提にしているのでそのまま使えません.
Gmail使う方法だとダメ
Gmailは元のFrom
をX-Google-Original-From
に格納してFrom
がGmailのものになってしまうのでダメです.
ポートを465に変えるだけだとダメだったと思ったらユーザ名がドメインも含んでるだけでした
sasl2使うのは諦めてpostmap
で認証する仕組みにして以下のようにmain.cf
を書きました.
# OB25B対策
smtp_tls_loglevel = 1
smtp_use_tls = yes
smtp_tls_wrappermode = yes
smtp_tls_security_level = encrypt
relayhost = smtpa.jcom.zaq.ne.jp:465
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/smtp_pass
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain, login
smtp_use_tls = yes
smtp_tls_wrappermode = yes
smtp_tls_security_level = encrypt
を
smtp_tls_security_level = may
と書いたらダメらしいですよ. なんででしょうね. 探索はしない.
しかし届かなくてなんでかなーと思ったらsmtp_pass
に書いたユーザ名を@
の後のドメイン含んだ形にしないとダメだったからでした.
ちゃんとThunderbirdが行った設定を見るべきでしたね.
SPFを設定する
そのままだとGmailに送ってもヘッダーが
Received-SPF: softfail
とSPFがエラーになって迷惑メール扱いされるので,
J:COMのメールドメインをinclude
しないといけません.
v=spf1 a:ncaq.net include:jcom.zaq.ne.jp ~all
のように.
そしたら
Received-SPF: pass
になって合格です.