2011年12月28日水曜日

Spam対策 -Postfix-

こんにちは、サイオステクノロジー 稲垣です。

前回に引き続き、Postfix の設定についてご紹介します。
今回は、Postfix での Spam 対策についてです。

Postfix で利用可能な Spam 対策を、以下に示します。

  1. 送信元の IP アドレスによる制限

    Spam 送信者が利用する IP アドレスを元に制限します。この設定ではサーバに直接接続してくる IP アドレスのみに対して有効です。Spam 送信者がプロバイダの SMTP サーバを中継させて送信するようなケースでは利用できません。

    1. /etc/postfix/main.cf に以下の行を追加します
      (一行で記述するか、折り返す場合は 2行目の先頭に TAB を入れます)

      smtpd_client_restrictions =
       check_client_access hash:/etc/postfix/reject_client
      
    2. /etc/postfix/reject_client を以下の形式で作成します

      192.168.123.123 REJECT
      172.16.1 REJECT
      
      これは、192.168.123.123 および 172.16.1.0/24 アドレスブロックからの SMTP 接続を却下する設定です。

    3. postmap コマンドで reject_sender.db を作成します

      # /usr/sbin/postmap /etc/postfix/reject_client
      
  2. 送信者による制限

    送信者アドレス (envelope-from) またはそのドメイン部による受信制限の設定について説明します。ここで、送信者アドレスはヘッダ内の From: フィールドに書かれているアドレスではなく SMTP セッション中で MAIL FROM として指定されるアドレスです。

    1. /etc/postfix/main.cf に以下の行を追加します

      smtpd_sender_restrictions =
       hash:/etc/postfix/reject_sender
      
    2. /etc/postfix/reject_sender を以下の形式で作成します

      spammer@example.com REJECT
      spammers.org REJECT
      

      これは、spammer@example.com および spammers.org ドメインを送信者アドレスに持つメールを却下する設定です。

    3. postmap コマンドで reject_sender.db を作成します

      # /usr/sbin/postmap /etc/postfix/reject_sender
      
  3. ヘッダによる制限

    Postfix では正規表現によるフィルタを行うことができます。ここでは、RHEL 標準の Postfix で利用できるようになっている pcre を利用する方法を述べます。

    1. /etc/postfix/main.cf に以下の行を追加します

      header_checks =
       pcre:/etc/postfix/header_checks
      
    2. /etc/postfix/header_checks を以下の形式で作成します

      /^X-Mailer: *Achi-Kochi Mail/i REJECT
      /^X-Mailer: *IM200[0-9] Version/i REJECT
      /^Subject:.*!!!/ REJECT
      /^Subject:.*( \$\$\$|\$\$\$ )/ REJECT
      

      ここでは、X-Mailer: にバルク送信ツールが含まれているメール、Subject: に "!!!" や "$$$" が含まれているメールを却下します。("( \$\$\$|\$\$\$ )" としているのは、Subject: に生 JIS コードで日本語文字列が入っている場合の対策です) なお、i 修飾子は大文字と小文字を区別することを表わし、Perl などと正反対の動作を表わすので注意が必要です。

  4. 内容 (本文) による制限

    1. /etc/postfix/main.cf に以下の行を追加します

      body_checks =
       pcre:/etc/postfix/body_check_regex
      
    2. /etc/postfix/body_check_regex

      ヘッダによる制限と同様に /etc/postfix/body_check_regex に正規表現を書いていきます。なお、現在のところは複数行に跨った文字列にマッチさせることは出来ません。

  5. 公開 RBL サービスの利用

    Postfix では smtpd_client_restrictions に reject_rbl_client <利用する RBL のドメイン名> を加えることで利用することが出来ます。

    設定例

    smtpd_client_restrictions = permit_mynetworks,
     reject_invalid_hostname,
     reject_non_fqdn_sender,
     reject_non_fqdn_recipient,
     reject_unknown_sender_domain,
     reject_unknown_recipient_domain,
     reject_rbl_client bl.spamcop.net,
     reject_rbl_client blackholes.mail-abuse.org,
     reject_rbl_client dynablock.wirehub.net,
     reject_rbl_client korea.services.net,
     reject_rbl_client opm.blitzed.org,
     reject_rbl_client relays.ordb.org,
     reject_rbl_client relays.visi.com,
     reject_rbl_client sbl.spamhaus.org,
     reject_rbl_client sbl-xbl.spamhaus.org,
     permit
    
  6. 添付ファイルつきのメールを拒否する方法

    Postfix では特定の拡張子を持つ添付ファイルのあるメールを拒否することができます。

    1. /etc/postfix/main.cf に以下の行を追加します

      header_checks = regexp:/etc/postfix/header_checks
      
    2. /etc/postfix/header_checks を以下の形式で作成します

      /name=.*\.scr/ REJECT
      /name=.*\.exe/ REJECT
      /name=\".*\.inf\"/ REJECT
      /name=\".*\.scr\"/ REJECT
      /name=\".*\.pif\"/ REJECT
      /name=\".*\.bat\"/ REJECT
      /name=\".*\.dll\"/ REJECT
      /name=\".*\.vbs\"/ REJECT
      /name=\".*\.reg\"/ REJECT
      

      「/name=」行は、「name=」が含まれるヘッダ内文字列に任意のファイル名(.*)に加え、「.」(\.)+「scr」で終わる拡張子(.* \)が含まれている場合に拒否(REJECT)を意味する。以下、数行は拡張子のバリエーションを増やしているだけで、定義方法自体に変わりはない。

その他

Postfix とスパム対策ソフトウェア、ウィルス対策ソフトウェアを組合わせたもの。

0 件のコメント:

コメントを投稿