✉️

メールの設定について(SPF、DKIM、DMARC)

公開日
16日前
2024-06-28
更新日
2日前
2024-07-11
更新履歴

この記事について

メールに関する技術であるSPF、DKIM、DMARCについて整理した記事です。

SPFとは

SPFとはなりすましメールを防止するため、電子メールの送信元を認証するための技術です。

DKIMとは

DKIMとは、電子メールの送信元ドメインを認証し、メッセージが改ざんされていないことを確認する技術です。

DMARCとは

DMARCとは、フィッシング、スパム、なりすましメールなどの不正メールを防止するための技術です。SPFやDKIMと組み合わせて、送信元ドメインの認証を強化します。

DNSレコードの例

以下はそれぞの技術のDNSレコードの例です。

SPFレコード

example.com. IN TXT "v=spf1 ip4:127.0.0.1 -all"

ドメイン名(example.com)、IPアドレス(127.0.0.1)の部分は任意の値に置き換えます。

タグ名説明
vバージョンv=spf1
ip4許可されたIPアドレス範囲ip4:127.0.0.1
allすべての受信メールが照合されることを指定-all

DKIMレコード

SELECTOR._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq..."

セレクタ名(SELECTOR)、ドメイン名(example.com)、公開鍵(MIIBIjANBgkq...)の部分は任意の値に置き換えます。

タグ名説明
vバージョンv=DKIM1
k鍵の種類k=rsa
p公開鍵p=MIIBIjANBgkq...

DMARCレコード

_dmarc.example.com. IN TXT "v=DMARC1;p=none;rua=mailto:dmarc@example.com"

ドメイン名(example.com)、メールアドレス(dmarc@example.com)の部分は任意の値に置き換えます。

タグ名説明
vバージョンv=DMARC1
pポリシーp=none
rua送信先の集計レポートrua=dmarc@example.com

チェックツール

それぞれのDNSレコードを追加した後は以下のツールで正しく設定されているかチェックすることができます。

SPFチェッカー

Free SPF Record Checker - Check SPF Record - SPF Record Lookup - DMARCLY
DMARCLY - SPF Record Checker
dmarcly.com favicon
dmarcly.com

DKIMチェッカー

Free DKIM Record Checker - Check DKIM Record - DKIM Lookup - DMARCLY
DMARCLY - DKIM Checker
dmarcly.com favicon
dmarcly.com

DMARCチェッカー

Free DMARC Checker - Check DMARC Record - DMARC Lookup - DMARCLY
DMARCLY - DMARC Checker
dmarcly.com favicon
dmarcly.com

Route53にDKIMのレコードを追加するときに CharacterStringTooLong というエラーになる場合

Route53のレコード追加では255文字までの制限があるため、それ以上の文字列を設定する場合に工夫が必要です。Terraformの定義にも工夫がいるため参考になるGitHubのIssueを紹介します。

Route53 doesn't validate TXT record lengths · Issue #14941 · hashicorp/terraform-provider-aws
Community Note Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request Please do not leave "+1" or other comments that d...
github.com favicon
github.com
Route53 doesn't validate TXT record lengths · Issue #14941 · hashicorp/terraform-provider-aws

上記のIssueで紹介されていたHCLは以下です。

locals {
  dkim_record = "v=DKIM1; k=rsa; p=MIIBIjAN..."
  zone_id = "..."
  domain = "example.com"
}

resource "aws_route53_record" "this" {
  zone_id = local.zone_id
  name    = "selector._domainkey.${local.domain}"
  type    = "TXT"
  records = [
    join("\"\"", [
      substr(local.dkim_record, 0, 255),
      substr(local.dkim_record, 255, 255),
    ])
  ]
  ttl = "300"
}

Zennに詳しく解説されている記事もあります。

AWS route53にDKIMのTXTレコードを追加するとCharacterStringTooLongエラーになったので解決した
zenn.dev favicon
zenn.dev
AWS route53にDKIMのTXTレコードを追加するとCharacterStringTooLongエラーになったので解決した

もっと詳しく知りたい

以下はそれぞれの技術について詳しく解説されているWEBサイトへのリンクです。

SPF

About SPF records - Google Workspace Admin Help
Protect against spoofing & phishing, and help prevent messages from being marked as spam Who this article is for This article is for IT professionals and people who have experience setting u
google.com favicon
google.com

DKIM

DKIMの確認方法をわかりやすく解説!初心者でもわかるDKIMの仕組みとSPF・DMARCとの違い | エンジニア向けメール配信システム「ブラストエンジン(blastengine)」
ビジネスの場でよく使われる連絡ツールといえば電話とメールでしょう。特にメールは手軽に使用できるコミュニケーションツールとして重要な役割を担っています。 しかし、フィッシング詐欺やマルウェア感染などのメールによる被害も後を […]
blastengine.jp favicon
blastengine.jp
DKIMの確認方法をわかりやすく解説!初心者でもわかるDKIMの仕組みとSPF・DMARCとの違い | エンジニア向けメール配信システム「ブラストエンジン(blastengine)」

DMARC

Add your DMARC record - Google Workspace Admin Help
Protect against spoofing & phishing, and help prevent messages from being marked as spam You define Domain-based Message Authentication, Reporting, and Conformance (DMARC) functionality by entering a
google.com favicon
google.com