![]() |
![]() |
![]() |
milter managerリファレンスマニュアル | ![]() |
---|
Debian GNU/Linuxに特化したmilter managerのインストール方法について説明します。Debianに依存しない一般的なインストール情報は インストール を見てください。
milter managerのサイトで現在の安定版lennyと開発版squeezeと不安定版sid用のパッケージを配布しています。以下の記述はlennyを利用している場合のものです。squeezeやsidを利用している場合は適宜読み替えてください。
まず、以下の内容の/etc/apt/sources.list.d/milter-manager.listを作成します。
/etc/apt/sources.list.d/milter-manager.list:
deb http://milter-manager.sourceforge.net/debian/stable/ lenny main deb-src http://milter-manager.sourceforge.net/debian/stable/ lenny main # deb http://milter-manager.sourceforge.net/debian/development/ lenny main # deb-src http://milter-manager.sourceforge.net/debian/development/ lenny main
開発版を利用する場合は最初の2行をコメントアウトし、すでにコメントアウトされている2行のコメントを外します。
/etc/apt/sources.list.d/milter-manager.list:
deb http://milter-manager.sourceforge.net/debian/stable/ squeeze main deb-src http://milter-manager.sourceforge.net/debian/stable/ squeeze main # deb http://milter-manager.sourceforge.net/debian/development/ squeeze main # deb-src http://milter-manager.sourceforge.net/debian/development/ squeeze main
開発版を利用する場合は最初の2行をコメントアウトし、すでにコメントアウトされている2行のコメントを外します。
/etc/apt/sources.list.d/milter-manager.list:
deb http://milter-manager.sourceforge.net/debian/stable/ unstable main deb-src http://milter-manager.sourceforge.net/debian/stable/ unstable main # deb http://milter-manager.sourceforge.net/debian/development/ unstable main # deb-src http://milter-manager.sourceforge.net/debian/development/ unstable main
開発版を利用する場合は最初の2行をコメントアウトし、すでにコメントアウトされている2行のコメントを外します。
パッケージはkou@clear-code.comの鍵でサインされています。信用する場合は鍵を登録します。
% sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1C837F31
milter managerをインストールします。
% sudo aptitude update % sudo aptitude -V -D -y install milter-manager
MTAはPostfixを利用することとします。
% sudo aptitude -V -D -y install postfix
milterはspamass-milter、clamav-milter、milter-greylistを使用することとします。
clamav-milterはlenny-volatileにあるパッケージを利用します。lenny-volatileアーカイブは、簡単に言うと、新しいバージョンを使う必要のある一部のパッケージのみを提供するアーカイブです。例えば、clamav-milterは常に最新のウィルスデータベースと、そのデータベースに対応したバージョンが必要です。そのため、lenny-volatileを使用します。volatileアーカイブの詳しい説明は debian-volatileプロジェクト を参照してください。
lenny-volatileを使うために、以下の内容の/etc/apt/sources.list.d/volatile.listを作成します。
/etc/apt/sources.list.d/volatile.list:
deb http://ftp.jp.debian.org/debian-volatile/ lenny/volatile main contrib non-free deb-src http://ftp.jp.debian.org/debian-volatile/ lenny/volatile main contrib non-free
パッケージをアップデートし、milterをインストールします。
% sudo aptitude update % sudo aptitude -V -D -y install spamass-milter clamav-milter % sudo aptitude -V -D -y --without-recommends install milter-greylist
--without-recommendsを指定しているのは、Postfixが削除されてSendmailがインストールされてしまうからです。これは、milter-greylistの推奨パッケージとしてsendmailが登録されているためです。
milterの基本的な設定方針は以下の通りです。
UNIXドメインソケットで接続を受け付けるようにします。これは、セキュリティ面と速度面の理由からです。
UNIXドメインソケットはpostfixグループでの読み書き権限を設定します。これは、既存のmilterパッケージの設定をできるだけ利用するためです。
必要のない配送遅延をできるだけ抑えるため、milter-greylistは S25R にマッチするときのみ適用します。しかし、これはmilter-managerが自動で行うため、特に設定する必要はありません。
まず、spamdの設定をします。
/etc/spamassassin/local.cfに以下の内容を追加します。これで、スパム判定された場合のみ、その詳細をヘッダに追加するようになります。
report_safe 0 remove_header ham Status remove_header ham Level
spamdを有効にするため、/etc/default/spamassassinを以下のように変更します。
変更前:
ENABLED=0
変更後:
ENABLED=1
spamdを起動します。
% sudo /etc/init.d/spamassassin start
spamass-milterはデフォルトの設定で問題ありません。
clamav-milterのソケットはpostfixグループに読み書き権限を与えるようにします。
以下のように/etc/default/clamav-milterを変更します。
変更前:
#SOCKET_RWGROUP=postfix
変更後:
SOCKET_RWGROUP=postfix
clamav-milterを再起動します。
% sudo /etc/init.d/clamav-milter restart
/etc/milter-greylist/greylist.confを編集し、以下のような設定にします。
IPアドレスのマッチには前半24ビットのみを使う(送信元が複数のMTAを利用している場合のGreylistの悪影響を抑えるため)
再送チェック時間を30分後(デフォルト)から10分後に短くする(Greylistの悪影響を抑えるため)
オートホワイトリストの期間を1日(デフォルト)から1週間に伸ばす(Greylistの悪影響を抑えるため)
デフォルトでGreylistを使う
変更前:
acl whitelist default
変更後:
subnetmatch /24 greylist 10m autowhite 1w acl greylist default
次に、/etc/default/milter-greylistを変更し、milter-greylistを有効にします。milter-greylistの起動ファイルではソケットファイルをpostfixグループで作成できないため、IPv4で接続することとします。ただし、ローカルホストからの接続のみを受け付けることにします。
変更前:
ENABLED=0
変更後:
ENABLED=1 SOCKET="inet:11125@[127.0.0.1]" DOPTIONS="-P $PIDFILE -u $USER -p $SOCKET"
SOCKETを指定しただけではなく、DOPTIONSも指定しているのは、lennyのmilter-greylistパッケージに含まれる/etc/init.d/milter-greylistに問題があるからです。この問題はsqueezeでは修正されているので、squeezeからはDOPTIONSを指定する必要はありません。
milter-greylistを起動します。
% sudo /etc/init.d/milter-greylist start
milter-managerはシステムにインストールされているmilterを検出します。以下のコマンドでspamass-milter、clamav-milter、milter-greylistを検出していることを確認してください。
% sudo /usr/sbin/milter-manager -u milter-manager --show-config
以下のように表示されていれば検出は成功しています。
... define_milter("milter-greylist") do |milter| milter.connection_spec = "inet:11125@[127.0.0.1]" ... milter.enabled = true ... end .. define_milter("clamav-milter") do |milter| milter.connection_spec = "local:/var/spool/postfix/clamav/clamav-milter.ctl" ... milter.enabled = true ... end .. define_milter("spamass-milter") do |milter| milter.connection_spec = "unix:/var/spool/postfix/spamass/spamass.sock" ... milter.enabled = true ... end ..
milterの名前、ソケットのパス、enabledがtrueになっていることを確認してください。異なっていた場合は、 設定 を参考に/etc/milter-manager/milter-manager.confを編集してください。ただ、できれば、設定を変更せずに使用できるようにしたいと考えています。もし、検出できなかった環境のことを教えてもらえれば、milter-manager.confを編集しなくとも使用できるように検出方法を改良することができるかもしれません。
Postfixと一緒に動作するように/etc/default/milter-managerを編集します。
変更前:
#GROUP=postfix #SOCKET_GROUP=postfix #CONNECTION_SPEC=unix:/var/spool/postfix/milter-manager/milter-manager.sock
変更後:
GROUP=postfix SOCKET_GROUP=postfix CONNECTION_SPEC=unix:/var/spool/postfix/milter-manager/milter-manager.sock
milter-managerの設定が完了したので、起動します。
% sudo /etc/init.d/milter-manager restart
milter-test-serverで起動の確認をすることができます。
% sudo -u postfix milter-test-server -s unix:/var/spool/postfix/milter-manager/milter-manager.sock
このように表示されれば成功です。
status: pass elapsed-time: 0.128 seconds
起動に失敗しているときはこのように表示されます。
Failed to connect to unix:/var/spool/postfix/milter-manager/milter-manager.sock: No such file or directory
失敗している時はログを頼りに問題を解決します。--verboseオプションをつけると詳細なログが表示されます。また、デーモンプロセスにしないことにより、標準出力にもログが表示されます。
/etc/default/milter-managerに以下の内容を追加します。これにより、標準出力に詳細なログが表示されます。
OPTION_ARGS="--verbose --no-daemon"
milter-managerをもう一度起動します。
% sudo /etc/init.d/milter-manager restart
問題があればログが表示されます。起動しているmilter-managerはCtrl+cで終了することができます。
問題が解決した後は、/etc/default/milter-managerに追加したOPTION_ARGSをコメントアウトし、デーモンプロセスで起動するように戻してから、milter-managerを起動しなおしてください。
まず、milterの設定をします。
/etc/postfix/main.cfに以下を追加します。
milter_protocol = 6 milter_default_action = accept milter_mail_macros = {auth_author} {auth_type} {auth_authen}
それぞれ以下のような設定です。
続いて、Postfixにmilter-managerを登録します。spamass-milter、clamav-milter、milter-greylistはmilter-manager経由で利用するので、Postfixにはmilter-managerだけを登録すればよいことに注意してください。
/etc/postfix/main.cfに以下を追加します。Postfixは/var/spool/postfix/にchrootすることに注意してください。
smtpd_milters = unix:/milter-manager/milter-manager.sock
Postfixの設定を再読み込みします。
% sudo /etc/init.d/postfix reload
以上で設定は完了です。
milter-managerはいくつかsyslogにログを出力します。mail.infoに出力するので、正常に動作していればmilter-managerからのログが/var/log/mail.infoにログがでるはずです。テストメールを送信して確認してください。
milter-managerを導入することにより、milterとPostfixを連携させる手間が削減されています。
通常であれば、Postfixのsmtpd_miltersにspamass-milter、clamav-milter、miler-greylistのソケットを指定する必要があります。しかし、milter-managerを導入することにより、milter-managerのソケットのみを指定するだけですむようになりました。各milterのソケットはmilter-managerが検出するため、typoなどの小さいですが気づきにくいミスに惑わされることがなくなります。
また、ここでは触れませんでしたが、milter-managerは/etc/default/milter-greylist内にあるようなENABLEDの設定も検出します。そのため、milterを無効にしたい場合は、以下のような手順になります。
% sudo /etc/init.d/milter-greylist stop % sudo vim /etc/default/milter-greylist # ENABLED=1 => ENABLED=0
milterを無効にしたら、milter-managerの設定を再読み込みします。milter-managerはmilterが無効になったことを検出し、無効になったmilter とは接続しなくなります。
% sudo /etc/init.d/milter-manager reload
Postfixのmain.cfを変更する必要はありません。
Debian GNU/Linux上でmilterを複数使っている場合は、milter-managerを導入して、管理コストを削減することができます。
milter managerは運用を支援するツールも提供しています。インストールは必須ではありませんが、それらを導入することで運用コストを削減することができます。それらのツールもインストールする場合は Debianへインストール(任意) を参照してください。