Инструменты пользователя

Инструменты сайта


mail:postfix-clamsmtp-sa

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

mail:postfix-clamsmtp-sa [2009/09/11 17:14] (текущий)
Строка 1: Строка 1:
 +====== Postfix: фильтрация вирусов и спама ======
  
 +===== Введение =====
 +
 +
 +После первоначальной настройки МТА возникает необходимость проверки почты на вирусы и спам. Что делать в этом случае?​ Как "​подружить"​ MTA + antivirus + antispam? В интернете написано очень много статей на эту тему. Пожалуй,​ наиболее распространенное решение данной задачи - использование amavisd.
 +
 +Но так как данный продукт написан на perl, то он требователен к ресурсам машины. Кроме того, для его установки требуется много модулей perl, которые отсутствуют в официальном репозитарии CentOS.
 +
 +Я предлагаю альтернативное решение данной задачи. А именно использование clamav(clamsmtp) + spamassassin.
 +
 +Итак, у нас имеется следующая система:​
 +<cli>
 +# uname -r
 +2.6.18-53.1.4.el5
 +
 +# cat /​etc/​redhat-release
 +CentOS release 5 (Final)
 +</​cli>​
 +
 +===== Установка и настройка сlamav =====
 +
 +К сожалению,​ данный пакет отсутствует в официальном репозитарии RHEL/​CentOS. Так что вам придется либо устанавливать с других репозитариев,​ либо собрать rpm пакеты из src.rpm
 +
 +===== Установка ПО на FreeBSD =====
 +
 +Пользователям FreeBSD в этом плане повезло. Все пакеты,​ устанавливаемые в этой статье присутствуют в системе портов. Для установки clamav:
 +<cli>
 +# cd /​usr/​ports/​security/​clamav/​
 +# make install clean
 +</​cli>​
 +
 +Для установки clamsmtp:
 +<cli>
 +# cd /​usr/​ports/​security/​clamsmtp
 +# make install clean
 +</​cli>​
 +
 +Для установки spamassassin:​
 +<cli>
 +# cd /​usr/​ports/​mail/​p5-Mail-SpamAssassin
 +# make config
 +# make install clean
 +</​cli>​
 +
 +Для установки postfix:
 +<cli>
 +# cd /​usr/​ports/​mail/​postfix
 +# make config
 +# make install clean
 +</​cli>​
 +
 +Если вы решили собирать из src.rpm, то советую воспользоваться известным репозитарием http://​dag.wieers.com/​
 +<cli>
 +# 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
 +</​cli>​
 +
 +После успешной сборки устанавливаем пакеты.
 +<cli>
 +# 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%]
 +</​cli>​
 +Настраиваем clamav, для этого редактируем конфигурационный файл <color #​006500>​** /​etc/​clamd.conf **</​color>​. Все параметры я оставил без изменений,​ кроме LocalSocket. На всякий случай привожу все содержимое <color #​006500>​** clamd.conf **</​color>​ .
 +
 +<cli>
 +# 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
 +</​cli>​
 +
 +После этого настраиваем запуск clamav при старте системы и запускаем сам демон.
 +
 +<cli>
 +# chkconfig --level 35 clamd on
 +# service clamd start
 +Starting Clam AntiVirus Daemon: ​                           [  OK  ]
 +</​cli>​
 +
 +При этом в логах должно быть примерно следующее:​
 +<cli>
 +# 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.
 +</​cli>​
 +
 +После того, как сам антивирус успешно запустился нам необходимо обновить сами антивирусные базы данных. Для этого существует специальная программа freshclam, которая идет вместе с clamav. Для ее настройки необходимо отредактировать конфигурационный файл <color #​006500>​** /​etc/​freshclam.conf **</​color>​.
 +
 +По сути, в нем ничего не надо менять,​ единственное,​ что я поменял - зеркало (DatabaseMirror) с которого обновлять базы, так как были проблемы с украинскими зеркалами и периодичность обновлений (Checks) - каждый час (по умолчанию каждые два часа)
 +
 +<cli>
 +# 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
 +</​cli>​
 +
 +После этого запускаем freshclam:
 +
 +<cli>
 +# 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.
 +</​cli>​
 +
 +===== Установка и настройка сlamsmtp =====
 +
 +clamsmtp представляет из себя smtp фильтр,​ который служит для "​связки"​ МТА и clamav. В результате такого объединения вся почта будет проверяться на вирусы.
 +<cli>
 +# 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
 +</​cli>​
 +
 +После успешной сборки устанавливаем clamsmtp.
 +<cli>
 +# rpm -ivh clamsmtp-1.9-1.i686.rpm
 +Preparing... ​               ###########################################​ [100%]
 +   ​1:​clamsmtp ​              ###########################################​ [100%]
 +</​cli>​
 +
 +Для настройки clamsmtp необходимо отредактировать его конфигурационный файл <color #​006500>​** /​etc/​clamsmtpd.conf **</​color>​. В результате у вас должен получиться примерно такой файл:
 +
 +<cli>
 +# 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
 +</​cli>​
 +
 +После этого настраиваем запуск clamsmtp при старте системы и запускаем сам демон.
 +<cli>
 +# chkconfig --level 35 clamsmtpd on
 +# service clamsmtpd start
 +Starting ClamSmtpd: ​                                       [  OK  ]
 +</​cli>​
 +
 +Если все прошло успешно,​ то порт 10025 должен быть в состоянии LISTEN.
 +<cli>
 +# netstat -an | grep :10025
 +tcp        0      0 0.0.0.0:​10025 ​              ​0.0.0.0:​* ​                  ​LISTEN
 +</​cli>​
 +
 +===== Установка и настройка spamassassin =====
 +
 +spamassassin пожалуй одно из наиболее распространенных ПО для борьбы со спамом. А точнее определения спама. Данный продукт присутствует в официальном репозитарии,​ так что для его установки воспользуемся утилитой yum.
 +
 +<cli>
 +# yum install spamassassin
 +</​cli>​
 +
 +После установки,​ производим настройку spamassassin. Для этого редактируем файл <color #​006500>​** /​etc/​mail/​spamassassin/​local.cf **</​color>​.
 +
 +<cli>
 +# 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
 +</​cli>​
 +
 +Я привел лишь минимальный набор параметров,​ необходимый для проверки нашей системы. Для получения полного списка всех параметров,​ а также описания их назначения выполните следующую команду
 +
 +<cli>
 +# perldoc Mail::​SpamAssassin::​Conf
 +</​cli>​
 +
 +После этого настраиваем запуск spamassassin при старте системы и запускаем сам демон.
 +
 +<cli>
 +# chkconfig --level 35 spamassassin on
 +# service spamassassin start
 +Starting spamd: ​                                           [  OK  ]
 +</​cli>​
 +
 +При этом в log-файле должны быть примерно такие записи:​
 +<cli>
 +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
 +</​cli>​
 +
 +На этом первоначальную настройку spamassassin можно считать завершенной.
 +Установка и настройка postfix
 +
 +===== Устанавливаем postfix: =====
 +<cli>
 +# yum install postfix
 +</​cli>​
 +
 +После этого редактируем основной конфигурационный файл <color #​006500>​** /​etc/​postfix/​main.cf **</​color>​.
 +
 +<cli>
 +# 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
 +</​cli>​
 +
 +Как и раньше,​ я привел лишь минимальный набор параметров,​ достаточный для проверки нашей системы. Файлы virtual_user и virtual_alias надо создать самому и заполнить примерно таким содержимым:​
 +
 +<cli>
 +# cat virtual_alias
 +Domoradov.Alex@vmware.local alex@vmware.local
 +
 +# cat virtual_user
 +alex@vmware.local vmware.local/​alex@vmware.local/​
 +</​cli>​
 +
 +После этого создаем сами базы и пользователя virtual:
 +
 +<cli>
 +# 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/​
 +</​cli>​
 +
 +Теперь нам осталось лишь связать все компоненты нашей системы между собой. Так как мы отказались от использования amavisd-new,​ то нам придется редактировать файл <color #​006500>​** /​etc/​postfix/​master.cf **</​color>​. Вставьте следующие строки в самое начало файла, сразу после комментариев.
 +
 +<​code>​
 +#
 +# /​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
 +</​code>​
 +
 +Теперь у нас все готово для проверки,​ запускаем postfix
 +
 +<cli>
 +# service postfix start
 +Starting postfix: ​                                       [  OK  ]
 +</​cli>​
 +
 +Смотрим log-файл
 +
 +<cli>
 +# 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
 +</​cli>​
 +
 +При этом у порта 10026 должно быть состояние LISTEN
 +
 +<cli>
 +# netstat -an | grep :10026
 +tcp        0      0 127.0.0.1:​10026 ​            ​0.0.0.0:​* ​                  ​LISTEN
 +</​cli>​
 +
 +===== Тестирование =====
 +
 +Наконец то мы подошли к заключительному этапу - тестирования нашей системы. Для проверки работы нашей системы мы отправим три письма:​ первое будет чистым,​ второе содержать спам, а третье вирус.
 +
 +Итак, начнем. Отправляем обычное письмо.
 +
 +<cli>
 +# 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.
 +</​cli>​
 +
 +<cli>
 +# 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>​
 +</​cli>​
 +
 +<cli>
 +# 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
 +</​cli>​
 +
 +Из log-файл видно, что письмо доставлено пользователю. Давайте посмотрим на это письмо:​
 +
 +<cli>
 +# 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!!!
 +</​cli>​
 +
 +Как мы видим по заголовкам письма:​ X-Virus-Scanned:​ ClamAV using ClamSMTP и X-Spam-Checker-Version:​ SpamAssassin 3.2.3 письмо было проверенно антивирусом и антиспамом.
 +
 +А теперь давайте отправим,​ письмо содержащее вирус. Чтобы не искать настоящий вирус, мы воспользуемся тестовой сигнатурой,​ разработанной как раз для целей тестирования.
 +
 +<cli>
 +# 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[4\PZX54(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.
 +</​cli>​
 +
 +<cli>
 +# 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
 +</​cli>​
 +
 +<cli>
 +# 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
 +</​cli>​
 +
 +<cli>
 +# 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
 +</​cli>​
 +
 +Как мы видим, письмо с вирусом было заблокировано и сохранено в карантине. В принципе можно настроить отправку уведомления пользователю с помощью параметра VirusAction,​ который задается в файле <color #​006500>​** /​etc/​clamsmtpd.conf **</​color>​. Но это уже на любителя.
 +
 +Ну и осталась последняя проверка. Отправим сигнатуру спама.
 +
 +<cli>
 +# 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.
 +</​cli>​
 +
 +<cli>
 +# 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>​
 +</​cli>​
 +
 +<cli>
 +# 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
 +</​cli>​
 +
 +<cli>
 +# 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--
 +</​cli>​
 +
 +Как видно по заголовкам письма:​ X-Spam-Status:​ Yes и Subject: *****SPAM***** Relax, be happy, spamassassin определил это письмо как спам и перезаписал тему письма.
 +
 +На этом настройку нашей системы можно считать завершенной.
mail/postfix-clamsmtp-sa.txt · Последние изменения: 2009/09/11 17:14 (внешнее изменение)