• TOP
  • サーバー関連
  • 自社ドメイン(co.jp)のなりしまし迷惑メールを送られたので即DMARC対応した話

2022年9月12日

自社ドメイン(co.jp)のなりしまし迷惑メールを送られたので即DMARC対応した話

全く関係ない オーストラリアドイツ の ipaddress から
Envelope-from: info@exsample.co.jp
Header-From: info@exsample.co.jp
自社の info@exsample.co.jp を詐称され、大量のエラーメールが帰ってきました(途中で受取拒絶設定)
1回目 3,000
2回目 10,000 2日後


・やっていたこと
WEB xserverのシン・レンタル xserverのメールは使わない
MAIL さくらインターネットVPS postfix+dovecot+Let's encrypt(DKIM,DMARC,ARC)
gmail 個人のアドレスで取込や送信があるので include:_spf.google.com 記述


SPF dnsレコード設定済
"v=spf1 a:exsample.co.jp a:www.exsample.co.jp mx a:sv????.wpx.ne.jp include:_spf.google.com include:spf.sender.xserver.jp ~all"

DKIM opendkimとdnsレコード設定済 s=default
"v=DKIM1; k=rsa; p= 省略"

DMARC opendmarcとdnsレコード設定済(よく見る設定)
"v=DMARC1; p=none; pct=100; adkim=r; aspf=r;"

・時系列に書いていくと
最初の詐称spamに気づいてすぐにしたのは、DMARC p=none がダメなのでは?と思い
"v=DMARC1; p=quarantine; pct=100; adkim=r; aspf=r;"
に変更

意味は
p=none なにもしない
p=quarantine 認証失敗したメールは隔離してください
p=reject 認証失敗したメールは受信拒否してください


info@あてにメールがバウンスしてきて(failure notice, Mail delivery failed, spamへのauto responseなど)3,000程

また outbound.protection.outlook.com からのエラーが目立ったので
「grep outbound.protection.outlook.com /var/log/maillog | grep 'connect from' | awk '{ print $8 }' | sort」 実際のIPと下記から該当IP帯域を拒絶(2日後解除)

Office 365 URL および IP アドレス範囲
https://docs.microsoft.com/ja-jp/microsoft-365/enterprise/urls-and-ip-address-ranges?view=o365-worldwide


上記で対策したので、大丈夫だろうと期待したのですが、、、
2日後の日付が変わる頃にドイツから詐称spam発生

ちょっと考えて、SPFが ~all だからではないかと?思い立ち -all に変更
更に重複していたレコード類を整理
"v=spf1 a:exsample.co.jp mx include:_spf.google.com include:spf.sender.xserver.jp -all"

DMARCレコードに rua=mailto: ruf=mailto: を追加
"v=DMARC1; p=quarantine; pct=100; adkim=r; aspf=r; rua=mailto:dmarc-a@exsample.co.jp; ruf=mailto:dmarc-f@exsample.co.jp"

不要なメールを処理するため postfix の header_checks で
/^Subject: .*EXSAMPLE EXSAMPLE/ DISCARD
で DISCARD(通知なし受け取り拒否) して捨てる (10,000通近く受信)

ここまでの内容で、設定間違いがあったことに後で気づきました。


答えは「spfのdns lookupは10回以内」
最初の SPF 記述では lookup が11回あり、SPF設定したつもりができていなかった!

最初のSPFはこれで
"v=spf1 a:exsample.co.jp a:www.exsample.co.jp mx a:sv????.wpx.ne.jp include:_spf.google.com include:spf.sender.xserver.jp ~all"

dns lookup回数を数えると
1 a:exsample.co.jp
2 a:www.exsample.co.jp
3 mx
4 a:sv????.wpx.ne.jp
5 include:_spf.google.com
6 include:spf.sender.xserver.jp

5 _spf.google.com の中身
7 _netblocks.google.com
8 _netblocks2.google.com
9 _netblocks3.google.com

6 spf.sender.xserver.jp の中身
10 _spf.sender0.xserver.jp
11 _spf.sender1.xserver.jp
10回のlookup回数をオーバーしてしまい、何も設定してないのと同じ状況

DMARCはSPFとDKIMが正しく設定されていて初めて役立ちます


SPF変更後は lookup が10回以内になり正しい状態
同時に rua,ruf で設定したメールアドレスにレポートメールが届き始める
※以前は ip4:192.168.1.1 とかで書いてましたが、a:が楽だと気付いたのが間違いの始まり


spf lookupが10回以内できちんと設定できているかは、下記サイトで確認可能
SPF Lookup後にSPF Raw Checker
https://senderpolicyframework.com/lookup/
ドメイン入力後 Validate SPF Record
https://dnschecker.org/spf-record-validation.php
ドメイン入力後 Check SPF
https://easydmarc.com/tools/spf-lookup
ドメイン入力後 Check SPF Record
https://dmarcly.com/tools/spf-record-checker

DKIMレコードの確認
ドメインとセレクタ入力後 DKIM Lookup
https://mxtoolbox.com/dkim.aspx
ドメインとセレクタ入力後 Inspect DKIM
https://dmarcian.com/dkim-inspector/

DMARCレコードの確認は
ドメイン入力後 DMARC Lookup
https://mxtoolbox.com/DMARC.aspx
ドメイン入力後 Inspect the domain
https://dmarcian.com/dmarc-inspector/

あたりが使えます
DMARCで設定した rua= ruf= のメール
rua レポートは xml 形式を gz で圧縮して各サーバから大量に送ってくるので 人間が見るようにはできていません
ruf レポートはどこのIPから送ったメールがエラー出ているかわかるので設定しておくと設定エラーのサーバやspamに気づきます

rua レポートを自動解析したい場合 個人なら
https://powerdmarc.com/ja/
https://easydmarc.com/
が使えるようですが、今回企業ドメインなので使っていません

SPFで ~all と -allの違い
~all 送信元メールアドレスは詐称されている可能性がある
-all 送信元メールアドレスは詐称されている

~all の書式でSPF認証に失敗すると SoftFail
-all の書式でSPF認証に失敗すると Fail

メールを送信しないドメインなら
"v=spf1 -all"
と記述するとよいです


何時から設定をミスっていたのかとなると、「include:spf.sender.xserver.jp」を入れましたというXserverからのメールが来た22/02/17より後にincludeを追加し変更したようです

変更後の確認が甘かったのが、エラーの原因でしたorz
check-auth@verifier.port25.com にメール送るが簡単でよいかな


参考:
なりすまし対策ポータルナリタイ
https://www.naritai.jp/

あなたの会社のなりすましが現れたら? 迷惑メール対策方法とYahoo!メールのDMARC導入事例紹介
https://techblog.yahoo.co.jp/entry/2021070530163050/
Yahoo!メールのDMARC導入のその後と、「DMARCレポート」の活用術
https://techblog.yahoo.co.jp/entry/2021121030233781/

関連する記事:1件


  • follow us in feedly

スポンサーリンク