Contents
1. ウイルス対策ソフトClamav導入
ウィルス対策としてLinux 用のフリーのアンチウィルスソフトであるClam AntiVirus を導入します。
このアンチウィルスソフトを導入することで、サーバー全体のウィルススキャンはもちろん、メールサーバーを構築し、設定を行えば、送受信するメールのウィルススキャンも行うことができます。
1.1 インストール
|
1 |
# apt -y install clamav clamav-daemon |
尚、clamav関連の設定ファイルは、/etc/clamav/フォルダにインストールされる
1.2 ウイルス定義の更新
|
1 |
# sed -i -e "s/^NotifyClamd/#NotifyClamd/g" /etc/clamav/freshclam.conf |
|
1 2 3 4 5 6 7 |
# systemctl stop clamav-freshclam # freshclam Fri Jan 23 13:57:18 2026 -> ClamAV update process started at Fri Jan 23 13:57:18 2026 Fri Jan 23 13:57:18 2026 -> daily.cvd database is up-to-date (version: 27888, sigs: 354839, f-level: 90, builder: svc.clamav-publisher) Fri Jan 23 13:57:18 2026 -> main.cvd database is up-to-date (version: 63, sigs: 3287027, f-level: 90, builder: tomjudge) Fri Jan 23 13:57:18 2026 -> bytecode.cvd database is up-to-date (version: 339, sigs: 80, f-level: 90, builder: nrandolp) |
|
1 |
# systemctl start clamav-freshclam |
設定ファイルを編集
|
1 2 3 4 |
# vi /etc/logrotate.d/clamav-freshclam create 640 clamav adm ↓ create 640 clamav clamav |
ウイルス定義の自動更新確認
ウイルス定義の自動更新が行われるサービスが登録されていることを確認する。
|
1 |
# service clamav-freshclam status |
次のように表示される
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
● clamav-freshclam.service - ClamAV virus database updater Loaded: loaded (/lib/systemd/system/clamav-freshclam.service; disabled; preset: enabled) Active: active (running) since Fri 2026-01-23 13:55:23 JST; 3min 10s ago Docs: man:freshclam(1) man:freshclam.conf(5) https://docs.clamav.net/ Main PID: 19931 (freshclam) Tasks: 1 (limit: 2256) Memory: 2.9M CPU: 11ms CGroup: /system.slice/clamav-freshclam.service └─19931 /usr/bin/freshclam -d --foreground=true Jan 23 13:55:23 Lepard systemd[1]: Started clamav-freshclam.service - ClamAV virus database updater. Jan 23 13:55:23 Lepard freshclam[19931]: Fri Jan 23 13:55:23 2026 -> ClamAV update process started at Fri Jan 23 13:55:23 2026 Jan 23 13:55:23 Lepard freshclam[19931]: Fri Jan 23 13:55:23 2026 -> daily.cvd database is up-to-date (version: 27888, sigs: 354839, f-level: 90, builder: svc.clamav-pu> Jan 23 13:55:23 Lepard freshclam[19931]: Fri Jan 23 13:55:23 2026 -> main.cvd database is up-to-date (version: 63, sigs: 3287027, f-level: 90, builder: tomjudge) Jan 23 13:55:23 Lepard freshclam[19931]: Fri Jan 23 13:55:23 2026 -> bytecode.cvd database is up-to-date (version: 339, sigs: 80, f-level: 90, builder: nrandolp) |
尚、/var/log/clamav/freshclam.logファイルにログが記録される。
1.3 ウイルスチェックの確認
①手動でウイルスチェックの実行
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# clamscan --infected --remove --recursive /home ----------- SCAN SUMMARY ----------- Known viruses: 3627255 Engine version: 1.4.3 Scanned directories: 4 Scanned files: 7 Infected files: 0 Data scanned: 0.00 MB Data read: 0.00 MB (ratio 0.00:1) Time: 11.771 sec (0 m 11 s) Start Date: 2026:01:23 14:00:24 End Date: 2026:01:23 14:00:36 |
Infected files: 0 なのでウイルスはありません
②無害ウィルスをダウンロードしてウイルス検出
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# wget https://secure.eicar.org/eicar.com.txt # clamscan --infected --remove --recursive /root/eicar.com.txt: Eicar-Test-Signature FOUND /root/eicar.com.txt: Removed. ----------- SCAN SUMMARY ----------- Known viruses: 3627255 Engine version: 1.4.3 Scanned directories: 2 Scanned files: 8 Infected files: 1 Data scanned: 0.02 MB Data read: 0.01 MB (ratio 2.00:1) Time: 8.377 sec (0 m 8 s) Start Date: 2026:01:23 14:02:54 End Date: 2026:01:23 14:03:02 |
このように「FOUND」「Removed.」という表示と「Infected files: 1」という表示でウイルスを通知してくれる。又、「--remove」オプションを付けているので、テストウイルスは削除された。
1.4 フルスキャンするスクリプトファイルを作成
①事前にスクリプトファイル格納ディレクトリー(/opt/script)を作成しておく
|
1 |
# mkdir /opt/script |
②スクリプトファイルを作成
|
1 |
# vi /opt/script/clam-full.sh |
clam-full.sh の内容(新規作成)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#!/bin/sh echo ========================================= date hostname clamscan / \ --infected \ --recursive \ --log=/var/log/clamav/clamscan.log \ --move=/var/log/clamav/virus \ --exclude-dir=^/boot \ --exclude-dir=^/sys \ --exclude-dir=^/proc \ --exclude-dir=^/dev \ --exclude-dir=^/var/log/clamav/virus if [ $? = 0 ]; then echo “virus undetected.” else echo “virus detection!!” fi |
③実行権限を与える
|
1 |
# chmod +x /opt/script/clam-full.sh |
④ウイルス隔離用フォルダを作成
既にあればOKだが、無いと上記スクリプトで除外ディレクトリに指定しているので実行時エラーになる
|
1 |
# mkdir /var/log/clamav/virus |
⑤実行
|
1 |
# /opt/script/clam-full.sh |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
========================================= Fri Jan 23 02:05:08 PM JST 2026 Lepard ----------- SCAN SUMMARY ----------- Known viruses: 3627255 Engine version: 1.4.3 Scanned directories: 4231 Scanned files: 34411 Infected files: 0 Data scanned: 2469.60 MB Data read: 1544.88 MB (ratio 1.60:1) Time: 468.842 sec (7 m 48 s) Start Date: 2026:01:23 14:05:08 End Date: 2026:01:23 14:12:57 “virus undetected.” |
完了までけっこう時間がかかる
尚、/var/log/clamav/clamscan.logファイルにログが記録される
⑤cronでウイルススキャンの定期実行
|
1 2 |
# crontab -e 0 2 * * mon /opt/script/clam-full.sh >> /var/log/clamav/clamascan.log |
上記例では、毎週月曜日の夜中2時に定期的に実行。
2. メールソフト導入
Postfix は、sendmail に代わるMTA (Mail Transport Agent)として開発されたソフトウェアで、sendmail との互換性が高く、安全、メンテナンスが容易、速い、などの特徴を兼ね備えたメールサーバーです。
また、Postfix はメールを送信するSMTP サーバーとしての機能しか無いため、後半でメール受信のPOP サーバーDovecotのインストールを別途行います。
2.1 Postfix : インストール 設定
①Postfix をインストール
Postfix をインストールして SMTPサーバーを構築します。SMTP は 25/TCP を使用します。
メール不正中継防止に、後述の Dovecot の SASL機能を利用し、送信にも認証が必要なように Postfix を設定します。
|
1 |
# apt -y install postfix sasl2-bin |
一般的な構成設定の選択を求められるが、後で手動設定するため [No configuration] を選択

