スパム排除: ハロー (HELO/EHLO) の検査

| コメント(0) | トラックバック(0)
クライアントの発行するハロー (HELO/EHLO) コマンドを検査することによって、スパム送信を拒否する。これで、だいたい 40-60% は拒否できている。
main.cf:
 1| smtpd_helo_required = yes
 2| smtpd_helo_restrictions = ...,
 3|     reject_invalid_hostname,
 4|     reject_non_fqdn_hostname,
 5|     check_helo_access hash:/usr/local/etc/postfix/bad_helo_hash
 6|     check_helo_access pcre:/usr/local/etc/postfix/bad_helo_pcre

bad_helo_hash:
 7| my.domain.name    REJECT This is my name.
    ....

bad_helo_pcre:
 8| /^[[]?[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+[]]?$/
 9|     REJECT Not Hostname
10| !/\.(?:[a-z][a-z]|com|net|org|edu|gov|mil|int|info|biz|name|pro|museum|aero|coop)$/i
11|     450 Not publicly-advertised FQDN. See RFC2821, section 4.1.1.1.

1: HELO/EHLO を発行しないクライアントは拒否。
2: まず、サイト内や信頼できるホストから来るメッセージを許可する設定
  をここに記述。
3: HELO/EHLO  の引数にホスト名として不正な文字を含むものは拒否。
4: HELO/EHLO  の引数が FQDN でないもの ("." を含まないもの) は拒否。
5: 7 のチェックを行なう。
6: 8、9 のチェックを行なう。
7: 当サイトのドメイン名やホスト名を名乗るものは拒否。
8: HELO/EHLO  の引数が裸の IP アドレスであれば拒否。
  また、アドレスリテラル ([x.x.x.x] の形式) も拒否。
10: HELO/EHLO  の引数がインターネット上に存在し得る
  トップレベルドメインを持つホスト名でなければ拒否。
  そういうものは「FQDN」とは呼べないだろう。

8: IPアドレスを名乗っているのは明らかに詐称だし、そもそも RFC2821 に準拠していない (ふてぶてしくも、サーバの IPアドレスを名乗る奴もいる!)。また、インターネット上でメール配送するホストが公開の FQDN をもたないはずはないので、IPリテラルを名乗る必要もない。だからいずれも拒否。

10: pcre マップを使っているが、regex マップでも同様。

4、10: これらのチェックをしていると、ごくまれに「おたくのサイトへメールが送れない」とクレームが来るかもしれない。原因は、ちゃんとしたホスト名を名乗らない MTA を使っている (または、そういう設定をしている --- 正確に言うと、設定をしていない) ことにあるのだが。 そのため、一時エラーにして、送信元ホストの管理者に注意を促している (つもり)。

2: つぎのものは、チェックをしてはいけない:

  • サイト内のユーザのクライアント (つまりメールソフト) からの送信。
  • 信頼できるホスト (バックアップ MX ホストなど) からのリレー配送。

2005-06-01 追記

reject_unknown_hostname は使わないほうがよい。HELO/EHLO の引数が逆引きできないホスト名であることは頻繁にある。

トラックバック(0)

トラックバックURL: http://hatuka.nezumi.nu/cgi-bin/mt/mt-tb.cgi/13

コメントする

このブログ記事について

このページは、Hatuka*nezumiが2005年4月 8日 12:33に書いたブログ記事です。

ひとつ前のブログ記事は「Spam Filtering for Mail Exchangers」です。

次のブログ記事は「自サイトのサービス用アドレスの詐称を拒否 / システムユーザ宛のバウンスの拒否」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。