postfix + spamassassinを使用したスパム対策

私がサポートしている小さなドメインがあり、ある時点でスパムが非常に甘やかされて、できる限り最小化することが決定されました。 その結果、私はスパムに非常に満足しています;原則として、私はそれが起こるとは思いません; 3-4か月に1通のメールが受信トレイに入ります。 もちろん誤検知はありますが、それらは主に郵送によるものです。
これは私が共有したい私の個人的な構成であり、おそらくいくつかのことがより良くできるかもしれません、私はこれを否定しません。 また、サイトによっては、特定の方向にチューニングを行う必要があります。

そのためには、接尾辞、spamassassin、amavisd-newが必要です。 Debianを使用し、 apt-get install postfix、postfix-pcre、spamassassin、amavisd-newパッケージをインストールします


設定ファイル/etc/postfix/main.cf

myhostname = mail.example.com
mydestination = $ myhostname
mynetworks = 127.0.0.0/8#リレーの許可なしにメールを受信できるネットワーク。

smtpd_banner = $ myhostname ESMTP $ mail_name
biff = no

smtpd_use_tls =はい
smtpd_tls_cert_file = /etc/postfix/mail.pem
smtpd_tls_key_file = $ smtpd_tls_cert_file
smtpd_tls_received_header = yes#TLSセッションに関するヘッダーをレターに追加します
smtpd_tls_auth_only = yes#TLSセッションが確立された場合のみ許可
smtpd_tls_session_cache_database = btree:$ {queue_directory} / smtpd_scache
smtp_tls_session_cache_database = btree:$ {queue_directory} / smtp_scache

#.domainの追加はMUAの仕事です。
append_dot_mydomain = no

alias_maps = hash:/ etc / aliases
virtual_alias_maps =ハッシュ:/ etc / postfix / virtual
proxy_interfaces = 1.1.1.1#サーバーが内部アドレスを使用している場合、WANインターフェイスのIPアドレス。
smtpd_helo_required = yes
strict_rfc_envlopes =はい
disable_vrfy_command = yes

#smtpd_delay_reject = yes-したがって、デフォルトはすべてのルールがRCPT TOコマンドの後にのみ適用されます。

smtpd_recipient_restrictions =
reject_non_fqdn_sender
reject_non_fqdn_recipient
reject_unlisted_recipient
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
reject_unknown_sender_domain
reject_unknown_recipient_domain
check_recipient_access hash:/ etc / postfix / spam_trap#禁止なくスパムを食べるアドレスのリスト。
reject_unknown_reverse_client_hostname
reject_invalid_hostname
reject_non_fqdn_hostname
check_client_access cidr:/ etc / postfix / trusted_IP#ホワイトリスト
check_helo_access pcre:/ etc / postfix / helo_checks#典型的なスパムHELOをキャッチするための正規表現。
check_helo_accessハッシュ:/ etc / postfix / helo_checks_text
check_sender_access hash:/ etc / postfix / not_our_domain_as_sender#送信者がドメインにいる場合、認証が必要
check_sender_mx_access cidr:/ etc / postfix / sender_mx_access#ルーティングされていないネットワークのリスト
## DNSBLの検索
reject_rbl_client zen.spamhaus.org
許可する

smtpd_data_restrictions =
reject_multi_recipient_bounce
reject_unauth_pipelining#このオプションは、smtpd_delay_reject = NOが設定されている場合にのみ、data_restrictionの外で使用できます。たとえば、挨拶を遅らせる(HELO)

smtpd_etrn_restrictions =拒否
smtpd_soft_error_limit = 3

header_checks = pcre:/ etc / postfix / header_checks#ドメインの受信フィールドに存在するかどうかの定期的なチェック
mime_header_checks = pcre:/ etc / postfix / mime_header_checks#ブロック添付ファイル

#これは、dovecotを介した認可とリポジトリへのレター送信の設定の一部です。
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private / auth
smtpd_sasl_authenticated_header = yes

dovecot_destination_recipient_limit = 1
mailbox_transport = dovecot
virtual_transport = dovecot
virtual_mailbox_domains = example.com
virtual_mailbox_maps =ハッシュ:/ etc / postfix / vmailbox


