POSTFIX: ФИЛЬТРАЦИЯ ВИРУСОВ И СПАМА


СОДЕРЖАНИЕ
" Введение
" Установка и настройка сlamav
" Установка и настройка clamsmtp
" Установка и настройка spamassassin
" Установка и настройка postfix
" Тестирование
ПРИМЕЧАНИЕ
При размещении данного материала у себя на сайте, просьба указывать ссылку на оригинальный сайт - www.sys-adm.org.ua.
ВВЕДЕНИЕ
После первоначальной настройки МТА возникает необходимость проверки почты на вирусы и спам. Что делать в этом случае? Как "подружить" MTA + antivirus + antispam? В интернете написано очень много статей на эту тему. Пожалуй, наиболее распространенное решение данной задачи - использование amavisd.
Но так как данный продукт написан на perl, то он требователен к ресурсам машины. Кроме того, для его установки требуется много модулей perl, которые отсутствуют в официальном репозитарии CentOS.
Я предлагаю альтернативное решение данной задачи. А именно использование clamav(clamsmtp) + spamassassin.
Итак, у нас имеется следующая система:
# uname -r
2.6.18-53.1.4.el5

# cat /etc/redhat-release
CentOS release 5 (Final)
УСТАНОВКА И НАСТРОЙКА СLAMAV
К сожалению, данный пакет отсутствует в официальном репозитарии RHEL/CentOS. Так что вам придется либо устанавливать с других репозитариев, либо собрать rpm пакеты из src.rpm
УСТАНОВКА ПО НА FREEBSD
Пользователям FreeBSD в этом плане повезло. Все пакеты, устанавливаемые в этой статье присутствуют в системе портов. Для установки clamav:
# cd /usr/ports/security/clamav/
# make install clean
Для установки clamsmtp:
# cd /usr/ports/security/clamsmtp
# make install clean
Для установки spamassassin:
# cd /usr/ports/mail/p5-Mail-SpamAssassin
# make config
# make install clean
Для установки postfix:
# cd /usr/ports/mail/postfix
# make config
# make install clean
Если вы решили собирать из src.rpm, то советую воспользоваться известным репозитарием dag.wieers.com
# rpm -ivh http://dag.wieers.com/rpm/packages/clamav/clamav-0.92-1.rf.src.rpm
# cd /usr/src/redhat/SPECS
# rpmbuild -ba --target=i686 --without milter clamav.spec
Building target platforms: i686
Building for target i686
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.25367
+ umask 022
...
...
...
Wrote: /usr/src/redhat/SRPMS/clamav-0.92-1.src.rpm
Wrote: /usr/src/redhat/RPMS/i686/clamav-0.92-1.i686.rpm
Wrote: /usr/src/redhat/RPMS/i686/clamd-0.92-1.i686.rpm
Wrote: /usr/src/redhat/RPMS/i686/clamav-db-0.92-1.i686.rpm
Wrote: /usr/src/redhat/RPMS/i686/clamav-devel-0.92-1.i686.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.99381
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd clamav-0.92
+ /bin/rm -rf /var/tmp/clamav-0.92-1-root
+ exit 0
После успешной сборки устанавливаем пакеты.
# cd /usr/src/redhat/RPMS/i686/
# rpm -ivh clamav-0.92-1.i686.rpm clamav-db-0.92-1.i686.rpm clamd-0.92-1.i686.rpm
Preparing... ########################################### [100%]
1:clamav-db ########################################### [ 33%]
2:clamav ########################################### [ 67%]
3:clamd ########################################### [100%]
Настраиваем clamav, для этого редактируем конфигурационный файл /etc/clamd.conf. Все параметры я оставил без изменений, кроме LocalSocket. На всякий случай привожу все содержимое clamd.conf.
# cat /etc/clamd.conf | grep -v ^# | grep -v ^$
LogFile /var/log/clamav/clamd.log
LogFileMaxSize 0
LogTime yes
LogSyslog yes
PidFile /var/run/clamav/clamd.pid
TemporaryDirectory /var/tmp
DatabaseDirectory /var/clamav
LocalSocket /var/run/clamav/clamd.sock
FixStaleSocket yes
TCPSocket 3310
TCPAddr 127.0.0.1
MaxConnectionQueueLength 30
MaxThreads 50
ReadTimeout 300
User clamav
AllowSupplementaryGroups yes
ScanPE yes
ScanELF yes
DetectBrokenExecutables yes
ScanOLE2 yes
ScanMail yes
ScanArchive yes
ArchiveMaxCompressionRatio 300
ArchiveBlockEncrypted no
ArchiveBlockMax no
После этого настраиваем запуск clamav при старте системы и запускаем сам демон.
# chkconfig --level 35 clamd on
# service clamd start
Starting Clam AntiVirus Daemon: [ OK ]
При этом в логах должно быть примерно следующее:
# cat /var/log/clamav/clamd.log
Sun Jan 20 15:23:12 2008 -> +++ Started at Sun Jan 20 15:23:12 2008
Sun Jan 20 15:23:12 2008 -> clamd daemon 0.92 (OS: linux-gnu, ARCH: i386, CPU: i686)
Sun Jan 20 15:23:12 2008 -> Running as user clamav (UID 100, GID 101)
Sun Jan 20 15:23:12 2008 -> Log file size limit disabled.
Sun Jan 20 15:23:12 2008 -> Reading databases from /var/clamav
Sun Jan 20 15:23:12 2008 -> Not loading PUA signatures.
Sun Jan 20 15:23:20 2008 -> Loaded 356802 signatures.
Sun Jan 20 15:23:20 2008 -> Bound to address 127.0.0.1 on tcp port 3310
Sun Jan 20 15:23:20 2008 -> Setting connection queue length to 30
Sun Jan 20 15:23:20 2008 -> Unix socket file /var/run/clamav/clamd.sock
Sun Jan 20 15:23:20 2008 -> Setting connection queue length to 30
Sun Jan 20 15:23:20 2008 -> Archive: Archived file size limit set to 10485760 bytes.
Sun Jan 20 15:23:20 2008 -> Archive: Recursion level limit set to 8.
Sun Jan 20 15:23:20 2008 -> Archive: Files limit set to 1000.
Sun Jan 20 15:23:20 2008 -> Archive: Compression ratio limit set to 300.
Sun Jan 20 15:23:20 2008 -> Archive support enabled.
Sun Jan 20 15:23:20 2008 -> Algorithmic detection enabled.
Sun Jan 20 15:23:20 2008 -> Portable Executable support enabled.
Sun Jan 20 15:23:20 2008 -> ELF support enabled.
Sun Jan 20 15:23:20 2008 -> Detection of broken executables enabled.
Sun Jan 20 15:23:20 2008 -> Mail files support enabled.
Sun Jan 20 15:23:20 2008 -> Mail: Recursion level limit set to 64.
Sun Jan 20 15:23:20 2008 -> OLE2 support enabled.
Sun Jan 20 15:23:20 2008 -> PDF support disabled.
Sun Jan 20 15:23:20 2008 -> HTML support enabled.
Sun Jan 20 15:23:20 2008 -> Self checking every 1800 seconds.
После того, как сам антивирус успешно запустился нам необходимо обновить сами антивирусные базы данных. Для этого существует специальная программа freshclam, которая идет вместе с clamav. Для ее настройки необходимо отредактировать конфигурационный файл /etc/freshclam.conf.
По сути, в нем ничего не надо менять, единственное, что я поменял - зеркало (DatabaseMirror) с которого обновлять базы, так как были проблемы с украинскими зеркалами и периодичность обновлений (Checks) - каждый час (по умолчанию каждые два часа)
# cat /etc/freshclam.conf | grep -v ^# | grep -v ^$
DatabaseDirectory /var/clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogSyslog yes
DatabaseOwner clamav
DatabaseMirror db.ru.clamav.net
DatabaseMirror db.local.clamav.net
Checks 24
NotifyClamd /etc/clamd.conf
После этого запускаем freshclam:
# freshclam
ClamAV update process started at Fri Jan 18 15:39:58 2008
main.inc is up to date (version: 45, sigs: 169676, f-level: 21, builder: sven)
Downloading daily.cvd [100%]
daily.inc updated (version: 5519, sigs: 24841, f-level: 21, builder: ccordes)
Database updated (194517 signatures) from db.ru.clamav.net (IP: 62.181.41.8)
Clamd successfully notified about the update.
УСТАНОВКА И НАСТРОЙКА СLAMSMTP
clamsmtp представляет из себя smtp фильтр, который служит для "связки" МТА и clamav. В результате такого объединения вся почта будет проверяться на вирусы.
# rpm -ivh http://www.sys-adm.org.ua/srpms/clamsmtp-1.9-1.src.rpm
# cd /usr/src/redhat/SPECS
# rpmbuild -ba --target=i686 clamsmtp.spec
Building target platforms: i686
Building for target i686
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.20999
+ umask 022
...
...
...
Wrote: /usr/src/redhat/SRPMS/clamsmtp-1.9-1.src.rpm
Wrote: /usr/src/redhat/RPMS/i686/clamsmtp-1.9-1.i686.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.27982
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd clamsmtp-1.9
+ /bin/rm -rf /var/tmp/clamsmtp-1.9-root
+ exit 0
После успешной сборки устанавливаем clamsmtp.
# rpm -ivh clamsmtp-1.9-1.i686.rpm
Preparing... ########################################### [100%]
1:clamsmtp ########################################### [100%]
Для настройки clamsmtp необходимо отредактировать его конфигурационный файл /etc/clamsmtpd.conf. В результате у вас должен получиться примерно такой файл:
# cat /etc/clamsmtpd.conf | grep -v ^# | grep -v ^$
OutAddress: 10026
Listen: 127.0.0.1:10025
ClamAddress: /var/run/clamav/clamd.sock
Header: X-Virus-Scanned: ClamAV using ClamSMTP
TempDirectory: /tmp
Action: drop
Quarantine: on
User: clamav
После этого настраиваем запуск clamsmtp при старте системы и запускаем сам демон.
# chkconfig --level 35 clamsmtpd on
# service clamsmtpd start
Starting ClamSmtpd: [ OK ]
Если все прошло успешно, то порт 10025 должен быть в состоянии LISTEN.
# netstat -an | grep :10025
tcp 0 0 0.0.0.0:10025 0.0.0.0:* LISTEN
УСТАНОВКА И НАСТРОЙКА SPAMASSASSIN
spamassassin пожалуй одно из наиболее распространенных ПО для борьбы со спамом. А точнее определения спама. Данный продукт присутствует в официальном репозитарии, так что для его установки воспользуемся утилитой yum.
# yum install spamassassin
После установки, производим настройку spamassassin. Для этого редактируем файл /etc/mail/spamassassin/local.cf.
# cat /etc/mail/spamassassin/local.cf | grep -v ^# | grep -v ^$
rewrite_header Subject *****SPAM*****
report_safe 1
required_score 7.0
use_bayes 1
bayes_auto_learn 1
bayes_ignore_header X-Bogosity
bayes_ignore_header X-Spam-Flag
bayes_ignore_header X-Spam-Status
Я привел лишь минимальный набор параметров, необходимый для проверки нашей системы. Для получения полного списка всех параметров, а также описания их назначения выполните следующую команду
# perldoc Mail::SpamAssassin::Conf
После этого настраиваем запуск spamassassin при старте системы и запускаем сам демон.
# chkconfig --level 35 spamassassin on
# service spamassassin start
Starting spamd: [ OK ]
При этом в log-файле должны быть примерно такие записи:
Jan 20 15:52:22 centos5 spamd[20715]: spamd: server started on port 783/tcp (running version 3.2.3)
Jan 20 15:52:22 centos5 spamd[20715]: spamd: server pid: 20715
Jan 20 15:52:22 centos5 spamd[20715]: spamd: server successfully spawned child process, pid 20717
Jan 20 15:52:22 centos5 spamd[20715]: spamd: server successfully spawned child process, pid 20718
Jan 20 15:52:22 centos5 spamd[20715]: prefork: child states: IS
Jan 20 15:52:22 centos5 spamd[20715]: prefork: child states: II
На этом первоначальную настройку spamassassin можно считать завершенной.
УСТАНОВКА И НАСТРОЙКА POSTFIX
Устанавливаем postfix:
# yum install postfix
После этого редактируем основной конфигурационный файл /etc/postfix/main.cf.
# postconf -n
content_filter = scan:[127.0.0.1]:10025
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = vmware.local
myhostname = centos5.vmware.local
mynetworks = 127.0.0.0/8
myorigin = $mydomain
virtual_alias_maps = hash:/etc/postfix/virtual_alias
virtual_gid_maps = static:1981
virtual_mailbox_base = /var/spool/mail
virtual_mailbox_domains = vmware.local
virtual_mailbox_maps = hash:/etc/postfix/virtual_user
virtual_uid_maps = static:1981
Как и раньше, я привел лишь минимальный набор параметров, достаточный для проверки нашей системы. Файлы virtual_user и virtual_alias надо создать самому и заполнить примерно таким содержимым:
# cat virtual_alias
Domoradov.Alex@vmware.local alex@vmware.local

