Amavis
Amavis のサイト より:
- amavisd-new はメーラー (MTA) とコンテンツチェッカー (ウィルススキャナや SpamAssassin) を結ぶ高性能なインターフェイスです。保守性を高め、速度の代償を払わずにすむよう、Perl で書かれています。(E)SMTP や LMTP で MTA と対話することができ、ヘルパープログラムを使うこともできます。Postfix との利用が最適ですが、二重化した sendmail や Exim v4 でも問題なく動作し、sendmail/milter も使えます。また、SMTP リレーによりどんな MTA も使えます。
インストールとセットアップ
このセットアップではアンチウイルススキャナとして ClamAV を用いることにします。
- amavisd-new パッケージをインストールしてください。圧縮されたファイルも確認できるように p7zip や unrar などの任意の依存パッケージもインストールすると良いでしょう。
- clamav パッケージをインストールします。
基本設定
ホストネームが FQDN ではない場合、/etc/amavisd/amavisd.conf
で $myhostname
や $mydomain
を設定してください。
以下の行をコメントアウトすることで ClamAV のサポートを有効化できます (/etc/clamav/clamd.sock
と同じ clamd.sock
を配置してください):
# ### http://www.clamav.net/ ['ClamAV-clamd', \&ask_daemon, ["CONTSCAN {}\n", "/var/lib/clamav/clamd.sock"], qr/\bOK$/m, qr/\bFOUND$/m, qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ], # # NOTE: run clamd under the same user as amavisd - or run it under its own # # uid such as clamav, add user clamav to the amavis group, and then add # # AllowSupplementaryGroups to clamd.conf; # # NOTE: match socket name (LocalSocket) in clamav.conf to the socket name in # # this entry; when running chrooted one may prefer a socket under $MYHOME.
以下の行にコメントを追加することでアンチウイルススキャンが有効になります:
# @bypass_virus_check_maps = (1); # controls running of anti-virus code
AllowSupplementaryGroups true
を /etc/clamav/clamd.conf
に追加してください。
その後、パーミッションの問題が起こらないように amavis
グループに clamav
ユーザーを追加してください:
# usermod -a -G amavis clamav
最後にサービスを再起動してください:
以下のコマンドでエラーをチェックします:
# systemctl status amavisd # journalctl -xbo short -u amavisd
テスト
新しい設定をテストするときは amavisd のデフォルトの listen ポートに telnet を実行します:
$ telnet 127.0.0.1 10024
以下のように表示されるはずです:
Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]' 220 [127.0.0.1] ESMTP amavisd-new service ready
Type ehlo 127.0.0.1
:
EHLO localhost 250-[127.0.0.1] 250-VRFY 250-PIPELINING 250-SIZE 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 XFORWARD NAME ADDR PORT PROTO HELO IDENT SOURCE
quit
と入力して終了してください。
Postfix の統合
クイックスタート
Postfix から amavis を設定するには、以下を /etc/postfix/master.cf
に追加します:
# # anti spam & anti virus section # amavisfeed unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 127.0.0.1:10025 inet n - y - - smtpd -o content_filter= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o smtpd_restrictions_classes= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters -o local_header_rewrite_clients=
上記の設定では postfix と Amavis を同一のマシン (127.0.0.1
) 上で動作させています。違うマシンで使っている場合 /etc/amavisd/amavisd.conf
と上記の Postfix エントリを編集してください。
Postfix はポート 10025
を listen するので Amavis はこのポートにチェックしたメールを返します。
また、smtp
や submission
セクションに以下の設定を追加する必要があります:
-o content_filter=amavisfeed:[127.0.0.1]:10024
このオプションを設定すると Postfix はメールをポート 10024
の Amavis に送信します。それからメールがチェックされ、メールが問題ない場合は上述のようにポート 10025
に送り返されます。
設定したら postfix.service
と amavisd.service
を再起動してください。
Postfix がポート 10025
を listen しているかどうか確認したいときは、#テスト と同じ操作を実行してください。
SpamAssassin のサポート
spamassassin パッケージをインストールしてください。
Spamassassin は Amavis に統合されているため spamassassin.service
を起動する必要はありません。Spamassassin のサポートを有効にするには /etc/amavis/amavis.conf
の以下の行をコメントアウトしてください:
# @bypass_spam_checks_maps = (1); # controls running of anti-spam code
必要に応じて SpamAssassin の設定を編集してください:
$sa_tag_level_deflt = 1.0; # add spam info headers if at, or above that level $sa_tag2_level_deflt = 1.0; # add 'spam detected' headers at that level $sa_kill_level_deflt = 5.0; # triggers spam evasive actions (e.g. blocks mail) $sa_dsn_cutoff_level = 8; # spam level beyond which a DSN is not sent # $sa_quarantine_cutoff_level = 25; # spam level beyond which quarantine is off $penpals_threshold_high = $sa_kill_level_deflt; # do not waste time on hi spam $bounce_killer_score = 100; # spam score points to add for joe-jobbed bounces
それから amavisd
サービスを再起動して sa-update
を実行してください。
最終テスト
全てが上手く動作していることを確認するには:
- 通常のメールを送信。
- EICAR ファイルを添付したメールを送信。
- スパムとして判定されるようなメールを送信。
- Postfix と Amavis のログを両方確認。