MAIL (Courier-MTA) Server

CentOS 8にて構築したメールサーバー「CourierMTA」にSpammAssassinを導入してスパムメール対策

SpamAssassinについて

SpamAssassin(スパムアサシン)はメールサーバに組み込んで、メールサーバーに到達した全メールをチェックすることで、スパムメールか否かを判別してフィルタリングする事が可能です。

スパムと判断されたメールの件名に [SPAM] と文字列を追加されるように設定をして、メーラーの振り分けで管理する方法等、好みの運用方法に合わせってセッティングが可能です。

スパムかどうかの判別は別途コマンドにて学習させることで制度が向上します。
現在はApacheソフトウェア財団のプロジェクトとして進められています。

 

▼公式WEB
https://spamassassin.apache.org/

 

構築環境

  • CentOS Linux release 8.2.2004 (Core)
  • courier-1.0.14
  • courier-authlib-0.71.0
  • courier-unicode-2.1
  • spamassassin.x86_64 3.4.2-7.el8
  • courier-pythonfilter-3.0.2

 

 

SpamAssassinのインストール

CentOS 8 では dnf コマンドを利用してパッケージ情報検索やインストール、削除を行うことができます。
パッケージファイルが管理されているダウンロードサーバーをリポジトリと呼び、新規でリポジトリを追加することで、ダウンロードできるファイルの種類を増やすことが可能です。

「-y」オプションを指定すると、インストール可否の確認で「yes」となり自動的にインストールが開始します。


 command
[st_af id="334"] 
# dnf -y install spamassassin

 

SpamAssassinのコンフィグ設定

 command
# vi /etc/mail/spamassassin/local.cf

 

local.cf

▼日本語のスパムメールにも対応
normalize_charset 1


▼同じメールが指定回数送られるとスパムと判断

required_hits 5
フィルタの効果が出始めたら、required_hitsの値を5.0に近づけるように少しずつ下げてください。
なお、スコア5.0はFalse Positiveが0.05%程度(2000通に1通)発生するように調整されたものなのです。
5未満にスコアを設定するとFalse Positiveが増えますので、5未満に設定しない方がよいでしょう。


▼レポートメッセージ加工設定

スパムと判断されたメッセージをレポートメッセージに加工されないようにするには下記の設定を入れます。
report_safe 0


▼スパムと判断された場合件名を変更

下記で件名の頭に[SPAM]が追記されるので、メーラーのフィルターで振り分け等を行います。
rewrite_header Subject [SPAM]


▼日本のメールを受け取る

meta FROM_EXCESS_BASE64 0


▼本文の文字がUTF-8のメールを許容

meta MIME_BASE64_TEXT 0


▼スペースを多用する署名を許容

meta TVD_SPACE_RATIO 0

 

▼設定ファイルの検査
エラーが表示されなければ問題なし。

 command
# spamassassin --lint

 

 

SpamAssassinをCourierPythonFilterに連動

 command
# vi /etc/pythonfilter-modules.conf

 

pythonfilter-modules.conf

▼コメントアウト「#」を外して下記で修正。
[spamassassin.py]


▼spamdと接続するソケットspamcのPATH設定

spamc_path = '/usr/bin/spamc'


▼受信するメッセージの最大サイズ

max_msg_size = 512000


▼起動ユーザーは「deamon」を指定

username = 'deamon'

▼スパム判別時のスコアの優先度設定
「required_hits」を大きくしてこちらの機能は優先を下げる。
reject_score = 1000

 

 

CourierPythonFilterの停止・起動で設定反映

 command
# filterctl stop pythonfilter
# filterctl start pythonfilter
# ps -ef | grep pythonfilter
daemon 6097 1099 0 03:55 ? 00:00:00 /usr/libexec/platform-python -s /etc/courier/filters/active/pythonfilter

 

SpamAssassinを有効化

 command
# vi /etc/pythonfilter.conf

 

pythonfilter.conf

# spamassassin: scans messages using "spamc". This requires that
# SpamAssassin's daemon is running. Note that all mail will be
# filtered under the settings for courier's user, which means that
# your users' individual whitelists and thresholds won't be
# processed.

▼コメント「#」を外して有効化にする
#spamassassin

spamassassin

 

 

SpamAssassinの起動設定

▼自動起動

 command
# systemctl enable spamassassin

 

▼自動起動の確認

 command
# systemctl is-enabled spamassassin
enabled

enabled になっていればサーバー再起動で自動で敵にサービスが起動します。

 

▼起動

 command
# systemctl start spamassassin

 

▼起動確認

 command
# systemctl status spamassassin
● spamassassin.service - Spamassassin daemon
Loaded: loaded (/usr/lib/systemd/system/spamassassin.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2020-10-05 03:59:27 JST; 6s ago

最後までエラーが無く Active: active (running) となっていればOK。

 

 

SpamAssassinの自動学習

▼誤判定した場合

 command
# sa-learn --ham /home/*/Maildir/cur

「--ham」オプションをつけて正しいメールと学習をさせます。
この場合は「/home」配下全ユーザーの既読メールを非スパムとして学習させています。

 

▼/home/Maildir配下の用途

未読 /home//Maildir/new
既読 /home//Maildir/cur
配送中 /home//Maildir/tmp

 

▼cronで定期時間に自動学習させる
自動学習を行うための処理を Shell Script と呼ばれるプログラムファイルとして作成して、Scriptファイルを cron にて毎日時限発動させることで、自動的に学習されるようにします。

 command
# vi /usr/local/bin/sa-learn-filter.sh

 

sa-learn-filter.sh

#!/bin/sh

# スパムメールの学習
sa-learn --spam /home/*/Maildir/.SPAM/cur

# 通常メールを学習
sa-learn --ham /home/*/Maildir/cur

 

さらに詳しく

Shell Scriptや、そもそもシェルってなーにという方は、こちら にて解説しています。

 

 

▼作成したShell Scriptに実行権限を付与

 command
# chmod 755 /usr/local/bin/sa-learn-filter.sh

 

▼cronに登録して時限設定

 command
# vi /etc/crontab

crontab

* 3 * * * root /usr/local/bin/sa-learn-filter.sh

 

さらに詳しく

cronについての詳細は こちら で解説しています。

 

 

ベイズ(学習)データベースの初期化

学習したデータを初期化する場合は、下記のファイルを削除してください。

 command
# rm /etc/mail/spamassassin/bayes/bayes_seen
# rm /etc/mail/spamassassin/bayes/bayes_toks

 

 

おすすめ

1

目次1 Windows10で構築するサーバー構成の例2 Windows10 記憶域について3 Windows10 Hyper-vについて Windows10で構築するサーバー構成の例 知らない人も多い ...

2

目次1 記憶域について2 記憶域の作成方法 記憶域について この記事ではWindows 10 の記憶域によるストレージの作成方法について解説します。 そもそも記憶域について詳しく知りたい方は、下記の記 ...

3

目次1 概要2 テキストパーツ3 ボックスデザイン4 カスタムボタン5 会話ふきだし6 ランキング7 レイアウト8 その他パーツ9 記事一覧/カード10 ショートコード補助11 AFFINGER5につ ...

4

ディレクションを担当した世界遺産のガイドアプリより、ムービー用のBGMを1曲担当しました。 Misumi-nishikou It is BGM created for app video. sound ...

5

こちらはプライベートで作成したYoutube投稿用サイクリングムービーのBGMです。 EDM Sound-2 EDM sound for my Youtube. soundcloud.com

-MAIL (Courier-MTA), Server