postgrey 0.28 向けのパッチを頂いたので仕込中。
/usr/local/etc/pkgtools.conf でパッチファイルを それっぽい名前で /usr/ports/mail/postgrey/files/ の下にコピーさせる。
BEFOREBUILD = {
'mail/postgrey' => 'cp /local/work/targrey-0.23-postgrey-1.28.patch /usr/ports/mail/postgrey/files/patch-targrey' ,
}
あとは sudo portinstall mail/postgrey でプログラム自体のインストールは完了
daemontools 向け run スクリプト。unixドメインソケットを利用して高速化&一般ユーザには使わせないぞ設定にした。 postgrey の --unix オプションで作られるソケットファイルは、誰でも読み書き可能状態だったので chmod g+rw,o= を利用してpostfix以外からはアクセスできないように。 このソケットファイルのパーミッション設定は clammilter の時の設定をほぼ流用だ。
#!/bin/sh
user=postgrey
socketdir=/var/run/postgrey
sockfile=$socketdir/postgrey.sock
if [ \! -d $socketdir ]; then
mkdir $socketdir >/dev/null 2>&1
fi
chown -R $user $socketdir
chgrp -R $user $socketdir
chmod 755 $socketdir
chownpipe () {
while [ \! -S $sockfile ];
do
sleep 1
done
chgrp postfix $sockfile
chmod g+rw,o= $sockfile
}
case $1 in
--chownpipe) chownpipe; exit 0;;
esac
rm -f $sockfile
daemon $0 --chownpipe
exec 2>&1
exec softlimit -c 0 \
envdir ./env \
/usr/local/sbin/postgrey --unix=$sockfile --group=postfix --tarpit=125 --delay=1800 --retry-count=2
postgrey(targrey)自体のオプションに --targrey がないのは、頂いたパッチが targrey-0.27 相当だったため。 今まで postgrey を使っていた訳ではないので特に問題はない。
/usr/local/etc/postfix/main.cf の該当部分が以下のようにした。
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
reject_unknown_recipient_domain
check_sender_access hash:/usr/local/etc/postfix/sender_access
reject_unknown_sender_domain
check_client_access regexp:/usr/local/etc/postfix/permit_client_nots25r
check_policy_service unix:/var/run/postgrey/postgrey.sock
warn_if_reject reject_unverified_sender
permit
smtpd_data_restrictions =
permit_mynetworks
permit_sasl_authenticated
check_sender_access hash:/usr/local/etc/postfix/sender_access
check_client_access regexp:/usr/local/etc/postfix/permit_client_nots25r
check_policy_service unix:/var/run/postgrey/postgrey.sock
permit
address_verify_map = btree:/var/run/postfix_verify
strict_rfc821_envelopes = yes
/usr/local/etc/postfix/permit_client_nots25r については特にアイデアがなかったのでそのまんまで。
/\.dip\.t-dialin\.net$/ WARN
/\.dyn\.optonline\.net$/ WARN
# ...(other dynamic IP FQDN pattern(not match S25R pattern))
!/(^unknown$)|(^[^\.]*[0-9][^0-9\.]+[0-9])|(^[^\.]*[0-9]{5})|(^([^\.]+\.)?[0-9][^\.]*\.[^\.]+\..+\.[a-z])|(^[^\.]*[0-9]\.[^\.]*[0-9]-[0-9])|(^[^\.]*[0-9]\.[^\.]*[0-9]\.[^\.]+\..+\.)|(^(dhcp|dialup|ppp|adsl)[^\.]*[0-9])/ OK
/./ WARN
まだMXを向けてないので外部からメールはほとんど来てないけど、とりあえず動くところまでいった。
ここ mimori.org にも仕掛けてみたけど、グラフを見てもすぐにはよくわからんな。
いきなり起動しなくなった。修理に出すための箱は発見。 Ultimate Boot CD で一応チェックをしてみてから修理に出そう。
今から入れるんだったら Windows Server 2008 β3 か CTPか?と思ったら、 Windows Server Virtualization は入ってないのか。 仮想PC上げられないOSをベースにするのはきついなあ。そこをあえてイバラの道に進むという手はあるが…
イバラの道に進んで Termial Services 生活してみるか。
(追記)Samsung SHDIAG で調査したら、標準で走るチェックの最後の部分 Small Surface Scan Test でアクセスランプがつきっぱなしになって、 先に進まなくなった。少なくとも6時間は待った(寝て起きた)。
そこで、リセットしたら、なぜかWindowsXPが復活。訳わからんすぎ。次は chkdsk だ。
SHDIAGの途中で代替セクター処理でも走ったのかな。