うちのメールサーバのSPAM対策は、設定で遮断できるところ遮断し、できないところはRBL(Realtime Blackhole List:ブラックリスト)で遮断しています。ブラックリストはspamcopの効果が圧倒的に大きいですね。誤登録も多いらしいけど。 サーバ側ではグレイリストは使ってません。誤遮断が怖いのもあるけど、正か誤りかの確認がしづらいのが理由。だから、クライアント側で振り分けて1つ1つ確認しています(Beckyの深海魚フィルタ)。 で、今回はpostfixの機能の一つを追加してみました。header_checksとbody_checksというのがあるのですが、今回はheader_checksです。メールヘッダーに任意の文字列がある場合に、エラーを返します。やり方は以下のような感じ。 /etc/postfix/main.cfに追加(元々コメントアウトされてる)。 header_checks = regexp:/etc/postfix/header_checks /etc/postfix/header_checksに追加(ファイルは元々ある)。 /^Message-ID:.*xxxxx.jp>/ REJECT /etc/postfix/header_checksには元々コメントがいっぱい書いてありますが、すべてコメントで無視されるので、一番下にでも追加すればいいでしょう。 上記の定義の意味は、「^Message-ID:」はヘッダーの中の「Message-ID:」のことです。「^」が文頭を意味しています。「.*」は任意の文字。Message-IDにはいろいろな文字が入りますので、そこを省略しています。「xxxxx.jp」のことろは、そのSPAM特有の文字列を示していています。「Message-Id」はSPAMじゃなくてもヘッダーに入っていますが、SPAMメールのヘッダーをよく調べて、明らかにSPAMにはコレが書かれているという単語がわかればそれを正確に入れましょう。最後のREJECTは、「遮断」の意味ですね。 他にもX-Mailerとか指定できるので、ググルといろいろ調べてみるといいかもしれません。ちなみに「/~From:.*xxxx.net>/ REJECT」がうまくいきませんでした…何でだろう? この機能は、「マッチした場合にエラーメール(バウンスメール)を返す」ではなく、「マッチした場合に相手サーバにエラーを返す」です。 バウンスメールってSPAM業者には全く効果が無いので、このすぐにエラーを返すという動作もいいですね。

