Postfix: фильтрация вирусов и спама

  • Postfix: фильтрация вирусов и спама
  • После первоначальной настройки МТА возникает необходимость проверки почты на вирусы и спам. Что делать в этом случае? Как "подружить" 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[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.
    
    # 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 определил это письмо как спам и перезаписал тему письма.

    На этом настройку нашей системы можно считать завершенной.

    Фото автора
    Артем Ведун
    ИТ-специалист, исследователь цифровой гармонии

    Более 15 лет работаю в сфере информационных технологий — от системного администрирования и DevOps до анализа сетевой безопасности. В какой-то момент понял, что цифровые процессы и числа — не только про технологии, но и про закономерности, которые управляют жизнью.

    Так начался мой путь в прикладную нумерологию и изучение того, как числа влияют на решения, инфраструктуру и даже ИТ-проекты.

    В статьях совмещаю строгую логику и символику чисел: от практических гайдов по Linux до разбора цифровых архетипов в бизнесе и киберпространстве.

    Верю, что в мире нет случайных чисел — даже в логах сервера.

    Последние Статьи

    Как выбрать частного SEO‑специалиста в Киеве: практическое руководство

    Как выбрать частного SEO‑специалиста в Киеве: практическое руководство

    В Киеве существует множество SEO‑услуг: крупные агентства, маленькие студии и частники, с разными подходами и ценами. Для бизнеса важно найти того специалиста, который пониманием задач, прозрачностью ..

    Что предлагает KupiFanove.bg? для соц.сетей (smm)

    Что предлагает KupiFanove.bg? для соц.сетей (smm)

    KupiFanove.bg специализируется на предоставлении услуг по увеличению числа подписчиков и лайков в следующих социальных сетях: Instagram: Покупка подписчиков для повышения авторитета и доверия к ваш..

    Почему вам нужен список SEO компаний в Варне?

    Почему вам нужен список SEO компаний в Варне?

    Сегодня Google обрабатывает более 40 000 поисковых запросов каждую секунду! С такими ошеломляющими цифрами выделиться среди жесткой конкуренции требует профессионального опыта от опытной SEO-команды. ..

    Время 02:02 на часах: ангельская нумерология

    Время 02:02 на часах: ангельская нумерология

    Когда вы в очередной раз случайно бросаете взгляд на часы, и там застыли 02:02, это может быть не просто цифра — это тонкий знак от невидимого мира. Такие зеркальные времена не приходят в жизнь без пр..

    Подписаться на рассылку