GNU/Linux >> Linux の 問題 >  >> Cent OS

電子メールスパムをブロックするためにCentOS/RHELでSpamAssassinを設定する

以前、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のような単語が含まれることはないと思います。 、UbuntuLinux 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.conf15-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」という新しいプラグインもあります。このプラグインは、添付されたマクロが悪意のあるものかどうかを検出しようとします。


Cent OS
  1. CentOS/RHEL 7 で udev サービスの children-max を設定する方法

  2. CentOS/RHEL 6 で ethtool 設定を永続的に設定する方法

  3. Linux (CentOS/RHEL) でシングル ユーザー モードのパスワードを設定する

  1. CentOS 7 /RHEL7でホスト名を設定または変更する方法

  2. CentOS / RHEL / FedoraでLogWatch電子メールレポートを無効にする方法は?

  3. CentOS / RHEL 7 :デフォルト ターゲット (デフォルト ランレベル) の設定方法

  1. CentOS/RHEL 7 で udev を使用してカスタム デバイス名を設定する方法

  2. CentOS/RHEL 7 の Gnome でスクリーンセーバー オプションをカスタマイズする方法

  3. CentOS/RHEL 7 で SYSTEMD プロセスの CPU アフィニティを設定する方法