②設定ファイル(main.cf)編集
|
1 2 |
# cp /usr/share/postfix/main.cf.dist /etc/postfix/main.cf # vi /etc/postfix/main.cf |
#82行目:コメント解除
mail_owner = postfix
#100行目:ホスト名指定追加
myhostname = mail.[Domain]
#107行目あたり:ドメイン名指定追加
mydomain = [Domain]
#127行目あたり:コメント解除
myorigin = $mydomain
#141行目あたり:コメント解除
inet_interfaces = all
#189行目あたり:コメント解除
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#232行目あたり:コメント解除
local_recipient_maps = unix:passwd.byname $alias_maps
#277行目あたり:コメント解除
mynetworks_style = subnet
#294行目あたり:自ネットワーク追記
mynetworks = 127.0.0.0/8, 192.168.11.0/24
#416行目あたり:コメント解除
alias_maps = hash:/etc/aliases
#427行目あたり:コメント解除
alias_database = hash:/etc/aliases
#449行目あたり:コメント解除
home_mailbox = Maildir/
#585行目あたり:コメントにしてその下に追記
#smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_banner = $myhostname ESMTP
#659行目あたり:追記
sendmail_path = /usr/sbin/postfix
664行目あたり:追記
newaliases_path = /usr/bin/newaliases
#669行目あたり:追記
mailq_path = /usr/bin/mailq
#675行目あたり:追記
setgid_group = postdrop
#679行目あたり:コメント化
#html_directory =
#683行目あたり:コメント化
#manpage_directory =
#688行目あたり:コメント化
#sample_directory =
#692行目あたり:コメント化
#readme_directory =
#最終行へ追記
#SMTP VRFY コマンドは無効にする
disable_vrfy_command = yes
#クライアントに対して HELO コマンドを要求する
smtpd_helo_required = yes
#送受信メールサイズを10Mに制限
message_size_limit = 10485760
#メールボックスサイズを1Gに制限
mailbox_size_limit = 1073741824
#SMTP-Auth 設定
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks, permit_auth_destination, permit_sasl_authenticated, reject
③設定ファイル(master.cf)編集
|
1 |
# vi /etc/postfix/master.cf |
19,22行目 : コメント解除
submission inet n - y - - smtpd
# -o syslog_name=postfix/submission
# -o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
# -o smtpd_tls_auth_only=yes
設定反映、再起動
|
1 2 |
# newaliases # systemctl restart postfix |
2.2 Dovecot : インストール 設定
①Dovecot をインストール
DovecotをインストールしてPOP/IMAPサーバーを構築します。POP は 110/TCP, IMAP は 143/TCP を使用します。
|
1 |
# apt -y install dovecot-core dovecot-pop3d dovecot-imapd |
②Postfix に SASL機能が提供できるように Dovecot を設定
|
1 2 3 |
# vi /etc/dovecot/dovecot.conf 30行目:コメント解除 listen = *, :: |
|
1 2 3 4 5 |
# vi /etc/dovecot/conf.d/10-auth.conf 10行目:コメント解除し変更(プレーンテキスト認証も許可する) disable_plaintext_auth = no 100行目:追記 auth_mechanisms = plain login |
|
1 2 3 |
# vi /etc/dovecot/conf.d/10-mail.conf 30行目:Maildir形式に変更 mail_location = maildir:~/Maildir |
|
1 2 3 4 5 6 7 8 |
# vi /etc/dovecot/conf.d/10-master.conf 107-109行目:コメント解除し追記 # Postfix smtp-authi unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } |
③設定反映、再起動
|
1 |
# systemctl restart dovecot |
2.3 メールユーザーアカウント登録
メール用のユーザーアカウントを登録します。
OS上のユーザーアカウントでメールも利用する場合の設定です
OS上のユーザーアカウントでメールを利用する場合は、追加の設定は不要で OSユーザーを登録するのみです
①メールクライアントインストール
|
1 |
# apt -y install mailutils |
②メールボックスは Maildir を参照するよう設定
|
1 |
# echo 'export MAIL=$HOME/Maildir/' >> /etc/profile.d/mail.sh |
2.4 ポートの開放
|
1 2 3 4 |
# ufw allow pop3 # ufw allow imap # ufw allow smtp # ufw reload |
2.5 動作確認 ①
①自身にテストメール送信 [mail (ユーザー名)@(ホスト名)]
ユーザー名 : huong
|
1 2 3 4 5 6 7 8 |
# su - huong $ mail huong@localhost # Cc の宛先 Cc: # 件名 Subject: Test Mail # 本文 This is the first mail. |
本文を終了する場合は Ctrl + D キー
受信メール確認
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
$ mail "/home/huong/Maildir/": 1 message 1 new >N 1 huong Fri Jan 23 05:38 13/427 Test Mail ? 1 Return-Path: <huong@Lepard> X-Original-To: huong@localhost Delivered-To: huong@localhost Received: by mail.korodes.com (Postfix, from userid 1000) id D57C260590; Fri, 23 Jan 2026 14:38:15 +0900 (JST) To: <huong@localhost> Subject: Test Mail User-Agent: mail (GNU Mailutils 3.15) Date: Fri, 23 Jan 2026 14:38:15 +0900 Message-Id: <20260123053815.D57C260590@mail.korodes.com> From: huong <huong@Lepard> This is the first mail. ? q Saved 1 message in /home/huong/mbox Held 0 messages in /home/huong/Maildir/ |
2.6 動作確認 ②
Mozilla Thunderbirdにアカウントを設定し、確認します(メールユーザーとしてOSユーザーhuongの場合)
Thunderbirdを起動し、右上の[三本]メニューの[New Account][Email]をクリック



