====== 02 Postfix + amavisd + clamav ======
===== 環境 =====
CentOS 5.4
clamav-0.91.2
===== ①ClamAVインストール =====
# yum install clamd
==== 設定を修正 ====
# vi /etc/clamd.conf
80 TCPSocket 3310
↓ コメントアウト
80 #TCPSocket 3310
170 User clamav
↓ コメントアウト
170 #User clamav
==== Clamav再起動 ====
# service clamd restart
===== ②amavisdインストール =====
# yum install amavisd-new
==== 設定を修正 ====
# vi /etc/amavisd.conf
14 #@bypass_spam_checks_maps = (1); # controls running of anti-spam code
↓ スパムチェックは行わない
14 @bypass_spam_checks_maps = (1); # controls running of anti-spam code
21 #$mydomain = 'example.com'; # a convenient default for other settings
↓ 自分のドメインを入れる
21 $mydomain = 'test.flateight.com'; # a convenient default for other settings
363 #['ClamAV-clamd',
364 # \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"],
365 # qr/\bOK$/m, qr/\bFOUND$/m,
366 # qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],
↓ コメントアウトを外す
363 ['ClamAV-clamd',
364 \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"],
365 qr/\bOK$/m, qr/\bFOUND$/m,
366 qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],
206 qr'^\.(exe-ms|dll)$', # banned file(1) types, rudimentary
↓ コメントアウト。exe,dllも送信できるようにする。
206 # qr'^\.(exe-ms|dll)$', # banned file(1) types, rudimentary
=== 添付ファイルがはじかれるので、この部分をコメントアウト ===
$banned_filename_re = new_RE(
### BLOCKED ANYWHERE
# qr'^UNDECIPHERABLE$', # is or contains any undecipherable components
qr'^\.(exe-ms|dll)$', # banned file(1) types, rudimentary
# qr'^\.(exe|lha|tnef|cab|dll)$', # banned file(1) types
・
・
・
);
=== ウィルスや、スパムの最終的な処理方法 D_BOUNCEにしてあると、受け取ってもらえなくてずっと溜まってしまうので、D_DISCARDにしておく。 ===
$final_virus_destiny = D_DISCARD;
# $final_banned_destiny = D_BOUNCE;
# $final_spam_destiny = D_BOUNCE;
$final_banned_destiny = D_DISCARD;
$final_spam_destiny = D_DISCARD;
$final_spam_destiny = D_PASS;
=== 説明 ===
^ 設定変数 ^ 説明 ^
|$final_virus_destiny|ウィルスメールの最終的な処理方法。|
|$final_banned_destiny|banned(禁止された)メールの最終的な処理方法。|
|$final_spam_destiny|スパムメール($sa_kill_level_deflt以上のスコア)の最終的な処理方法。|
|$final_bad_header_destiny|ヘッダにASCII以外の文字が含まれているメール(Bad Header)の最終的な処理方法。|
^ 設定値 ^ 説明 ^
|D_DISCARD|メールは受信者に配送せず、送信者にも通知しない。|
|D_BOUNCE|メールは受信者には配送されないが、配送されなかったことを送信者に通知する。 \\ ただし、例外的に送信者に通知しないものがある。|
|D_REJECT|メールは受信者には配送されないが、配送されなかったことを送信者に通知する。|
|D_PASS|メールは配送される。|
===== ③Postfixの設定 =====
==== master.cf修正 ====
# vi /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
==== main.cf修正 ====
# vi /etc/postfix/main.cf
content_filter=smtp-amavis:[127.0.0.1]:10024
==== postfix再起動 ====
# /etc/init.d/postfix restart
==== MTAの切り替えもやっておく ====
[[01_linux:03_mail:10_mtaの切り替え]]
===== ④Spamassassinと連携する場合 =====
# vi /etc/amavisd.conf
@bypass_spam_checks_maps = (1); # controls running of anti-spam code
↓ コメントアウトを付ける
#@bypass_spam_checks_maps = (1); # controls running of anti-spam code
↓スパムを検出した際の通知先を追加。
$spam_admin = "spamalert\@$mydomain"; # notifications recip.
==== whitelist_from,blacklistfromが効かない ====
/etc/mail/spamassassin/local.cfファイルを編集して、spamassassinを再起動しても設定は反映されない。
ずっとなんでだろ?でした。
設定を反映させるには、amavisdの再起動が必要です。
# vi /etc/mail/spamassassin/local.cf
# /etc/init.d/amavisd restart
==== X-Spamのヘッダが入らない ====
スパムやウィルスのフィルタは通っているけど、
メールのヘッダは変更されていない。
どうも@local_domains_mapsにマッチした場合に下の設定が効くらしい。
$sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 6.2; # add 'spam detected' headers at that level
デフォルトだと$mydomainしか入ってないので、
チェックする全てのドメインを記述してあげる。
# vi /etc/amavisd.conf
@local_domains_maps = ( [ ".$mydomain"] );
↓
@local_domains_maps = ( [".$mydomain",".ma21.ath.cx",".fl8.jp"] ); # list of all local domains
===== ⑤スパム対策(RBLを利用) =====
ブラックリストを利用してチェックする。
# vi /etc/postfix/main.cf
------- 一番下に入れる -------
smtpd_client_restrictions = permit_mynetworks,
#reject_rbl_client relays.ordb.org,
reject_rbl_client spamcop.net,
reject_rbl_client dynablock.wirehub.net,
reject_rbl_client all.rbl.jp,
#reject_rbl_client opm.blitzed.org,
#reject_rbl_client relays.ordb.org,
#reject_rbl_client relays.visi.com,
reject_rbl_client sbl.spamhaus.org,
check_client_access hash:/etc/postfix/reject_client,
permit
===== Tips =====
==== スパム・ウィルスメールの保管場所 ====
このフォルダ内に保管されます。
# ll /var/virusmails/
==== spamassassinが起動しない ====
こんなエラーでspamassassinが起動してくれない。
# /etc/init.d/spamassassin start
spamd を起動中: child process [26884] exited or timed out without signaling production of a PID file: exit 255 at /usr/bin/spamd line 2588.
/var/log/mailログを見てみたら、amavisdのログにsa-updateしろと出ておりました。
# sa-update
# /etc/init.d/spamassassin start
sa-updateしたら、正常に起動しました。
==== ウィルスメールのテスト ====
本文に下記を書いたメールを送ってちゃんと検知すればOK
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
==== スパムメールのテスト ====
本文に下記を書いたメールを送ってちゃんと検知すればOK
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
{{tag>postfix amavisd clamav spamassassin}}