spam対策にgreylistのqmail向け実装であるqgraylistをインストールした。
greylistは、メールを受け取るときに一回450エラーを出して、再送してきたホストからのメールのみを受け取る方式のこと。普通のspamメールは再送を試みないという傾向を利用している。
インストールは qgreylist のドキュメント通りに行なった。また、起動時にgreylistが動作するように、 /etc/init.d/qmail を編集した。
@@ -33,6 +33,8 @@
#rblmsg=" (with rblsmtpd)"
#rblsmtpd="/usr/bin/rblsmtpd -r list.dsbl.org -r relays.ordb.org"
+greylist="/var/qmail/bin/greylist"
@@ -52,7 +54,7 @@
--pidfile /var/run/tcpserver_smtpd.pid --make-pidfile \
--exec /usr/bin/tcpserver -- -R -H \
-u `id -u qmaild` -g `id -g nobody` -x /etc/tcp.smtp.cdb 0 smtp \
- $rblsmtpd /usr/sbin/qmail-smtpd 2>&1 \
+ $rblsmtpd $greylist /usr/sbin/qmail-smtpd 2>&1 \
| $logger &"
qmailを再起動し、ログを監視しながら、テストメールが無事に届くかを確認する。
下記のようなログが記録され、qgreylistが意図通りに動作することが確認できた。
Nov 12 00:38:20 deleuze greylist[5843]: IP *.*.*.* new - temp error
Nov 12 00:38:21 deleuze greylist[5843]: SMTP: EHLO: 250 hello
Nov 12 00:38:22 deleuze greylist[5843]: SMTP: MAIL: 250 Mail from <from@example.com>
Nov 12 00:38:23 deleuze greylist[5843]: SMTP: RCPT: 450 Rcpt to <to@example.jp> - Temporary local problem - try later
Nov 12 00:38:24 deleuze greylist[5843]: SMTP: RSET: 250 ready
Nov 12 00:38:25 deleuze greylist[5843]: SMTP: QUIT: 221 mail.example.jp Bye
Nov 12 00:38:25 deleuze greylist[5843]: SMTP: connection closed
Nov 12 00:42:49 deleuze greylist[5863]: running cleanup
Nov 12 00:42:49 deleuze greylist[5863]: IP *.*.*.* OK - accepting