メール転送(エイリアス)SPFのSoftFailへ対応|Postfix

ソフトウエア

<景品表示法に基づく表記> 本サイトのコンテンツには、商品プロモーションが含まれている場合があります。

知りたいこと。解決できること

Postfixからメール送信するとSPFが正しく動作する(SPF=Pass)。しかし、受信メールを外部に転送するとSPF認証に失敗「SPF=SoftFail」する。理由と対策方法をしりたい。

メール送信の時はSPF認証が正しく動作するか、しっかり確認します。しかし、メール受信は送信よりもチェックが甘くなりがちです。私の場合は「受信できたから大丈夫!」って思ってしまいます。

ふと、aliases(エイリアス)を利用したメール転送のメールを確認したら、SPFがSoftfail(認証外送信と判断)している。

原因と対策方法をまとめます。

転送時のメール送信でSPFがSoftfailする理由

メールの仕組み

理由が判れば簡単なのですが概念が難しい。メールヘッダーには多くのパラメーターがありFROM(送信者),TO(受信者)の情報が複数に記載されています。

パラメーターは、用途によって意味が微妙に違います。

メールの送信者・受信者の目線から考えると、メールが届いた経路はどうでもよく、From,Toさえ認識できれば事足ります。

Postfix で Envelope fromを書き換える

しかし、経路を制御する側(管理者)は、どのように配送されたかを正しく認識することが重要です。From,Toの情報はぶっちゃけ、どうでもよい。

メール転送時 SPF認証の挙動

サーバー管理者の視点だと、どうしても自分が管理しているサーバーからメール送信するので、自ドメインのSPFを利用すると思ってしまいます。

しかし、転送する場合のFromは転送前のドメインです。つまり、自ドメインのSPFは関係ない。

Postfix で Envelope fromを書き換える
  • ① From:gmail To:mydomain でメール送信する
  • ② mydomain が gmail のSPF認証を行う
  • ③ From:gmail To:yahoo でメール送信する
  • ④ yahoo が gmail のSPF認証を行う

関連記事 迷惑メール判定されないSPF設定

転送時にSPFをPassさせる設定|Postfix

Envelope fromを書き換える

メール転送の場合は、Fromは転送前のドメインです。そのためSPF認証を転送するサーバーで制御することはできません。

この問題を解決するためのパラメーターが「Envelope from」です。Envelope fromパラメータを書き換えると、SPF認証の確認先が自ドメインに変わります。

Postfix で Envelope fromを書き換える

設定ファイル main.cf の変更

Envelope fromの設定変更は簡単です。

# vi /etc/postfix/main.cf
sender_canonical_classes = envelope_sender
sender_canonical_maps = hash:/etc/postfix/sender_canonical

これで指定ファイルに記載されたルールに従ってEnvelope Fromを制御します。

# vi /etc/postfix/sender_canonical
/@([a-z0-9_+\-\.]+)$/ @[mydomain.com]

設定ファイルをハッシュ化させます。

# postmap /etc/postfix/sender_canonical

あとは、設定を反映させるだけです。私の利用している環境はCentOSです。環境に合わせてサービスを再読み込みさせてください。

# systemctl reload postfix

あとは、メールヘッダーを確認し通信状況を確認しましょう。