[Postfix]エイリアスでメール送信するときに気をつけること(エンベロープFromの書き換え)

投稿者: | 2014/09/08

以前にPostfixで受信したメールを別メールに転送する(エイリアス)でエイリアス設定して別メールに送信するということをしました。

しかし、この方法には1つ問題があります。
例えば、下図のようにメール転送を設定した場合、foo_contact@gmail.comのメールヘッダ(一部抜粋)は以下のようになります。
[Postfix]SPFレコードを設定して携帯へメールを送信できるようにするfoo.comに対して101.102.103.104のIPアドレスでSPFを既に設定しているとします。

postfix_alias

SPF認証がneutralになってしまいました。
なぜこういうことになったのかと、よく考えれば分かることなんですが、SPF(DNSのTXTレコード)で設定したのは 「foo.com というドメインから送信されたメールのIPアドレスが101.102.103.104だった場合に有効」 というものでした。
しかし、今回のメールのエンベロープFrom(本当の送信者)は sender_hoge@gmail.comであり、gmail.comというドメインから送信されたメールのIPアドレスが101.102.103.104と一致しなかったのが原因です。

ググると、下記のようなページがありました。
メール転送時にSPF認証が失敗する

sender_canonicalを上手く使って、メール転送する際に、エンベロープFromをfoo.comに書き換えればうまくいきそうです。

早速やってみました。

[Postfix]SPFレコードを設定して携帯へメールを送信できるようにする ですでに、sender_canonicalの設定をしているので追記します。

次にsender_canonical.regexpを作成します。

エンベロープFromの@より後ろのドメイン部分をfoo.comに置き換えるように設定しました。
postmapコマンドでデータベースを作成し、Postfixを再起動すれば完了です。

設定後、contact@foo.comにメール送信すると、メールヘッダ(一部抜粋)は以下のようになりました。

SPF認証がpassになりました。
注目してもらいたいのが、エンベロープFrom(この場合Return-Path)がsender_hoge@gmail.comからsender_hoge@foo.comに置換されていることが分かります。

最後に

Postfixでエイリアスでメール転送する際にエンベロープFromに気をつけることと、その対処方法を紹介しました。
僕も仕事で同じ現象が起きてメールが送れなくなってしまったので、今後は気をつけたいと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*