Postfixでネットワークアドレスで拒否

最近フィリピンのIPアドレスからの迷惑メールがやたらと多い。
平日に10通、週末になると1日で30通近くくる。

セフレ仕分けSNSだの、丸見えアド掲示板だの、40型液晶テレビが800円だの。
ヘッダーを見ると全てフィリピンの数個のIPアドレスから。

メールサーバはPostfixS25R+tarpitting+greylistingしてるが、
これすらスリ抜けてくる。
まぁクライアント側のメールソフトで全部迷惑メールフォルダに直行なので、最初は放っておいたんだけど、
段々腹がたってきたので、どうせフィリピンから仕事のメールが来ることは絶対にないので
フィリピン国内のIPアドレスを全て拒否することにした。

Postfixなので、単純にmain.cfに設定を書けばいい、と思ってたけどここで思いのほかハマる。

main.cfに以下を追加。

smtpd_client_restrictions =
permit_mynetworks
check_client_access cidr:/etc/postfix/reject_ip

最初、cidrという記述方法が分かっていなかった。
reject_ipは以下のように記述

180.xxx.0.0/15  REJECT
180.xxy.0.0/14  REJECT
180.xxz.0.0/16  REJECT

hashでIPアドレス一個づつ書いてると鬼のようなリストになるので、ネットワークアドレスで
拒否できるのは有り難い。
実際の各国別IPのリストはakionweb様より拝借。

で、このリストをpostmapするのか、と思っていたらどうやらしなくてもいいらしい。
このままでpostfixをreload。

で、テストしようと試しに自分のISPのネットワークアドレスを上記のreject_ipの拒否リストに入れて、
telnet xxx.xxx.xxx.xxx 25 する。

Escape character is '^]'.
220 mail.hogehoge.net ESMTP Postfix
EHLO localhost
250-mail.hogehoge.net
250-PIPELINING
250-SIZE 1048576
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM: hoge@hogehoge.com
250 2.1.0 Ok

となり接続できてしまう。

あれれ???と何回も設定ファイルやネットワークアドレスを確認するも、同じ。
なんでだろー??と思って1時間悩む。が、特に間違えてないっぽい。

まさか・・・と思い、RCPT TOまで入れてみる

RCPT TO: hogeuser@hogehoge.com
554 5.7.1 <111x222x333x444.ap.hoge.ne.jp[111.222.333.444]>: Client host rejected: Access denied

orz

qmailtcpserverようにSMTP接続時点で拒否るのではなく、RCPT TO までいれた後で判定されるらしい。
RCPT TOコマンドまで発行されるのはいただけないが、まぁちゃんと拒否ってくれるのでよしとする。

なんと無駄な時間・・・・。