業務用エアコン関連の技術情報、エラーコード、環境問題対策に関する別サイト「エアコンの安全な修理・適切なフロン回収」

openSUSE Tumbleweed : Clamav ( アンチウィルスソフト ) , メールサーバー

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