CentOS 7のPostfixにpostgreyを導入

Facebooktwittermail

迷惑メール対策にpostgreyを導入してみました。
CentOS 7ではepel repositoryをインストールすればyumで簡単にインストールできます。

Postgrey – Postfix Greylisting Policy Server
https://postgrey.schweikert.ch/
Postfix + postgrey を使ったグレイリスティングでスパム対策をしてみる
http://server-setting.info/centos/postfix-postgrey-spam-setting.html

動作としては初めてのメールサーバからの要求はグレイリストに登録して、受信拒否(code=450)します。通常はその後再送してくるので、その時に受信処理が行われます。
スパムメールの送信者は殆ど再送しないのでブロックできるとのことですが、相手が再送するまで受信できないので「送ったよ~」「届かないよ~」が発生します。
事前に分かればホワイトリストに追加しておけばいいのですが。

ただ稀にまともなドメインのようでも再送しないメールサーバがあったりするので、そうなるとホワイトリストに登録しない限り受信できません。
ちなみにPostfix 2.10.1(yum)のデフォルトでは300秒で再送されます。

環境
・CentOS Linux release 7.3.1611 (Core)
・Kernel 3.10.0-514.16.1.el7.x86_64
・Postfix 2.10.1
・Postgrey 1.34

  1. インストール
  2. 設定ファイル
  3. yumでインストールすると設定ファイルは/etc/postfixにインストールされます。

    ・postgrey_whitelist_clients
    ホワイトリストのデフォルト設定。海外のドメインが殆どです。個人的には空にしてもいいかも。
    ・postgrey_whitelist_clients.local
    サイトのホワイトリスト。ここに前もってpostgreyのチェックを行わないドメインを登録します。
    ・postgrey_whitelist_recipients
    受信許可アドレスのホワイトリスト。ここに記載してあるアドレス宛はpostgreyのチェックを行わない。

  4. main.cfの設定
  5. postgreyを経由するようにmain.cfを設定します。

    reject_unauth_destinationの後にcheck_policy_service inet:127.0.0.1:10023を追記します。これはpostgreyがデフォルトでポート10023で動作しています。

  6. ポート10023で待受設定(2017/05/06追記)
  7. /etc/sysconfig/postgreyに明示的に待ち受けポート10023を追加します。

  8. postgreyの起動
  9. postgreyの自動起動設定と起動です。

  10. postfixの再起動
  11. postfixの再起動します。

これでメールログにpostgreyが記録されれば動作しています。

postfix/smtpd[2962]: NOQUEUE: reject: RCPT from unknown[xxx.xxx.xxx.xxx]: 450 4.2.0 : Recipient address rejected: Greylisted,……

postgeryのポート変更などオプション設定は/etc/sysconfig/postgreyに記述します。

デフォルトでは–delay=60が記載されています。
これは拒否後に60秒経過してから再送してきたメールを受信することになります。ちなみにpostgreyでのデフォルトは5分です。

Greylisting HOWTO
https://wiki.centos.org/HowTos/postgrey

By default, the amount of time by which Postgrey will reject new messages is set to 5 minutes but we can change this using the –delay switch. There is a trade off in that the longer the time the more chance of rejecting spam but also the longer legitimate mail will be delayed for the first time. It might be worth initially setting this value to 1 minute (60 seconds) and subsequently increasing the value once Postgrey has built a database of regular mail contacts for your server. Setting your delay to values larger than 300 Seconds ( 5 Minutes ) is really not recommended. To manually set the delay (in seconds), we need to create the Postgrey configuration file at /etc/sysconfig/postgrey and append the –delay switch as shown below (see ‘man postgrey’ for a full list of options):

以下超意訳
時間が長いほどスパムの拒否率は向上するけど、正規のメールの到着がその分遅延することになります。
最初は1分ぐらいにして、データベースが充実してきたら値を大きくするのが最善かもしれませんが、ただ5分以上にするのはお勧めしません。

Leave a Reply