2010年7月11日日曜日

milter manager

Sendmail には、メールのスパム判定や、署名のために、Milter プロトコルというものを実装しています。
Milter を使った資産を利用出来るように、Postfix でも Milter をサポートしています。
そこで、Postfix + Milter でスパム対策ができないか検証してみたいと思います。


インストール (Ubuntu 10.04)

APT リポジトリを追加します。
私が試した段階では、Ubuntu 10.04 用には、開発版しか用意されていなかったので、
開発版のリポジトリを有効にしておきます。

$ sudo -i
# cat >/etc/apt/sources.list.d/milter-manager.list <<EOF
# deb http://milter-manager.sourceforge.net/ubuntu/stable/ lucid universe
# deb-src http://milter-manager.sourceforge.net/ubuntu/stable/ lucid universe
deb http://milter-manager.sourceforge.net/ubuntu/development/ lucid universe
deb-src http://milter-manager.sourceforge.net/ubuntu/development/ lucid universe
EOF
# exit

公開鍵を登録します。

$ gpg --keyserver hkp://subkeys.pgp.net --recv-keys 1C837F31
$ gpg --export 1C837F31 | sudo apt-key add -

milter-manager をインストールします。
$ sudo apt-get update
$ sudo apt-get install milter-manager

Postfix をインストールします。
$ sudo apt-get install postfix

milter-greylist をインストールします。
$ sudo apt-get install milter-greylist


設定 (milter-greylist)

$ sudo vi /etc/milter-greylist/greylist.conf

変更点 ----
# ホワイトリストに含まれないものは、greylist する。
racl greylist default
# 送信元の MTA が複数ある場合に対応するため /24 の範囲で検査する
subnetmatch /24
# 再送を受け入れる時間を 30m から 10m へ短くする
greylist 10m
# オートホワイトリストの期間を 1日から 1週間に長くする
autowhite 1w
----

milter-greylist の起動スクリプトを設定します。
ソケットファイルを作成するグループを Postfix に変更するのが難しそうなので、TCP でソケットを作成することとします。

$ sudo vi /etc/default/milter-greylist
$ egrep -v '^#|^$' /etc/default/milter-greylist
ENABLED=1
SOCKET="inet:11125@[127.0.0.1]"

milter-greylist を起動します。
$ sudo service milter-greylist restart

接続テストを実施します。(-v オプションで詳細表示になります。)
$ sudo -u postfix milter-test-server -s inet:11125@127.0.0.1
status: temporary-failure
elapsed-time: 0.00522216 seconds


設定 (milter manager)

milter manager の設定を確認するには、以下のコマンドを実行します。
$ milter-manager --show-config

$ milter-manager --show-config | egrep 'define_milter|milter.connection_spec|milter.enabled'
define_milter("milter-greylist") do |milter|
milter.connection_spec = "inet:11125@[127.0.0.1]"
milter.enabled = true

接続するソケットの設定と milter.enabled = true を確認します。

設定を変更したい場合は、/etc/milter-manager/milter-manager.local.conf を作成して、設定を記述します。

amavisd-milter と clamav でウイルス検査を試してみる」の例を参考にしてください。


milter manager の起動スクリプトを設定します。
$ sudo vi /etc/default/milter-manager
$ egrep -v '^#|^$' /etc/default/milter-manager
USER=postfix
GROUP=postfix
SOCKET_GROUP=postfix
CONNECTION_SPEC=unix:/var/spool/postfix/private/milter-manager.sock

milter-manager を起動します。
$ sudo service milter-manager restart

接続テストを実施します。(-v オプションで詳細表示になります。)
$ sudo -u postfix milter-test-server -s unix:/var/spool/postfix/private/milter-manager.sock
status: accept
elapsed-time: 0.0451655 seconds


設定 (Postfix)

Postfix から、milter manager を利用する設定をする。
$ sudo vi /etc/postfix/main.cf
$ perl -ne 'print if (/^# for milter manager/ .. /^\s/);' /etc/postfix/main.cf
# for milter manager
milter_protocol = 6
milter_default_action = tempfail
milter_mail_macros = {auth_author} {auth_type} {auth_authen}
smtpd_milters = unix:/private/milter-manager.sock

Postfix を再起動する。
$ sudo service postfix reload


確認

ログの確認をする。
$ less /var/log/mail.info


参考

0 件のコメント: