![]() |
![]() |
![]() |
![]() |
CentOS 5に特化したmilter managerのインストール方法について説明します。 CentOS 7に特化したmilter managerのインストール方法は CentOS 7へイン ストール を見てください。CentOS 6に特化した milter managerのインストール方法は CentOS 6へインストール を見てください。CentOSに依存しない一般的な インストール情報は インストール を見てください。
CentOSのバージョンは5.8を想定しています。また、root権限での 実行はsudoを使用することを想定しています。sudoを利用していな い場合はsuなどroot権限で実行してください。
以下のパッケージをインストールすることにより、関連するパッケー ジもインストールされます。
% sudo yum install -y glib2 ruby
MTAは標準でインストールされているSendmailを利用することとします。
% sudo yum install -y sendmail-cf
milterはspamass-milter、clamav-milter、milter-greylistを使用 することとします。各milterはRPMforgeにあるものを利用します。
32bit環境の場合は以下のようにRPMforgeを登録します。
% sudo rpm -Uhv http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
64bit環境の場合は以下のようにRPMforgeを登録します。
% sudo rpm -Uhv http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
RPMforgeを登録したらmilterをインストールします。
% sudo yum install -y spamass-milter clamav-milter milter-greylist
また、グラフ作成用にRRDtoolもインストールします。
% sudo yum install -y ruby-rrdtool
milter managerはyumでインストールできます。
まず、yumリポジトリを登録します。
% sudo rpm -Uvh http://sourceforge.net/projects/milter-manager/files/centos/milter-manager-release-1.3.0-1.noarch.rpm
登録が完了したらmilter managerをインストールできます。
% sudo yum install -y milter-manager
milterの基本的な設定方針は以下の通りです。
接続はIPv4ソケットでローカルホストからのみ接続を受け付けるよ うにします。
必要のない配送遅延をできるだけ抑えるため、milter-greylistは S25R にマッチする ときのみ適用します。しかし、これはmilter-managerが自動で行う ため、特に設定する必要はありません。
まず、spamdの設定をします。
デフォルトの設定ではスパム判定されたメールは件名に「[SPAM]」 が追加されます。もし、これが嫌な場合は /etc/mail/spamassassin/local.cfを以下のように変更します。
変更前:
rewrite_header Subject [SPAM]
変更後:
# rewrite_header Subject [SPAM]
また、スパム判定された場合のみ、その詳細をヘッダに追加するよ うにする場合は以下を追加します。
remove_header ham Status remove_header ham Level
システム起動時にspamdを起動するようにします。
% sudo /sbin/chkconfig spamassassin on
spamdを起動します。
% sudo /sbin/service spamassassin start
spamass-milterは以下のように設定します。
ソケットを変更する。
本文変更機能を無効にする。
スコアが15を超えたら拒否する。
/etc/sysconfig/spamass-milterを以下のように変更します。
変更前:
#SOCKET=/var/run/spamass.sock #EXTRA_FLAGS="-m -r 15"
変更後:
SOCKET="inet:11120@[127.0.0.1]" EXTRA_FLAGS="-m -r 15"
システム起動時にspamass-milterを起動するようにします。
% sudo /sbin/chkconfig spamass-milter on
spamass-milterを起動します。
% sudo /sbin/service spamass-milter start
clamdを起動します。
% sudo /sbin/service clamd start
clamav-milterのソケットを変更します。
/etc/clamav-milter.confを以下のように変更します。
変更前:
#MilterSocketMode 0660
変更後:
MilterSocketMode 0660
clamav-milterを起動します。
% sudo /sbin/service clamav-milter start
/etc/mail/greylist.confを編集し、以下のような設定にします。
IPアドレスのマッチには前半24ビットのみを使う(送信元が複 数のMTAを利用している場合のGreylistの悪影響を抑えるため)
再送チェック時間を30分後(デフォルト)から10分後に短くす る(Greylistの悪影響を抑えるため)
オートホワイトリストの期間を1日(デフォルト)から1週間に 伸ばす(Greylistの悪影響を抑えるため)
デフォルトでGreylistを使う
Greylistの悪影響を抑えるために制限を緩めているため、迷惑 メールが通過する確率がやや高くなりますが、誤判定時の悪影響を 抑える方を重視するべきです。Greylistですべての迷惑メールをブ ロックしようとするのではなく、Greylistで検出できない迷惑メー ルはSpamAssassinなど他の手法で対応します。milter managerはそ のように複数のmilterを組み合わせた迷惑メール対策システムの構 築を支援します。
変更前:
racl whitelist default
変更後:
subnetmatch /24 greylist 10m autowhite 1w racl greylist default
次に、以下の内容の/etc/sysconfig/milter-greylistを作成します。
OPTIONS="$OPTIONS -p inet:11122@[127.0.0.1]"
システム起動時にmilter-greylistを起動するようにします。
% sudo /sbin/chkconfig milter-greylist on
milter-greylistを起動します。
% sudo /sbin/service milter-greylist start
まず、clamav-milterのソケットにアクセスできるように milter-managerをclamavグループに加えます。
% sudo usermod -G clamav -a milter-manager
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:11122@[127.0.0.1]" ... milter.enabled = true ... end ... define_milter("clamav-milter") do |milter| milter.connection_spec = "unix:/var/clamav/clmilter.socket" ... milter.enabled = true ... end ... define_milter("spamass-milter") do |milter| milter.connection_spec = "inet:11120@[127.0.0.1]" ... milter.enabled = true ... end ...
milterの名前、ソケットのパス、enabledがtrueになっていることを 確認してください。異なっていた場合は、 設定 を参考に /etc/milter-manager/milter-manager.confを編集してください。た だ、できれば、設定を変更せずに使用できるようにしたいと考えて います。もし、検出できなかった環境のことを教えてもらえれば、 milter-manager.confを編集しなくとも使用できるように検出方法を 改良することができるかもしれません。
milter-managerの設定が完了したので、起動します。
% sudo /sbin/service milter-manager restart
milter-test-serverで起動の確認をすることができます。
% sudo -u milter-manager milter-test-server -s unix:/var/run/milter-manager/milter-manager.sock
このように表示されれば成功です。
status: pass elapsed-time: 0.128 seconds
起動に失敗しているときはこのように表示されます。
Failed to connect to unix:/var/run/milter-manager/milter-manager.sock
失敗している時はログを頼りに問題を解決します。--verboseオプショ ンをつけると詳細なログが表示されます。また、デーモンプロセス にしないことにより、標準出力にもログが表示されます。
/etc/sysconfig/milter-managerに以下の内容を追加します。これによ り、標準出力に詳細なログが表示されます。
OPTION_ARGS="--verbose --no-daemon"
milter-managerをもう一度起動します。
% sudo /sbin/service milter-manager restart
問題があればログが表示されます。起動しているmilter-managerは Ctrl+cで終了することができます。
問題が解決した後は、/etc/sysconfig/milter-managerに追加した OPTION_ARGSをコメントアウトし、デーモンプロセスで起動するよう に戻してから、milter-managerを起動しなおしてください。
まず、Sendmailを有効にします。
% sudo /sbin/chkconfig --add sendmail % sudo /sbin/service sendmail start
Sendmailにmilter-managerを登録するために、 /etc/mail/sendmail.mcに以下を追加します。
INPUT_MAIL_FILTER(`milter-manager', `S=local:/var/run/milter-manager/milter-manager.sock')
spamass-milter、clamav-milter、milter-greylistは milter-manager経由で利用するので、Sendmailにはmilter-manager だけを登録すればよいことに注意してください。
Sendmailの設定を更新し、再読み込みします。
% sudo make -C /etc/mail % sudo /sbin/service sendmail reload
以上で設定は完了です。
milter-managerはいくつかsyslogにログを出力します。mail.info に出力するので、正常に動作していればmilter-managerからのログ が/var/log/maillogにログがでるはずです。テストメールを送信 して確認してください。
milter-managerを導入することにより、milterとSendmailを連携さ せる手間が削減されています。
通常であれば、sendmail.mcにspamass-milter、clamav-milter、 miler-greylistのそれぞれのソケットを指定する必要があります。 しかし、milter-managerを導入することにより、milter-managerの ソケットのみを指定するだけですむようになりました。各milterの ソケットはmilter-managerが検出するため、typoなどの小さいです が気づきにくいミスに惑わされることがなくなります。
また、ここでは触れませんでしたが、milter-managerは /sbin/chkconfig --addされているかどうかも検出します。そのため、 milterを無効にしたい場合は、他のサービスと同様に以下のような 手順になります。
% sudo /sbin/service milter-greylist stop % sudo /sbin/chkconfig --del milter-greylist
milterを無効にしたら、milter-managerの設定を再読み込みします。 milter-managerはmilterが無効になったことを検出し、無効になっ たmilter とは接続しなくなります。
% sudo /sbin/service milter-manager reload
Sendmailのsendmail.mcを変更する必要はありません。
CentOS上でmilterを複数使っている場合は、milter-managerを導入 して、管理コストを削減することができます。
milter managerは運用を支援するツールも提供しています。インス トールは必須ではありませんが、それらを導入することで運用コス トを削減することができます。それらのツールもインストールする 場合は CentOSへインストール(任 意) を参照してください。