Amavis

提供: ArchWiki
移動先: 案内検索

関連記事

Amavis のサイト より:

amavisd-new はメーラー (MTA) とコンテンツチェッカー (ウィルススキャナや SpamAssassin) を結ぶ高性能なインターフェイスです。保守性を高め、速度の代償を払わずにすむよう、Perl で書かれています。(E)SMTP や LMTP で MTA と対話することができ、ヘルパープログラムを使うこともできます。Postfix との利用が最適ですが、二重化した sendmail や Exim v4 でも問題なく動作し、sendmail/milter も使えます。また、SMTP リレーによりどんな MTA も使えます。

インストールとセットアップ

このセットアップではアンチウイルススキャナとして ClamAV を用いることにします。

  • AUR から amavisd-new をインストールしてください。圧縮されたファイルも確認できるように p7zipunrar などの任意の依存パッケージもインストールすると良いでしょう。
  • 公式リポジトリから 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 はこのポートにチェックしたメールを返します。

また、smtpsubmission セクションに以下の設定を追加する必要があります:

-o content_filter=amavisfeed:[127.0.0.1]:10024

このオプションを設定すると Postfix はメールをポート 10024 の Amavis に送信します。それからメールがチェックされ、メールが問題ない場合は上述のようにポート 10025 に送り返されます。

設定したら postfix.serviceamavis.service再起動してください。

Postfix がポート 10025 を listen しているかどうか確認したいときは、#テスト と同じ操作を実行してください。

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 サービスを再起動してください。

最終テスト

全てが上手く動作していることを確認するには:

  • 通常のメールを送信。
  • EICAR ファイルを添付したメールを送信。
  • スパムとして判定されるようなメールを送信。
  • Postfix と Amavis のログを両方確認。

参照