# cat virtual_user
alex@vmware.local vmware.local/alex@vmware.local/
После этого создаем сами базы и пользователя virtual:
# postmap virtual_user
# postmap virtual_alias
# groupadd -g 1981 virtual
# useradd virtual -s /bin/false -g virtual -u 1981
# chown virtual:virtual /var/spool/mail/
Теперь нам осталось лишь связать все компоненты нашей системы между собой. Так как мы отказались от использования amavisd-new, то нам придется редактировать файл /etc/postfix/master.cf. Вставьте следующие строки в самое начало файла, сразу после комментариев.
# cat /etc/postfix/master.cf
#
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
scan unix - - n - 16 smtp
-o smtp_send_xforward_command=yes
-o smtp_tls_security_level=none

127.0.0.1:10026 inet n - n - 16 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks_style=host
-o smtpd_authorized_xforward_hosts=127.0.0.0/8

smtp inet n - n - - smtpd
-o content_filter=spam:dummy

spam unix - n n - - pipe
flags=R user=virtual argv=/usr/bin/spamc -u virtual -e /usr/sbin/sendmail -f $sender $recipient
Теперь у нас все готово для проверки, запускаем postfix
# service postfix start
Starting postfix: [ OK ]
Смотрим log-файл
# cat /var/log/maillog
Jan 20 16:03:09 centos5 postfix/postfix-script: starting the Postfix mail system
Jan 20 16:03:09 centos5 postfix/master[20839]: daemon started -- version 2.3.3, configuration /etc/postfix
При этом у порта 10026 должно быть состояние LISTEN
# netstat -an | grep :10026
tcp 0 0 127.0.0.1:10026 0.0.0.0:* LISTEN
ТЕСТИРОВАНИЕ
Наконец то мы подошли к заключительному этапу - тестирования нашей системы. Для проверки работы нашей системы мы отправим три письма: первое будет чистым, второе содержать спам, а третье вирус.
Итак, начнем. Отправляем обычное письмо.
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 centos5.vmware.local ESMTP Postfix
helo localhost
250 centos5.vmware.local
mail from:<>
250 2.1.0 Ok
rcpt to:<alex@vmware.local>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Hello world!!!
.
250 2.0.0 Ok: queued as 682786003B
quit
221 2.0.0 Bye
Connection closed by foreign host.
# cat /var/log/maillog | grep 682786003B
Jan 20 16:27:13 centos5 postfix/smtpd[21549]: 682786003B: client=centos5.vmware.local[127.0.0.1]
Jan 20 16:27:18 centos5 postfix/cleanup[21552]: 682786003B: message-id=<20080120142713.682786003B@centos5.vmware.local>
Jan 20 16:27:18 centos5 postfix/qmgr[21355]: 682786003B: from=<>, size=362, nrcpt=1 (queue active)
Jan 20 16:27:18 centos5 spamd[20717]: spamd: processing message <20080120142713.682786003B@centos5.vmware.local> for virtual:1981
Jan 20 16:27:18 centos5 spamd[20717]: spamd: result: . 2 - ALL_TRUSTED, AWL, FH_FROMEML_NOTLD, MISSING_SUBJECT scantime=0.1, size=382, user=virtual, uid=1981, required_score=7.0, rhost=centos5.vmware.local, raddr=127.0.0.1, rport=4544, mid=<20080120142713.682786003B@centos5.vmware.local>, autolearn=no
Jan 20 16:27:18 centos5 postfix/cleanup[21552]: 594F56004D: message-id=<20080120142713.682786003B@centos5.vmware.local>
Jan 20 16:27:18 centos5 postfix/pipe[21554]: 682786003B: to=<alex@vmware.local>, relay=spam, delay=10, delays=10/0.02/0/0.18, dsn=2.0.0, status=sent (delivered via spam service)
Jan 20 16:27:18 centos5 postfix/qmgr[21355]: 682786003B: removed
Jan 20 16:27:18 centos5 postfix/cleanup[21552]: 75A676003B: message-id=<20080120142713.682786003B@centos5.vmware.local>
# cat /var/log/maillog | grep 75A676003B
Jan 20 16:27:18 centos5 postfix/smtpd[21560]: 75A676003B: client=centos5.vmware.local[127.0.0.1]
Jan 20 16:27:18 centos5 postfix/cleanup[21552]: 75A676003B: message-id=<20080120142713.682786003B@centos5.vmware.local>
Jan 20 16:27:18 centos5 postfix/qmgr[21355]: 75A676003B: from=<>, size=958, nrcpt=1 (queue active)
Jan 20 16:27:18 centos5 postfix/smtp[21558]: 594F56004D: to=<alex@vmware.local>, relay=127.0.0.1[127.0.0.1]:10025, delay=0.2, delays=0.03/0.02/0.07/0.08, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 75A676003B)
Jan 20 16:27:18 centos5 postfix/virtual[21562]: 75A676003B: to=<alex@vmware.local>, relay=virtual, delay=0.1, delays=0.06/0.03/0/0.01, dsn=2.0.0, status=sent (delivered to maildir)
Jan 20 16:27:18 centos5 postfix/qmgr[21355]: 75A676003B: removed
Из log-файл видно, что письмо доставлено пользователю. Давайте посмотрим на это письмо:
# cd /var/spool/mail/vmware.local/alex@vmware.local/new/
# cat 1200839238.Vfd00I60048M571836.centos5.vmware.local
Return-Path: <>
X-Original-To: alex@vmware.local
Delivered-To: alex@vmware.local
Received: from centos5.vmware.local (centos5.vmware.local [127.0.0.1])
by centos5.vmware.local (Postfix) with ESMTP id 75A676003B
for <alex@vmware.local>; Sun, 20 Jan 2008 16:27:18 +0200 (EET)
Received: by centos5.vmware.local (Postfix, from userid 1981)
id 594F56004D; Sun, 20 Jan 2008 16:27:18 +0200 (EET)
X-Spam-Checker-Version: SpamAssassin 3.2.3 (2007-08-08) on centos5.vmware.local
X-Spam-Level: **
X-Spam-Status: No, score=2.8 required=7.0 tests=ALL_TRUSTED,AWL,
FH_FROMEML_NOTLD,MISSING_SUBJECT autolearn=no version=3.2.3
Received: from localhost (centos5.vmware.local [127.0.0.1])
by centos5.vmware.local (Postfix) with SMTP id 682786003B
for <alex@vmware.local>; Sun, 20 Jan 2008 16:27:07 +0200 (EET)
Message-Id: <20080120142713.682786003B@centos5.vmware.local>
Date: Sun, 20 Jan 2008 16:27:07 +0200 (EET)
From: MAILER-DAEMON@vmware.local
To: undisclosed-recipients:;
X-Virus-Scanned: ClamAV using ClamSMTP

