【PHP】Return-Path未指定だと迷惑メール扱いになるケース

最近クライアントからの依頼で、Gmail宛てのメールが届かない問題の解消というのがありました。

調べてみると、迷惑メールフォルダに入っていました。
メールヘッダーを確認したところ、

SPF:pass
DMARC:fail

という結果になっていました。
DMARCがNGなのが迷惑メール判定された理由だろうと推測できます。
そしてDKIMはなぜか事情があって設定できないらしいです。

SPFがpassなのになぜDMARCがfailなのかというと、
送信元ドメインが正常にSPFレコードに指定されていればSPFはpassとなりますが
DMARCのSPF判定条件はそれだけではありません。

送信元アドレスとReturn-Pathヘッダーが一致していなければ
SPFアライメントの不一致となり、
さらにDKIMが未設定の場合はなりすましかどうかの判断がつかず、DMARCはNGとなります。

今回の件では、メール送信にPHPのmail関数が使われていました。
mail関数(mb_send_mailも同じだが)では5つ目の引数に
Return-Pathを強制的に指定するパラメータを追加することができます。

Return-Pathを指定しない場合、
SMTPサーバー側で指定されたアドレスが自動的に入ります。
レンタルサーバーの場合、初期ドメインの管理者アドレスが自動で入ることになり、
SPFアライメントは不一致となります。

Return-PathにFromと同じアドレスを入れる改修を行った結果、
迷惑メール扱いされず届くようになりました。