考えられる原因
SPFとDKIMが通っていても、DMARCは失敗する
DMARCが見るのは「認証が通ったか」だけではなく、「通った認証の名前が、差出人(From)のドメインと揃っているか」です。これをアラインメントと呼びます。配信サービス経由で送ると、認証はサービスのドメインで通り、From は自社のドメイン、という食い違いが起きます。
フォームの通知を、問い合わせた人の名前で送っている
From に相手のアドレスを入れる実装は、DMARC の観点では他人のドメインのなりすましです。ここは構造的に必ず失敗します。差出人は自社、Reply-To に相手を入れてください。
いきなり p=reject にしている
設定例をそのまま貼ると reject になっていることがあります。含め忘れたサービスのメールが、警告なく完全に消えます。請求書も、予約の確認も。まず p=none で1〜2週間、レポートを見てください。
レポートの宛先を用意していない
rua= に受け取り先を書かないと、何が失敗しているのか分からないまま締めることになります。p=none の期間はレポートを読むための期間なので、宛先が無いと意味がありません。
直し方
段階を踏んで設定する
_dmarc.あなたのドメイン に TXT を1つ。v=DMARC1 で始め、p=none と rua= を置きます。届いたレポートで失敗しているものが無くなったら quarantine、それも問題なければ reject。急がないことが唯一のコツです。
フォームのメールだけ、切り離す
問い合わせフォームからのメールを、認証済みの基盤から出します。あなたのドメインを名乗らないので、DMARC の対象になりません。返信先はあなたのアドレスのままです。
無料で試す設置はコードを1行。DNSは触りません。DMARCの段階を進めている途中でも、フォームからの問い合わせだけは止まらずに届きます。
<script src="https://nintact.com/embed.js"
data-nintact="YOUR_FORM_ID" async></script>よくある質問
p=none のままでも意味はありますか?
受け取る側の扱いは変わりませんが、レポートが届くようになります。誰があなたのドメインを名乗って送っているかが分かるので、締める前の準備として必要です。
どれくらい p=none のままにすべきですか?
レポートを1〜2週間見て、正規の送信が全部通っていることを確認できるまでです。月末だけ動く送信(請求書など)があるなら、それを1周見てからにしてください。
設定しないとどうなりますか?
個人宛の少量のメールなら当面は届きます。ただしまとまった数を送る相手にはDMARCが求められますし、なりすまし対策としても不利になります。