概要

Amazon SESで実際にメールを送信することでメールの検証についてについて少し勉強になった。 SPF,DKIM,DMARCの設定をそれぞれ実施してどのような挙動になるか確認した。

ドメインの登録

ドメインはこのブログでも使用しているものを使った。 このドメインはムームードメインからNSレコードでサブドメイン含めすべてをCloudflareに委任している。 Cluodflare上で設定することもできるが設定の簡単さのため、mailサブドメインをそこからさらにRoute53にNSレコードで委任する。

SPF設定なし/DKIM署名なし/DMARC設定なし

まずはDNSの登録までおこないDKIM、SPF、DMARCの設定をしない状態でメールを送ってみる。 

手順

IDを作成しIDタイプをドメイン、ドメインを mail.kktkht94.work に設定する。

比較のため一旦カスタムMAIL FROMドメインの使用、DNSレコードのRoute53への発行、DKIM署名を無効にする。 DKIMはEasy DKIMを設定しておく。

この状態ではDNS検証されていないので誰でも他人のドメインを勝手に設定できてしまうことになる。 そのため、テストメールを送ることもできない。

DNSサーバに検証用のレコードを追加する。Route53にDNSレコードをワンクリックで追加できる。

Route53側を見るとCNAMEレコードが3つ追加されていた。 CNAMEでAmazon SESで管理するドメインを指定することで実際の署名自体は記載しないようだ。

これでドメインが検証済みとなった。テストEメールを送信してみる。

結果

Gmailメールを受信できた。SPFもDKIMもpassしている。

メールのAuthentication-Resultsヘッダを確認してもpassしていることがわかる。 どちらもap-northeast-1.amazonses.comとしてpassしている。

Authentication-Results: mx.google.com;
       dkim=pass [email protected] header.s=wf7ez2pjvcsodozkoqksj277kza7wu47 header.b=Bp3zwBAT;
       spf=pass (google.com: domain of 01060192f6bcf19c-b0104cf4-439f-4763-b934-f987f089f32e-000000@ap-northeast-1.amazonses.com designates 23.251.234.8 as permitted sender) smtp.mailfrom=01060192f6bcf19c-b0104cf4-439f-4763-b934-f987f089f32e-000000@ap-northeast-1.amazonses.com

mail.kktkht94.workとしては何も設定していないのでpassしていない。

DKIM署名の追加

引き続きでDKIM署名を有効にしてメール送信してみる。

手順

DKIM署名を有効にする。

結果

Authentication-Resultsにmail.kktkht94.workのドメインが追加された。 これによりDKIM署名のドメインとメール送信元(From)のドメインが一致するようになった。

Authentication-Results: mx.google.com;
       dkim=pass [email protected] header.s=5fk64cpnhu4ib67isszacsaptfn4wpix header.b=E1Vbe2WQ;
       dkim=pass [email protected] header.s=wf7ez2pjvcsodozkoqksj277kza7wu47 header.b=IhFJqhog;
       spf=pass (google.com: domain of 01060192f698a1ad-4238de79-f8b0-4082-93e2-10f7f1020c90-000000@ap-northeast-1.amazonses.com designates 23.251.234.10 as permitted sender) smtp.mailfrom=01060192f698a1ad-4238de79-f8b0-4082-93e2-10f7f1020c90-000000@ap-northeast-1.amazonses.com

SPF設定の追加

ここから更にSPFについてもメール送信元と一致するようにする。

手順

MAIL FROMドメインをカスタムにする。 ここでサブドメインを指定する必要があるためspfとした。

SPFのためにAmazon SESのTXTレコードとMXレコードを追加する。こちらについてもボタンをクリックだけで実施できる。 TXTレコードを見るとamazonses.comをincludeしている。

結果

これでSPFについても自身のドメインでpassされることを確認できた。 ドメインはspf.mail.kktkht94.workとなっている。

Authentication-Results: mx.google.com;
       dkim=pass [email protected] header.s=5fk64cpnhu4ib67isszacsaptfn4wpix header.b=ZJLwsNrV;
       dkim=pass [email protected] header.s=wf7ez2pjvcsodozkoqksj277kza7wu47 header.b=Uk50hfqH;
       spf=pass (google.com: domain of 01060192f6a02e0a-259e68ff-e0eb-4e05-b6f9-02cd4cd546af-000000@spf.mail.kktkht94.work designates 23.251.234.9 as permitted sender) smtp.mailfrom=01060192f6a02e0a-259e68ff-e0eb-4e05-b6f9-02cd4cd546af-000000@spf.mail.kktkht94.work