/ etc / postfix / helo_checks
/^mail\.example\.com$/ Rejectそれは私のホスト名です。自分のものを使用してください
/^1\.1\.1\.1$/拒否それは私のIPアドレスです。独自のものを使用してください
/^►11.1.1.1.1.1.1$$/拒否それは私のIPアドレスです。独自のものを使用してください
/^►0-9.†+$/RFC 2821に準拠していないクライアントを拒否します
/(►0-9†){1,3►\.([0-9†){1,3►\.([0-9†){1,3►\.([0-9]) {1,3} / 553 SPAM-raw-ip-in-helo
/(^|►0-9.---------)([axv†dsl|isadsl|as|bgp|dynamicIP|broadband|cable|[ck†lient|dhcp|dial|dialin|dialup|dialer|dip|dsl|dslam | dup | dyn | dynamic | host | ip | isdn | modem | nas | node | pool | ppp | pppo [ae] | sirius。* ukrtel。* | user | users | vpn)[0-9 .-] / i 553 SPAM_DYNAMIC-in-helo
/([0-9.06.2012*-){3►►0-9.06.2012*(\..*){2,►/i553 SPAM-ip-add-rr-ess_networks-in-helo
/([0-9.06.2012*\.){4►(.*\.){3,►.*/i553 SPAM-ip-add-rr-ess_networks-in-helo
/smtp[-0-9-03*\.orange\.nl/i 553 SPAM-orange.nl
/smtp[-0-9-03*\.orange\.fr/i 553 SPAM-orange.fr
/\.lan$/i 533 SPAM-lan-in-helo

/ etc / postfix / sender_mx_access
127.0.0.0/8 LOCALHOSTへのMXポイントの拒否
192.168.0.0/16 MX1ポイントをRFC1918 unreachbaleネットワークに拒否する
10.0.0.0/8 MXポイントをRFC1918到達不能ネットワークに拒否する
172.16.0.0/12 MXポイントをRFC1918到達不能ネットワークに拒否する
14.0.0.0/8 MXポイントをRFC3330特別なネットワークに拒否
224.0.0.0/4クラスDマルチキャストネットワークでMXを拒否

/ etc / postfix / header_checks
if / ^受信済み:/
/ ^受信:+ from +(例\ .com)+ /
Received:ヘッダーの偽造クライアント名を拒否:$ 1
/ ^受信:+ from + [^] + + \(([[^] + + [he] + lo = | [he] + lo +)(例\ .com)\)/
Received:ヘッダーの偽造クライアント名を拒否:$ 2
/^Received:.* + by +(例\ .com)\ b /
Received:ヘッダーの偽造メールサーバー名を拒否:$ 1

/ etc / postfix / spam_trapで指定されたすべてのアドレスは、/ etc / postfix / virtualにも存在し、すべて同じspam@example.comメールボックスに送信されます。

/etc/amavis/conf.d/50-user
$ max_servers = 8; #フォークされた子の数(2..15が一般的)、-m
$ mydomain = 'example.com'; #他の設定の便利なデフォルト

@local_domains_maps =(["。$ mydomain"、 '.example.org']);

$ sa_spam_subject_tag = 'Spam>';
$ sa_tag2_level_deflt = 6.0; #そのレベルで「スパム検出」ヘッダーを追加
$ sa_kill_level_deflt = 14.0; #スパム回避アクションをトリガー(例:メールをブロック)

$ final_banned_destiny = D_REJECT;
$ final_spam_destiny = D_REJECT;

@bypass_spam_checks_maps =(
\%bypass_spam_checks、\ @bypass_spam_checks_acl、\ $ bypass_spam_checks_re);

@spam_lovers_maps =(['spam@example.org']、);


/etc/spamassassin/local.cfを編集します
clear_internal_networks
internal_networks 192.168.0.0/24
bayes_auto_learn 1
bayes_path /var/lib/amavis/.spamassassin/bayes
bayes_auto_learn_threshold_nonspam -0.1
スコアBAYES_00 0.0001 0.0001 -6.0 -6.0
スコアBAYES_05 0.0001 0.0001 -3.0 -3.0
スコアBAYES_20 0.0001 0.0001 -1.0 -1.0
スコアBAYES_50 0.0001 0.0001 1.6 1.6
スコアBAYES_60 0.0001 0.0001 2.0 2.0
スコアBAYES_80 0.0001 0.0001 4.0 4.0
スコアBAYES_95 0.0001 0.0001 6.5 6.5
スコアBAYES_99 0.0001 0.0001 10.0 10.0
スコアRDNS_NONE 0.0001 0.0001 3.0 3.0#reject_unknown_reverse_client_hostnameルールがない場合に使用


ベイズフィルタートレーニングを行う最も単純なスクリプト



chmod 777 -R /var/mail/store/spam\@example.com
su amavis -c 'sa-learn --spam --dir /var/mail/store/spam\@example.com/new/'
rm /var/mail/store/spam\@example.ru/new/*

crontabを介して15分ごとに実行します。 トレーニングがうまくいくように、 sa-learn --dump magicコマンドを使用し、 nspamnhamに注意します。 私の場合、値が低いためハムを手動でトレーニングする必要はありませんでした。

私はデータベースやLDAPを使用しません ドメインは小さく、ファイル管理は現時点でははるかに高速です。

Source: https://habr.com/ru/post/J45441/


All Articles