The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Sendmail. Эффективная борьба со спамом и вирусами. Практический опыт. (sendmail spam mail milter freebsd spamd)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: sendmail, spam, mail, milter, freebsd, spamd,  (найти похожие документы)
From: Litos <litos@mail.ru.> Newsgroups: email Date: Mon, 28 Sep 2007 14:31:37 +0000 (UTC) Subject: Sendmail. Эффективная борьба со спамом и вирусами. Практический опыт. Итак в исходной задаче мы имеем виртуальный выделенный сервер системой FreeBSD под управлением VDSmanager на хостинг-площадке с предустановленным набором программного обеспечения ISPmananger. Стандартно там установлен Sendmail и наша задача сделать почту наиболее эффективно работающей и безопасной, без спама и вирусов. Что будем ставить и настраивать в первую очередь. Антиспам: Черные списки DNSBL- это такая штука, есть публичные листы, которые собирают адреса машин с которых рассылается спам. И эти IP-адреса туда заносятся. На какое-то время или пока админ сети не удалит их. GreyListing. Когда первый раз приходит письмо на сервер, он говорит, попробуй позднее. Спам робот пробовать не будет (оно ему не надо), а нормальный сервер попробует, письмо примется и добавится в белый список его IP-адрес. SpamAssassin. Ну это больше для удобства пользователей. Пишет с сабжектах писем слово SPAM и можно настроить почтовую программу для сортировки таких писем в отдельную папку. Антиспамовые функции sendmail. Про это чуть ниже. Антивирус: Ну тут думать не стал даже долго. Должно быть просто и бесплатно. Вообще весь софт который стоит на сервере бесплатен и следовательно "лицензионно чист". Антивирус ClamAV - это мой выбор. Да, попутно, еще выяснилось, что их ISPmanager поддерживает работу с DNSBL, Milter-GreyList и SpamAssassin, подробности в документации. Списки DNSBL можно прямо добавить через менюшку и все пропишется и заработает. Начинаем настройку Антиспам. Черные списки DNSBL - я просто использую листы bl.spamcop.net cbl.abuseat.org dnsbl.njabl.org dnsbl.njabl.org dnsbl.sorbs.net list.dsbl.org zen.spamhaus.org Я их взял и добавил через ISPmanager, что получилось в конфиге sendmail - смотрите ниже. Выяснилось, что milter-greylist уже установлен на сервере и надо только включить. Правим /etc/rc.conf miltergreylist_enable="YES" SpamAssassin пришлось поставить из портов # cd /usr/ports/mail/p5-Mail-SpamAssassin # make install clean и milter к sendmail # cd /usr/ports/mail/spamass-milter # make install clean Все опции оставляем по-умолчанию Все очень просто и быстро, малость пришлось повозиться с ключами для запуска, объясню что к чему, пишем в /etc/rc.conf spamd_enable="YES" spamd_flags="-A 82.146.xx.xx -u spamd -x -c -d -r /var/run/spamd/spamd.pid" spamass_milter_enable="YES" Ключи -A 82.146.xx.xx (82.146.xx.xx - ip-адрес вашего сервера, смотрится командой ifconfig) На виртуальном выделенном сервере нет локального интерфейса, поэтому будем работать с внешним и разрешим с него запросы -u spamd - пользователь под которым запускается spamassassin (я считаю это более правильно, чем запускать под root) -x - не создавать пользовательские конфиги. Вообщем то конфигурация пользователя будет вся лежать в /var/spool/spamd/.spamassassin/, ставим так -c - создать конфиг автоматом если нет -d - запуск в режиме демона -r /var/run/spamd/spamd.pid - путь к PID-файлу. Настраиваем конфиг SpamAssassin # vi /usr/local/etc/mail/spamassassin/local.cf rewrite_header Subject *****SPAM***** Будет добавляться к заголовку письма слово *****SPAM***** report_safe 0 Чтобы почта, которая пометилась как спам приходила как письмо, а не в виде аттачмента trusted_networks 82.146.XX.XX Указываем IP-адрес сервера. Почта с него (локальная почта) никогда не будет обрабатываться и помечаться как спам. Настраиваем ежедневное автообновление спам-баз (кстати, планировщиком Cron можно управлять и через ISPmanager) # crontab -e -u root @daily /usr/local/bin/sa-update --nogpg Делаем ящики для обучения спаму. Пользователи должны пересылать письма на эти адреса ТОЛЬКО(!) как вложения. Я создал руками отредактировав /etc/mail/virtusertable и /etc/mail/aliases vi /etc/mail/virtusertable spam@mydomain.ru spam not-spam@mydomain.ru not-spam vi /etc/mail/aliases spam: "|/usr/local/bin/sa-learn --spam" not-spam: "|/usr/local/bin/sa-learn --ham" После чего сказать make в директории /etc/mail Нам еще потребовалось создать директорию # mkdir /var/spool/mqueue/.spamassassin/ и права на нее # chmod 777 /var/spool/mqueue/.spamassassin/ Антивирус. Настраиваем clamav. Он уже оказывается установлен, просто включите его, демон для автообновления базы и milter clamav_clamd_enable="YES" clamav_freshclam_enable="YES" clamav_milter_enable="YES" Запускаем все # /usr/local/etc/rc.d/milter-greylist.sh start # /usr/local/etc/rc.d/sa-spamd start # /usr/local/etc/rc.d/spamass-milter start # /usr/local/etc/rc.d/clamav-clamd start # /usr/local/etc/rc.d/clamav-freshclam start # /usr/local/etc/rc.d/clamav-milter start (может не запуститься не найдя себя в конфиге sendmail) Мой конфиг sendmail (/etc/mail/myhostname.mc) с комментариями (сделал одним файлом, чтобы не писать 10 раз одно и то же) Содержит как защиту от спама, так и защиту от излишней нагрузки на сервер. divert(-1) # # Copyright (c) 1983 Eric P. Allman # Copyright (c) 1988, 1993 # The Regents of the University of California. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. All advertising materials mentioning features or use of this software # must display the following acknowledgement: # This product includes software developed by the University of # California, Berkeley and its contributors. # 4. Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # # This is a generic configuration file for FreeBSD 5.X and later systems. # If you want to customize it, copy it to a name appropriate for your # environment and do the modifications there. # # The best documentation for this .mc file is: # /usr/share/sendmail/cf/README or # /usr/src/contrib/sendmail/cf/README # divert(0) # Это все было по умолчанию VERSIONID(`$FreeBSD: src/etc/sendmail/freebsd.mc,v 1.30 2005/06/14 02:25:17 gshapiro Exp $') OSTYPE(freebsd6) DOMAIN(generic) FEATURE(access_db, `hash -o -T<tmpf> /etc/mail/access') FEATURE(blacklist_recipients) FEATURE(local_lmtp) FEATURE(mailertable, `hash -o /etc/mail/mailertable') FEATURE(virtusertable, `hash -o /etc/mail/virtusertable') dnl Uncomment to allow relaying based on your MX records. dnl NOTE: This can allow sites to use your server as a backup MX without dnl your permission. dnl FEATURE(relay_based_on_MX) dnl DNS based black hole lists dnl -------------------------------- dnl DNS based black hole lists come and go on a regular basis dnl so this file will not serve as a database of the available servers. dnl For that, visit dnl http://directory.google.com/Top/Computers/Internet/Abuse/Spam/Blacklists/ dnl Uncomment to activate Realtime Blackhole List dnl information available at http://www.mail-abuse.com/ dnl NOTE: This is a subscription service as of July 31, 2001 dnl FEATURE(dnsbl) dnl Alternatively, you can provide your own server and rejection message: dnl FEATURE(dnsbl, `blackholes.mail-abuse.org', `"550 Mail from " $&{client_addr} " rejected, see http://mail-abuse.org/cgi-bin/lookup?" $&{client_addr}') dnl Dialup users should uncomment and define this appropriately dnl define(`SMART_HOST', `your.isp.mail.server') dnl Uncomment the first line to change the location of the default dnl /etc/mail/local-host-names and comment out the second line. dnl define(`confCW_FILE', `-o /etc/mail/sendmail.cw') define(`confCW_FILE', `-o /etc/mail/local-host-names') dnl Enable for both IPv4 and IPv6 (optional) DAEMON_OPTIONS(`Name=IPv4, Family=inet') dnl DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Modifiers=O') define(`confBIND_OPTS', `WorkAroundBrokenAAAA') define(`confNO_RCPT_ACTION', `add-to-undisclosed') define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy') TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS',`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confCACERT_PATH', `/usr/local/share/certs') define(`confCACERT', `/usr/local/share/certs/ca-root.crt') define(`confSERVER_CERT', `/etc/ssl/certs/sendmail.crt') define(`confSERVER_KEY', `/etc/ssl/private/sendmail.key') # antispam Это я добавил dnsbl-списки через ISPmanager, можно добавить и руками если надо # FEATURE(dnsbl, `bl.spamcop.net', `"550 Mail from " $&{client_addr} " rejected - see bl.spamcop.net"') FEATURE(dnsbl, `cbl.abuseat.org', `"550 Mail from " $&{client_addr} " rejected - see cbl.abuseat.org"') FEATURE(dnsbl, `dnsbl.njabl.org', `"550 Mail from " $&{client_addr} " rejected - see dnsbl.njabl.org"') FEATURE(dnsbl, `dnsbl.sorbs.net', `"550 Mail from " $&{client_addr} " rejected - see dnsbl.sorbs.net"') FEATURE(dnsbl, `list.dsbl.org', `"550 Mail from " $&{client_addr} " rejected - see list.dsbl.org"') FEATURE(dnsbl, `zen.spamhaus.org', `"550 Mail from " $&{client_addr} " rejected - see zen.spamhaus.org"') # Спамеры часто указывают неверный helo при установке smtp-сессии FEATURE(`block_bad_helo')dnl # Аккуратнее с это опцией, надо чтобы у серверов клиентов была прямая и обратная # записи в DNS и они совпадали, если вы не знаете что это такое - не включайте FEATURE(`require_rdns')dnl # Если у хоста отправителя неправильная MX-запись - не принимаем почту FEATURE(`badmx')dnl # Ожидаем 5000ms перед выдачей приглашения, если команды писал спам-бот раньше приглашения, # то почту от него принимать не будем. FEATURE(`delay_checks')dnl FEATURE(`greet_pause', `5000')dnl # Максимальное число неправильных адресов и адресатов письма define(`confBAD_RCPT_THROTTLE', `1')dnl define(`confMAX_RCPTS_PER_MESSAGE', `20')dnl # antiflood # Ограничим число процессов sendmail. Каждый процесс требует почти 2 мегабайта памяти define(`confMAX_DAEMON_CHILDREN', `30')dnl # Это различные таймауты. Бывает спамботы не закрывают соединение сами, тем самым # вызывают перерасход ресурсов, устраним это. define(`confTO_CONNECT', `30s')dnl define(`confTO_IDENT', `0')dnl define(`confTO_COMMAND', `30s')dnl define(`confTO_DATABLOCK', `2m')dnl define(`confTO_STARTTLS', `2m')dnl # Максимальное число коннектов в секунду define(`confCONNECTION_RATE_THROTTLE', `10')dnl # MAILER был уже, не трогаем MAILER(local) MAILER(smtp) # Подключаем наши фильтры. Скопируйте один в один. INPUT_MAIL_FILTER(`greylist', `S=local:/var/milter-greylist/milter-greylist.sock,F=, T=S:1m;R:1m')dnl INPUT_MAIL_FILTER(`clmilter',`S=local:/var/run/clamav/clmilter.sock,F=, T=S:4m;R:4m')dnl INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass-milter.sock, F=,T=S:4m;R:4m')dnl # greylist macro # Различные опции - макросы нужные для работы milter-greylist # define(`confMILTER_MACROS_CONNECT', `j, {if_addr}')dnl define(`confMILTER_MACROS_HELO', `{verify}, {cert_subject}')dnl define(`confMILTER_MACROS_ENVFROM', `i, {auth_authen}')dnl define(`confMILTER_MACROS_ENVRCPT', `{greylist}')dnl # spamassassin macro # Тоже самое для работы spamassassin # define(`confMILTER_MACROS_CONNECT',`b, j, _, r, {daemon_name}, {if_name}, {if_addr}')dnl # Собственно говоря включили фильтры # define(`confINPUT_MAIL_FILTERS', `greylist,clmilter,spamassassin')dnl # fake banner # Подменили стандарное приветствие sendmail на что-либо другое # define(`confSMTP_LOGIN_MSG', `exchange.srv.local Microsoft MAIL Service, Version: 6.0.3790.1830 ready')dnl ну а пересобрать конфиг очень просто заходите в /etc/mail и пишите # make поставить # make install перезапустить # make restart Также, если вы используете ISPmananger вам необходимо добавить в его конфигурационный файл /usr/local/ispmgr/etc/ispmgr.conf строки для возможности управления SpamAssassin через эту панель управления Option ForceSpamAssassin path spamassassin.conf /usr/local/etc/mail/spamassassin/local.cf path spamassassinctl /usr/local/etc/rc.d/sa-spamd restart Собственно говоря все. Мы получили эффективный почтовый сервер, который не пропустит спам и вирусы, а если и пропустит какой-либо спам, так вы его легко отфильтруете благодаря фильтру в почтовой программе.

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1.1, r_wolf (?), 11:27, 01/10/2007 [ответить]  
  • +/
    попробуйте mailfromd - фильтр, объединяющий в себе остальные.
     
  • 1.2, Евгений (??), 20:10, 21/11/2007 [ответить]  
  • +/
    можно ли сделать так -- что бы антивирус присылал уведомления в случаи опасности на email ?
     
  • 1.3, pepsi25 (?), 01:02, 06/12/2007 [ответить]  
  • +/
    подскажите, а как внести исключения на некоторые IP
    что бы их сендмейл не проверял  на наличие  в черных списках DNSBL ??
     
     
  • 2.5, Александр (??), 11:50, 30/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    для этих целей могу посоветовать exim..
    там куда проще это конфигурячится..
     

  • 1.4, Сергей (??), 12:04, 27/11/2008 [ответить]  
  • +/
    Спасибо большое!
    Очень помогло :)
     
  • 1.6, zilberstein (?), 16:35, 04/06/2013 [ответить]  
  • +/
    Одно НО: Spamhaus -- организация, которая пытается ввести цензуру в интернете. Блокирует сети датацентров и целые страны.

    НЕ ИСПОЛЬЗУЙТЕ Spamhaus !

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру