元々S25Rを長年運用してきたのでrejectするリストのメンテナンスなどは慣れっこになってはいるし、メンテナンスを楽にするオレオレスクリプトも使っているものの、やはりドロップしてしまうメールがあることに加え、試しに数日間はS25Rをオフにしてみたが1日100通程度もスパムが届き、やはりS25Rはやめられない。サーバを構築し直したついでにtaRgreyに移行することにした。
参考にさせていただいのは【スパム対策】taRgrey – S25R + tarpitting + greylisting。また投稿時点でRHEL 7.3をベースに書いているので、CentOS 7.3でも同様と思われる。
設定ファイルのバックアップ等を明示しない点については、etckeeperが動いている前提なので悪しからず。
postgreyはEPEL 7で提供されているので、そのままインストール出来る。
# yum -y install postgrey
インストールを確認。
# rpm -qa postgrey
postgrey-1.34-12.el7.noarch
postgrey本体はPerlで書かれたスクリプトで、これにパッチを適用する。
# file `which postgrey`
/usr/sbin/postgrey: Perl script, ASCII text executable
# cd /tmp
# wget http://k2net.hakuba.jp/pub/targrey-0.31-postgrey-1.34.patch
# cd /usr/sbin/
# patch -p0 < /tmp/targrey-0.31-postgrey-1.34.patch
patching file postgrey
Hunk #8 succeeded at 677 (offset 10 lines).
Hunk #9 succeeded at 691 (offset 10 lines).
Hunk #10 succeeded at 710 (offset 10 lines).
Hunk #11 succeeded at 793 (offset 10 lines).
Postgreyの設定を変更。
# etckeeper vcs diff HEAD^ HEAD
diff --git a/sysconfig/postgrey b/sysconfig/postgrey
index f735afd..b07b419 100644
--- a/sysconfig/postgrey
+++ b/sysconfig/postgrey
@@ -1 +1 @@
-POSTGREY_OPTS="--delay=60"
+POSTGREY_OPTS="--dbdir=/var/spool/postfix/postgrey --inet=127.0.0.1:60000 --tarpit=125 --targrey --retry-count=2 --delay=3600"
Postgreyを起動する。
# systemctl enable postgrey
# systemctl start postgrey
# systemctl status postgrey
* postgrey.service - Postfix Greylisting Service
Loaded: loaded (/usr/lib/systemd/system/postgrey.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2017-07-02 18:51:56 JST; 7s ago
......
taRgrey用Postfix設定ファイルをダウンロードして、コピーする。
# cd /tmp
# wget http://k2net.hakuba.jp/spam/postfix.conf.2.tar.gz
# tar zxvf postfix.conf.2.tar.gz
postfix.conf.2/
postfix.conf.2/Rgrey.main.cf
postfix.conf.2/ClamSMTP.master.cf
postfix.conf.2/taRgrey.main.cf
postfix.conf.2/reject_helo
postfix.conf.2/reject_ns
postfix.conf.2/check_ns
postfix.conf.2/prepend_client
postfix.conf.2/reject_mx
postfix.conf.2/whitelist_client
postfix.conf.2/reject_client_blackip
postfix.conf.2/permit_client_nots25r
postfix.conf.2/whitelist_recipient
postfix.conf.2/check_sender_info
# cd postfix.conf.2
# cp permit_client_nots25r /etc/postfix/
# cp whitelist_client /etc/postfix/
# cp whitelist_recipient /etc/postfix/
postmapして.db
ファイルが出来たか確認。
# cd /etc/postfix/
# postmap permit_client_nots25r
# postmap whitelist_client
# postmap whitelist_recipient
# ls -t *.db | head -3
whitelist_recipient.db
whitelist_client.db
permit_client_nots25r.db
# chcon system_u:object_r:postfix_etc_t:s0 permit* whitelite*
Postfixの設定を変更する。
# etckeeper vcs diff HEAD^ HEAD
diff --git a/postfix/main.cf b/postfix/main.cf
index 897d3b6..0439747 100644
--- a/postfix/main.cf
+++ b/postfix/main.cf
@@ -710,6 +710,21 @@ smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
+ reject_non_fqdn_recipient
+ check_recipient_access hash:/etc/postfix/whitelist_recipient
+ check_client_access hash:/etc/postfix/whitelist_client
+ check_client_access regexp:/etc/postfix/permit_client_nots25r
+ check_policy_service inet:60000
+
+smtpd_data_restrictions =
+ permit_mynetworks
+ permit_sasl_authenticated
+ reject_unauth_destination
+ check_recipient_access hash:/etc/postfix/whitelist_recipient
+ check_client_access hash:/etc/postfix/whitelist_client
+ check_client_access regexp:/etc/postfix/permit_client_nots25r
+ check_policy_service inet:60000
+ permit
smtpd_helo_required = yes
Postfixを再起動する。
# systemctl restart postfix