#author("2016-05-29T17:26:32+09:00","default:okkun-lab","okkun-lab")
#author("2016-10-10T22:19:28+09:00","default:okkun-lab","okkun-lab")
*Postfix + メールサーバウイルス対策 (amavisd + ClamAV) [#bdf5a689]

-メールサーバにウイルス対策機能を付加したかった。
--早い、安い、巧い、ClamAV。
--スキャナとしてamavisd。
-SPAMは今回は対策しない。基本的にメール内容自体には手を付けず、あくまでも実害のあるもののみ対応する。
-written by [[member/すながわひろゆき]]


**前提条件 [#kbc34d16]

-CentOS 6.2 x86_64 minimal
--Tips/Linux/Postfix/Postfix


**ClamAV [#u780aa25]

-EPELレポジトリダウンロード
 rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
--ダウンロードミラーサイトはhttp://mirrors.fedoraproject.org/publiclist/EPEL/から探せる。
-/etc/yum.repos.d/epel.repo
 [epel]
 enabled=0
--通常はyumでEPELレポジトリから引っ張らないようにする。

-ClamAVインストール
 yum --enablerepo=epel install clamd

-本体設定
--/etc/clamd.conf(変更点のみ)
 # ポートを開かない
 #TCPSocket 3310
 # clamdの起動ユーザをrootに
 #User clam

-起動&サービス登録
 /etc/init.d/clamd start
 chkconfig clamd on

-アップデートの設定
--/etc/freshclam.conf
 #Example

-アップデートテスト
 freshclam

-アップデート予約
--/etc/cron.daily/freshclam があることを確認

-ウイルス検索テスト
 clamscan --infected --recursive
--eicarテストウイルスhttp://www.eicar.org/でもダウンロードして検索してみる。


**amavisd [#xce958aa]

-インストール
 yum --enablerepo=epel install amavisd-new

-設定
--/etc/amavisd/amavisd.conf
 # スパムチェックを行わない(コメントアウトを外す)
 @bypass_spam_checks_maps  = (1);  # controls running of anti-spam code
 
 # メールサーバのデフォルトドメイン
 $mydomain = 'example.com';   # a convenient default for other settings
 
 # 自ホスト名
 $myhostname = 'mail.example.com';
 
 # 不正ヘッダ処理となったメールでもそのまま通過させる。
 # $final_bad_header_destiny = D_BOUNCE;
 $final_bad_header_destiny = D_PASS;
 
 # SOME OTHER VARIABLES WORTH CONSIDERING (see amavisd.conf-default for all)
 # $defang_bad_header, $defang_undecipherable, $defang_spam
 # パスワード付zip受信時にメール件名に「***UNCHECKED***」と付加しない(追加)
 $undecipherable_subject_tag = '';
 
 # exe-ms|dllをコメントアウトしてexeファイル受信を認める
 ### BLOCKED ANYWHERE
 # qr'^UNDECIPHERABLE$',  # is or contains any undecipherable components
 #  qr'^\.(exe-ms|dll)$',                   # banned file(1) types, rudimentary
 # qr'^\.(exe|lha|cab|dll)$',              # banned file(1) types
 
 # ソケットの変更(ClamAVで指定したソケット)
 ['ClamAV-clamd',
   \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"],
   qr/\bOK$/m, qr/\bFOUND$/m,
   qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],
--$final_bad_header_destinyで通過させている理由は、live.comのサインアップメールが不正ヘッダとして処理されてしまうための対策。

-起動&サービス登録
 /etc/init.d/amavisd start
 chkconfig amavisd on

-Postfixに登録
--/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
     -o receive_override_options=no_address_mappings,no_header_body_checks,no_unknown_recipient_checks
---最後のreceive_override_optionsでno_address_mappingsしないと、なぜかメールが2通転送先に届く現象が発生する。
---あと、複数のメールフィルタをかます場合(spamassassinとか)はさらにオプションを追加しないとメールがループするらしい。
---http://www.aconus.com/~oyaji/suse9.3/amavisd-new_antivir_suse9.3.htm

--/etc/postfix/main.cf(追記部分のみ)
 content_filter=smtp-amavis:[127.0.0.1]:10024

-Postfix再起動
/etc/init.d/postfix restart 

-テスト
--テストウイルス(Eicar)あたりをメールに添付してサーバに打ち込んでみる。
---http://www.eicar.org/


**参考 [#q2ec82c2]

-メールサーバーでウィルス&スパムチェック(Postfix+Clam AntiVirus+SpamAssassin) - CentOSで自宅サーバー構築
--http://centossrv.com/postfix-clamav-spamassassin.shtml
-メールサーバーでウィルス&スパムチェック(Postfix+amavisd-new+Clam AntiVirus+SpamAssassin) - Fedoraで自宅サーバー構築
--http://fedorasrv.com/postfix-clamav-spamassassin.shtml
-Postfix+Clamav+Spamassassinの設定 - UNIXLife
--http://unixlife.jp/linux/centos-6/postfix-clamav-spamassassin-ce6.html