Hello world!!!
Как мы видим по заголовкам письма: X-Virus-Scanned: ClamAV using ClamSMTP и X-Spam-Checker-Version: SpamAssassin 3.2.3 письмо было проверенно антивирусом и антиспамом.
А теперь давайте отправим, письмо содержащее вирус. Чтобы не искать настоящий вирус, мы воспользуемся тестовой сигнатурой, разработанной как раз для целей тестирования.
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 centos5.vmware.local ESMTP Postfix
helo localhost
250 centos5.vmware.local
mail from:<>
250 2.1.0 Ok
rcpt to:<alex@vmware.local>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
X5O!P%@AP[4PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
.
250 2.0.0 Ok: queued as AFBA96003B
quit
221 2.0.0 Bye
Connection closed by foreign host.
# cat /var/log/maillog | grep AFBA96003B
Jan 20 16:31:57 centos5 postfix/smtpd[21605]: AFBA96003B: client=centos5.vmware.local[127.0.0.1]
Jan 20 16:33:13 centos5 postfix/cleanup[21607]: AFBA96003B: message-id=<20080120143157.AFBA96003B@centos5.vmware.local>
Jan 20 16:33:13 centos5 postfix/qmgr[21355]: AFBA96003B: from=<>, size=416, nrcpt=1 (queue active)
Jan 20 16:33:13 centos5 spamd[20717]: spamd: processing message <20080120143157.AFBA96003B@centos5.vmware.local> for virtual:1981
Jan 20 16:33:14 centos5 spamd[20717]: spamd: result: . 4 - ALL_TRUSTED, AWL, FH_FROMEML_NOTLD, MISSING_SUBJECT, TVD_SPACE_RATIO scantime=0.2, size=436, user=virtual, uid=1981, required_score=7.0, rhost=centos5.vmware.local, raddr=127.0.0.1, rport=1859, mid=<20080120143157.AFBA96003B@centos5.vmware.local>,autolearn=no
Jan 20 16:33:14 centos5 postfix/cleanup[21607]: 36BE66004D: message-id=<20080120143157.AFBA96003B@centos5.vmware.local>
Jan 20 16:33:14 centos5 postfix/pipe[21610]: AFBA96003B: to=<alex@vmware.local>, relay=spam, delay=83, delays=82/0.03/0/0.27, dsn=2.0.0, status=sent (delivered via spam service)
Jan 20 16:33:14 centos5 postfix/qmgr[21355]: AFBA96003B: removed
# cat /var/log/maillog | grep 36BE66004D
Jan 20 16:33:14 centos5 postfix/pickup[21354]: 36BE66004D: uid=1981 from=<MAILER-DAEMON>
Jan 20 16:33:14 centos5 postfix/cleanup[21607]: 36BE66004D: message-id=<20080120143157.AFBA96003B@centos5.vmware.local>
Jan 20 16:33:14 centos5 postfix/qmgr[21355]: 36BE66004D: from=<>, size=792, nrcpt=1 (queue active)
Jan 20 16:33:14 centos5 postfix/smtp[21614]: 36BE66004D: to=<alex@vmware.local>, relay=127.0.0.1[127.0.0.1]:10025, delay=0.14, delays=0.03/0.02/0.07/0.01, dsn=2.0.0, status=sent (250 Virus Detected; Discarded Email)
Jan 20 16:33:14 centos5 postfix/qmgr[21355]: 36BE66004D: removed
# cat /var/log/maillog | grep clamsmtpd
Jan 20 16:33:14 centos5 clamsmtpd: 100007: accepted connection from: 127.0.0.1
Jan 20 16:33:14 centos5 clamsmtpd: 100007: quarantined virus file as: /tmp/virus.gCu7XI
Jan 20 16:33:14 centos5 clamsmtpd: 100007: from=<>, to=alex@vmware.local, status=VIRUS:Eicar-Test-Signature
Как мы видим, письмо с вирусом было заблокировано и сохранено в карантине. В принципе можно настроить отправку уведомления пользователю с помощью параметра VirusAction, который задается в файле /etc/clamsmtpd.conf. Но это уже на любителя.
Ну и осталась последняя проверка. Отправим сигнатуру спама.
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 centos5.vmware.local ESMTP Postfix
helo localhost
250 centos5.vmware.local
mail from:<>
250 2.1.0 Ok
rcpt to:<alex@vmware.local>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Subject: Relax, be happy
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
250 2.0.0 Ok: queued as 406E060047
quit
221 2.0.0 Bye
Connection closed by foreign host.
# cat maillog | grep 406E060047
Jan 22 13:47:09 centos5 postfix/smtpd[2618]: 406E060047: client=centos5.vmware.local[127.0.0.1]
Jan 22 13:47:32 centos5 postfix/cleanup[2620]: 406E060047: message-id=<20080122114709.406E060047@centos5.vmware.local>
Jan 22 13:47:32 centos5 postfix/qmgr[2226]: 406E060047: from=<>, size=442, nrcpt=1 (queue active)
Jan 22 13:47:32 centos5 spamd[2612]: spamd: processing message <20080122114709.406E060047@centos5.vmware.local> for virtual:1981
Jan 22 13:47:33 centos5 spamd[2612]: spamd: result: Y 1002 - ALL_TRUSTED, AWL, FH_FROMEML_NOTLD, GTUBE scantime=0.3, size=461, user=virtual, uid=1981, required_score=7.0, rhost=centos5.vmware.local, raddr=127.0.0.1, rport=1462, mid=<20080122114709.406E060047@centos5.vmware.local>, autolearn=no
Jan 22 13:47:33 centos5 postfix/pipe[2622]: 406E060047: to=<alex@vmware.local>, relay=spam, delay=27, delays=26/0.04/0/0.56, dsn=2.0.0, status=sent (delivered via spam service)
Jan 22 13:47:33 centos5 postfix/qmgr[2226]: 406E060047: removed
Jan 22 13:47:33 centos5 postfix/cleanup[2620]: 35FE060047: message-id=<20080122114709.406E060047@centos5.vmware.local>
Jan 22 13:47:33 centos5 postfix/cleanup[2620]: 6BAE86004D: message-id=<20080122114709.406E060047@centos5.vmware.local>
# cat maillog | grep 6BAE86004D
Jan 22 13:47:33 centos5 postfix/smtpd[2628]: 6BAE86004D: client=centos5.vmware.local[127.0.0.1]
Jan 22 13:47:33 centos5 postfix/cleanup[2620]: 6BAE86004D: message-id=<20080122114709.406E060047@centos5.vmware.local>
Jan 22 13:47:33 centos5 postfix/qmgr[2226]: 6BAE86004D: from=<>, size=2890, nrcpt=1 (queue active)
Jan 22 13:47:33 centos5 postfix/smtp[2626]: 35FE060047: to=<alex@vmware.local>, relay=127.0.0.1[127.0.0.1]:10025, delay=0.38, delays=0.03/0.11/0.1/0.15, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 6BAE86004D)
Jan 22 13:47:33 centos5 postfix/virtual[2630]: 6BAE86004D: to=<alex@vmware.local>, relay=virtual, delay=0.25, delays=0.14/0.08/0/0.02, dsn=2.0.0, status=sent (delivered to maildir)
Jan 22 13:47:33 centos5 postfix/qmgr[2226]: 6BAE86004D: removed
# cd /var/spool/mail/vmware.local/alex@vmware.local/new
# cat 1201002453.Vfd00I60047M662523.centos5.vmware.local
Return-Path: <>
X-Original-To: alex@vmware.local
Delivered-To: alex@vmware.local
Received: from centos5.vmware.local (centos5.vmware.local [127.0.0.1])
by centos5.vmware.local (Postfix) with ESMTP id 6BAE86004D
for <alex@vmware.local>; Tue, 22 Jan 2008 13:47:33 +0200 (EET)
Received: by centos5.vmware.local (Postfix, from userid 1981)
id 35FE060047; Tue, 22 Jan 2008 13:47:33 +0200 (EET)
Received: from localhost by centos5.vmware.local
with SpamAssassin (version 3.2.3);
Tue, 22 Jan 2008 13:47:33 +0200
From: MAILER-DAEMON@vmware.local
To: undisclosed-recipients:;
Subject: *****SPAM***** Relax, be happy
Date: Tue, 22 Jan 2008 13:47:06 +0200 (EET)
Message-Id: <20080122114709.406E060047@centos5.vmware.local>
X-Spam-Flag: YES
X-Spam-Checker-Version: SpamAssassin 3.2.3 (2007-08-08) on centos5.vmware.local
X-Spam-Level: **************************************************
X-Spam-Status: Yes, score=1002.2 required=7.0 tests=ALL_TRUSTED,AWL,
FH_FROMEML_NOTLD,GTUBE autolearn=no version=3.2.3
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----------=_4795D7D5.98D12731"
X-Virus-Scanned: ClamAV using ClamSMTP

