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 можно прямо добавить через менюшку и все пропишется и
заработает.
Делаем ящики для обучения спаму. Пользователи должны пересылать письма
на эти адреса ТОЛЬКО(!) как вложения. Я создал руками отредактировав
/etc/mail/virtusertable и /etc/mail/aliases
# /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
#
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')
# 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
Собственно говоря все. Мы получили эффективный почтовый сервер, который
не пропустит спам и вирусы, а если и пропустит какой-либо спам, так вы
его легко отфильтруете благодаря фильтру в почтовой программе.
1450 Прочтений • [Sendmail. Эффективная борьба со спамом и вирусами. Практический опыт. (sendmail spam mail milter freebsd spamd)] [08.05.2012] [Комментариев: 0]