>> HOME >> CentOS 4 MENU >> メールサーバーでウィルスチェック (amavisd-new + Clam AntiVirus)
Clam AntiVirus と amavisd-new を使用してメールサーバー側でメールに対するウィルスチェックを行います。
ここでは、自宅サーバーに構築したメールサーバーに外部から送られてきたメール及び、内部から送り出すメールのウィルスチェックを行い、ウィルスを検出したら、メールを破棄するように設定します。
また、外部から送られてきたメールについてはスパムチェックも行ない、スパムと判断した場合には表題に『**** SPAM ****』と警告表示するようにします。

1. clamd の設定
1 ) clamd 設定ファイル /etc/clamd.conf の編集
2 ) clamd 再起動
2. amavisd-new インストール
1 ) amavisd-new インストール
3. amavisd-new の設定
1 ) amavisd-new 設定ファイル /etc/amavisd.conf の編集
4. amavisd-new の起動と自動起動設定
1 ) amavisd-new 起動
2 ) amavisd-new 自動起動設定
5. Postfix の設定
1 ) Postfix 設定ファイル /etc/postfix/master.cf の編集
2 ) Postfix 設定ファイル /etc/postfix/main.cf の編集
6. Postfix の再起動
7. 動作確認
1 ) amavisd-new の動作確認
2 ) ウィルスチェックの動作確認
3 ) スパムチェックの動作確認
1. clamd の設定
1 ) clamd 設定ファイル /etc/clamd.conf の編集。
Clam AntiVirus と Postfix が連携できるように clamd をソケット通信型で起動するように設定します。
[root@linux ~]# vi /etc/clamd.conf 

  :
  :
# Path to a local socket file the daemon will listen on.
# Default: disabled
# コメントし、追加
#LocalSocket /tmp/clamd
LocalSocket /var/run/clamav/clamd.sock

# Remove stale socket after unclean shutdown.
# Default: disabled
FixStaleSocket

# TCP port address.
# Default: disabled
# コメント化
#TCPSocket 3310
  :
  :

2 ) clamd 再起動。
[root@linux ~]# service clamd restart 
Stopping Clam AntiVirus Daemon:                            [  OK  ]
Starting Clam AntiVirus Daemon:                            [  OK  ]
2. amavisd-new インストール
1 ) amavisd-new インストール。
※ 依存関係により大量のパッケージがインストールされます。
[root@linux ~]# yum -y install amavisd-new 
Repository dag is listed more than once in the configuration
Setting up Install Process
Setting up repositories
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for amavisd-new to pack into transaction set.

amavisd-new-2.4.2-1.el4.r 100% |=========================|  11 kB    00:00     
---> Package amavisd-new.i386 0:2.4.2-1.el4.rf set to be updated
--> Running transaction check
--> Processing Dependency: perl(Unix::Syslog) for package: amavisd-new
--> Processing Dependency: perl(Convert::TNEF) for package: amavisd-new
--> Processing Dependency: perl(Mail::Address) for package: amavisd-new
--> Processing Dependency: perl(Net::Server) >= 0.87 for package: amavisd-new
  :
  :
  Installing: amavisd-new                  ####################### [30/30] 

Installed: amavisd-new.i386 0:2.4.2-1.el4.rf
Dependency Installed: arc.i386 0:5.21j-0.2.el4.rf cabextract.i386 0:1.1-1.2.el4.rf freeze.i386
0:2.5.0-1.2.el4.rf lzo.i386 0:1.08-4.2.el4.rf lzop.i386 0:1.01-1.2.el4.rf ncompress.i386 0:4.2.4-40
nomarch.i686 0:1.3-1.2.el4.rf perl-Archive-Tar.noarch 0:1.26-1.2.el4.rf perl-Archive-Zip.noarch
0:1.16-1.2.el4.rf perl-BerkeleyDB.i386 0:0.27-1.2.el4.rf perl-Compress-Zlib.i386 0:1.41-1.2.el4.rf
perl-Convert-BinHex.noarch 0:1.119-2.2.el4.rf perl-Convert-TNEF.noarch 0:0.17-3.2.el4.rf
perl-Convert-UUlib.i386 0:1.051-1.2.el4.rf perl-Digest-HMAC.noarch 0:1.01-13 perl-Digest-SHA1.i386 0:2.07-5
perl-IO-stringy.noarch 0:2.110-1.2.el4.rf perl-MIME-tools.noarch 0:5.420-1.el4.rf perl-MailTools.noarch
0:1.67-2.2.el4.rf perl-Net-DNS.i386 0:0.48-1 perl-Net-Server.noarch 0:0.94-1.el4.rf perl-Time-HiRes.i386
0:1.55-3 perl-TimeDate.noarch 0:1.16-1.2.el4.rf perl-Unix-Syslog.i386 0:0.100-1.2.el4.rf ripole.i386
0:0.2.0-1.2.el4.rf spamassassin.i386 0:3.1.4-1.el4.rf unarj.i386 0:2.63-0.a.2.el4.rf unrar.i386
0:3.6.2-1.el4.rf zoo.i386 0:2.10-2.2.el4.rf
Complete!
3. amavisd-new の設定
1 ) amavisd-new 設定ファイル /etc/amavisd.conf の編集
[root@linux ~]# vi /etc/amavisd.conf 

  :
  :

# ドメインを指定
#$mydomain = 'example.com';   # a convenient default for other settings
$mydomain = 'mountainbigroad.jp';
  :
  :

