Postgreyインストールメモ
環境
- FreeBSD 5-STABLE
- Postfix 2.4.0
- Postgrey 1.27
- 公式WWWサイト: http://postgrey.schweikert.ch/
作業手順
以下,root権限で作業を行う.
前提条件として,csup, portupgradeなどを用いてFreeBSD 5-STABLE上に最新のPortsを用いたアプリケーション環境を導入済みであること.
(1) Postgreyを導入
# cd /usr/ports # portinstall mail/postgrey : ---> Starting post-install script: ---> Keeping existing config file /usr/local/etc/postfix/postgrey_whitelist_clients ---> Installing new config file /usr/local/etc/postfix/postgrey_whitelist_recipients ===> Installing rc.d startup script(s) ===> Registering installation for postgrey-1.27 ===> Cleaning for pkg_install-20060113 ===> Cleaning for p5-Net-Server-0.96 ===> Cleaning for p5-IO-Multiplex-1.09 ===> Cleaning for p5-BerkeleyDB-0.31 ===> Cleaning for perl-5.8.8 ===> Cleaning for db44-4.4.20.4 ===> Cleaning for ldconfig_compat-1.0_8 ===> Cleaning for postgrey-1.27 [Updating the pkgdb <format:bdb_btree> in /var/db/pkg ... - 78 packages found (-0 +3) ... done] #
portinstallの過程で,ユーザ "postgrey" およびグループ "postgrey" が自動的に作成される.
(2) インストールされたファイル群の確認
# pkg_info -L /var/db/pkg/postgrey-1.27/ Information for postgrey-1.27: Files: /usr/local/sbin/postgrey /usr/local/sbin/postgreyreport /usr/local/etc/postfix/dist-postgrey_whitelist_recipients /usr/local/etc/postfix/dist-postgrey_whitelist_clients /usr/local/etc/rc.d/postgrey.sh
manは無い.仕方が無いので,以下サイトを参考に設定を進める.
(3) 設定ファイルを編集 (Postgrey)
/usr/local/etc/postfix以下に以下2ファイルがある.
- dist-postgrey_whitelist_clients
- dist-postgrey_whitelist_recipients
それぞれ以下のようにコピーする.
# cd /usr/local/etc/postfix # cp dist-postgrey_whitelist_clients postgrey_whitelist_clients # cp dist-postgrey_whitelist_recipients postgrey_whitelist_recipients
postgrey_whitelist_clientsには,よく(SPAMではない)メールが届くSMTPサーバや,ドメイン名を登録しておくとよい.登録することで,Greylistingの対象外にすることができる.
postgrey_whitelist_recipientsは,デフォルトのままでいいと思う.お好みで.
(4) プログラム起動用シェルスクリプトを確認 (Postgrey)
# lv /usr/local/etc/rc.d/postgrey.sh
起動用シェルスクリプトのファイルを読むことで,以下のことがわかる.
- Graylistingデータベースが保存されるのは /var/db/postgrey以下
- Port 10023でLISTENする.(UDPかTCPかは不明)
- /etc/rc.confに少なくとも以下を設定しなければ起動しない.
postgrey_enable=YES
(5) /etc/rc.confを編集
以下の行を追加する.
postgrey_enable=YES
(6) postgreyを起動
# /usr/local/etc/rc.d/postgrey.sh start Starting postgrey. #
きちんと起動したか確認
# ps xa|grep postgrey 51360 ?? Ss 0:00.01 /usr/local/sbin/postgrey --pidfile=/var/run/postgrey. # sockstat |grep postgrey postgrey perl5.8.8 51360 4 dgram -> /var/run/log postgrey perl5.8.8 51360 5 tcp4 127.0.0.1:10023 *:* # netstat -na -f inet | grep 10023 tcp4 0 0 127.0.0.1.10023 *.* LISTEN #
礼儀正しく,localhostのみでLISTENしている.大変よろしい.
TCP:10023を使っているようだ.
この段階では,まだGraylistingが有効になっていないことに注意.Graylistingを有効にするためにはpostfixへの設定変更が必要になる.
(7) 設定ファイルを変更 (Postfix)
main.cfに以下の行を追加.
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023
postconf | grep smtpd_recipient_restrictionsで念のため確認.
(8) Postfixへ設定変更を反映
# postfix reload postfix/postfix-script: refreshing the Postfix mail system
(9) 動作確認
以下のコマンドでSMTPサーバの出すログを監視する.
# tail -f /var/log/maillog
無事,Graylistingが効いた場合には以下のようなログが出力される.
Apr 16 19:02:30 mera postfix/smtpd[51492]: NOQUEUE: reject: RCPT from *****.****.****[***.***.***.***]: 450 4.7.1 <****@****.****>: Recipient address rejected: Greylisted, see http://isg.ee.ethz.ch/tools/postgrey/help/****.****.****.html; from=<****@****.****> to=<****@****.****> proto=SMTP helo=<****.****.****>
別のメールサーバからためしにメールを送ってみて,5分経ったらメールを受信するさまを確認するとよいかも.
ToDo
Postgrey動作状況の監視
会社とかで使うなら,Postgreyデータベース件数の監視や,ファイル容量の監視などの定常監視が必要になると思う.いずれ監視スクリプトものを仕込みたい.