単純にpostfixで受信したドメインAへのメールを、ドメインBに転送します。
すると、メール送信元ドメインのspfレコードにドメインAのIPアドレスが含まれるかをチェックするため、アンマッチとなってしまいます。Return-Pathを参照しているためですね。
解決策として、sender_canonical の設定を行ったりしていたのですが、SRSを利用すればもっと簡単に行える事を知ってpostsrsdを導入してみました。
インストール
sudo apt install postsrsd
そうすると、
postconf -h mydomain
で設定されたドメインで初期設定されて起動します。
問題なければそのままでOKです。
ドメインを変更する場合
/etc/default/postsrsd
これが設定ファイルになるので、
SRS_DOMAIN
の値を任意のドメインに変更するだけでした。
変更後は
sudo systemctl restart postsrsd
で再起動します。
postfixの設定
/etc/postfix/main.cf
に以下の設定を追記。
sender_canonical_maps = tcp:localhost:10001
sender_canonical_classes = envelope_sender
recipient_canonical_maps = tcp:localhost:10002
recipient_canonical_classes= envelope_recipient,header_recipient
最後にpostfixを再起動します。
sudo systemctl restart postfix
これだけの設定で、転送時にReturn-Pathが正しく設定され、転送サーバであるドメインAのspfレコードが参照されるようになり、spfのチェックをpassできます。