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を使用しません ドメインは小さく、ファイル管理は現時点でははるかに高速です。



All Articles