CentOS 8 Linux MAIL (Courier-MTA)

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

 

 

簡単にサーバーを用意したい人はこちら

アクセス数が多く個人運営では厳しくなってきたら、レンタルサーバーも選択肢の一つですね。
もっと簡単にサーバーを準備して、WordPress等が動かせるレンタルサーバーをいくつか紹介します!

 

▼WordPress特化型レンタルサーバー


 

 

▼国内最大級の『ロリポップ!』の新プラン
面倒なインストールやセットアップ作業を行う必要なく、PHP、WordPress、Ruby on Rails、 Node.jsのアプリケーション実行環境を簡単に構築することができます。

 

 

▼国内最速!初期費用無料の高性能レンタルサーバー【ConoHa WING】

 

 

▼Just-Size.Networks レンタルサーバー
安価であっても決して妥協を許さない、こだわりのレンタルサーバー!




 

 

▼カラフルボックス
マルチドメイン・データベース・メールアドレス、すべて無制限。
最新のスペックと技術でWordPressをより高速・安全に表示!
ドメイン取得可能!
初期費用無料(*1)で月額480円から利用可能な、高速・高機能・高コストパフォーマンスのクラウド型レンタル サーバーです。


 

当ブログのドメインや、ウチが管理しているドメインは、全てムームードメインで取得しています。
管理画面が使いやすくて、料金もかなり安めなので、オススメです!

 

-CentOS 8 Linux, MAIL (Courier-MTA)

© 2022 Studio ilia - スタジオ イリア