ホーム » 「openDMARC」タグがついた投稿

タグアーカイブ: openDMARC

システム

最近の投稿

アーカイブ

カテゴリー

dmarc=fail p=none の受け取り拒否

自宅メールサーバでは、Postfix + Postgrey + amavisd + OpenDMARC + Spamassassin で運用しているが、
From 偽装は OpenDMARC で reject などができるようになった。

しかしながら、spammer は dmarc=fail 判定されても相手にメールが届くようにするため、ポリシー p=none のドメイン名探し、そのドメイン名を From にして、しつこく何度も送ってくる。

特定ドメインの dmarc=fail, p=none は受け取り拒否

しかたがないので、Postfix の OpenDMARC判定後に Postfix の header_checks の機能で p=none で送られてきたドメインは REJECT するようにしてみた。

((( /etc/postfix/main.cf )))
header_checks = regexp:/etc/postfix/header_checks

((( /etc/postfix/header_checks )))
/^Authentication-Results:.*dmarc=fail.*p=none.*header\.from=monex\.com/ \
        REJECT DMARC authentication failed for specific domain.

spammerは怪しいドメインを次々みつけてくる

header_checks で運用してたけど、spammer は次々と怪しいドメイン(p=noneのドメイン)を見つけてきて、すり抜けてくるメールを送ってくる。このままじゃ、header_checks ファイルを日々更新することになりそう。

しかたがないので、dmarc=fail, p=none は SpamAssassin で Spam スコアを上げて、迷惑メールに確実に落とすことを目標にしたほうが良さそう。

((( /etc/spamassassin/local.cf の末尾に追記 )))
# DMARC失敗 (p=none) を検知するルール
header   LOCAL_DMARC_FAIL_NONE  Authentication-Results =~ /dmarc=fail \(p=none/
describe LOCAL_DMARC_FAIL_NONE  DMARC validation failed with p=none
score    LOCAL_DMARC_FAIL_NONE  3.5

# (参考) DMARC失敗 (p=quarantine) の場合もスコアを上げたい場合
header   LOCAL_DMARC_FAIL_QUAR  Authentication-Results =~ /dmarc=fail \(p=quarantine/
describe LOCAL_DMARC_FAIL_QUAR  DMARC validation failed with p=quarantine
score    LOCAL_DMARC_FAIL_QUAR  5.0

DMARCレポートの修正

DMARCレポートを出力

最近、dmarc のメールが届かないと思ってたら、中で使っている munpack がインストールされていない。インストールしようにも apt で見つからない。Ubuntu/debian のパッケージから消えたようだ。Gemini に代替品を聞いたら ripmime を紹介される。

((( ripmime をインストール )))
$ sudo apt install ripmime

((( 修正 )))
  # 標準入力のメールから添付ファイルを抽出
- system( "/usr/bin/munpack -q -C $tmpdir > /dev/null 2>&1" ) ;
+ system( "/usr/bin/ripmime -q -i - -d $tmpdir > /dev/null 2>&1" ) ;

ついでに、DMARC のポリシーを p=quarantine から p=reject に変更しておいた。

spam が google などのクラウドばっかり

自宅サーバへの spam は、spamassasin などでかなり除去できるようにしてあるけど、それでも相変わらず届いている。送り元の IP アドレスを調べて 完全拒否などもしているけど、それでも届くのか。

送り元の確認

あらためて、送り元を確認したら、google クラウドサーバとか amazon クラウド。IPアドレスでは消せないなぁ。

$ cd ~/Maildir/.Junk/cur
$ grep "Received: from" * \
  | grep -v 127. \
  | awk -F [][] '{print $2}' \  [,]を区切り文字として真ん中を取り出す
  | sort | uniq -c | sort -r
      6 202.238.198.26
      1 54.169.135.62
      1 52.76.242.183
      1 35.236.54.228
      1 35.236.40.141
      1 35.226.131.57
      1 34.96.185.118
      1 34.176.225.88
      1 34.163.22.216
      1 34.155.225.82
         :

OpenDMARC fail で消せばいい

メール確認してたら、OpenDMARC が fail 返しているじゃん。こんなの Reject されてると思ってたけど、

“Authentication-Results: OpenDMARC; dmarc=fail (p=reject dis=none) header.from=monex.co.jp”

opendmarc.conf を確認したら、デフォルトのままで reject してなかった。ということで reject するように設定変更。

((( /etc/opendmarc.conf )))
# 認証に失敗したメールを拒否するように変更
RejectFailures true

$ sudo systemctl restart opendmarc

職場からのメールは、fukui-nct.ac.jp 発信のメールが、fukui.kosen-ac.jp で届くので、dmarc=fail で失敗判定なんだけど (p=none) なので、普通に届く。

んで、自宅ドメインは…. p=quarantine 「隔離」設定になってるな。そろそろ reject「拒否」にしてもいいかも。

openDMARCの設定

gemini cli で設定確認

最近の自宅サーバでの暇つぶしは、gemini-cli を使って設定の見直し。

gemini が確認する際には、sudo 付きで systemctl restart やら LOGファイルにエラーが記録されていないか見たうえで、次々と問題点の提案&改善&実行してくれる。

openDMARCが動かなかった原因

んで、自サバで動かしているメールサーバで、メール受信時の確認として、openDMARC を導入しようとしてたけど、うまくいってなかった。そこで、「”/etc/postfix”を確認して、”/etc/opendmarc.conf”を確認して」を連発してみた。

openDMARC については、opendmarc のグループに postfix ユーザが含まれていなかったのが原因。

これで、受信メールの正当性チェックで spam が減らせるかな。

Google 検索

My Google   Yahoo

Microsoft

ファンサイト

メタ情報