ウイルスメールやスパムメール対策をしよう!
プロバイダや携帯電話などのメールアドレスは、ウィルスやスパム対策が取られていることがあります。中にはオプションで有料だったりしますが、申し込めばあとは勝手にやってくれます。設定が必要な場合も簡単に設定できたりします。
しかし、自分で構築したサーバの場合、これらの作業を自分で行う必要があります。
ここでは、メールのウィルス、スパム対策について掲載しています。
amavisd-newのインストール
amavisd-newは公式のリポジトリにないので、EPELリポジトリを使ってインストールします。
EPELリポジトリの設定をしていない方は初期設定ページをご覧ください。
[root@co ~]# yum -y --enablerepo=epel install amavisd-new
Loaded plugins: downloadonly, fastestmirror, security
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* epel: ftp.iij.ad.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
base | 1.1 kB 00:00
epel | 3.6 kB 00:00
epel/primary_db | 3.8 MB 00:26
extras | 2.1 kB 00:00
updates | 1.9 kB 00:00
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package amavisd-new.noarch 0:2.4.5-1.el5 set to be updated
--> Processing Dependency: perl(Unix::Syslog) for package: amavisd-new
--> Processing Dependency: perl(Razor2::Client::Version) for package: amavisd-new
--> Processing Dependency: perl(Net::LDAP) for package: amavisd-new
--> Processing Dependency: perl(Mail::SpamAssassin) for package: amavisd-new
--> Processing Dependency: perl(Mail::SPF::Query) for package: amavisd-new
--> Processing Dependency: perl(MIME::Words) for package: amavisd-new
--> Processing Dependency: perl(MIME::Parser) for package: amavisd-new
--> Processing Dependency: perl(MIME::Head) for package: amavisd-new
--> Processing Dependency: perl(MIME::Entity) for package: amavisd-new
--> Processing Dependency: perl(MIME::Decoder::UU) for package: amavisd-new
--> Processing Dependency: perl(MIME::Decoder::QuotedPrint) for package: amavisd-new
--> Processing Dependency: perl(MIME::Decoder::NBit) for package: amavisd-new
--> Processing Dependency: perl(MIME::Decoder::Gzip64) for package: amavisd-new
--> Processing Dependency: perl(MIME::Decoder::Binary) for package: amavisd-new
--> Processing Dependency: perl(MIME::Decoder::Base64) for package: amavisd-new
--> Processing Dependency: perl(MIME::Body) for package: amavisd-new
--> Processing Dependency: perl(IO::Stringy) for package: amavisd-new
--> Processing Dependency: perl(DBD::SQLite) for package: amavisd-new
--> Processing Dependency: perl(Convert::UUlib) for package: amavisd-new
--> Processing Dependency: perl(Convert::TNEF) for package: amavisd-new
--> Processing Dependency: perl(BerkeleyDB) for package: amavisd-new
--> Processing Dependency: perl(Authen::SASL) for package: amavisd-new
--> Processing Dependency: perl(Archive::Zip) for package: amavisd-new
--> Processing Dependency: perl(Archive::Tar) for package: amavisd-new
--> Processing Dependency: nomarch for package: amavisd-new
--> Processing Dependency: lzop for package: amavisd-new
--> Processing Dependency: freeze for package: amavisd-new
--> Processing Dependency: cabextract for package: amavisd-new
--> Processing Dependency: arj for package: amavisd-new
--> Running transaction check
---> Package arj.x86_64 0:3.10.22-6.el5 set to be updated
---> Package cabextract.x86_64 0:1.3-1.el5 set to be updated
--> Processing Dependency: libmspack.so.0()(64bit) for package: cabextract
---> Package freeze.x86_64 0:2.5.0-9.el5 set to be updated
---> Package lzop.x86_64 0:1.03-2.el5 set to be updated
--> Processing Dependency: liblzo2.so.2()(64bit) for package: lzop
---> Package nomarch.x86_64 0:1.4-2.el5 set to be updated
---> Package perl-Archive-Tar.noarch 1:1.39.1-1.el5_5.2 set to be updated
--> Processing Dependency: perl(IO::Zlib) for package: perl-Archive-Tar
---> Package perl-Archive-Zip.noarch 0:1.16-1.2.1 set to be updated
---> Package perl-Authen-SASL.noarch 0:2.10-1.el5.1 set to be updated
--> Processing Dependency: perl(GSSAPI) for package: perl-Authen-SASL
---> Package perl-BerkeleyDB.x86_64 0:0.32-1.el5 set to be updated
---> Package perl-Convert-TNEF.noarch 0:0.17-7.el5 set to be updated
---> Package perl-Convert-UUlib.x86_64 2:1.4-1.el5 set to be updated
---> Package perl-DBD-SQLite.x86_64 0:1.14-3.el5 set to be updated
---> Package perl-IO-stringy.noarch 0:2.110-5.el5 set to be updated
---> Package perl-LDAP.noarch 1:0.33-4.el5_8 set to be updated
---> Package perl-MIME-tools.noarch 0:5.420-3.el5 set to be updated
--> Processing Dependency: perl(Convert::BinHex) for package: perl-MIME-tools
---> Package perl-Mail-SPF-Query.noarch 0:1.999.1-3.el5 set to be updated
--> Processing Dependency: perl(Net::CIDR::Lite) for package: perl-Mail-SPF-Query
---> Package perl-Razor-Agent.x86_64 0:2.85-1.el5 set to be updated
---> Package perl-Unix-Syslog.x86_64 0:0.100-9.el5.1 set to be updated
---> Package spamassassin.x86_64 0:3.3.1-2.el5 set to be updated
--> Processing Dependency: perl(NetAddr::IP) >= 4.000 for package: spamassassin
--> Running transaction check
---> Package libmspack.x86_64 0:0.2-0.1.20100723alpha.el5 set to be updated
---> Package lzo.x86_64 0:2.02-2.el5.1 set to be updated
---> Package perl-Convert-BinHex.noarch 0:1.119-5.el5 set to be updated
---> Package perl-GSSAPI.x86_64 0:0.24-2.el5 set to be updated
---> Package perl-IO-Zlib.noarch 0:1.04-4.2.1 set to be updated
---> Package perl-Net-CIDR-Lite.noarch 0:0.20-2.1.el5 set to be updated
---> Package perl-NetAddr-IP.x86_64 0:4.027-5.el5_6 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository
Size
================================================================================
Installing:
amavisd-new noarch 2.4.5-1.el5 epel 608 k
Installing for dependencies:
arj x86_64 3.10.22-6.el5 epel 180 k
cabextract x86_64 1.3-1.el5 epel 40 k
freeze x86_64 2.5.0-9.el5 epel 27 k
libmspack x86_64 0.2-0.1.20100723alpha.el5 epel 50 k
lzo x86_64 2.02-2.el5.1 epel 57 k
lzop x86_64 1.03-2.el5 epel 52 k
nomarch x86_64 1.4-2.el5 epel 17 k
perl-Archive-Tar noarch 1:1.39.1-1.el5_5.2 base 53 k
perl-Archive-Zip noarch 1.16-1.2.1 base 138 k
perl-Authen-SASL noarch 2.10-1.el5.1 epel 40 k
perl-BerkeleyDB x86_64 0.32-1.el5 epel 149 k
perl-Convert-BinHex noarch 1.119-5.el5 epel 47 k
perl-Convert-TNEF noarch 0.17-7.el5 epel 19 k
perl-Convert-UUlib x86_64 2:1.4-1.el5 epel 231 k
perl-DBD-SQLite x86_64 1.14-3.el5 epel 277 k
perl-GSSAPI x86_64 0.24-2.el5 epel 69 k
perl-IO-Zlib noarch 1.04-4.2.1 base 15 k
perl-IO-stringy noarch 2.110-5.el5 epel 70 k
perl-LDAP noarch 1:0.33-4.el5_8 base 313 k
perl-MIME-tools noarch 5.420-3.el5 epel 285 k
perl-Mail-SPF-Query noarch 1.999.1-3.el5 epel 58 k
perl-Net-CIDR-Lite noarch 0.20-2.1.el5 epel 24 k
perl-NetAddr-IP x86_64 4.027-5.el5_6 base 109 k
perl-Razor-Agent x86_64 2.85-1.el5 epel 123 k
perl-Unix-Syslog x86_64 0.100-9.el5.1 epel 28 k
spamassassin x86_64 3.3.1-2.el5 base 1.1 M
Transaction Summary
================================================================================
Install 27 Package(s)
Upgrade 0 Package(s)
Total download size: 4.1 M
Downloading Packages:
(1/27): perl-IO-Zlib-1.04-4.2.1.noarch.rpm | 15 kB 00:00
(2/27): nomarch-1.4-2.el5.x86_64.rpm | 17 kB 00:00
(3/27): perl-Convert-TNEF-0.17-7.el5.noarch.rpm | 19 kB 00:00
(4/27): perl-Net-CIDR-Lite-0.20-2.1.el5.noarch.rpm | 24 kB 00:00
(5/27): freeze-2.5.0-9.el5.x86_64.rpm | 27 kB 00:00
(6/27): perl-Unix-Syslog-0.100-9.el5.1.x86_64.rpm | 28 kB 00:00
(7/27): cabextract-1.3-1.el5.x86_64.rpm | 40 kB 00:00
(8/27): perl-Authen-SASL-2.10-1.el5.1.noarch.rpm | 40 kB 00:00
(9/27): perl-Convert-BinHex-1.119-5.el5.noarch.rpm | 47 kB 00:00
(10/27): libmspack-0.2-0.1.20100723alpha.el5.x86_64.rpm | 50 kB 00:00
(11/27): lzop-1.03-2.el5.x86_64.rpm | 52 kB 00:00
(12/27): perl-Archive-Tar-1.39.1-1.el5_5.2.noarch.rpm | 53 kB 00:00
(13/27): lzo-2.02-2.el5.1.x86_64.rpm | 57 kB 00:00
(14/27): perl-Mail-SPF-Query-1.999.1-3.el5.noarch.rpm | 58 kB 00:00
(15/27): perl-GSSAPI-0.24-2.el5.x86_64.rpm | 69 kB 00:00
(16/27): perl-IO-stringy-2.110-5.el5.noarch.rpm | 70 kB 00:00
(17/27): perl-NetAddr-IP-4.027-5.el5_6.x86_64.rpm | 109 kB 00:00
(18/27): perl-Razor-Agent-2.85-1.el5.x86_64.rpm | 123 kB 00:00
(19/27): perl-Archive-Zip-1.16-1.2.1.noarch.rpm | 138 kB 00:00
(20/27): perl-BerkeleyDB-0.32-1.el5.x86_64.rpm | 149 kB 00:00
(21/27): arj-3.10.22-6.el5.x86_64.rpm | 180 kB 00:01
(22/27): perl-Convert-UUlib-1.4-1.el5.x86_64.rpm | 231 kB 00:01
(23/27): perl-DBD-SQLite-1.14-3.el5.x86_64.rpm | 277 kB 00:01
(24/27): perl-MIME-tools-5.420-3.el5.noarch.rpm | 285 kB 00:01
(25/27): perl-LDAP-0.33-4.el5_8.noarch.rpm | 313 kB 00:02
(26/27): amavisd-new-2.4.5-1.el5.noarch.rpm | 608 kB 00:05
(27/27): spamassassin-3.3.1-2.el5.x86_64.rpm | 1.1 MB 00:09
--------------------------------------------------------------------------------
Total 91 kB/s | 4.1 MB 00:46
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : perl-IO-stringy 1/27
Installing : libmspack 2/27
Installing : cabextract 3/27
Installing : nomarch 4/27
Installing : perl-GSSAPI 5/27
Installing : lzo 6/27
Installing : lzop 7/27
Installing : perl-BerkeleyDB 8/27
Installing : freeze 9/27
Installing : arj 10/27
Installing : perl-Convert-UUlib 11/27
Installing : perl-Unix-Syslog 12/27
Installing : perl-NetAddr-IP 13/27
Installing : perl-Razor-Agent 14/27
Installing : perl-DBD-SQLite 15/27
Installing : perl-IO-Zlib 16/27
Installing : perl-Archive-Tar 17/27
Installing : spamassassin 18/27
Installing : perl-Authen-SASL 19/27
Installing : perl-Convert-BinHex 20/27
Installing : perl-MIME-tools 21/27
Installing : perl-Convert-TNEF 22/27
Installing : perl-Net-CIDR-Lite 23/27
Installing : perl-Mail-SPF-Query 24/27
Installing : perl-LDAP 25/27
Installing : perl-Archive-Zip 26/27
Installing : amavisd-new 27/27
Installed:
amavisd-new.noarch 0:2.4.5-1.el5
Dependency Installed:
arj.x86_64 0:3.10.22-6.el5
cabextract.x86_64 0:1.3-1.el5
freeze.x86_64 0:2.5.0-9.el5
libmspack.x86_64 0:0.2-0.1.20100723alpha.el5
lzo.x86_64 0:2.02-2.el5.1
lzop.x86_64 0:1.03-2.el5
nomarch.x86_64 0:1.4-2.el5
perl-Archive-Tar.noarch 1:1.39.1-1.el5_5.2
perl-Archive-Zip.noarch 0:1.16-1.2.1
perl-Authen-SASL.noarch 0:2.10-1.el5.1
perl-BerkeleyDB.x86_64 0:0.32-1.el5
perl-Convert-BinHex.noarch 0:1.119-5.el5
perl-Convert-TNEF.noarch 0:0.17-7.el5
perl-Convert-UUlib.x86_64 2:1.4-1.el5
perl-DBD-SQLite.x86_64 0:1.14-3.el5
perl-GSSAPI.x86_64 0:0.24-2.el5
perl-IO-Zlib.noarch 0:1.04-4.2.1
perl-IO-stringy.noarch 0:2.110-5.el5
perl-LDAP.noarch 1:0.33-4.el5_8
perl-MIME-tools.noarch 0:5.420-3.el5
perl-Mail-SPF-Query.noarch 0:1.999.1-3.el5
perl-Net-CIDR-Lite.noarch 0:0.20-2.1.el5
perl-NetAddr-IP.x86_64 0:4.027-5.el5_6
perl-Razor-Agent.x86_64 0:2.85-1.el5
perl-Unix-Syslog.x86_64 0:0.100-9.el5.1
spamassassin.x86_64 0:3.3.1-2.el5
Complete!
amavisd-newの設定
設定ファイルを以下のように編集します。
[root@co ~]# vi /etc/amavisd/amavisd.conf
# COMMONLY ADJUSTED SETTINGS:
$undecipherable_subject_tag = ''; (追記)
# @bypass_spam_checks_maps = (1);
↓
@bypass_spam_checks_maps = (1); (スパムチェックを行わない)
$mydomain = 'example.com';
↓
$mydomain = 'kimamabi.mydns.jp';
# ### http://www.clamav.net/
['ClamAV-clamd',
\&ask_daemon, ["CONTSCAN {}\n", "/var/spool/amavisd/clamd.sock"],
↓
\&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"], (Clam AntiVirusのソケットに合わせる)
amavisd-newの起動
[root@co ~]# /etc/rc.d/init.d/amavisd start
amavisd を起動中: [ OK ]
[root@co ~]# chkconfig amavisd on
[root@co ~]# chkconfig --list amavisd
amavisd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Postfixの設定
Postfixの設定ファイル(main)の最後尾に以下を追記します。
[root@co ~]# vi /etc/postfix/main.cf
content_filter=smtp-amavis:[127.0.0.1]:10024
続いて、Postfixの設定ファイル(master)の最後尾に以下を追記します。
[root@co ~]# 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
Postfixの再起動
設定ファイルを反映するため、Postfixを再起動します。
[root@co ~]# /etc/init.d/postfix restart
postfix を停止中: [ OK ]
postfix を起動中: [ OK ]
スパムメール対策
SpamAssassinとProcmailを使ってスパムペール対策を行います。
SpamAssassinの起動
SpamAssassinはamavisd-newと一緒にインストールされています。
[root@co ~]# /etc/rc.d/init.d/spamassassin start
spamd を起動中: [ OK ]
[root@co ~]# chkconfig spamassassin on
[root@co ~]# chkconfig --list spamassassin
spamassassin 0:off 1:off 2:on 3:on 4:on 5:on 6:off
SpamAssassinの設定
SpamAssassinは初期状態だと日本語のスパムメールに対応していないので、Web上で公開されている日本語対応の設定ファイルを使って、日本語に対応させます。
[root@co ~]# vi /etc/mail/spamassassin/v310.pre
# TextCat - language guesser
#
#loadplugin Mail::SpamAssassin::Plugin::TextCat
↓
loadplugin Mail::SpamAssassin::Plugin::TextCat (TextCatプラグインを有効化)
設定ファイルの更新スクリプトはCentOSで自宅サーバー構築様のものを使わせて頂きます。
[root@co ~]# vi /etc/cron.daily/spamassassin-update
#!/bin/bash
# SpamAssassin設定ファイル最新版ダウンロード
cd /etc/mail/spamassassin
wget -qN http://www.flcl.org/~yoh/user_prefs
# 設定ファイル更新時のみSpamAssassin再起動
diff user_prefs user_prefs.org > /dev/null 2>&1
if [ $? -ne 0 ]; then
cp user_prefs local.cf
# スパム判断したメールを添付形式にしないように設定
echo "report_safe 0" >> local.cf
# スパム判断したメールの件名に「***SPAM***」を付加するように設定 (受信メールサーバーがPOPの場合のみ)
#echo "rewrite_header Subject ***SPAM***" >> local.cf
# SpamAssassin再起動
/etc/rc.d/init.d/spamassassin restart > /dev/null
fi
cp user_prefs user_prefs.org
スクリプトを実行します。
[root@co ~]# chmod +x /etc/cron.daily/spamassassin-update
[root@co ~]# /etc/cron.daily/spamassassin-update
[root@co ~]# ll /etc/mail/spamassassin
合計 1364
-rw-r--r-- 1 root root 1299 7月 22 2011 init.pre
-rw-r--r-- 1 root root 449504 7月 16 09:54 local.cf
-rw-r--r-- 1 root root 62 7月 22 2011 spamassassin-default.rc
-rwxr-xr-x 1 root root 35 7月 22 2011 spamassassin-helper.sh
-rw-r--r-- 1 root root 55 7月 22 2011 spamassassin-spamc.rc
-rw-r--r-- 1 root root 449490 7月 4 08:00 user_prefs
-rw-r--r-- 1 root root 449490 7月 16 09:54 user_prefs.org
-rw-r--r-- 1 root root 2523 7月 16 09:54 v310.pre
-rw-r--r-- 1 root root 1194 7月 22 2011 v312.pre
-rw-r--r-- 1 root root 2416 7月 22 2011 v320.pre
-rw-r--r-- 1 root root 1237 7月 22 2011 v330.pre
local.cfがあることを確認します。
cronの設定
SpamAssassinのルールを自動更新するcronを有効にします。
[root@co ~]# vi /etc/cron.d/sa-update
#10 4 * * * root /usr/share/spamassassin/sa-update.cron 2>&1 | tee -a /var/log/sa-update.log
↓
10 4 * * * root /usr/share/spamassassin/sa-update.cron 2>&1 | tee -a /var/log/sa-update.log
Postfixの設定
Postfixの設定ファイル(main)を編集します。
[root@co ~]# vi /etc/postfix/main.cf
#mailbox_command = /some/where/procmail
↓
mailbox_command = /usr/bin/procmail
Procmailの設定
スクリプトはCentOSで自宅サーバー構築様のものを使わせて頂きます。
[root@co ~]# vi /etc/procmailrc
SHELL=/bin/bash
PATH=/usr/bin:/bin
DROPPRIVS=yes
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
SPAM=$MAILDIR/.Spam/
LOGFILE=$MAILDIR/.procmail.log # ログ出力先
#VERBOSE=ON # 詳細ログ出力
# SpamAssassinによるスパムチェック
:0fw
|/usr/bin/spamc
# SpamAssassinにより判定されたSpam-Levelが一定値(ここでは20)以上の場合は削除
# ※必要なメールが削除されてしまう可能性があることに留意すること
:0
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
/dev/null
# (IMAPの場合のみ)SpamAssassinがスパム判定したメールはスパム専用メールボックスへ配送
:0
*^X-Spam-Flag: YES
$SPAM
ログローテーションの設定をします。
[root@co ~]# vi /etc/logrotate.d/procmail
/home/*/Maildir/.procmail.log {
missingok
nocreate
notifempty
}
Postfixの再起動
設定ファイルを反映するため、Postfixを再起動します。
[root@co ~]# /etc/init.d/postfix restart
postfix を停止中: [ OK ]
postfix を起動中: [ OK ]
[root@co ~]# vi /etc/cron.daily/spamassassin-learn
#!/bin/bash
PATH=/usr/sbin:/usr/bin:/bin
for user in `ls /home/`
do
# 正常メール
hammail=/home/$user/Maildir/cur
# 正常メール学習
if [ -d "$hammail" ]; then
# 正常メールをSpamAssassinに学習させる
su $user -s "/bin/bash" -c "sa-learn --ham $hammail | \
logger -p mail.info -t 'sa-learn for $user'"
fi
# スパムメール
spammail=/home/$user/Maildir/.Spam/cur
# スパムメール学習
if [ -d "$spammail" ]; then
# スパムメールをSpamAssassinに学習させる
su $user -s "/bin/bash" -c "sa-learn --spam $spammail | \
logger -p mail.info -t 'sa-learn for $user'"
# 受信後一ヶ月経過したスパムメールを削除
tmpwatch -m 720 $spammail
fi
done
[root@co ~]# chmod 700 /etc/cron.daily/spamassassin-learn
スパムメールの受信テスト
testユーザ宛にテストスパムメールを送り、動作を確かめます。
[root@co ~]# echo "XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X"|mail test
スパムメールとして振り分けられているかを確認します。
今回新しく登場したコマンド
[広告]

トップページ
Rocky Linux 8
CentOS 7
Scientific Linux 6
CentOS 5
○準備
○VMware Player
○Hyper-V(Win Proのみ)
○導入
○セキュリティ対策
○Dynamic DNS
○NTPサーバ
○データベース
○WEBサーバ
○FTPサーバ
○メールサーバ
○DNSサーバ
○ファイルサーバ
○ブログシステム
○その他
ブログ
[広告]