SPFの効果をMuninでグラフにしてみる

SPAM対策として、Sender Policy Freamwork(SPF)を設定して久しいのだけど、どう効いているのかまでは、あんまり気にしてなかったのだが、MuninのPluginを流用すると簡単にグラフ化できることに気が付いたので、やってみた。


準備と前提

SPFに対応するためのパッケージとmuninのパッケージがインストールされているのが前提。
ちなみに、sidで動いているので、そのあたりも注意のこと。

eswat2:~# aptitude search spf | grep ^i
i   libmail-spf-perl                - Perl implementation of Sender Policy Frame
i   libmail-spf-query-perl          - query SPF (Sender Policy Framework) to val
i   libspf-dev                      - the ANSI C SPF reference library (developm
i   libspf-doc                      - the ANSI C SPF reference library (document
i   libspf0                         - the ANSI C SPF reference library (runtime
i   libspf2-2                       - library for validating mail senders with S
i   libspf2-dev                     - Header and development libraries for libsp
i   postfix-policyd-spf-perl        - pure-Perl Postfix policy server for RFC 44
i   spf-tools-perl                  - SPF tools (spfquery, spfd) based on the Ma
eswat2:~# aptitude search munin | grep ^i
i   munin                           - network-wide graphing framework (grapher/g
i   munin-node                      - network-wide graphing framework (node)

SPF関連とmuninパッケージのインストールと設定

SPF関連とmuninのパッケージのインストールと設定に関しては、今回は割愛。機会を見て、このあたりもエントリーにまとめたいな、と・・・。
とりあえず、記憶ではそれほど問題となるような点はなかったと思うので、どちらも付属するドキュメントを読めば、大丈夫。(なはず・・・。)

muninにSPF用のpluginを準備、設定する

SPF用のスクリプトは、一からじゃなくて、これをベースに修正していく。
修正ポイントは、「ログの中の、どのキーワードで集計するのか」ということになるので、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="のうしろにどんなキーワードが来るのかを確認。


eswat2:/var/log# grep 'Policy action' mail.log | perl -pe 's/ +/\t/g' | cut -f8 | sort | uniq -c
     51 action=550
    884 action=DEFER_IF_PERMIT
     17 action=DUNNO
   2169 action=PREPEND

と、4種類が抽出されたので、これを元にスクリプトを修正。
元々のスクリプト自体が、そんなに複雑なことをやっているわけではないので、見ればある程度どんなことをやっているのか判ると思うけど、修正したスクリプト(munin-spf.txt)を公開しておきます。これを、適当な名前(spfとか)を付けて、/usr/share/munin/pluginsに保存をしてください。保存したら、"chmod 755 /usr/share/munin/plugins/spf"を実行して、実行権限を付けておくのを忘れずに。

続いて、munin-nodeが、spfのpluginを実行できるように設定していきます。
基本的には、/usr/share/munin/pluginsに保存したspfスクリプトに、/etc/munin/pluginsからリンクを張ればOK。


eswat2:~# cd /etc/munin/plugins/
eswat2:/etc/munin/plugins# ln -s /usr/share/munin/plugins/spf .
eswat2:/etc/munin/plugins# ls -l spf
lrwxrwxrwx 1 root root 28 2007-12-09 19:12 spf -> /usr/share/munin/plugins/spf

あとは、/etc/munin/plugin-conf.d/munin-nodeに、次の2行を追加したら、準備完了。

[spf]
group   adm

最後に、起動スクリプトを使って、munin-nodeを再起動。

eswat2:/etc/munin/plugins# /etc/init.d/munin-node restart
Stopping Munin-Node: done.
Starting Munin-Node: done.

再起動後、しばらく待ってから、自分のサーバのmuninのページをチェック、グラフが書かれていればOK、となります。
やり方さえ判れば、他のものでも、グラフ化できると思うので、色々試してみてください。

Munin : Sender Policy Freamwork

トラックバック(0)

コメントする