SPFの効果をMuninでグラフにしてみる[補足&修正]

以前書いたmuninにSPF(Sender Policy Freamwork)の頑張り具合をグラフ化させる方法ですが、方法自体は良いのだけど、どうも集計すべき値が間違っているような気がしてきた。

修正ポイントは、「ログの中の、どのキーワードで集計するのか」ということになるので、postfixのログを確認してみると・・・。

Dec 8 16:54:46 eswat2 postfix/policy-spf[12781]: : Policy action=550 Please see http://www.openspf.org/Why?s=mfrom&id=prashant%40paratype.com&ip=82.131.186.125&r=eswat2.downtown.jp

"Policy action="のあたりが集計に使えそうなので、実際に"action="のうしろにどんなキーワードが来るのかを確認。

SPFの効果をMuninでグラフにしてみる - Soukaku's HENA-CHOKO Blog

なので、ちょっと手直しをしてみた。


集計すべきパラメータは?

実を言うと前回ののエントリーを書いてからしばらくして、なんか値の取りこぼしをしているような気がしていたのだけど、そのままほったらかしにしていたんだよね。 で、改めてログをチェックしてみたところ、1通のメールを処理すると、SPFは3行のログを出力する。

Oct  8 23:18:56 eswat2 postfix/policy-spf[25762]: : SPF None (No applicable sender policy available): Envelope-from: tempestdianequeennn@btopenworld.com
Oct  8 23:18:56 eswat2 postfix/policy-spf[25762]: handler sender_policy_framework: is decisive.
Oct  8 23:18:56 eswat2 postfix/policy-spf[25762]: : Policy action=PREPEND Received-SPF: none (btopenworld.com: No applicable sender policy available) receiver=eswat2.downtown.jp; identity=mfrom; envelope-from="tempestdianequeennn@btopenworld.com"; helo="[150.199.193.205]"; client-ip=150.199.193.205

このうちの3行目の"Policy action="の部分を使って集計していたのが前回。それよりも1行目の真ん中あたりの"SPF None"のあたりの記述の部分を使って、ログをちょと集計してみると、こんな感じに。

eswat2:/tmp# zgrep -e 'policy-spf\[[0-9]*\]: : SPF' /var/log/mail.info*.gz | perl -pe 's/^.*: : //' | cut -d " " -f 1-2 | sort | uniq -c
    491 SPF Fail
    271 SPF Neutral
     30 SPF NeutralByDefault
  13287 SPF None
   5357 SPF Pass
     94 SPF PermError
   1798 SPF SoftFail
   1410 SPF TempError

実際にサーバ上で、cutの-fオプションの範囲を"1-3"とか"1-4"とか"1-5"と広げていくと

eswat2:/tmp# zgrep -e 'policy-spf\[[0-9]*\]: : SPF' /var/log/mail.info*.gz | perl -pe 's/^.*: : //' | cut -d " " -f 1-5 | sort | uniq -c
    491 SPF Fail (Mechanism '-all' matched):
    271 SPF Neutral (Mechanism '?all' matched):
     30 SPF NeutralByDefault (Default neutral result
  13287 SPF None (No applicable sender
      8 SPF Pass (Mechanism 'a' matched):
     19 SPF Pass (Mechanism 'a:inte1.example.jp' matched):
     35 SPF Pass (Mechanism 'a:inte2.example.jp' matched):
-- cut --

SPFのグラフ

となって、実際に相手のメールサーバから取得したSPFの情報がロギングされていることが判る。ということで、この"SPF"の後ろの1ワード目で集計するようにスクリプトを変更。(munin-spf2.txt
スクリプトの変更後のグラフを見ると、正しく描けているようなので、これで大丈夫でしょう。

で、SPF自体どうなの?

ウチに来るメールの90%ぐらいは、SPFの設定をしていないサイトから来ているモノのようです。SPFの設定がされているサイトは増えてきているようですが、いかんせん設定されていない迷惑メールの方が格段に多いのが現状ってことのようですね。
タイミングを見て、SPFの設定されていないサイトからのメールは、明示的に拒否する設定にしても良いのかなぁ〜などと思いつつ、グラフを見ながらその辺を決めればいいのかな?

トラックバック(0)

コメントする