この記事について
メールに関する技術である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
DKIMチェッカー
Free DKIM Record Checker - Check DKIM Record - DKIM Lookup - DMARCLY
DMARCLY - DKIM Checker
dmarcly.com
DMARCチェッカー
Free DMARC Checker - Check DMARC Record - DMARC Lookup - DMARCLY
DMARCLY - DMARC Checker
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
上記の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
もっと詳しく知りたい
以下はそれぞれの技術について詳しく解説されている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
DKIM
DKIMの確認方法をわかりやすく解説!初心者でもわかるDKIMの仕組みとSPF・DMARCとの違い | エンジニア向けメール配信システム「ブラストエンジン(blastengine)」
ビジネスの場でよく使われる連絡ツールといえば電話とメールでしょう。特にメールは手軽に使用できるコミュニケーションツールとして重要な役割を担っています。 しかし、フィッシング詐欺やマルウェア感染などのメールによる被害も後を […]
blastengine.jp
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