知識マップ: 問い合わせフォームのメールが届かない原因と直し方

記事「問い合わせフォームのメールが届かない原因と直し方」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

この記事は、問い合わせフォームの通知メールが届かない主な原因は送信コードではなくFromヘッダの設計にあり、見える差出人と認証されるドメインをそろえることがDMARCのアラインメントを左右すると整理します。SPFはエンベロープ送信者(Return-Path)を、DKIMは署名ドメインを検証し、DMARCはその結果とFrom:ドメインの一致を判定するため、利用者アドレスをそのままFromに使う設計やメール転送によるSPFの破損はDMARC失敗の典型的な原因になります。共有ホスティングのローカルMTAやPHPのmail()、SendGrid・SES・Mailgunといった外部SMTPサービスではDKIMセレクタやPTR、カスタムMAIL FROMの設定が到達率を左右し、Reply-Toで返信先を確保しつつFromは自ドメインに固定する設計が推奨されるとしています。

問い合わせフォームのメール到達性の知識マップFromヘッダの設計がSPF・DKIM・DMARCのアラインメントを通じてメールの到達性を左右し、転送や共有ホスティング、送信サービスの設定とどうつながるかを示す図です。推奨される対応推奨される対応前提とする利用する利用する前提とする原因になり得る原因になり得る軽減する利用するで構成できる原因になり得る原因になり得る推奨される対応前提とする前提とする前提とするで構成できるで確認できる用いるのは非推奨用いるのは非推奨で構成できる問い合わせフォームの通知メールDMARCのアラインメントFromヘッダReply-ToヘッダDMARCSPF(Sender Policy Framework)DKIM(DomainKeys Identified Mail)利用者アドレスをFromに使う設計DMARCの失敗(dmarc=fail)メール転送によるSPF失敗Return-Path(エンベロープ送信者)PHPのmail()関数メールヘッダインジェクション共有ホスティングのローカルMTAPTRレコード(逆引き)SendGridのDomain AuthenticationDKIMセレクタAmazon SESのカスタムMAIL FROMMailgunの送信ドメイン検証DMARCポリシーモードAuthentication-ResultsヘッダSenderヘッダ

概念間の関係(全22件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

問い合わせフォームの通知メール
問い合わせフォームの送信を受けて、サイト側システムが担当者へ送る通知メール。利用者本人がMUAから送っているのではなく、サイト側が作成する点が設計上の前提になる。
DMARCのアラインメント
DMARCの判定基準。SPFやDKIMで認証されたドメインが、From:ヘッダのドメインと整合しているかどうかを表す。
Fromヘッダ
メッセージの作者を表す本文ヘッダ。RFC 5322は作者のものでないアドレスをFrom:に入れるべきではないと定める。
Reply-Toヘッダ
返信先を作者とは別にしたいときに使う本文ヘッダ。
DMARC
SPFやDKIMの成否だけでなく、それらの認証済みドメインがFrom:ドメインと整合しているかを見て、受信メールの扱いを判定する仕組み。
利用者アドレスをFromに使う設計
問い合わせフォームで、フォーム利用者のメールアドレスをそのままFrom:に入れてしまう設計。認証済みドメインとFrom:ドメインが食い違う典型的な失敗パターン。
メール転送によるSPF失敗
メール転送で最終受信者から見た送信元IPが、元の送信ドメインのSPFに載っていない中継サーバーになりやすく、正当なメールでもSPFが失敗する現象。
DKIM(DomainKeys Identified Mail)
メッセージの一部ヘッダと本文に署名を付け、受信側がDNSの公開鍵で検証する認証方式。署名ドメインはDKIM-Signatureのd=で表される。
SPF(Sender Policy Framework)
SMTPセッション中のMAIL FROM(エンベロープ送信者)が、そのドメインの送信元として許可されたIPかをDNSのTXTレコードで検証する仕組み。
Return-Path(エンベロープ送信者)
SMTPのエンベロープで渡す配送用の差出人。最終配送時にはこの逆経路がReturn-Pathとして1つだけ残されるべきで、送信側が最初からReturn-Pathヘッダを持ったメッセージを作るべきではない。
PHPのmail()関数
PHPの標準的なメール送信関数。Fromヘッダが必要で、追加パラメータでsendmail -f相当のエンベロープ送信者指定ができる。
共有ホスティングのローカルMTA
共有ホスティングが提供するローカルの送信基盤。送信IPのPTR未設定、共有IPの評判悪化、DKIM未対応などで到達率が落ちやすい。
PTRレコード(逆引き)
送信元IPアドレスからホスト名を引くための逆引きDNSレコード。受信側のレピュテーション判定に使われる。
SendGridのDomain Authentication
SendGridで送信ドメインを認証する設定。Automated SecurityをONにするとCNAMEベースでDKIMなどの認証レコードが生成される。
Amazon SESのカスタムMAIL FROM
Amazon SESで、既定のamazonses.comサブドメインではなく自ドメイン配下のMAIL FROMを設定し、サイトドメインとのSPFアラインメントを取る機能。
Mailgunの送信ドメイン検証
Mailgunで送信ドメインを検証する設定。SPF用TXTとDKIM用TXT、MXレコードの追加が必要になる。
Senderヘッダ
実際にメッセージを送出した主体を表す本文ヘッダ。作者と送信主体が同じなら使うべきではない。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。