user icon

milterでウィルスチェック、おまけでPostgrey

前回SpamAssasssinのmilterを使ったので、引き続きmilterでウィルスチェックと、greylist対応にPostgreyを使ってみます(PostgreSQLではない)。

ClamAV

CentOSでリポジトリから入れられるClamAVを使ってみます。
dnf install clamav clamav-update clamav-data clamd
  • /etc/clamd.d/scan.conf
#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
次に更新用設定。
  • /etc/freshclam.conf
#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
  • /etc/postfix/main.cf
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を変更します。
Facebooktwitterlinkedintumblrmail
名前
E-mail
URL
コメント

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)