Rgrey - Selective SMTP Rejection + postgrey パッチ インストールメモ

2004/9/30 (lastupdate 2005/6/2)

postgrey の入手。
http://isg.ee.ethz.ch/tools/postgrey/
postgrey-1.16.tar.gz


Perl >= 5.6.0 なので、/usr/local/bin/perl のもの、5.8.0を使う


Berkeley DB >= 4.1 (Library) なので、新しいものを入れる。

http://www.sleepycat.com/download/db/index.shtml
4.2.52.tar.gz

> cd build_unix
> ../dist/configure
> make
# make install

/usr/local/BerkleyDB.4.2/ にインストールされてモジュールインストールが通らないので、
必要なファイルを /usr/local/lib と /usr/local/include にリンク。
# ln -s /usr/local/BerkleyDB.4.2/lib/* /usr/local/lib
# ln -s /usr/local/BerkleyDB.4.2/include/* /usr/local/include


必要なモジュールをCPANから入れる
# /usr/local/bin/perl -MCPAN -e shell
> install Net::Server
> install IO::Multiplex

しかし、BerkleyDBモジュールのインストールがうまくいかない。
> install BerkeleyDB

これやると、test の env.t 最後の 50 番でエラーになってインストールできない。
メジャーバージョンが2じゃないとエラーになるとなっているが、メジャーバージョンが4だから、これはenv.tがおかしいように思う。
ので、.cpan/build/BerkeleyDB-0.25/t/ent.t の "ok 50, …"の行を、比較するバージョンを4に書き直して、BerkeleyDB-0.25/ で make test; make install


postgrey のインストール

postgrey に、怪しい接続元のみチェックするための、FQDNチェックパッチ postgrey-namecheck を当てる。
このとき、postgrey_greylist_clients ファイルという、チェックする対象を指定したファイルもコピーする。

> tar -zxf postgrey-1.16.tar.gz
> tar -zxf postgrey-namecheck.tar.gz
> cp postgrey-namecheck/* postgrey-1.16
> cd postgrey-1.16
> patch -p1 < postgrey-namecheck.patch

あと、うちは /usr/local/bin/perl に perl5.8.0 があるので、1行目を /usr/local/bin/perl に修正した。

postgrey本体をコピー。うちでは /usr/local/sbin に置くことにした。
# cp postgrey /usr/local/sbin

標準だと「postgrey」ユーザで動くため、「postgrey」アカウントを作成
greylistsのDBを置くディレクトリを作成し、ownerを「postgrey」にする。
# mkdir /var/spool/postfix/postgrey
# chown postgrey /var/spool/postfix/postgrey

設定ファイルをコピー。デフォルトでは /etc/postfix
# cp postgrey_whitelist_clients postgrey_whitelist_recipients postgrey_greylist_clients /etc/postfix/

起動時に自動的にpostgreyが起動するように設定。rc.localでいいだろう。
/etc/rc.d/rc.local に追加。
--
# postgrey (postfix access policy server) start
/usr/local/sbin/postgrey --inet=10023 -d --pidfile=/var/run/postgrey.pid --delay=1800 --max-age=7
echo -n 'postgrey '
--

postgrey を起動する。
/usr/local/sbin/postgrey --inet=10023 -d --pidfile=/var/run/postgrey.pid --delay=1800 --max-age=7


postfix の設定

main.cf に追加
--
# for use Greylisting
smtpd_recipient_restrictions = permit_mynetworks, reject_non_fqdn_recipient, reject_unauth_destination, check_policy_service inet:10023
--

postfix の再起動
# postfix reload

参考

Postfix SMTP Access Policy Delegation
[postfix-jp: 460] Postgrey - Postfix Greylisting Policy Server
Rgrey - Selective SMTP Rejection + postgrey パッチ