DMARCの学習とテスト
(learndmarc.com)- LearnDMARCは、メール認証の中核である SPF、DKIM、DMARC を1つの画面で学習・テストできるようにするもので、全体の視覚的な説明はデスクトップで確認できる
- 結果画面では、まず Source IP address、Hostname、Sender などの接続情報が表示され、認証判定の出発点を確認できる
- SPFとDKIMは、それぞれ認証対象ドメインと結果を示し、DMARC判定に必要な Alignment の有無も併せて表示する
- DMARC領域では、RFC5322.From domain と Policy(p=)、SPF、DKIM の結果をまとめ、最終的な DMARC Result につなげる
- 最後に Final verdict で全体の判定を確認でき、結果の匿名化とDMARC学習リンクも提供される
LearnDMARCの目的
- SPF、DKIM、DMARC を学習し、テストするためのページ
- DMARCの動作方式に関する全体の視覚的な説明は、サイトをデスクトップで開くと見られる
結果画面で確認する項目
-
Connection parameters
- Source IP address
- Hostname
- Sender
-
SPF
- Domain
- Identity
- Auth Result
- DMARC Alignment
-
DKIM
- Domain
- Selector
- Algorithm
- Auth Result
- DMARC Alignment
-
DMARC
- RFC5322.From domain
- Policy(p=)
- SPF
- DKIM
- DMARC Result
最終判定と補助機能
- 結果画面は Final verdict で全体の判定を表示する
- Anonymize results で結果を匿名化できる
- Learn more about DMARC リンクが提供される
1件のコメント
Hacker News の意見
スパムを減らすために必要な中核的なメールサービスを推進する、よい方法だと思う。これまで一緒に仕事をした企業には、SPF、DKIM、DMARC だけでも十分な動機になってほしいといつも願っていたが、評判だけでは投資の優先順位を上げるには足りないことが多かった。
幸い、顧客と信頼できる形でコミュニケーションしたい企業には、マーケターが好みそうな標準である Brand Indicators for Message Identification(BIMI) がある。これでセキュリティだけでなく、見栄えのよいロゴも手に入る: https://www.litmus.com/blog/what-is-bimi-and-why-should-emai...
複数の企業で、「顧客体験」を名目に BIMI を使って DMARC をきちんと、つまり
P=Rejectで実装させたことがある。SPF も DKIM も、メールのスプーフィング防止を完全には解決しない。SPF は HELO/MAIL FROM 識別子を認証し、DKIM は DKIM-Signature ヘッダーの
d=フィールドを認証するが、どちらもエンドユーザーに表示されるFromヘッダーを認証しない。そのため、SPF と DKIM の検証に通っても、Fromアドレスは依然として偽装され得る。メールドメインに DMARC+ がないのは明らかに問題だが、DMARC+ だけで「本当の送信者か」という問題が解決するわけでもない。
関連資料: DMARC、SPF、DKIM がどのように動作するかをインタラクティブに見る - https://news.ycombinator.com/item?id=29869266 - 2022年1月、コメント108件
DMARC レポートを処理するオープンソース、あるいは少なくとも無料の方法を知っている人がいるか気になる。
SPF、DKIM、DMARC を有効にしたメールドメインがいくつかあり、動作はしているが、DMARC には厄介な問題が2つある。
(1) サイトによっては「あなたはメッセージを3通送信し、すべて正常で、すべての検査に合格した」といった DMARC レポートを送ってくる。
(2) ときどき別のサーバー経由で自分のドメインを使ってスパムを送ろうとする試みがあり、「誰かが HELO/FROM にあなたのドメインを入れてスパムを試みたが、検査に失敗したためブロックした」というレポートを受け取る。
どちらも自分には役に立たない。自分のユーザーが @gmail.com や @mail.ru にメールを送ったという事実は知りたくないし、2つ目の場合も自分のサーバーの IP ではないのでできることがない。
XML を自分で展開して確認するのは面倒すぎるので、フィルターやダッシュボードがあると非常に便利そうだ。
レポートの要約と失敗の詳細を表示する。そこまで洗練されてはいないが、拡張するには十分シンプルだと思う。SMTP-TLS レポートもパースする。
「DMARC が通るには DKIM および/または SPF の検査に合格し、ドメインがアラインされている必要がある」という説明は、私の理解では間違っている。
「and/or」ではなく or だ。DKIM または SPF のどちらか一方だけ通ればよく、両方を要求する方法はない。
根本的な問題は、MailChannels が認証を要求していなかったことだ。Cloudflare Workers が MailChannels の API エンドポイントを呼び出してメールを送信でき、MailChannels は SPF ポリシーに
include:レコードを追加するよう求めていた。その結果、MailChannels がすべてのドメインの有効な送信者となり、誰でも誰かになりすませる状態になっていた。ホスティングされている200万ドメインのうち DKIM を設定していたのは約400だけだったが、たとえ DKIM があっても SPF の通過だけで DMARC は通っていた。
[1] https://blog.cloudflare.com/sending-email-from-workers-with-...
From:/Reply-To:フィールドに IP アドレスリテラルが入ったメールアドレスだけがあれば「SPF」を得られ、最初のトランザクションでグレーリスティングを避けるためにはるかによいスコアを得る。本文に URL がなければなおよい。ただし、これは常識だ。
プロセスを反復的にたどれるようにしている方式が本当にいい。数年前、以前の会社で適切なセキュリティ対策とともに自前ホスティングのメール送信へ移行しようとしたとき、こういうものがあれば大いに助かったはずだ。
Appleの「Hide My Email」サービスでメールを送ったところエラーが発生した: https://support.apple.com/en-us/HT210425
Unhandled Promise Rejection:TypeError: a.from.replace(/[<]/gi," is not a function. (In 'a.from.replace(/[<]/gi,"(")', 'a.from.replace(/[<]/gi,"' is undefined)dist.min.js:3:32767インターフェイスが「Here are the message headers and message body:」と
DKIM-Signature: d=icloud.com s=1a1haiを表示し始めた後に発生したこのWebサイトがHacker Newsで紹介されてから1年以上経っているので、JavaScriptコードが古くなって動かなくなったようだ。そもそもSafariをサポートしていなかった可能性もあるし、両方かもしれない。それでもDMARCテストの第1部と第2部で多くを学べたし、その後の段階で何が起きるのか感覚をつかめた
[2]
dig +noall +answer -t TXT | grep -i SPF[3]
dig +noall +answer -t Atelnet learndmarc.com 25Trying 87.239.13.42...Connected to learndmarc.com.Escape character is '^]'.220 allspark.uriports.com ESMTP URIports Mail Portal 1.03.2 Sun, 01 Oct 2023 21:55:40 +0000HELO there250 allspark.uriports.com Hello []MAIL From: me@example.com250 OKRCPT To: ld-49101f55f6@learndmarc.com250 AcceptedDATA354 Enter message, ending with "." on a line by itself.250 OK id=1qn4QF-00CUhd-5j入力している間に「ラブレターまで書く必要はない」という感じで面白かった。違うかもしれないが、データ区間では
From:とTo:ヘッダーを繰り返す必要があるようだ何年もの間、ホスト名の代わりに HELO there でどれだけ多くのメールを送ってきたかを思い出すと、今でも笑ってしまう。また、インターネットトラフィックのうち
Enter message, ending with . on a line by itselfが占める割合がどれくらいなのかも気になるfromフィールドなしでメールを送ったので壊れたのだ。プログラマーが悪いユーザーが悪いことをするケースをテストしようと思いつかなかっただけで、特別な陰謀はない30年ほど前には善意と理想にかなっていた技術を21世紀でも動かそうとして、互換レイヤーとハック を幾重にも積み重ねて依存しているのは本当に驚きだ
VOIP/通信の世界も同じだ
Microsoftも最近メール到達性の問題を抱えていて、私たちのO365テナントの大半にSPF、DKIM、DMARCを確認するよう通知が出た。こちらはすでに正しく設定されていたが、一部のテナントでは小規模なメールプロバイダー(ISPレベル)にメールを送る際に問題があった。同じIPアドレスやメールサーバーからスパムが出ているため、小規模プロバイダーがIPやIPレンジを丸ごとブロックしていたからだ
面白い事実: sns.amazonaws.com にはまだDMARCレコードがない。カスタムドメインを使わない場合、AWS SNSのメッセージはここから届き、すべてのCloudWatch通知も
no-reply@sns.amazonaws.comから届くメールは本来こう動作すべきだが、現実には 許可リスト がある
DNSフェイルオーバーでも、こうしたチェックを正しく設定するのを忘れてはいけない
Exchange Onlineのデフォルト設定を使っていて詐欺に遭った会社を見たことがある
攻撃者がDNSを一時的に「利用不可」状態にすると、すべてのフィッシングメールが通ってしまった。MSのサーバーがDNS
temp errorで応答し、すべてのメールをスパムではないものとして通過させたからだ詳しくは
received-spf: TempError (protection.outlook.com: error in processing during lookup of : DNS Timeout)で、DKIMは送信者のSMTPサーバードメインで検査されるが、この場合はフィッシングに使われた攻撃者のサーバーだったその後、MSのIT/セキュリティサポートと素晴らしい時間を過ごしたが、彼らはメールがどう動作するのかも理解していなかった。非常に笑えると同時に悲しい経験で、アウトソーシングが彼らにうまく合っていることを願う