Contents
Clamav (anti-virus) Install
1.Clamav Install
|
1 |
# dnf -y install clamav clamd clamav-update |
2.Clam AntiVirus Configuration File Edit
|
1 |
# vi /etc/clamd.d/scan.conf |
●Line 14:
#Default: disabled
LogFile /var/log/clamd.scan ← Uncomments
●Line 77:
#Default: disabled
PidFile /run/clamd.scan/clamd.pid ← Uncomments
●Add to line 103
#Path to a local socket file the daemon will listen on.
#Default: disabled (must be specified by a user)
#LocalSocket /run/clamd.scan/clamd.sock
LocalSocket /var/run/clamd.scan/clamd.sock
●Line 233:
#Run as another user (clamd must be started by root for this option to work)
#Default: don't drop privileges
#User clamscan ← Add a # at the beginning of the line to comment it out (to enable operation with root privileges).
3.Virus definition file update settings
|
1 |
# vi /etc/freshclam.conf |
●Line 78: Comment it out and add it below.
#DatabaseMirror database.clamav.net
DatabaseMirror db.jp.clamav.net
●Around line 154: Addition
#NotifyClamd /path/to/clamd.conf
NotifyClamd /etc/clamd.d/scan.conf
4.Virus definition file update
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# freshclam ClamAV update process started at Fri Dec 26 17:10:13 2025 daily database available for download (remote version: 27861) Time: 0.3s, ETA: 0.0s [========================>] 22.23MiB/22.23MiB Testing database: '/var/lib/clamav/tmp.47379b6edf/clamav-b95f051cda12b90104277f597ec5d7c5.tmp-daily.cvd' ... Database test passed. daily.cvd updated (version: 27861, sigs: 354613, f-level: 90, builder: svc.clamav-publisher) main database available for download (remote version: 63) Time: 0.9s, ETA: 0.0s [========================>] 84.95MiB/84.95MiB Testing database: '/var/lib/clamav/tmp.47379b6edf/clamav-0f67d53688d9f9201baadaa96ddf254b.tmp-main.cvd' ... Database test passed. main.cvd updated (version: 63, sigs: 3287027, f-level: 90, builder: tomjudge) bytecode database available for download (remote version: 339) Time: 0.1s, ETA: 0.0s [========================>] 275.10KiB/275.10KiB Testing database: '/var/lib/clamav/tmp.47379b6edf/clamav-b0d7fd0c546857b358b9ff5460982f2f.tmp-bytecode.cvd' ... Database test passed. bytecode.cvd updated (version: 339, sigs: 80, f-level: 90, builder: nrandolp) WARNING: Clamd was NOT notified: Can't connect to clamd through /var/run/clamd.scan/clamd.sock: No such file or directory |
5.Clam AntiVirus start
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# systemctl start clamd@scan ← clamd startup # systemctl enable clamd@scan ← clamd automatic startup configuration Created symlink /etc/systemd/system/multi-user.target.wants/clamd@scan.service → /usr/lib/systemd/system/clamd@.service. # systemctl is-enabled clamd@scan enabled # systemctl status clamd@scan ← Functionality Verification ● clamd@scan.service - clamd scanner (scan) daemon Loaded: loaded (/usr/lib/systemd/system/clamd@.service; enabled; preset: disabled) Active: active (running) since Fri 2025-12-26 17:11:10 JST; 18s ago Docs: man:clamd(8) man:clamd.conf(5) https://www.clamav.net/documents/ Main PID: 5050 (clamd) Tasks: 2 (limit: 16866) Memory: 955.8M (peak: 957.8M) CPU: 12.931s CGroup: /system.slice/system-clamd.slice/clamd@scan.service └─5050 /usr/sbin/clamd -c /etc/clamd.d/scan.conf Dec 26 17:11:10 Lepard clamd[5050]: ELF support enabled. Dec 26 17:11:10 Lepard clamd[5050]: Mail files support enabled. Dec 26 17:11:10 Lepard clamd[5050]: OLE2 support enabled. Dec 26 17:11:10 Lepard clamd[5050]: PDF support enabled. Dec 26 17:11:10 Lepard clamd[5050]: SWF support enabled. Dec 26 17:11:10 Lepard clamd[5050]: HTML support enabled. Dec 26 17:11:10 Lepard clamd[5050]: XMLDOCS support enabled. Dec 26 17:11:10 Lepard clamd[5050]: HWP3 support enabled. Dec 26 17:11:10 Lepard clamd[5050]: OneNote support enabled. Dec 26 17:11:10 Lepard clamd[5050]: Self checking every 600 seconds. |
6.Conducted virus scan
■Download a test virus and perform a virus scan
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 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: 3627039 Engine version: 1.4.3 Scanned directories: 2 Scanned files: 12 Infected files: 1 Data scanned: 0.02 MB Data read: 0.01 MB (ratio 2.00:1) Time: 13.118 sec (0 m 13 s) Start Date: 2025:12:26 17:12:03 End Date: 2025:12:26 17:12:16 |
/root/eicar.com.txt: Win.Test.EICAR_HDB-1 FOUND
/root/eicar.com.txt: Removed.
Infected files: 1
The above is displayed and the virus file has been detected and deleted
7.Deployment of virus scan auto-execution scripts
Create script save directory
|
1 |
# mkdir -p /var/www/system |
Creating an Automatic Virus Scan Script
|
1 |
# vi /var/www/system/clamscan.sh |
#!/bin/bash
PATH=/usr/bin:/bin
#excludeopt setup
excludelist=/var/www/system/clamscan.exclude
if [ -s $excludelist ]; then
for i in cat $excludelist
do
if [ $(echo "$i"|grep \/$) ]; then
i=echo $i|sed -e 's/^\([^ ]*\)\/$/\1/p' -e d
excludeopt="${excludeopt} --exclude-dir=$i"
else
excludeopt="${excludeopt} --exclude=$i"
fi
done
fi
#signature update
freshclam
#virus scan
clamscan --recursive --remove ${excludeopt} /
|
1 |
# chmod 700 /var/www/system/clamscan.sh |
8.Virus scan exclusion directory settings
Exclude the sys directory and proc directory.
|
1 2 |
# echo "/sys/" >> /var/www/system/clamscan.exclude # echo "/proc/" >> /var/www/system/clamscan.exclude |
Try to implement a trial script
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# /var/www/system/clamscan.sh ----------- SCAN SUMMARY ----------- Known viruses: 3627039 Engine version: 1.4.3 Scanned directories: 36943 Scanned files: 151146 Infected files: 0 Total errors: 1166 Data scanned: 11483.70 MB Data read: 5666.12 MB (ratio 2.03:1) Time: 1832.848 sec (30 m 32 s) Start Date: 2025:12:26 17:17:51 End Date: 2025:12:26 17:48:24 |
9.Scheduled virus scan execution
|
1 2 |
# crontab -e 0 1 * * * /var/www/system/clamscan.sh > /dev/null 2>&1 |
Mail Server Install
1. Postfix Install
1.1 Install
Install Postfix and build an SMTP server
|
1 |
# dnf -y install postfix |
Confirm Postfix is installed
|
1 2 3 4 |
# rpm -qa | grep postfix postfix-3.5.25-1.el9.x86_64 postfix-perl-scripts-3.5.25-1.el9.x86_64 pcp-pmda-postfix-6.3.7-5.el9.x86_64 |
1.2 Register Postfix to the service
|
1 2 3 4 |
# systemctl enable postfix.service Created symlink /etc/systemd/system/multi-user.target.wants/postfix.service → /usr/lib/systemd/system/postfix.service. # systemctl is-enabled postfix.service enabled |
1.3 Backup postfix configuration files, main.cf and master.cf files
|
1 2 |
# cp -p /etc/postfix/main.cf `date '+/etc/postfix/main.cf.%Y%m%d'` # cp -p /etc/postfix/master.cf `date '+/etc/postfix/master.cf.%Y%m%d'` |
1.4 Edit postfix configuration file
To prevent unauthorized mail relay, configure Postfix to require authentication for outgoing mail as well, using Dovecot's SASL function.
|
1 |
# vi /etc/postfix/main.cf |
●Line 96: Added
#myhostname = virtual.domain.tld
myhostname = mail.<domain>
●Line 103: Add your domain name
#mydomain = domain.tld
mydomain = <domain>
●1Line 18: Uncomment
myorigin = $mydomain
●Line 135: Change
inet_interfaces = all
●Line 183: Commented out
#mydestination = $myhostname, localhost.$mydomain, localhost
●Line 184: Uncomment
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
●Around line 286 : Add your own server network (adjust 192.168.11.0/24 to match your environment)
mynetworks = 192.168.11.0/24, 127.0.0.0/8
●Line 438: Uncomment (Configures the email storage format)
home_mailbox = Maildir/
●Line 445 : Uncomment
mail_spool_directory = /var/spool/mail
●Add around line 593
smtpd_banner = $myhostname ESMTP unknown
●Add the following content to the last line
#Limit sent and received email size to 10MB
message_size_limit = 10485760
#Limit mailbox size to 1 GB
mailbox_size_limit = 1073741824
#SMTP Authentication Settings
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $mydomain
smtpd_recipient_restrictions = permit_mynetworks, permit_auth_destination, permit_sasl_authenticated, reject
1.5 Allow SMTP port (port 25)
|
1 2 3 4 |
# firewall-cmd --add-service=smtp --permanent success # firewall-cmd --reload success |
1.6 Start Postfix
|
1 |
# systemctl restart --now postfix |
2.Dovecot
2.1 dovecot Install
|
1 |
# dnf -y install dovecot |
2.2 Edit dovecot.conf file
|
1 2 |
# cp -p /etc/dovecot/dovecot.conf `date '+ /etc/dovecot/dovecot.conf.%Y%m%d'` # vi /etc/dovecot/dovecot.conf |
●Line 25: Append
#protocols = imap pop3 lmtp
protocols = imap pop3
●Line 30: Uncomment (Remove [::] if listening only on IPv4)
listen = *
2.3 Edit 10-auth.conf file
|
1 |
# vi /etc/dovecot/conf.d/10-auth.conf |
●Line 10: Uncomment and modify
When plaintext authentication is also permitted
disable_plaintext_auth = no
●Line 100: Postscript
auth_mechanisms = plain login
2.3 Edit 10-mail.conf file
|
1 2 3 |
# vi /etc/dovecot/conf.d/10-mail.conf ●Line 31: Additional note mail_location = maildir:~/Maildir |
2.4 Edit 10-master.conf file
|
1 2 3 4 5 6 7 8 |
# vi /etc/dovecot/conf.d/10-master.conf ●Lines 107-109: Uncomment and add # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } |
2.5 Edit 10-ssl.conf file
|
1 2 3 4 |
# vi /etc/dovecot/conf.d/10-ssl.conf ●Around line 8 Change "ssl = required" to "ssl = yes" ssl = yes |
2.6 Register dovecot as a service and start it
|
1 2 3 4 5 |
# systemctl enable dovecot.service Created symlink /etc/systemd/system/multi-user.target.wants/dovecot.service → /usr/lib/systemd/system/dovecot.service. # systemctl is-enabled dovecot.service Enabled # systemctl start dovecot.service |
2.7 Allow POP/IMAP services in Firewalld Port Allow
POP is [110/TCP], IMAP is [143/TCP].
|
1 2 3 |
# firewall-cmd --permanent --add-service=pop3 # firewall-cmd --permanent --add-service=imap # firewall-cmd --reload |
3.Create mail user and check operation
3.1 advance preparation
①new user
When a new user is added, set up the system to automatically send and receive e-mail.
|
1 2 3 4 |
# mkdir -p /etc/skel/Maildir/{new,cur,tmp} # chmod -R 700 /etc/skel/Maildir/ # echo "~/Maildir/"> /etc/skel/.forward # chmod 600 /etc/skel/.forward |
②Existing users
Configure the already created users to be able to send and receive e-mail.
|
1 2 3 4 |
# mkdir -p /home/huong/Maildir/{new,cur,tmp} # chown -R huong:huong /home/huong/Maildir/ # chmod 700 /home/huong/Maildir # chmod 700 /home/huong/Maildir/{new,cur,tmp} |
3.2 User Account Creation
|
1 2 3 4 5 6 7 8 9 10 11 |
Email Client Installation # dnf -y install s-nail # echo 'export MAIL=$HOME/Maildir' >> /etc/profile.d/mail.sh Add user [linux] # useradd linux # passwd linux Changing password for user linux. New password: Retype new password: passwd: all authentication tokens updated successfully. |
3.3 operation check ①
①Log in as an email user and send a test email.
|
1 2 3 4 5 6 7 8 9 10 11 |
# su - linux $ mail linux@localhost Subject: Test Mail To: linux@localhost mail test ^D ------- (Preliminary) Envelope contains: To: linux@localhost Subject: Test Mail Send this message [yes/no, empty: recompose]? y |
②Email Confirmation
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ mail s-nail version v14.9.22. Type `?' for help /home/linux/Maildir: 1 message 1 new ▸N 1 linux@korodes.com 2025-12-27 09:50 14/408 "Test Mail " & 1 [-- Message 1 -- 14 lines, 408 bytes --]: Date: Sat, 27 Dec 2025 09:50:01 +0900 To: linux@localhost Subject: Test Mail Message-Id: <20251227005001.39E12113B7CE@mail.korodes.com> From: linux@korodes.com mail test & q Held 1 message in /home/linux/Maildir You have mail in /home/linux/Maildir |
3.4 Operation check ②
Set up and confirm your account in Mozilla Thunderbird. This time we will set it up with the general user "huong".
①Start Thunderbird and click [New Account][Email] in the [Three] Button-menu in the upper right corner.



Full name : Any name
Email address : huong@<domain-name>
「Continue」click


Incoming server settings
Set [Connection security] to [None] and click [Continue].

Sending Server Settings
Set [Connection security] to [None] and click [Test].


Enter the user's password in the “Password” field and click "Continue"


Click “Finish” when the email account has been successfully created.

Mail : Postfix + Clamav + clamav-milter+SpamAssassin
1.Real-time scanning of e-mails
①clamav-milter Install
Virus checks are performed on the mail server side using Clam AntiVirus.
The mail server and Clam AntiVirus are linked using clamav-milter.
|
1 |
# dnf -y install clamav-milter clamav-milter-systemd |
➁clamav-milter configuration
Editing the clamav-milter configuration file
|
1 |
# vi /etc/mail/clamav-milter.conf |
●Line 6: Commented out
#Example
●Line 23: Addition
MilterSocket /var/run/clamav-milter/clamav-milter.socket ← Specify the UNIX socket name for clamav-milter
MilterSocketMode 660 ← Specify the access permissions for the UNIX socket of clamav-milter
●Per Line 98: Addition
ClamdSocket unix:/var/run/clamd.scan/clamd.sock ← Specify the Clam AntiVirus UNIX socket name (matching the LocalSocket option in /etc/clamd.d/scan.conf)
●Per Line 171: Addition
OnInfected Blackhole ← Delete virus-infected emails
●Per Line 193 : Addition
AddHeader Yes ← Output a message in the email header indicating that a virus check has been performed.
●Per Line 253 : Uncomments
LogFacility LOG_MAIL ← Set the log output destination to email logs
➂clamav-milter startup and auto-startup settings
|
1 2 3 4 |
# systemctl start clamav-milter # systemctl enable clamav-milter Created symlink /etc/systemd/system/multi-user.target.wants/clamav-milter.service → /usr/lib/systemd/system/clamav-milter.service. |
④Postfix and clamav-milter integration settings
Edit Postfix configuration file
|
1 2 3 4 5 |
# vi /etc/postfix/main.cf Add the following milter_default_action = tempfail smtpd_milters = unix:/var/run/clamav-milter/clamav-milter.socket non_smtpd_milters = unix:/var/run/clamav-milter/clamav-milter.socket |
⑤Add postfix user to clamilt group
|
1 |
# usermod -G clamilt -a postfix |
⑥Postfix Settings Reflected
|
1 |
# systemctl restart postfix |
⑦Check with Thunderbird
I sent a blank email to myself in Thunderbird, and in the header display of the received email, I see the following
「X-Virus-Scanned: clamav-milter 1.4.3 at Lepard」
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 [192.168.11.6] (buffalo.setup [192.168.11.1])
by mail.xxxxxxx.com (Postfix) with ESMTPA id 7383B113B57D
for xxxxx@xxxxxxx.com; Sat, 27 Dec 2025 10:14:30 +0900 (JST)
Message-ID: f21a16cf-b64f-4245-b99c-efc54d4f9244@xxxxxxx.com
Date: Sat, 27 Dec 2025 10:14:30 +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
X-Virus-Scanned: clamav-milter 1.4.3 at Lepard
X-Virus-Status: Clean
Try sending yourself an email with the body of the email "X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*" and confirm that the email is discarded and never received
2.Email spam protection
2.1 SpamAssassin・procmail・postfix settings
①SpamAssassin・procmail Install
|
1 |
# dnf -y install spamassassin spamass-milter-postfix |
➁SpamAssassin start
|
1 |
# systemctl start spamassassin |
➂SpamAssassin Settings
|
1 2 3 4 |
# vi /etc/mail/spamassassin/v310.pre Per Line 24 : Remove # at the beginning of the line loadplugin Mail::SpamAssassin::Plugin::DCC |
④SpamAssassin configuration file modernization script
|
1 2 3 |
# cd /var/www/system # vi 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
#SpamAssassin restart
if [ -f /etc/rc.d/init.d/spamassassin ]; then
/etc/rc.d/init.d/spamassassin restart > /dev/null
else
systemctl restart spamassassin > /dev/null
fi
fi
cp user_prefs user_prefs.org
Grant execute permission to the spamassassin-update script and run it
|
1 2 |
# chmod 700 /var/www/system/spamassassin-update.sh # /var/www/system/spamassassin-update.sh |
Confirm that the SpamAssassin configuration file (local.cf) has been created in the /etc/mail/spamassassin directory with the date of the day
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# ls -l /etc/mail/spamassassin total 1628 drwxr-xr-x 2 root root 40 Dec 27 10:20 channel.d -rw-r--r-- 1 root root 1194 Nov 5 2024 init.pre -rw-r--r-- 1 root root 500630 Dec 27 10:24 local.cf drwx------ 2 root root 6 Nov 5 2024 sa-update-keys -rw-r--r-- 1 root root 62 Nov 5 2024 spamassassin-default.rc -rwxr-xr-x 1 root root 39 Nov 5 2024 spamassassin-helper.sh -rw-r--r-- 1 root root 55 Nov 5 2024 spamassassin-spamc.rc -rw-r--r-- 1 root root 500588 Apr 30 2023 user_prefs -rw-r--r-- 1 root root 500588 Dec 27 10:24 user_prefs.org -rw-r--r-- 1 root root 2523 Dec 27 10:21 v310.pre -rw-r--r-- 1 root root 1194 Nov 5 2024 v312.pre -rw-r--r-- 1 root root 2416 Nov 5 2024 v320.pre -rw-r--r-- 1 root root 1237 Nov 5 2024 v330.pre -rw-r--r-- 1 root root 1020 Nov 5 2024 v340.pre -rw-r--r-- 1 root root 1309 Nov 5 2024 v341.pre -rw-r--r-- 1 root root 1469 Nov 5 2024 v342.pre -rw-r--r-- 1 root root 1264 Nov 5 2024 v343.pre |
Set up cron to automatically run a script daily that updates the SpamAssassin configuration file
|
1 2 |
# crontab -e 0 2 * * * /var/www/system/spamassassin-update.sh > /dev/null 2>&1 |
⑤spamass-milter startup and automatic startup settings
|
1 2 3 4 |
# systemctl start spamass-milter # systemctl enable spamass-milter Created symlink /etc/systemd/system/multi-user.target.wants/spamass-milter.service → /usr/lib/systemd/system/spamass-milter.service. |
⑥Postfix and spamass-milter integration settings
|
1 |
# vi /etc/postfix/main.cf |
milter_default_action = tempfail
smtpd_milters = unix:/var/run/clamav-milter/clamav-milter.socket,unix:/run/spamass-milter/postfix/sock ※If clamav-milter is already defined
non_smtpd_milters = unix:/var/run/clamav-milter/clamav-milter.socket,unix:/run/spamass-milter/postfix/sock ※If clamav-milter is already defined
⑦Restart postfix
|
1 |
# systemctl restart postfix |
⑧Procmail Settings
Create procmail configuration file
|
1 2 3 4 5 6 7 8 |
# vi /etc/procmailrc SHELL=/bin/bash PATH=/usr/bin:/bin DROPPRIVS=yes MAILDIR=$HOME/Maildir DEFAULT=$MAILDIR/ LOGFILE=$HOME/.procmail.log # Log output destination VERBOSE=ON # Detailed log output |
Create procmail log rotation configuration file
|
1 2 3 4 5 6 |
# vi /etc/logrotate.d/procmail /home/*/.procmail.log { missingok nocreate notifempty } |
⑨Postfix and Procmail integration settings
|
1 2 3 4 5 6 |
# vi /etc/postfix/main.cf Per Line 468 : Add #mailbox_command = /some/where/procmail #mailbox_command = /some/where/procmail -a "$EXTENSION" mailbox_command = /usr/bin/procmail |
Postfix Settings Reflected
|
1 |
# systemctl restart postfix |
2.2 Spam mail sorting settings
Mail marked as spam in the mail header by SpamAssassin will be delivered to a spam-only mailbox, while other mail will be delivered to a normal mailbox.
Create a dedicated spam mailbox
For existing users, add a spam-only mailbox to their mailboxes.
For new users, a spam-only mailbox will be automatically created when a user is added.
①Created script to create spam-only mailboxes
|
1 |
# vi spamfolder-create |
#!/bin/bash
for user in `ls /home`
do
id -u $user > /dev/null 2>&1
if [ $? -eq 0 ] && [ ! -d /home/$user/Maildir/.Spam/new ]; then
mkdir -p /home/$user/Maildir/.Spam/new
mkdir -p /home/$user/Maildir/.Spam/cur
mkdir -p /home/$user/Maildir/.Spam/tmp
chmod -R 700 /home/$user/Maildir/.Spam
chown -R $user. /home/$user/Maildir/.Spam
echo $user
fi
done
Run script to create spam-only mailboxes
|
1 2 3 4 |
# bash spamfolder-create huong linux smbuser |
Measures against new users
Automatic spam-only mailbox creation when adding new users
|
1 2 |
# mkdir -p /etc/skel/Maildir/.Spam/{new,cur,tmp} # chmod -R 700 /etc/skel/Maildir/.Spam |
➁spam mail sorting
Emails identified as spam by SpamAssassin are delivered to a spam-only mailbox.
|
1 2 3 4 5 6 |
# vi /etc/procmailrc Add the following to the end # Emails identified as spam by SpamAssassin are delivered to a spam-only mailbox :0 *^X-Spam-Flag: YES $HOME/Maildir/.Spam/ |
➂spamass-milter confirmation
When you send a blank email to yourself, the following message is appended to the header of the received email
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on Lepard
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 [192.168.11.6] (buffalo.setup [192.168.11.1])
by mail.xxxxxxx.com (Postfix) with ESMTPA id 1D223113CA46
for xxxxx@xxxxxxx.com; Sat, 27 Dec 2025 11:20:46 +0900 (JST)
Message-ID: 80a9c3df-bd66-44ca-8723-b76da9415b04@xxxxxxx.com
Date: Sat, 27 Dec 2025 11:20:45 +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
X-Virus-Scanned: clamav-milter 1.4.3 at Lepard
X-Virus-Status: Clean
X-Spam-Status: No, score=5.3 required=13.0 tests=ALL_TRUSTED,
CONTENT_TYPE_PRESENT,EMPTY_MESSAGE,PDS_TONAME_EQ_TOLOCAL_SHORT,
PDS_TONAME_EQ_TOLOCAL_VSHORT autolearn=no autolearn_force=no
version=3.4.6
X-Spam-Level: *
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on Lepard
④Spam check confirmation
Send yourself an email with the body of the email "XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X" and make sure the email is not delivered and is sorted into the Spam folder
The header states
X-Spam-Flag: YES
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=3.4.6
X-Spam-Report:
* 0.1 ALL_TRUSTED Passed through trusted hosts only via SMTP
* -0.1 CONTENT_TYPE_PRESENT exists:Content-Type
* 0.1 MULTIPART_ALTERNATIVE Multipart/alternative
* 1000 GTUBE BODY: Generic Test for Unsolicited Bulk Email
* 0.7 MPART_ALT_DIFF BODY: HTML and text parts are different
* 1.0 HTML_MESSAGE BODY: HTML included in message
X-Spam-Level:************************************************
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on Lepard
This is a multi-part message in MIME format.
--------------APlZDSJdHKxON0aRHopyNhC9
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
XJSC4JDBQADN1.NSBN32IDNENGTUBE-STANDARD-ANTI-UBE-TEST-EMAILC.34X