# コメントにする
#$virus_admin               = "virusalert\@$mydomain";  # notifications recip.

  :
  :
# OTHER MORE COMMON SETTINGS (defaults may suffice):

# $myhostname = 'host.example.com';  # must be a fully-qualified domain name!
# ホスト名を記述
$myhostname = 'linux.mountainbigroad.jp';

# $notify_method  = 'smtp:[127.0.0.1]:10025';
# $forward_method = 'smtp:[127.0.0.1]:10025';  # set to undef with milter!

# 以下の設定は、ウィルスやSPAMの処理を決める(詳細は後述)
ここから ---->
$final_virus_destiny      = D_DISCARD;
$final_banned_destiny     = D_BOUNCE;
$final_spam_destiny       = D_PASS;
$final_bad_header_destiny = D_BOUNCE;

$warnvirussender  = 0;
$warnspamsender   = 0;
$warnbannedsender = 0;
$warnbadhsender   = 0;
<---- ここまで

設定変数                  概要
$final_virus_destiny      ウィルスメールの最終的な処理方法
$final_banned_destiny     banned(禁止された)メールの最終的な処理方法
$final_spam_destiny       SPAMのメールの最終的な処理方法
$final_bad_header_destiny ヘッダにASCII以外の文字が含まれているメール(Bad Header)の最終的な処理方法

設定値                    概要
D_DISCARD                 メールは受信者に配送せず、送信者にも通知しない
D_BOUNCE                  メールは受信者には配送されないが、配送されなかったことを送信者に通知する。
                          ただし、例外的に送信者に通知しないものがある
D_REJECT                  メールは受信者には配送されないが、配送されなかったことを送信者に通知する
D_PASS                    メールは配送される

設定値に D_PASS を指定した場合に、ウィルスやSPAMメールを受け取った場合、警告するかどうかを以下のように設定
できます。有効にする場合は「1」を指定し、無効にする場合は「0」を指定します。

設定変数                  説明
$warnvirussender          ウィルス送信者に通知するかどうか
$warnspamsender           SPAM送信者に通知するかどうか
$warnbannedsender         禁止メールの場合、送信者に通知するかどうか
$warnbadhsender           ヘッダにASCII文字以外のものが含まれているメールの場合、送信者に通知するかどうか

  :
  :
# ### http://www.clamav.net/
# ['ClamAV-clamd',
#   \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd"],
#   qr/\bOK$/, qr/\bFOUND$/,
#   qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
# # NOTE: the easiest is to run clamd under the same user as amavisd; match the
# # socket name (LocalSocket) in clamav.conf to the socket name in this entry
# # When running chrooted one may prefer: ["CONTSCAN {}\n","$MYHOME/clamd"],
# 以下を追加
### http://www.clamav.net/
['ClamAV-clamd',
  \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"],
  qr/\bOK$/, qr/\bFOUND$/,
  qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
4. amavisd-new の起動と自動起動設定
1 ) amavisd-new 起動
[root@linux ~]# service amavisd start 
Starting Mail Virus Scanner (amavisd):                     [  OK  ]
2 ) amavisd-new 自動起動設定
[root@linux ~]# chkconfig amavisd on 
[root@linux ~]# chkconfig --list amavisd 
amavisd         0:off   1:off   2:on    3:on    4:on    5:on    6:off
5. Postfix の設定
1 ) Postfix 設定ファイル /etc/postfix/master.cf の編集
[root@linux ~]# 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_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 mynetworks_style=host
    -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
2 ) Postfix 設定ファイル /etc/postfix/main.cf の編集
[root@linux ~]# vi /etc/postfix/main.cf 

  :
  :
# 以下を最終行へ追加
# amavisd-newと連携するようにする
content_filter=smtp-amavis:[127.0.0.1]:10024
6. Postfix の再起動
[root@linux ~]# service postfix reload 
postfix を再読み込み中:                                    [  OK  ]
7. 動作確認
1 ) amavisd-new 動作確認
自分宛にメールを送信してみて、受信したメールのヘッダに以下の行があることを確認します。

X-Virus-Scanned: amavisd-new at mountainbigroad.jp
2 ) ウィルスチェック動作確認
テスト用のウィルスをダウンロードします。
[root@linux ~]# wget http://www.eicar.org/download/eicar.com 
[root@linux ~]# wget http://www.eicar.org/download/eicar.com.txt 
[root@linux ~]# wget http://www.eicar.org/download/eicar_com.zip 
[root@linux ~]# wget http://www.eicar.org/download/eicarcom2.zip 
自分宛に送信し、メールが配送されないことを確認します。
[root@linux ~]# sendmail -i centos@mountainbigroad.jp < eicar.com 
[root@linux ~]# sendmail -i centos@mountainbigroad.jp < eicar.com.txt 
[root@linux ~]# sendmail -i centos@mountainbigroad.jp < eicar_com.zip 
[root@linux ~]# sendmail -i centos@mountainbigroad.jp < eicarcom2.zip 
ダウンロードしたテスト用ウィルスを削除しておきます。
[root@linux ~]# rm -f eicar* 
3 ) スパムチェック動作確認
テスト用のスパムメールを自分宛に送信し、受信したメールの表題が『**** SPAM ****』となることを確認します。
[root@linux ~]# echo "XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X" | mail 
centos@mountainbigroad.jp