前回SpamAssasssinのmilterを使ったので、引き続きmilterでウィルスチェックと、greylist対応にPostgreyを使ってみます(PostgreSQLではない)。
ClamAV
CentOSでリポジトリから入れられるClamAVを使ってみます。
dnf install clamav clamav-update clamav-data clamd
#Example LogFile /var/log/clamd.scan PidFile /run/clamd.scan/clamd.pid LocalSocket /run/clamd.scan/clamd.sock #User clamscan
Exampleはデフォルトで無効なのを確認し、PidとLocalSocketを指定して、Userをコメント化します。ついでにログも取ってみます。
systemctl enable clamd@scan --now
#Example
NotifyClamd /etc/clamd.d/scan.conf
Exampleをコメント化し、上で設定したscan.confをNotifyClamdに指定します。そしたら起動。
systemctl enable clamav-freshclam --now
ClamAV-milter
続いてmilterをインストール。
dnf install clamav-milter
/etc/mail/clamav-milter.conf
#Example MilterSocket /run/clamav-milter/clamav-milter.socket MilterSocketMode 660 ClamdSocket unix:/run/clamd.scan/clamd.sock OnInfected Blackhole AddHeader Replace
Exampleをコメント化、Socket(とMode)を指定して上のscan.confで指定したsocketをこちらに指定。
OnInfectedでウィルス判定なら破棄し、チェックしたらヘッダーをメールに追加します。
systemctl enable clamav-milter --now
Postfix
milterの設定と、milterが動作していない時は素通しする設定を入れます。SpamAssassinのmilterの後ろにカンマを付けてClamAVのmilterを指定します。
# for milter
smtpd_milters = unix:/run/spamass-milter/postfix/sock,
unix:/run/clamav-milter/clamav-milter.socket
milter_default_action = accept
clamiltグループにpostfixを追加します。
usermod -G clamilt -a postfix
リロード
systemctl reload postfix
メールを送ると、X-Virus-* ヘッダーが追加されます。
弾くテストの場合は、EICARテストを本文に書いて送ると、破棄されて届きません。チェックに掛かりそうなので
カスペルスキーのページ を参考に。
弾かれると、/var/log/maillogに以下のようなログが追加されます。
milter-discard: END-OF-MESSAGE from localhost[::1]: milter triggers DISCARD action;
Postgrey
milter-greylistはちょっと面倒なので、postgreyを使います。
dnf install postgrey
Dovecot クォータの設定に続けて、postgreyのSocketを追加。
smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:12340
,check_policy_service unix:/var/spool/postfix/postgrey/socket
postgreyを起動してpostfixをリロード
systemctl enable postgrey --now
systemctl reload postfix
メールを送ろうとすると、greylist制限で最初の試行から60秒間は以下のようなエラーが出て送れません。60秒後に送ると今度は送れて、二通目以降は待たずに送れるようになります。
※60秒以内に再度送ろうとすると、60 secondsが徐々にカウントダウンしている事が分かります。
では、今度はWhitelistに登録して待たずに通すようにしてみます。
/etc/postfix/postgrey_whitelist_clients.local
virtual.localdomain
自ドメインを追加したら、postgreyを(リロードは無いので)リスタートします。
systemctl restart postgrey
メールを送ると、特に待たずに送れて、/var/log/maillogに以下のようにtripletに見つかったからパスしたよ、と記録されます。
postgrey[11813]: action=pass, reason=triplet found, client_name=localhost, client_address=::1, sender=yamada@virtual.localdomain, recipient=yamada@virtual.localdomain
待ち時間の60秒を変更したい時は、/etc/sysconfig/postgreyの–delay=60を変更します。
This entry was posted on 月曜日, 4月 17th, 2023 at 17:08 and is filed under 未分類 . You can follow any responses to this entry through the RSS 2.0 feed.
You can skip to the end and leave a response. Pinging is currently not allowed.