スコアに基づいて spamassasin でメールを拒否するにはどうすればよいでしょうか?

スコアに基づいて spamassasin でメールを拒否するにはどうすればよいでしょうか?

私はPostfix、Dovecot、Postgrey、spamassasin/spamdを使用してLinuxを実行しています。

これは私のmain.cfです

smtpd_recipient_restrictions = permit_sasl_authenticated,
                               permit_mynetworks,
                               reject_unauth_destination,
                               reject_invalid_hostname,
                               reject_unauth_pipelining,
                               reject_non_fqdn_sender,
                               reject_unknown_sender_domain,
                               reject_non_fqdn_recipient,
                               reject_unknown_recipient_domain,
                               check_policy_service inet:127.0.0.1:10030

postfix がキャッチしなかった他のメールに spamassasin でスパム ヘッダーを追加しましたが、それを拒否するにはどうすればよいでしょうか?

答え1

postfix を設定して、Spamassasin/Amavis をプロキシ フィルターとして使用できます。この方法では、バウンスを防止できます。SMTP リモート側への接続は、スパム チェックが完了するまで開いたままになり、postfix は OK または REJECTED メッセージで応答します。この方法では、リモート側がバウンスに責任を負います。

# master.cf

# mail inbound
smtp      inet  n       -       -       -       -       smtpd
    -o smtpd_proxy_filter=127.0.0.1:10024
    -o smtpd_client_connection_count_limit=10
    -o smtpd_proxy_options=speed_adjust

# spamassasin/amavis is listening to port 10024 and sending it's
# checked mail to port 10025
amavis    unix  -       -       n       -       2       smtp
   -o smtp_data_done_timeout=1200
   -o smtp_send_xforward_command=yes
   -o disable_dns_lookups=yes

# SMTP return (from amavis/spamassasin)
localhost:10025 inet  n -       n       -      -        smtpd
   -o content_filter=
   -o local_recipient_maps=
   -o relay_recipient_maps=
   -o smtpd_restriction_classes=
   -o smtpd_client_restrictions=
   -o smtpd_helo_restrictions=
   -o smtpd_sender_restrictions=
   -o smtpd_recipient_restrictions=permit_mynetworks,reject
   -o smtpd_override_options=no_address_mappings
   -o mynetworks=127.0.0.0/8
   -o receive_override_options=no_unknown_recipient_checks
# main.cf

# for rejecting spam
header_checks = pcre:/etc/postfix/header_checks
# header_checks

/X-Spam-Level: \*{9,}/ REJECT Looks like spam to me.

Amavis を使用して spamassasin を呼び出す場合、Amavis にメールを拒否させることができます。拒否しきい値は で設定できます$sa_kill_level_deflt。Amavisを使用するときは、SMTP リターン エントリ,no_header_body_checksに を追加します。receive_override_options

答え2

一般的に、何かを拒否することは望ましくありません。ほとんどのスパムには偽造されたヘッダーがあるため、ユーザーは自分に属さないバウンスバックを受け取る可能性があり、それらのユーザーとその管理者に頭痛の種を与えるだけです (または、基本的に、誤ったバウンスでメールボックスをあふれさせることで、自分自身でスパムを作成します)。

もっと良い方法は、スパムを保留するか、スパム フォルダーに入れて、実際にはスパムでない場合に備えてユーザーが引き続きスパムにアクセスできるようにし、メール クライアントを設定して、メールが不要であることが確実になるまで十分に時間が経過したらそのメールを削除することです。

それ以外では、メール サーバーを第一線の防御用に構成します。SPF を使用するように設定したり、RFC に厳密に準拠するように設定したりできます。さらに一歩進めたい場合は、ブラックホール リストにあるメールを拒否するために RBL をチェックします。これは強引ですが、誤って追加されたサーバーを定期的にブロックする可能性があるため、これらのリストを使用するかどうかはあなた次第です。しかし、一方で、電子メールは人々が考えるほど信頼できる通信媒体ではありません。電子メールが届くかどうかはわかりません。生死に関わる重要な場合は、別の媒体で通信して受信を確認します。スパマーはすべての人のために台無しにします。

答え3

最も良いアイデアは、スコアに基づいてフィルタリングすることです。重要な電子メールが SA によって捕捉され、その電子メールを永久に失うことは望ましくないことが時々あります (さらに、エンド ユーザーは電子メールが配信されないと考えるでしょう)。

私の個人サーバーでは、スコアが 3.5 を超えるものはすべてユーザーのスパム フォルダーに配信されます。こうすることで、常に配信され、ユーザーはそれにアクセスできるようになります。次に、そのフォルダー内の 3 週間以上経過したものを削除する cronjob があります。

答え4

Milter プロトコル経由でスパムフィルターを使用する場合、Milter フィルターの後に追加のヘッダー チェックを行うことができます。 http://www.postfix.org/header_checks.5.html

milter_header_checks(デフォルト: 空)

これらは、Milter アプリケーションで追加されたヘッダーに適用されます。この機能は、Postfix 2.7 以降で利用できます。

関連情報