DMARC設定の追加

ここまででSPFのドメイン検証とDMARC署名の検証を自身のドメインでできるようになった。最後にDMARCの設定を追加する。

手順

こちらもボタンクリックで追加できた。 "v=DMARC1; p=none;"となっており特にDMARCとしての設定は追加でしていない。

結果

Authentication-Resultsを確認しDMARCもpassされることを確認した。

Authentication-Results: mx.google.com;
       dkim=pass [email protected] header.s=5fk64cpnhu4ib67isszacsaptfn4wpix header.b=YSMfOuYj;
       dkim=pass [email protected] header.s=wf7ez2pjvcsodozkoqksj277kza7wu47 header.b=hAmHHFwc;
       spf=pass (google.com: domain of 01060192f69b485e-e0626f05-c8ee-4775-a249-5eb4f66fd6b6-000000@admin.mail.kktkht94.work designates 23.251.234.9 as permitted sender) smtp.mailfrom=01060192f69b485e-e0626f05-c8ee-4775-a249-5eb4f66fd6b6-000000@admin.mail.kktkht94.work;
       dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mail.kktkht94.work

DKIM署名あり、SPF設定なし、DMARC設定ありの確認

ここでSPF設定をあえて削除したがDMARCはpassのままだった。 SPFがap-northeast-1.amazonses.comに戻っている。

Authentication-Results: mx.google.com;
       dkim=pass [email protected] header.s=5fk64cpnhu4ib67isszacsaptfn4wpix header.b=iNKFR56v;
       dkim=pass [email protected] header.s=wf7ez2pjvcsodozkoqksj277kza7wu47 header.b=bmcuY1SQ;
       spf=pass (google.com: domain of 01060192f6f6b342-2ba8b635-97eb-4348-9d39-df6115ed1623-000000@ap-northeast-1.amazonses.com designates 23.251.234.12 as permitted sender) smtp.mailfrom=01060192f6f6b342-2ba8b635-97eb-4348-9d39-df6115ed1623-000000@ap-northeast-1.amazonses.com;
       dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mail.kktkht94.work

DKIM署名なし、SPF設定なし、DMARC設定ありの確認

さらにDKIM署名も無効にしたところ、DMARCはfailとなった。

Authentication-Results: mx.google.com;
       dkim=pass [email protected] header.s=wf7ez2pjvcsodozkoqksj277kza7wu47 header.b=BP4adKyP;
       spf=pass (google.com: domain of 01060192f6f85d0c-90e92a54-dd8e-4f70-a01e-a1380725d9a1-000000@ap-northeast-1.amazonses.com designates 23.251.234.8 as permitted sender) smtp.mailfrom=01060192f6f85d0c-90e92a54-dd8e-4f70-a01e-a1380725d9a1-000000@ap-northeast-1.amazonses.com;
       dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mail.kktkht94.work

DKIM署名なし、SPF設定あり、DMARC設定ありの確認

さらにSPFを再度設定したところDMARCがpassとなった。 DMARCがpassするためには、SPFまたはDKIM署名についてメール送信元のドメインと一致している必要があることを確認できた。

Authentication-Results: mx.google.com;
       dkim=pass [email protected] header.s=wf7ez2pjvcsodozkoqksj277kza7wu47 header.b=GAQiyp75;
       spf=pass (google.com: domain of 01060192f71530e9-342c9ac8-e12f-4104-bc0c-f3e2704840a3-000000@spf.mail.kktkht94.work designates 23.251.234.8 as permitted sender) smtp.mailfrom=01060192f71530e9-342c9ac8-e12f-4104-bc0c-f3e2704840a3-000000@spf.mail.kktkht94.work;
       dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mail.kktkht94.work

感想

SPF/DKIM/DMARCについてそれぞれのON、OFFの設定をすることで仕組みが少しだけわかった。 Gmailのガイドラインはこれだけではないので用途に合わせて再確認する。

それぞれについて深くわからなくてもDNSサーバへの追加するだけで対応でき、メールサーバを用意しなくてよいのは本当に便利。

参考