1. clamav ( アンチウィルスソフト )の導入
1.1 Clamav をインストール
# zypper -n install clamav
1.2 定義ファイル更新
①ウイルス定義ファイル更新設定
# vi /etc/freshclam.conf
88行目 : コメントアウトし、下に追加
#DatabaseMirror database.clamav.net
DatabaseMirror db.jp.clamav.net
②ウイルス定義ファイル更新
# freshclam
ClamAV update process started at Tue Jun 23 15:13:28 2026
daily database available for download (remote version: 28039)
Time: 0.3s, ETA: 0.0s [========================>] 22.33MiB/22.33MiB
Time: 0.8s, ETA: 0.0s [========================>] 8.87KiB/8.87KiB
Testing database: '/var/lib/clamav/tmp.ee8d9d1540/daily.cvd' ...
Database test passed.
daily.cvd updated (version: 28039, sigs: 355472, f-level: 90, builder: svc.clamav-publisher)
main database available for download (remote version: 63)
Time: 0.8s, ETA: 0.0s [========================>] 84.95MiB/84.95MiB
Time: 0.3s, ETA: 0.0s [========================>] 8.87KiB/8.87KiB
Testing database: '/var/lib/clamav/tmp.ee8d9d1540/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.2s, ETA: 0.0s [========================>] 275.10KiB/275.10KiB
Time: 0.5s, ETA: 0.0s [========================>] 8.87KiB/8.87KiB
Testing database: '/var/lib/clamav/tmp.ee8d9d1540/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 /run/clamav/clamd.sock: No such file or directory
最後にWARNING: Clamd was NOT notified: Can't connect to clamd through /run/clamav/clamd-socket: No such file or directory と表示されますが問題ありません
1.3 動作確認
■テスト用ウィルスをダウンロードし、スキャンする
# cd /home
# wget https://secure.eicar.org/eicar.com.txt
# clamscan --infected --remove --recursive /home
/home/eicar.com.txt: Eicar-Test-Signature FOUND
/home/eicar.com.txt: Removed.
----------- SCAN SUMMARY -----------
Known viruses: 3627878
Engine version: 1.5.2
Scanned directories: 10
Scanned files: 10
Infected files: 1
Data scanned: 23.96 KiB
Data read: 12.15 KiB (ratio 1.97:1)
Time: 10.014 sec (0 m 10 s)
Start Date: 2026:06:23 15:18:38
End Date: 2026:06:23 15:18:49
1.4 ウィルススキャン自動実行スクリプトの導入
①スクリプト保存ディレクトリーの作成
# mkdir -p /srv/www/system
②自動実行スクリプト作成
# cd /srv/www/system
clamscan.sh を次の内容で/srv/www/systemに作成
# vi /srv/www/system/clamscan.sh
下記を記述
#!/bin/bash
PATH=/usr/bin:/bin
# excludeopt setup
excludelist=/srv/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} /
スクリプトに実行権限を与える
# chmod 700 clamscan.sh
sys ディレクトリ、proc ディレクトリは仕様でスキャン出来ないため、対象外にする
# echo "/sys/" >> /srv/www/system/clamscan.exclude
# echo "/proc/" >> /srv/www/system/clamscan.exclude
# echo "/.snapshots/" >> /srv/www/system/clamscan.exclude
ウィルススキャンの定期実行設定
# crontab -e
0 1 * * * /srv/www/system/clamscan.sh > /dev/null 2>&
「/srv/www/system/clamscan.sh」を実行し、システム全体をスキャン
# /srv/www/system/clamscan.sh
2. メールサーバー インストール
2.1 Postfixインストール
①Postfix をインストールして SMTPサーバーを構築します
# zypper -n install postfix
②Postfix設定
メール不正中継防止に、後述の Dovecot の SASL機能を利用し、送信にも認証を要求するように Postfix を設定します。
# vi /etc/postfix/main.cf
100行目:ホスト名指定
myhostname = mail.[domain]
107行目:ドメイン名指定
mydomain = [domain]
122行目:コメント解除
myorigin = $mydomain
136行目:コメント解除
inet_interfaces = all
184行目: コメント解除
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
286行目:コメント解除し自ネットワーク追記
mynetworks = 127.0.0.0/8, 192.168.11.0/24
443行目:コメント解除しMaildir形式
home_mailbox = Maildir/
# 最終行に追加
# 必要に応じてメールボックスサイズを制限 (下例は 1G)
mailbox_size_limit = 1073741824
# 必要に応じて送受信メールサイズを制限 (下例は 10M)
message_size_limit = 10485760
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks, permit_auth_destination, permit_sasl_authenticated, reject
# systemctl start postfix
# systemctl enable postfix
③Firewalld を有効にしている場合は SMTP サービスの許可が必要です。SMTP は 25/TCP を使用します
# firewall-cmd --add-service=smtp --permanent
success
# firewall-cmd --reload
success
2.3 Dovecot インストール
①インストール
# zypper -n install dovecot
②Dovecot設定
Postfix に SASL 機能が提供できるよう Dovecot を設定します。
# vi /etc/dovecot/dovecot.conf
25行目当たり : 追加(IPv6をリスンしない場合)
listen = *
46行目当たり : コメント
# mail_inbox_path = ~/Maildir/.INBOX
# 最終行に追加
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
}
③Dovecot起動と自動実行
# systemctl start dovecot
# systemctl enable dovecot
Created symlink /etc/systemd/system/multi-user.target.wants/dovecot.service → /usr/lib/systemd/system/dovecot.service.
④Firewalld を有効にしている場合は POP/IMAP サービスの許可が必要
POP は 110/TCP, IMAP は 143/TCP を使用します
# firewall-cmd --add-service={pop3,imap} --permanent
success
# firewall-cmd --reload
success
2.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
②既存ユーザーのメール環境前処理
すでに作成してあるユーザー(huong)がメールの送受信が出来るよう設定をします。
# 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}
➂メールクライアントインストール
# zypper -n install mailx
④メールボックスは Maildir を参照するよう設定
# echo 'export MAIL=$HOME/Maildir' >> /etc/profile.d/mail.sh
2.5 作動確認
フリーのメールクライアントThunderbirdにアカウントを設定して作動確認します。
ただし、お使いのプロバイダーによっては送信サーバーに587番ポートを使用する場合がありますのでfirewall設定で587を解放しておきます。
# firewall-cmd --add-port=587/tcp --permanent
# firewall-cmd --reload
Mozilla Thunderbirdにアカウントを設定し、確認します(メールユーザーとしてOSユーザーhuongの場合)
Thunderbirdを起動し、右上の[三本]メニューの[New Account][Email]をクリック



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

