2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

spam 対策として、とりあえず postscreen を有効化しておく

Last updated at Posted at 2020-03-07

要約

Postfix でメールサーバを運用している管理者は、すべからく postscreen(8) を有効化しておくべし。

背景

3000人規模のアクティブユーザがいるメールサーバを Postfix で運用しています。今回、遠隔地 DC にラックを借りて設置していたメールサーバを廃止して、パブリッククラウド上の仮想マシンに引っ越しすることになり、それに併せて Postfix の設定の棚卸しを行ないました。その過程で、postscreen(8) を発見。

SMTP サーバがグリーティングメッセージを返す段階で遅延させて、spam ボットに接続をあきらめさせる?ああ、Starpit みたいな対策か。まあ、あれもすぐに効かなくなったからなあ…

と思いつつ、半信半疑で有効化してみました。すると、約8時間で以下のような成績になりました。

分類 件数
postscreen によって弾かれたメール 11988
smtpd によって弾かれたメール(送信者ドメインが見つからない等) 1982
実際に受信・配送されたメール 7684

実に55%もの負荷低減です。Starpit よりもさらに設定が簡単なので、Postfix でメールサーバを運用している方は、とりあえず設定しておいて損はないと思います。

設定

以下のように、/etc/postfix/master.cf で smtp の行をコメントアウトして、postscreen の行と smtpd の行を有効化します。基本的な設定は、これだけです!

/etc/postfix/master.cf
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (no)    (never) (100)
# ==========================================================================
#smtp      inet  n       -       y       -       -       smtpd
smtp      inet  n       -       y       -       1       postscreen
smtpd     pass  -       -       y       -       -       smtpd

後は、好みの設定をいくつか。筆者の環境では、以下のように、自組織のネットワークに対するホワイトリストに登録し、グリーティングメッセージの遅延を少し増やし(デフォルト6秒→15秒)、グリーティングメッセージを無視するなどプロトコルエラーをした接続元は接続拒否、という設定をしています。

/etc/postfix/main.cf
postscreen_access_list = permit_mynetworks, cidr:/etc/postfix/postscreen_access.cidr
postscreen_greet_wait = 15s
postscreen_greet_action = enforce
/etc/postfix/postscreen_access.cidr
192.0.2.0/24	permit
2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?