This is a multi-part message in MIME format.

------------=_4795D7D5.98D12731
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit

Spam detection software, running on the system "centos5.vmware.local", has
identified this incoming email as possible spam. The original message
has been attached to this so you can view it (if it isn't spam) or label
similar future email. If you have any questions, see
the administrator of that system for details.

Content preview: XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
[...]

Content analysis details: (1002.2 points, 7.0 required)

pts rule name description
---- ---------------------- --------------------------------------------------
-1.4 ALL_TRUSTED Passed through trusted hosts only via SMTP
2.2 FH_FROMEML_NOTLD E-mail address doesn't have TLD (.com, etc.)
1000 GTUBE BODY: Generic Test for Unsolicited Bulk Email
1.4 AWL AWL: From: address is in the auto white-list



------------=_4795D7D5.98D12731
Content-Type: message/rfc822; x-spam-type=original
Content-Description: original message before SpamAssassin
Content-Disposition: inline
Content-Transfer-Encoding: 8bit

Return-Path: <MAILER-DAEMON>
Received: from localhost (centos5.vmware.local [127.0.0.1])
by centos5.vmware.local (Postfix) with SMTP id 406E060047
for <alex@vmware.local>; Tue, 22 Jan 2008 13:47:06 +0200 (EET)
subject: relax, be happy
Message-Id: <20080122114709.406E060047@centos5.vmware.local>
Date: Tue, 22 Jan 2008 13:47:06 +0200 (EET)
From: MAILER-DAEMON
To: undisclosed-recipients:;

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

------------=_4795D7D5.98D12731--
Как видно по заголовкам письма: X-Spam-Status: Yes и Subject: *****SPAM***** Relax, be happy, spamassassin определил это письмо как спам и перезаписал тему письма.
На этом настройку нашей системы можно считать завершенной.

Обновлено: 13.03.2015