[EDIT CONFIGURATION]をクリック

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

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

[Continue]をクリック

[Password]欄にユーザーのパスワードを入力し、[Continue]をクリック

[Continue]をクリック

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

3. Mail サーバー : Postfix + Clamav + clamav-milter+SpamAssassin
Postfix と Clamav を連携させて 送受信メールをリアルタイムスキャンできるように設定します
3.1 clamav-milterインストール
# zypper install https://www.rpmfind.net/linux/opensuse/tumbleweed/repo/oss/x86_64/clamav-milter-1.5.2-2.2.x86_64.rpm
# systemctl start clamd
# systemctl enable clamd
Created symlink '/etc/systemd/system/multi-user.target.wants/clamd.service' → '/usr/lib/systemd/system/clamd.service'.
3.2 clamav-milter を設定
①設定ファイル編集
# vi /etc/clamav-milter.conf
19行目 : 追加
MilterSocketMode 660
37行目 : コメントにして下に追加
#User vscan
User postfix
167行目当たり : 追加
OnInfected Blackhole
189行目当たり : 追加
AddHeader Yes
②起動と自動実行設定
# 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.
3.3 Postfix・clamav-milter連携設定
# vi /etc/postfix/main.cf
末尾に下記を追加
milter_default_action = tempfail
smtpd_milters = unix:/run/clamav/clamav-milter.sock
non_smtpd_milters = unix:/run/clamav/clamav-milter.sock
3.4 clamiltグループにpostfixユーザーを追加
# groupadd clamilt
# usermod -G clamilt -a postfix
# systemctl restart postfix
3.5 Thunderbirdで確認
Thunderbirdで自分宛に空メールを送付し、受信メールのヘッダー表示部分に下記のように
「X-Virus-Scanned: clamav-milter 1.5.2 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 213AA61AD
for xxxxx@xxxxxxx.com; Tue, 23 Jun 2026 16:07:57 +0900 (JST)
Message-ID: 7c308509-66ec-4641-81fc-2f4777c010ec@xxxxxxx.com
Date: Tue, 23 Jun 2026 16:07:57 +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.5.2 at Lepard
X-Virus-Status: Clean
4.ウィルススキャンスクリプト置換
ウイルスチェックスキャン後指定メールアドレスに通知するよう設定する。
① ウィルススキャン除外ディレクトリリストを作成
# cd /srv/www/system/
# vi clamscan.exclude
/sys/
/proc/
/.snapshots ← openSUSEは大量のsnapshotをとるように設定されておりますので、もし、必要がない方は設定しておく
②既存スクリプトを無効化して、新ウィルススキャンスクリプトを作成
# cd /srv/www/system/
# mv clamscan.sh clamscan.sh_bak
# vi clamscan.sh
新しい「clamscan.sh」の内容
#!/bin/bash
PATH=/usr/bin:/bin
MAILTO="<任意のメールアドレス>"
# excludeopt setup
excludelist=/srv/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 2>&1 > /dev/null
# virus scan
CLAMSCANTMP=`mktemp`
#clamscan --recursive --remove ${excludeopt} / > $CLAMSCANTMP 2>&1
clamscan --recursive ${excludeopt} / > $CLAMSCANTMP 2>&1
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
# report mail send
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" $MAILTO
rm -f $CLAMSCANTMP
# chmod 700 clamscan.sh
これでウイルスがあればメールにて通知されます。ウイルスがなければ通知が来ません。
2.メールのスパム対策
2.1 SpamAssassin・spamass-milter・postfix設定
①SpamAssassin・spamass-milterインストール
# zypper -n install spamassassin spamass-milter
➁SpamAssassin起動
# systemctl start spamd
➂SpamAssassin の設定
# vi /etc/mail/spamassassin/v310.pre
24 行目あたり行頭の#を削除
loadplugin Mail::SpamAssassin::Plugin::DCC
④SpamAssassin 設定ファイル最新化スクリプト作成
# cd /srv/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再起動
if [ -f /usr/bin/spamassassin ]; then
/usr/bin/spamassassin restart > /dev/null
else
systemctl restart spamd > /dev/null
fi
fi
cp user_prefs user_prefs.org
spamassassin-update スクリプトに実行権限を付与し、実行
# chmod 700 /srv/www/system/spamassassin-update.sh
# /srv/www/system/spamassassin-update.sh
/etc/mail/spamassassin ディレクトリにSpamAssassin 設定ファイル(local.cf)が当日日付で
作成されていることを確認
# ls -l /etc/mail/spamassassin
total 1520
-rw-r--r-- 1 root root 1649 Jan 20 2025 init.pre
-rw-r--r-- 1 root root 500636 Jun 23 16:16 local.cf
-rw-r--r-- 1 root root 500588 Apr 30 2023 user_prefs
-rw-r--r-- 1 root root 500588 Jun 23 16:16 user_prefs.org
-rw-r--r-- 1 root root 2262 Jun 23 16:15 v310.pre
-rw-r--r-- 1 root root 1168 Jan 20 2025 v312.pre
-rw-r--r-- 1 root root 2416 Jan 20 2025 v320.pre
-rw-r--r-- 1 root root 1237 Jan 20 2025 v330.pre
-rw-r--r-- 1 root root 1020 Jan 20 2025 v340.pre
-rw-r--r-- 1 root root 1315 Jan 20 2025 v341.pre
-rw-r--r-- 1 root root 1519 Jan 20 2025 v342.pre
-rw-r--r-- 1 root root 1266 Jan 20 2025 v343.pre
-rw-r--r-- 1 root root 1482 Jan 20 2025 v400.pre
-rw-r--r-- 1 root root 1118 Jan 20 2025 v401.pre
SpamAssassin 設定ファイルを最新化するスクリプトが毎日自動実行されるようcron に設定
# crontab -e
0 2 * * * /var/www/system/spamassassin-update.sh > /dev/null 2>&1
⑤spamass-milter起動・自動起動設定
# 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・spamass-milter連携設定
# vi /etc/postfix/main.cf
下記を追加
milter_default_action = tempfail
smtpd_milters = unix:/var/run/clamav-milter/clamav-milter.socket,unix:/run/spamass-milter/socket ※既にclamav-milterが定義されている場合
non_smtpd_milters = unix:/var/run/clamav-milter/clamav-milter.socket,unix:/run/spamass-milter/socket ※既にclamav-milterが定義されている場合
⑦postfix を再起動
# systemctl restart postfix
⑧Procmail設定
procmail設定ファイル作成
# vi /etc/procmailrc
下記を記述
SHELL=/bin/bash
PATH=/usr/bin:/bin
DROPPRIVS=yes
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
LOGFILE=$HOME/.procmail.log # ログ出力先
VERBOSE=ON # 詳細ログ出力
procmailログローテーション設定ファイル作成
# vi /etc/logrotate.d/procmail
下記を記述
/home/*/.procmail.log {
missingok
nocreate
notifempty
}
⑨Postfix・Procmail連携設定
# vi /etc/postfix/main.cf
473行目当たり : 追加
#mailbox_command = /some/where/procmail
#mailbox_command = /some/where/procmail -a "$EXTENSION"
mailbox_command = /usr/bin/procmail ← 追加(Procmailと連携するようにする)
Postfix設定反映
# systemctl restart postfix
2.2 スパムメール振分け設定
SpamAssassinによりメールヘッダにスパムメールの印を付けられたメールはスパム専用メールボックスへ、その他のメールは通常どおりのメールボックスへ配送するようにする。
スパム専用メールボックス作成
既存ユーザーについては、メールボックスにスパム専用メールボックスを追加する。
また、新規ユーザーについては、ユーザー追加時に自動でスパム専用メールボックスが作成されるようにする 。
①スパム専用メールボックス作成スクリプト作成
# 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
スパム専用メールボックス作成スクリプト実行
# bash spamfolder-create
huong
新規ユーザー対策
新規ユーザー追加時に自動でスパム専用メールボックス作成
# mkdir -p /etc/skel/Maildir/.Spam/{new,cur,tmp}
# chmod -R 700 /etc/skel/Maildir/.Spam
➁スパムメール振分け
SpamAssassinがスパム判定したメールはスパム専用メールボックスへ配送する
# vi /etc/procmailrc
以下を最後尾へ追加
# SpamAssassinがスパム判定したメールはスパム専用メールボックスへ配送
:0
*^X-Spam-Flag: YES
$HOME/Maildir/.Spam/
➂spamass-milter確認
自分自身に空メールを送ると、受信したメールのヘッダに以下のメッセージが付加されている
X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) 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 ADE4062AD
for xxxxx@xxxxxxx.com; Tue, 23 Jun 2026 16:26:58 +0900 (JST)
Message-ID: 85766b9c-2924-42bd-aa8d-980df4e1a18e@korodes.com
Date: Tue, 23 Jun 2026 16:26:58 +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.5.2 at Lepard
X-Virus-Status: Clean
X-Spam-Status: No, score=1.2 required=5.0 tests=ALL_TRUSTED,EMPTY_MESSAGE,
MISSING_SUBJECT autolearn=no autolearn_force=no version=4.0.1
X-Spam-Level: *
X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on Lepard
④スパムチェック確認
自分自身にメール本文が「XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X」のメールを送るとメールは配信されずSpamフォルダへ振り分けられていることを確認する
ヘッダーには次のように記載されている
/home/huong/Maildir/.Spam/newの中を確認する
X-Spam-Flag: YES
X-Spam-Status: Yes, score=1001.2 required=5.0 tests=ALL_TRUSTED,GTUBE,
HTML_MESSAGE,MPART_ALT_DIFF autolearn=no autolearn_force=no
version=4.0.1
X-Spam-Level: ********************************************
X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on Lepard
