以前、CentOS/RHELのPostfixで電子メールスパムをブロックするための7つの効果的な方法について説明しました。このチュートリアルでは、SpamAssassin(SA)を使用してCentOS/RHELメールサーバー上のスパムを検出する方法を学習します。 SpamAssassinは、無料のオープンソースで柔軟かつ強力なスパム対策ツールです。
SpamAssassinはスコアベースのシステムです。多数のルールに対して電子メールメッセージをチェックします。各ルールは、メッセージのスコアのポイントを追加または削除します。スコアが十分に高い場合(デフォルトでは5.0)、メッセージはスパムと見なされます。
CentOS/RHELにSpamAssassinをインストールする
次のコマンドを実行して、デフォルトのCentOS/RHELソフトウェアリポジトリからSpamAssassinをインストールします。
sudo dnf install spamassassin
spamassassin
によってインストールされたサーバーバイナリ パッケージはspamd
と呼ばれます 、ローカルホストのTCPポート783でリッスンします。 Spamc
SpamAssassinスパムフィルタリングデーモンのクライアントです。デフォルトでは、spamassassin
systemdサービスが無効になっている場合、次のコマンドで起動時に自動起動を有効にできます:
sudo systemctl enable spamassassin
次に、SpamAssassinを起動します。
sudo systemctl start spamassassin
SpamAssassinをMilterとしてPostfixSMTPサーバーと統合する
SpamAssassinをPostfixと統合するために使用できるいくつかの方法があります。私はsendmailmilterインターフェースを介してSpamAssassinを使用することを好みます。これは、8などの非常に高いスコアを取得したときに電子メールを拒否できるため、受信者に表示されないためです。
spamass-filter
をインストールします EPELソフトウェアリポジトリからのCentOS/RHEL上のパッケージ。
sudo dnf install epel-release sudo dnf install spamass-milter
サービスを開始します。
sudo systemctl start spamass-milter
起動時に自動起動を有効にします。
sudo systemctl enable spamass-milter
次に、/etc/postfix/main.cf
を編集します ファイルを作成し、ファイルの最後に次の行を追加します。
# Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = unix:/run/spamass-milter/spamass-milter.sock non_smtpd_milters = $smtpd_milters
CentOS / RHELでOpenDKIMとOpenDMARCを構成した場合、これらの行は次のようになります。ミルターの順序が重要です。
# Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891,inet:127.0.0.1:8893,unix:/run/spamass-milter/spamass-milter.sock non_smtpd_milters = $smtpd_milters
OpenDMARCを構成していない場合は、local:opendmarc/opendmarc.sock,
を削除する必要があります。 smtpd_milters
から 。
ファイルを保存して閉じます。次に、/etc/sysconfig/spamass-milter
を開きます。 ファイルを作成し、次の行を見つけます。
#EXTRA_FLAGS="-m -r 15"
この行のコメントを外し、15を8などの希望する拒否スコアに変更します。
EXTRA_FLAGS="-m -r 8"
特定の電子メールのスコアが8を超える場合、Spamassassinはそれを拒否し、/var/log/maillog
に次のようなメッセージが表示されます。 ファイル、拒否されたことを示します。
milter-reject: END-OF-MESSAGE 5.7.1 Blocked by SpamAssassin
送信者に別の拒否テキストを表示させたい場合は、-R
を追加します (テキストを拒否)以下のようなオプション。
EXTRA_FLAGS="-m -r 8 -R SPAM_ARE_NOT_ALLOWED_HERE"
-i 127.0.0.1
を追加して、ローカルホストから発信されたメールを無視することをお勧めします オプション。
EXTRA_FLAGS="-m -r 8 -R SPAM_ARE_NOT_ALLOWED_HERE -i 127.0.0.1"
-g sa-milt
も追加する必要があります spamass-milterソケットをsa-miltグループが書き込み可能にするオプション。
EXTRA_FLAGS="-m -r 8 -R SPAM_ARE_NOT_ALLOWED_HERE -i 127.0.0.1 -g sa-milt"
ファイルを保存して閉じます。次に、postfix
を追加します sa-milt
へのユーザー グループ化して、Postfixがspamass-milterと通信できるようにします。
sudo gpasswd -a postfix sa-milt
変更を有効にするには、PostfixとSpamassMilterを再起動します。
sudo systemctl restart postfix spamass-milter
ステータスをチェックして、実行されていることを確認してください。
sudo systemctl status postfix spamass-milter
SpamAssassinでメールのヘッダーと本文を確認する
SpamAssassinには、 / usr / share / spamassassin /に多くのスパム検出ルールが付属しています。 ディレクトリ。いくつかのルールを説明させてください。
/usr/share/spamassassin/20_head_tests.cf ファイルの場合、次の2行が見つかります。
header MISSING_HEADERS eval:check_for_missing_to_header() describe MISSING_HEADERS Missing To: header
最初の行は、 To:かどうかをテストします ヘッダーは電子メールメッセージに存在します。オプションの2行目は、最初の行の機能を説明しています。大文字はこのテストの名前です。
次の3行は、日付:があるかどうかをテストするためのものです。 メールメッセージのヘッダー。
header __HAS_DATE exists:Date meta MISSING_DATE !__HAS_DATE describe MISSING_DATE Missing Date: header
そして、これらの3行は、 From:があるかどうかをテストするためのものです。 メールメッセージのヘッダー。
header __HAS_FROM exists:From meta MISSING_FROM !__HAS_FROM describe MISSING_FROM Missing From: header
既存のルールのカスタムスコアを設定する
50_scores.cf
内 および72_scores.cf
ファイルでは、さまざまなテストのデフォルトのスコアを確認できます。特定のテストに対してデフォルトのスコアが低すぎる、または高すぎると思われる場合は、/etc/mail/spamassassin/local.cf
でカスタムスコアを設定できます。 ファイル。
sudo nano /etc/mail/spamassassin/local.cf
たとえば、RFC 5322では、すべての電子メールメッセージに From:が必要です。 および日付: ヘッダーフィールドなので、local.cf
に次の2行を追加することで、メールメッセージでいずれかが欠落している場合に非常に高いスコアを設定できます。 ファイル。
score MISSING_FROM 5.0 score MISSING_DATE 5.0
宛先: RFC 5322ではヘッダーフィールドは必須ではありません。このヘッダーフィールドが欠落している正当な電子メールを見たことがないため、電子メールメッセージにヘッダーフィールドが欠落している場合はハイスコアを設定することをお勧めします。
score MISSING_HEADERS 3.0
一部のスパマーは、 From:で2つのメールアドレスを使用します 以下のようなヘッダーフィールド。
From: "[email protected]" <[email protected]>
この種のメールのデフォルトのスコアは低いと思います。3.0に設定することをお勧めします。
score PDS_FROM_2_EMAILS 3.0
件名や本文にテキスト部分がない空のメッセージを送信するスパマーがいます。この種のメールのスコアを5.0に設定したので、スパムフォルダに配置されます。空の場合、なぜそれを読むのですか?
score EMPTY_MESSAGE 5.0
また、他のスパマーから開封確認メールの送信を求められることがよくあります。この種のメールのスコアを2.0に設定しました。
score FREEMAIL_DISPTO 2.0
From:で異なるドメイン名を使用しているスパマーがいます および返信先: ヘッダー、3.5スコアを付けます。
score FREEMAIL_FORGED_REPLYTO 3.5
また、 From:で存在しないドメイン名を使用しているスパマーもいます。 ヘッダーフィールド。このタイプのメールに5.0スコアを設定しました。
score DKIM_ADSP_NXDOMAIN 5.0
最後になりましたが、多くのスパマーがgmail.com
を偽装しています From:のドメイン ヘッダーフィールド。この種のメールには2.5スコアを設定しました。
score FORGED_GMAIL_RCVD 2.5
独自のルールの追加
/etc/mail/spamassassin/local.cfにカスタムSpamAssassinルールを追加できます ファイル。
sudo nano /etc/mail/spamassassin/local.cf
ヘッダールール
たとえば、一部のスパマーは From:で同じメールアドレスを使用します および宛先: ヘッダ。ファイルの最後に次の行を追加して、そのようなメールにスコアを追加できます。
header FROM_SAME_AS_TO ALL=~/\nFrom: ([^\n]+)\nTo: \1/sm describe FROM_SAME_AS_TO From address is the same as To address. score FROM_SAME_AS_TO 2.0
一部のスパマーは、エンベロープの差出人アドレス(別名リターンパスヘッダー)に空のアドレスを使用します。これはバウンスメッセージを送信するのに正当ですが、私はこの種の電子メールにスコアを付けることを好みます。
header EMPTY_RETURN_PATH ALL =~ /<>/i describe EMPTY_RETURN_PATH empty address in the Return Path header. score EMPTY_RETURN_PATH 3.0
メールサーバーでOpenDMARCを構成している場合は、次の行を追加して、DMARCチェックに失敗した電子メールにスコアを追加できるようになりました。
header CUSTOM_DMARC_FAIL Authentication-Results =~ /dmarc=fail/ describe CUSTOM_DMARC_FAIL This email failed DMARC check score CUSTOM_DMARC_FAIL 3.0
上記のコードは、SpamAssassinに Authentication-Resultsかどうかを確認するように指示しています。 ヘッダーには文字列「dmarc=fail」が含まれています。見つかった場合は、スコアを3.0増やします。
ボディルール
本文に特定のフレーズが見つかった場合は、SpamAssassinにメールのスコアを上げるように指示できます。たとえば、多くのスパマーは、以下のように最初の本文行で受信者のメールアドレスを使用します。
Hi [email protected] Hello [email protected] Dear [email protected]
メールの最初の行に私の名前をわざわざ書いていない人とは話したくありません。そこで、SpamAssassinでこの種のメールをフィルタリングするルールを作成しました。
body BE_POLITE /(hi|hello|dear) xiao\@linuxbabe\.com/i describe BE_POLITE This email doesn't use a proper name for the recipient score BE_POLITE 5.0
SpamAssassinの正規表現では、デフォルトで大文字と小文字が区別されます。i
を追加できます。 大文字と小文字を区別しないようにするための最後のオプション。
負のスコアを追加
良いメールにネガティブスコアを追加することもできるので、誤検知が少なくなります。たとえば、私のブログの読者の多くはLinuxに関する質問をしてきますが、スパマーにDebian
のような単語が含まれることはないと思います。 、Ubuntu
、Linux Mint
メール本文にあるので、次のルールを作成しました。
body GOOD_EMAIL /(debian|ubuntu|linux mint|centos|red hat|RHEL|OpenSUSE|Fedora|Arch Linux|Raspberry Pi|Kali Linux)/i describe GOOD_EMAIL I don't think spammer would include these words in the email body. score GOOD_EMAIL -4.0
メール本文にLinuxディストリビューションの名前が含まれている場合は、負のスコア(-4.0)を追加します。
正当なバウンスメッセージに含まれる一般的なフレーズがいくつかあるので、これらの電子メールメッセージに負のスコアを追加できます。
body BOUNCE_MSG /(Undelivered Mail Returned to Sender|Undeliverable|Auto-Reply|Automatic reply)/i describe BOUNCE_MSG Undelivered mail notifications or auto-reply messages score BOUNCE_MSG -1.5
本文のルールには、本文のコンテンツの最初の行として件名も含まれていることに注意してください。
メタルール
ヘッダーと本文のルールに加えて、メタルールもあります。メタルールは、他のルールの組み合わせです。他の2つ以上のルールが真の場合に起動するメタルールを作成できます。たとえば、送信者が仕事に応募したいというメールを時々受け取り、履歴書が添付されています。私は自分のウェブサイトで人を雇う必要があると言ったことはありません。添付ファイルは、ウイルスを拡散するために使用されます。この種のメールをフィルタリングするために、次のメタルールを作成しました。
body __RESUME /(C.V|Resume)/i meta RESUME_VIRUS (__RESUME && __MIME_BASE64) describe RESUME_VIRUS The attachment contains virus. score RESUME_VIRUS 5.5
最初のサブルール__RESUME
メール本文にC.V.
という単語が含まれているかどうかをテストします またはresume
。 2番目のサブルール__MIME_BASE64
/usr/share/spamassassin/20_body_tests.cf
ですでに定義されています 次のようにファイルするので、local.cfファイルで再度定義する必要はありません。このルールは、電子メールメッセージにbase64添付ファイルが含まれているかどうかをテストします。
rawbody __MIME_BASE64 eval:check_for_mime('mime_base64_count') describe __MIME_BASE64 Includes a base64 attachment
私のメタルールRESUME_VIRUS
両方のサブルールが真の場合に起動し、電子メールメッセージに5.5スコアを追加します。サブルールは多くの場合、二重アンダースコアで始まるため、それ自体にはスコアがないことに注意してください。
これで、文字列が見つかった場合にスコアを追加する方法を学びました。メールヘッダーに文字列が存在しない場合にスコアを追加したい場合はどうなりますか?さて、あなたは!
を使うことができます オペレーター。たとえば、From:アドレスで1つの単語を使用しているスパマーを見たことがあります。この種のメールをスコアリングするために、次の行を追加しました。
header __AT_IN_FROM From =~ /\@/ meta NO_AT_IN_FROM !__AT_IN_FROM score NO_AT_IN_FROM 4.0
最初の行は、@
かどうかを確認します From:ヘッダーに記号があります。 2行目は、!__AT_IN_FROM
のときに発生するメタルールを定義しています。 本当です。 !__AT_IN_FROM
ルールは最初のヘッダールールの反対です。つまり、@
がない場合です。 From:アドレスにサインインすると、メタルールが実行されます。
次の行を追加して、差出人アドレスにドットが存在するかどうかを確認することもできます。
header __DOT_IN_FROM From =~ /\./ meta NO_DOT_IN_FROM !__DOT_IN_FROM score NO_DOT_IN_FROM 4.0
ホワイトリスト
whitelist_from
を使用できます Spamassassinホワイトリストに特定の電子メールアドレスまたはドメインを追加するためのパラメーター。たとえば、local.cf
の最後に次の2行を追加します ファイル。
whitelist_from [email protected] whitelist_from *@canonical.com
ホワイトリストに登録された送信者には-100
があります デフォルトのスコア。それらは引き続きSpamAssassinルールによってテストされますが、5.0スコアに到達するのは非常に困難です。
ブラックリスト
送信者をブラックリストに登録するには、blacklist_from
を使用します whitelist_from
と同じ形式のパラメータ 。
blacklist_from [email protected] blacklist_from *@example.org
構文の確認と再起動
local.cf
を保存した後 ファイル。 spamassassin
を実行する必要があります lintモードでコマンドを実行して、構文エラーがあるかどうかを確認します。
sudo spamassassin --lint
次に、SpamAssassinを再起動して、変更を有効にします。
sudo systemctl restart spamassassin
SpamAssassinの組み込みホワイトリスト
SpamAssassinには独自のホワイトリストが付属しています。 /usr/share/spamassassin/
の下にいくつかのファイルがあります 60_whitelist
を含むディレクトリ ファイル名に。これらのファイルには、SpamAssassinの組み込みホワイトリストが含まれています。たとえば、60_whitelist_spf.cf
ファイルには、スパムとして(誤って)タグ付けされることが多いメールを送信するアドレスのリストが含まれています。
スパムをジャンクフォルダに移動する
DovecotIMAPサーバーとsieveプラグインを使用してスパムをジャンクフォルダに移動する方法を紹介します。この方法では、受信メールがDovecotの「配信」LDA(ローカル配信エージェント)を介してメッセージストアに配信される必要があります。 /var/log/maillog
に次のテキストが含まれている場合 ファイルの場合、この要件は満たされます。
postfix/lmtp
または
delivered via dovecot service
次のコマンドを実行しますinstalldovecot-pigeonhole CentOS/RHELソフトウェアリポジトリからのパッケージ。
sudo dnf install dovecot-pigeonhole
このパッケージは、/etc/dovecot/conf.d/
の下に2つの構成ファイルをインストールします ディレクトリ:90-sieve.conf
および90-sieve-extprograms.conf
。 15-lda.conf
を開きます ファイル。
sudo nano /etc/dovecot/conf.d/15-lda.conf
sieveプラグインをローカル配信エージェント(LDA)に追加します。
protocol lda { # Space separated list of plugins to load (default is global mail_plugins). mail_plugins = $mail_plugins sieve }
ファイルを保存して閉じます。 20-lmtp.conf
が見つかった場合 /etc/dovecot/conf.d/
の下のファイル ディレクトリの場合は、以下のようにそのファイルでsieveプラグインも有効にする必要があります。
protocol lmtp { mail_plugins = quota sieve }
次に、90-sieve.conf
を開きます ファイル。
sudo nano /etc/dovecot/conf.d/90-sieve.conf
79行目に移動し、次の行を追加します。これは、Sieveに常に SpamToJunk.sieveを実行するように指示します。 ユーザー固有のスクリプトの前にスクリプトを作成します。
sieve_before = /var/mail/SpamToJunk.sieve
ファイルを保存して閉じます。次に、ふるいスクリプトを作成します。
sudo nano /var/mail/SpamToJunk.sieve
次の行を追加します。これは、DovecotにX-Spam-Flag: YES
を使用して電子メールメッセージを移動するように指示します。 ヘッダーをジャンクフォルダに入れます。
require "fileinto"; if header :contains "X-Spam-Flag" "YES" { fileinto "Junk"; stop; }
ファイルを保存して閉じます。このスクリプトをコンパイルできるので、実行速度が速くなります。
sudo sievec /var/mail/SpamToJunk.sieve
これで、 /var/mail/SpamToJunk.svbinとして保存されたバイナリファイルがあります。 。 10-mail.confファイルを編集します。
/etc/dovecot/conf.d/10-mail.conf
ファイルに次の行を追加して、個々のユーザーのふるいスクリプトを自分のホームディレクトリに保存できるようにします。
mail_home = /var/vmail/%d/%n
最後に、変更を有効にするためにdovecotを再起動します。
sudo systemctl restart dovecot
メッセージの最大サイズを設定
/var/log/mail.log
の次の行に示されているように、デフォルトでは、SpamAssassinは添付ファイルが500KBを超えるメッセージをチェックしません。 ファイル。
spamc[18922]: skipped message, greater than max message size (512000 bytes)
デフォルトのmax-size
512000(バイト)に設定されます。値を大きくするとサーバーの負荷が増える可能性がありますが、デフォルトのサイズは少し小さいと思います。最大サイズを増やすには、/etc/sysconfig/spamass-milter
を編集します ファイルを作成し、次の行を見つけます。
EXTRA_FLAGS="-m -r 8 -R SPAM_ARE_NOT_ALLOWED_HERE -i 127.0.0.1 -g sa-milt"
-- --max-size=5120000
を追加します 最後にオプション。
EXTRA_FLAGS="-m -r 8 -R SPAM_ARE_NOT_ALLOWED_HERE -i 127.0.0.1 -g sa-milt -- --max-size=5120000"
空の--
オプションはspamass-milterに指示します 残りのすべてのオプションをspamcに渡します 、--max-size
を理解します オプション。サイズを5000KBに増やしました。ファイルを保存して閉じます。次に、spamass-milterを再起動します。
sudo systemctl restart spamass-milter
個々のユーザー設定を構成する方法
メールサーバーの特定のアドレスに送信される電子メールにカスタムルールを設定することをお勧めします。私はこの機能がとても好きです。このブログの連絡先メールアドレスは、読者との連絡を維持するためにのみ使用されています。 連絡先のメールアドレスは他の場所では使用していません 、この連絡先メールアドレスにのみ適用される特別なスパムフィルタリングルールを作成できます。
まず、SpamAssassinのメイン構成ファイルを編集します。
sudo nano /etc/mail/spamassassin/local.cf
次の行を追加して、ユーザールールを許可します。
allow_user_rules 1
ファイルを保存して閉じます。次に、SpamAssassin環境ファイルを編集します。
sudo nano /etc/sysconfig/spamassassin
次の行を見つけます。
SPAMDOPTIONS="-c -m5 -H --razor-home-dir='/var/lib/razor/' --razor-log-file='sys-syslog'"
いくつかのオプションを追加する必要があります。
SPAMDOPTIONS="-c -m5 -H --razor-home-dir='/var/lib/razor/' --razor-log-file='sys-syslog' --nouser-config --virtual-config-dir=/var/vmail/%d/%l/spamassassin --username=vmail"
場所:
-
--nouser-config
:ローカルUnixユーザーのユーザーごとの構成ファイルを無効にします。 -
--virtual-config-dir
:仮想ユーザーのユーザーごとの構成ディレクトリを指定します。%d
プレースホルダーは、メールアドレスと%l
のドメイン部分を表します メールアドレスのローカル部分を表します。 --username
:vmailユーザーとしてspamを実行します。
ファイルを保存して閉じます。次に、SpamAssassinを再起動します。
sudo systemctl restart spamassassin
デフォルトでは、spamass-milterは受信者アドレスをSpamAssassinに渡しません。完全なメールアドレスをSpamAssassinに送信するようにする必要があります。 spamass-milter構成ファイルを編集します。
sudo nano /etc/sysconfig/spamass-milter
次のオプションを追加します。
-e yourdomain.com -u sa-milt
このように:
EXTRA_FLAGS="-e yourdomain.com -u sa-milt -m -r 8 -R SPAM_ARE_NOT_ALLOWED_HERE -i 127.0.0.1 -g sa-milt -- --max-size=5120000"
-e
オプションを選択すると、spamass-milterは完全な電子メールアドレスをSpamAssassinに渡します。 yourdomain.comを実際のドメイン名に置き換えます。ファイルを保存して閉じます。次に、spamass-milterを再起動します。
sudo systemctl restart spamass-milter
次に、Gmail、Hotmailなどからドメインのメールアドレスにメールを送信します。 spamassassinディレクトリは/var/vmail/yourdomain.com/username/
の下に自動的に作成されます。 ディレクトリ。
cd /var/vmail/yourdomain.com/username/spamassassin/
コマンドラインテキストエディタを使用して、ここでユーザーごとの設定ファイルを作成できます。このファイルには、user_prefs
という名前を付ける必要があります 。
sudo nano user_prefs
/etc/spamassassin/local.cf
の場合と同じように、このファイルにカスタムルールを追加できます。 ファイル。
たとえば、多くのスパマーは、将来の連絡先を削除できるように、電子メールの本文を購読解除リンクで終了していることがわかりました。私は彼らのスパムを購読していませんでした。購読解除リンクによって私のメールアドレスが連絡先データベースから削除されるとは思いません。そこで、SpamAssassinを使用してこの種の電子メールをスコアリングします。次のルールは、「購読解除」という単語またはその本文のバリエーションを含む電子メールに3.0スコアを追加します。 (私はこのブログの連絡先メールアドレスを使用してオンラインで何かを購読していません。)
body SUBSCRIPTION_SPAM /(unsubscribe|u n s u b s c r i b e|Un-subscribe)/i describe SUBSCRIPTION_SPAM I didn't subscribe to your spam. score SUBSCRIPTION_SPAM 3.0
メール本文に「登録解除」という単語が含まれていない場合もありますが、List-Unsubscribe
があります ヘッダー。これは、スパマーが私の同意なしに私の連絡先メールアドレスをメーリングリストに追加したことを意味します。次のルールを使用して、このタイプのメールにもスコアを付けることができます。
header LIST_UNSUBSCRIBE ALL =~ /List-Unsubscribe/i describe LIST_UNSUBSCRIBE I didn't join your mailing list. score LIST_UNSUBSCRIBE 2.0
別のメールアドレスでMailjetアカウントを作成しました。一部のスパマーは、私が連絡先の電子メールアドレスを使用してMailjetアカウントを作成したと想定しているため、Mailjetカスタマーサービスになりすまして、偽のMailjetログインページでパスワードを入力するように仕向けようとします。この種のメールは以下のように採点できます。
header MAILJET_IMPOSTER From =~ /mailjet/i describe MAILJET_IMPOSTER I don't have a mailjet account for this email address. score MAILJET_IMPOSTER 2.5
上記の行は、From:
かどうかを確認します ヘッダーにはmailjet
という単語が含まれています 。見つかった場合は、2.5スコアを付けます。
From:
の中国のスパマーからメールを受け取ることがあります。 ドメイン名には母音文字(a、e、i、o、u)はありません。スパマーはcdjcbzclyxgs.xyz
を使用しました ドメイン名。多くのトップレベルドメインにすでに母音文字が含まれていることを考えると、通常の個人/エンティティが母音文字なしでドメイン名を使用することはほぼ不可能です(.com、.net、.org、.co、.io、.shop、.dev 、など)なので、この種のメールには以下のような非常に高いスコアを付けます。デフォルトのスコアは0.5です。
score FROM_DOMAIN_NOVOWEL 4.0
一部のスパムメールは本文に多くの画像を使用していますが、テキストはほとんど含まれていません。この種のメールのデフォルトのスコアは1.9ですが、連絡先のメールアドレスに高いスコアを設定することを好みます。
score HTML_IMAGE_RATIO_02 4.0
また、件名に自分のメールアドレスが含まれるスパムメールを受け取ったので、ハイスコアを追加できます。
header SUBJECT_SPAM Subject =~ /xiao\@linuxbabe.com/i describe SUBJECT_SPAM Subject contains my email address. score SUBJECT_SPAM 4.0
一部のスパマーは、BCC(Blind Carbon Copy)を使用して他の受信者を隠します。そのようなメールは受け取りたくありません。そこで、次のルールを作りました。ドメイン名がTo:ヘッダーにない場合は、メールに3.0を追加してください。
header __DOMAIN_IN_TO To =~ /linuxbabe.com/ meta DOMAIN_NOT_IN_TO !__DOMAIN_IN_TO score DOMAIN_NOT_IN_TO 3.0
カスタムルールを追加したら、ファイルを閉じて次のコマンドを実行し、構文を確認します。サイレント出力は、構文エラーがないことを意味します。
sudo spamassassin --lint
最後に、SpamAssassinを再起動して、変更を有効にします。
sudo systemctl restart spamassassin
これで、他のメールサービスから自分のドメインのメールアドレスにテストメールを送信して、ユーザー設定をテストできます。
拒否またはバウンス
受信側のSMTPサーバーは、SMTP会話中にメッセージを受け入れないと判断した場合、メッセージを拒否します。 SMTPサーバーがメッセージを受け入れ、後でメッセージが配信されないことを検出する場合があります。これは、目的の受信者が存在しないか、最終的な配信に問題がある可能性があります。この場合、メッセージを受け入れたSMTPサーバーは、通常、元のメッセージを配信できなかった理由を含むエラーレポートを送信することにより、メッセージを元の送信者に返送します。
Return-path:
のメールアドレスは、スパムをバウンスしないでください。 ヘッダーまたはFrom:
ヘッダーが存在しないか、無実の人のメールアドレスである可能性があるため、バウンスメッセージは無実の人のメールアドレスに送信され、後方散乱の問題が発生する可能性があります。スパムをバウンスする代わりに、電子メールが受け入れられる前に、SMTPダイアログ中にスパムを拒否する必要があります。この記事では、スパムメッセージのバウンスについては説明していません。自分でスパムフィルタールールを作成する場合に備えて、このルールを覚えておく必要があります。疑わしい場合は、スパムフィルタリングルールをテストして、バウンスメッセージが作成されるかどうかを確認してください。
URIBL_BLOCKED
デフォルトでは、SpamAssassinはURIBLルールを有効にします。これは、電子メールメッセージにURIBLによってスパムとして識別されるリンクが含まれているかどうかをチェックします。これは非常に効果的なスパム対策測定です。ただし、URIBLのクエリがブロックされる可能性があります。受信メールメッセージの生のメールヘッダーを確認し、X-Spam-Status
を見つけます ヘッダー。
X-Spam-Status: No, score=-92.2 required=5.0 tests=DATING_SPAM,DKIM_SIGNED, DKIM_VALID,HTML_FONT_LOW_CONTRAST,HTML_MESSAGE,SPF_PASS, SUBSCRIPTION_SPAM,UNPARSEABLE_RELAY,URIBL_BLOCKED,USER_IN_WHITELIST autolearn=no autolearn_force=no version=3.4.2
このヘッダーにURIBL_BLOCKEDが含まれている場合は、URIBLのクエリがブロックされていることを意味します。ほとんどの場合、独自のローカルDNSリゾルバーを使用していないためです。メールサーバーで次のコマンドを実行して、URIBLのクエリに使用しているDNSサーバーをテストできます。
host -tTXT 2.0.0.127.multi.uribl.com
サンプル出力:
2.0.0.127.multi.uribl.com descriptive text "127.0.0.1 -> Query Refused. See http://uribl.com/refused.shtml for more information [Your DNS IP: xx.xx.xx.xx]"
このエラーを修正するには、メールサーバーで独自のローカルDNSリゾルバーを実行する必要があります。
- CentOS/RHELで独自のBINDDNSリゾルバーを実行する
ローカルDNSリゾルバーが起動して実行されたら、URIBLを再度テストします。
host -tTXT 2.0.0.127.multi.uribl.com
次の出力が表示された場合は、URIBLのクエリが許可されていることを意味します。
2.0.0.127.multi.uribl.com descriptive text "permanent testpoint"
今後、受信メールメッセージのX-Spam-Status
にURIBL_BLOCKEDタグは含まれなくなります ヘッダー。
その他のヒント
SpamAssassin 4.0にはHashBLプラグインが含まれており、メール本文のビットコインアドレスが詐欺師によって使用されているかどうかを確認できます。また、メールにマクロ付きのOffice添付ファイルが含まれているかどうかを確認できる「OleMacro」という新しいプラグインもあります。このプラグインは、添付されたマクロが悪意のあるものかどうかを検出しようとします。