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