Debian 11 (bullseye) - Postfix ウィルス・スパム対策(ClamAV + SpamAssassin)!

Updated:


Debian GNU/Linux 11 (bullseye) にアンチウイルスソフト ClamAV とスパム対策ソフト SpamAssassin をインストールする方法についての記録です。

以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。
(当然ながら、興味がなければスルーしてください)

0. 前提条件

  • Debian GNU/Linux 11.0.0 (bullseye; 64bit) での作業を想定。
  • SMTP サーバ Postfix を「Debian 11 (bullseye) - SMTP サーバ Postfix 構築!」の方法で導入済み。
  • アンチウィルスソフト ClamAV 導入済み。
  • スパムフィルタも運用する。
  • アンチウィルス ClamAV との連携には、 ClamAV daemon を使用する方法の他に、ClamSMTP を使用する方法もある。
  • スパムフィルタ SpamAssassin との連携には、 amavisd-new を使用する方法の他に SpamPD を使用する方法もある。
  • root ユーザでの作業を想定。

1. インストール

Postfix を ClamAV と連携させてウィルススキャン・スパムフィルタを行うのに必要な ClamAV daemon, amavisd-new, SpamAssassinを、以下のようにしてインストールする。

# apt -y install clamav-daemon amavisd-new spamassassin

2. SpamAssassin 設定ファイルの編集

File: /etc/default/spamassassin

ENABLED=1  # <= スパムフィルタも有効化(追加)

3. amavisd-new 設定ファイルの編集

Postfix と ClamAV, SpamAssassin を連携するのに必要な amavisd-new の設定ファイルを用意し、編集する。

# cp /usr/share/doc/amavisd-new/examples/amavisd.conf-default /etc/amavis/amavisd.conf

File: /etc/amavis/amavisd.conf

$myhostname = 'mail.mk-mode.com';    # <= ホスト名
$mydomain   = 'mk-mode.com';         # <= ドメイン名

$daemon_user   = 'amavis';           # <= amavis デーモンユーザ名
$daemon_group  = 'amavis';           # <= amavis デーモングループ名

$MYHOME        = '/var/lib/amavis';  # <= amavisd ホーム

# $virus_admin = undef;             # <= コメント化されていることを確認(ウィルス検知を都度通知しない)

4. 15-content_filter_mode の編集

File: /etc/amavis/conf.d/15-content_filter_mode

@bypass_virus_checks_maps = (                                                    # <= コメント解除
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);  # <= コメント解除

@bypass_spam_checks_maps = (                                                     # <= コメント解除
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);     # <= コメント解除

ちなみに、amavisd.conf にも同じ記述がある。どちらを有効にしても良いだろう。

5. 15-av_scanners の編集

メールのウィルスチェックの度に clamscan が作動するとマシンが非力な場合は非常に重くなるため、 clamav-daemon が動作する今回の環境では clamdscan でウィルスチェックを行うこととする。(clamscan と clamdscan の違いについては、ここでは説明しない)

File: /etc/amavis/conf.d/15-av_scanners

  #['ClamAV-clamscan', 'clamscan',  # <= コメント化
  ['ClamAV-clamscan', 'clamdscan',  # <= 追加

6. 20-debian_defaults の編集

Considered UNSOLICITED BULK EMAIL, apparently from you というタイトルのメールが届くことがあるので、それを抑止するための設定を行う。

File: /etc/amavis/conf.d/20-debian_defaults

#$final_banned_destiny     = D_DISCARD;
$final_banned_destiny     = D_REJECT;
  • D_PASS … メールは受信者に配送される
  • D_REJECT … メールは配送されないが、送信者に配送されなかった事を伝える
  • D_BOUNCE … メールは配送されないが、送信者に配送されなかった事を伝える。例外で伝えない場合もある
  • D_DISCARD … メールは配送されず、送信者にも配送されなかった事を伝えない

7. Postfix - main.cf の編集

File: /etc/postfix/main.cf

# 最終行へ追加
content_filter=smtp-amavis:[[127.0.0.1]]:10024

8. Postfix - master.cf の編集

File: /etc/postfix/master.cf

# 最終行へ追加
smtp-amavis unix -       -       n      -     2 smtp
      -o smtp_data_done_timeout=1200
      -o smtp_send_xforward_command=yes
      -o disable_dns_lookups=yes
127.0.0.1:10025 inet n     -     n     -     - smtpd
      -o content_filter=
      -o local_recipient_maps=
      -o relay_recipient_maps=
      -o smtpd_restriction_classes=
      -o smtpd_client_restrictions=
      -o smtpd_helo_restrictions=
      -o smtpd_sender_restrictions=
      -o smtpd_recipient_restrictions=permit_mynetworks,reject
      -o mynetworks=127.0.0.0/8
      -o strict_rfc821_envelopes=yes
      -o smtpd_error_sleep_time=0
      -o smtpd_soft_error_limit=1001
      -o smtpd_hard_error_limit=1000

9. その他の設定

処理に必要なファイルを作成したり、権限設定、ユーザ作成を行う。

# touch /etc/mailname
# chmod -R 775 /var/lib/amavis/tmp
# usermod -G amavis clamav

10. サービスの再起動

ClamAV daemon, Postfix, Amavisd を再起動、SpamAssassin を起動する。

# systemctl restart clamav-daemon
# systemctl restart postfix
# systemctl restart amavis
# systemctl start spamassassin

11. サービス自動起動の設定

デフォルトで自動起動する設定になっているはずだが、なっていなければ、自動起動するよう設定する。

# systemctl enable spamassassin
Synchronizing state of spamassassin.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable spamassassin
insserv: warning: current start runlevel(s) (empty) of script `spamassassin' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `spamassassin' overrides LSB defaults (0 1 6).
Created symlink /etc/systemd/system/multi-user.target.wants/spamassassin.service → /lib/systemd/system/spamassassin.service.

# systemctl is-enabled clamav-daemon
enabled

12. 動作確認

メールを送信してみる。

# echo test | mail -s "TEST" root

受信メールのヘッダに X-Virus-Scanned: Debian amavisd-new at の文字列が存在することが確認できれば成功である。(メールソフトでヘッダを表示できる。または、サーバ内に届いたメールファイル(/home/<user_name>/Maildir/new/***)を開いてみる)

メール送信コマンド mail が使用できない場合は、 mailutils or heirloom-mailx or bsd-mailx 等をインストールする。複数ある場合は、update-alternatives --config mailx でデフォルト設定をする。


===< 中略 >===

X-Virus-Scanned: Debian amavisd-new at

===< 中略 >===

Subject: TEST

===< 中略 >===

test

13. 誤検知対策

スパムメールをそうでないメールと誤検知したり、スパムでないメールをスパムと誤検知する場合は、以下のように local.cf に追記する。(以下は一例)

File: /etc/mail/spamassassin/local.cf

# 最終行に追記
# Whitelist
whitelist_from xxxx@xxxxxxxx.ne.jp
whitelist_from yyyy@yyyyyyyy.co.jp
whitelist_from zzzz@zzzzzzzz.com

# Blacklist
blacklist_from *@aaaaaaaa.biz
blacklist_from *@bbbbbbbb.co.jp
blacklist_from *@cccccccc.info
blacklist_from xxxx@dddddddd.co.jp
blacklist_from yyyy@eeeeeeee.ne.jp
blacklist_from zzzz@ffffffff.info

以上。





 

Sponsored Link

 

Comments