Full name : 任意の名称
Email address : huong@<domain-name>
をそれぞれ入力し、「Continue」クリック


受信サーバーの設定
[Connection security]を[None]にして[Continue]をクリック

送信サーバーの設定
[Connection security]を[None]にして[Test]をクリック




メールアカウントの作成が成功しましたので、[Finish]をクリック

3 メールサーバーPostfixに ClamAV適用
Postfix と Clamav を連携させて 送受信メールをリアルタイムスキャンできるように設定します
①Amavisd および Clamav Daemon をインストールして Clamav Daemon を起動します
|
1 |
# apt -y install clamav-daemon amavisd-new |
サーバーがホスト名として完全修飾ドメイン名(FQDN)を使用していない場合、Amavisの起動に失敗する可能性があります。また、OSのホスト名が変更される可能性があるため、有効なホスト名をAmavis構成ファイルに直接設定します
|
1 2 3 4 5 6 7 8 9 10 |
# vi /etc/amavis/conf.d/05-node_id use strict; # $myhostname is used by amavisd-new for node identification, and it is # important to get it right (e.g. for ESMTP EHLO, loop detection, and so on) . chomp($myhostname = `hostname --fqdn`); # To manually set $myhostname, edit the following line with the correct Full y # Qualified Domain Name (FQDN) and remove the # at the beginning of the line . # $myhostname = "mail.<domain name>"; 1; # ensure a defined return |
②ウィルススキャン有効化
|
1 2 3 4 5 |
# vi /etc/amavis/conf.d/15-content_filter_mode #13-14行目 : コメント解除してウィルススキャン有効化 @bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); |
③自身のドメイン名を登録
|
1 |
# echo '<yourDomain>' > /etc/mailname |
④設定ファイル(Main.cf)編集
|
1 2 3 |
# vi /etc/postfix/main.cf 最終行へ追記 content_filter=smtp-amavis:[127.0.0.1]:10024 |
⑤設定ファイル(master.cf)編集
|
1 |
# vi /etc/postfix/master.cf |
編集内容
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# 最終行へ以下全行追記 smtp-amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 |
⑥設定反映
|
1 2 3 |
# usermod -G clamav amavis # usermod -G amavis clamav # systemctl restart clamav-daemon amavis postfix |
Thuderbird等で自己宛に空メールを送ると、受信メールのヘッダーに次のようなメッセージがあれば成功です。
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: xxxxx@xxxxxxx.com
X-Original-To: xxxxx@xxxxxxx.com
Delivered-To: xxxxx@xxxxxxx.com
Received: from localhost (localhost [127.0.0.1])
by mail.xxxxxxx.com (Postfix) with ESMTP id D2C87A002F
for xxxxx@xxxxxxx.com; Fri, 23 Jan 2026 14:52:21 +0900 (JST)
X-Virus-Scanned: Debian amavis at xxxxxxx.com
Received: from mail.xxxxxxx.com ([127.0.0.1])
by localhost (mail.xxxxxxx.com [127.0.0.1]) (amavis, port 10024) with ESMTP
id pdZKQYgBYANB for xxxxx@xxxxxxx.com;
Fri, 23 Jan 2026 14:52:21 +0900 (JST)
Received: from [192.168.11.8] (buffalo.setup [192.168.11.1])
by mail.xxxxxxx.com (Postfix) with ESMTPA id B9081A001F
for xxxxx@xxxxxxx.com; Fri, 23 Jan 2026 14:52:21 +0900 (JST)
Message-ID: c8d2d46a-313a-46b6-a95e-ba341e819f7f@xxxxxxx.com
Date: Fri, 23 Jan 2026 14:52:22 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: xxxxx xxxxx@xxxxxxx.com
Content-Language: en-US
To: xxxxx xxxxx@xxxxxxx.com
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
自分自身にメール本文が「X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*」のメールを送ってみて、メールが破棄されて届かないことを確認する
4 メールサーバーに スパムチェック適用
spamassassinとprocmailを使用して、スパムチェック
4.1 spamassassin をインストール
①インストール
|
1 2 3 |
# apt update # apt upgrade # apt -y install spamassassin spamass-milter |
②SpamAssassin の設定
|
1 2 3 4 |
# vi /etc/mail/spamassassin/v310.pre 24 行目あたり行頭の#を削除 loadplugin Mail::SpamAssassin::Plugin::DCC |
➂SpamAssassin 設定ファイル最新化スクリプト
|
1 |
# vi /opt/script/spamassassin-update.sh |
#!/bin/bash
cd /etc/mail/spamassassin
wget -q https://github.com/kittyfreak/spamassassin_user_prefs/archive/refs/heads/main.zip
[ $? -ne 0 ] && exit
unzip main.zip >/dev/null 2>&1
[ $? -ne 0 ] && exit
rm -f main.zip
mv spamassassin_user_prefs-main/user_prefs .
rm -rf spamassassin_user_prefs-main
diff user_prefs user_prefs.org > /dev/null 2>&1
if [ $? -ne 0 ]; then
cp user_prefs local.cf
echo "report_safe 0" >> local.cf
echo "rewrite_header Subject SPAM" >> local.cf
if [ -f /etc/init.d/spamd ]; then
/etc/init.d/spamd restart > /dev/null
else
systemctl restart spamd > /dev/null
fi
fi
cp user_prefs user_prefs.org
spamassassin-update スクリプトに実行権限を付与し、実行
|
1 2 |
# chmod 700 /opt/script/spamassassin-update.sh # /opt/script/spamassassin-update.sh |
/etc/mail/spamassassin ディレクトリにSpamAssassin 設定ファイル(local.cf)が当日日付で
作成されていることを確認
※ 事前にunzipをインストールしておく
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# ls -l /etc/mail/spamassassin/ total 1660 -rw-r--r-- 1 root root 1292 Feb 8 2025 65_debian.cf -rw-r--r-- 1 root root 1644 Feb 8 2025 init.pre -rw-r--r-- 1 root root 500630 Jan 23 15:55 local.cf -rw-r--r-- 1 root root 127072 Jan 23 15:55 main.zip.1 -rw-r--r-- 1 root root 118 Feb 8 2025 sa-compile.pre drwxr-xr-x 2 root root 4096 Jan 23 14:47 sa-update-hooks.d -rw-r--r-- 1 root root 500588 Apr 30 2023 user_prefs -rw-r--r-- 1 root root 500588 Jan 23 15:55 user_prefs.org -rw-r--r-- 1 root root 2257 Jan 23 15:53 v310.pre -rw-r--r-- 1 root root 1163 Feb 8 2025 v312.pre -rw-r--r-- 1 root root 2411 Feb 8 2025 v320.pre -rw-r--r-- 1 root root 1232 Feb 8 2025 v330.pre -rw-r--r-- 1 root root 1015 Feb 8 2025 v340.pre -rw-r--r-- 1 root root 1310 Feb 8 2025 v341.pre -rw-r--r-- 1 root root 1514 Feb 8 2025 v342.pre -rw-r--r-- 1 root root 1261 Feb 8 2025 v343.pre -rw-r--r-- 1 root root 1477 Feb 8 2025 v400.pre -rw-r--r-- 1 root root 1118 Feb 8 2025 v401.pre |
SpamAssassin 設定ファイルを最新化するスクリプトが毎日自動実行されるようcron に設定
|
1 2 |
# crontab -e 0 2 * * * /opt/script/spamassassin-update.sh > /dev/null 2>&1 |
④spamass-milter起動・自動起動設定
|
1 2 3 4 5 |
# systemctl start spamass-milter # systemctl enable spamass-milter spamass-milter.service is not a native service, redirecting to systemd-sysv-install. Executing: /usr/lib/systemd/systemd-sysv-install enable spamass-milter |
- スパムメール保存用のディレクトリ「.Spam」を Maildir 形式で作成
- 作成には対象のユーザで行う
|
1 2 3 4 5 6 7 |
# su - <user name> $ cd ~ 「.Spam」という名のディレクトリを作成 $ cd Maildir $ /usr/bin/maildirmake.dovecot .Spam $ su - Password: |
4.2 Procmail の前準備
①Procmail のインストール
|
1 |
# apt -y install procmail |
インストールされていれば、以下の結果が返ってきます
|
1 2 |
# which procmail /usr/bin/procmail |
②Procmail の設定
メールフィルタの全体をつかさどる「 /etc/procmailrc 」に記述すると全ユーザに適応されます。
各ユーザ個別のメールフィルタファイルである「 /home/[user]/.procmailrc 」に記述するとそのユーザのみにフィルタが適応されます。
今回は全ユーザに適応させるために「 /etc/procmailrc 」に記述します
|
1 |
# vi /etc/procmailrc |
#パスを設定
PATH=/bin:/usr/bin:/usr/local/bin
#メールボックスの設定
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
#Procmailのログファイル出力先を指定
LOGFILE=$MAILDIR/procmaillog
#ロックファイルのパスを指定
LOCKFILE=$HOME/.lockmail
#メールヘッダー中に「 X-Spam-*** 」の記述がなければ spamassassin を起動します
:0fw
*!^X-Spam.*
|spamassassin
#メールヘッダー中に「 X-Spam-Status: Yes 」の記述があれば、「 .Spam 」ディレクトリにメールを格納します
:0
*^X-Spam-Status: Yes
$MAILDIR/.Spam/
4.3 Postfix の設定
① main.cfの編集
|
1 2 3 4 |
# vi /etc/postfix/main.cf 477行目コメント解除 mailbox_command = /usr/bin/procmail |
②設定の反映と起動
|
1 2 |
# systemctl start spamd # systemctl restart postfix |
4.4 スパムメールの学習
すべてのユーザの「.Spam」ディレクトリの中身を全てスパムメールとして学習させます
①スパムメールの学習
|
1 2 |
# /usr/bin/sa-learn --spam /home/*/Maildir/.Spam/cur Learned tokens from 0 message(s) (0 message(s) examined). |
②通常のメールの学習
|
1 2 |
# /usr/bin/sa-learn --ham /home/*/Maildir/cur Learned tokens from 4 message(s) (4 message(s) examined). |
③スクリプトを作成し、Cron に登録
ファイル名は適当に「 spam-learns.sh 」とし、/opt/script/配下に設置する
スクリプトを保存した後は、「 chmod 750 spam-learns.sh 」として実行可能なアクセス権を与える。
|
1 |
# vi /opt/script/spam-learns.sh |
#! /bin/sh
#スパムメールの学習
/usr/bin/sa-learn --spam /home/*/Maildir/.Spam/cur
#通常のメールを学習
/usr/bin/sa-learn --ham /home/*/Maildir/cur
#スパムメール保存ディレクトリの中身を強制的に消去してよいのなら以下の記述を追加
/bin/rm -f /home/*/Maildir/.Spam/cur
|
1 |
# chmod 750 /opt/script/spam-learns.sh |
spam-learns.shができたら、定義ファイルを/lib/systemd/system直下に作成する。名前はspam-learns.serviceのように末尾が.serviceになるようにする。
Typeはsimpleで定義する
|
1 2 |
# cd /lib/systemd/system # vi spam-learns.service |
Description=demo sample node.js program [Service]
Type=simple
ExecStart= /opt/script/spam-learns.sh
Restart=always [Install]
WantedBy=multi-user.target
|
1 2 |
# crontab -e 0 4 * * * /opt/script/spam-learns.sh |
|
1 2 |
# systemctl enable spam-learns Created symlink '/etc/systemd/system/multi-user.target.wants/spam-learns.service' → '/usr/lib/systemd/system/spam-learns.service'. |
④Thunderbird等で自己宛に空メールを送付し、受信メールヘッダーを確認すると次のようなメッセージあれば成功です
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: xxxxx@xxxxxxx.com
X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on Lepard
X-Spam-Level: **
X-Spam-Status: No, score=2.3 required=13.0 tests=ALL_TRUSTED,
CONTENT_TYPE_PRESENT,EMPTY_MESSAGE autolearn=no autolearn_force=no
version=4.0.1
X-Original-To: xxxxx@xxxxxxx.com
Delivered-To: xxxxx@xxxxxxx.com
Received: from localhost (localhost [127.0.0.1])
by mail.xxxxxxx.com (Postfix) with ESMTP id A92E760609
for xxxxx@xxxxxxx.com; Fri, 23 Jan 2026 16:05:19 +0900 (JST)
X-Virus-Scanned: Debian amavis at xxxxxxx.com
Received: from mail.xxxxxxx.com ([127.0.0.1])
by localhost (mail.xxxxxxx.com [127.0.0.1]) (amavis, port 10024) with ESMTP
id QG9ltnq7dRlj for xxxxx@xxxxxxx.com;
Fri, 23 Jan 2026 16:05:19 +0900 (JST)
-----------------------------------------------------------------------
Subject:
⑤スパムチェック確認
自分自身にメール本文が「XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X」のメールを送るとメールは配信されずSpamフォルダへ振り分けられていることを確認する
ヘッダーには次のように表示されている
/home/[user]/Maildir/.Spam/new/ 配下のメールを確認する
Return-Path: xxxxx@xxxxxxx.com
X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on Lepard
X-Spam-Flag: YES
X-Spam-Level:*********************************************
X-Spam-Status: Yes, score=1001.8 required=13.0 tests=ALL_TRUSTED,
CONTENT_TYPE_PRESENT,GTUBE,HTML_MESSAGE,MPART_ALT_DIFF,
MULTIPART_ALTERNATIVE autolearn=no autolearn_force=no version=4.0.1
X-Spam-Report:
* 0.1 ALL_TRUSTED Passed through trusted hosts only via SMTP
* 1000 GTUBE BODY: Generic Test for Unsolicited Bulk Email
* 0.1 MULTIPART_ALTERNATIVE Multipart/alternative
* -0.1 CONTENT_TYPE_PRESENT exists:Content-Type
* 1.0 HTML_MESSAGE BODY: HTML included in message
* 0.7 MPART_ALT_DIFF BODY: HTML and text parts are different
X-Original-To: xxxxx@xxxxxxx.com
Delivered-To: xxxxx@xxxxxxx.com
