Есть вопрос?
Зайди на форум

Поиск на сайте: Advanced

Denix - новый дистрибутив Linux. Русификация Ubuntu и установка кодеков

dkws.org.ua
Форум сайта dkws.org.ua
 
Главная    ТемыТемы    АльбомАльбом    РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Настройка почтового сервера на базе Postfix

 
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> Сеть
 
Автор Сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Вс Dec 24, 2006 8:32 am    Заголовок сообщения: Настройка почтового сервера на базе Postfix
Ответить с цитатой

В этом разделе описана настройка почтового сервера (SMTP-сервера).
Если вы специалист в настройке программы SendMail, то этот раздел не для вас .
Почтовый сервер мы настроим на базе пакета PostFix. Если у Вас уже установлен SendMail, то предварительно отключите его.
Основной конфигурационный файл PostFix называется main.cf и обычно находится в папке /etc/postfix. Ниже приведен один из вариантов его настройки. Большинство параметров интуитивно понятны. Прокомментированы только самые важные моменты.

queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
# имя вашего интернет-домена
myhostname = office.officenet.com
inet_interfaces = all
# домены, для которых вы получаете почту
mydestination = officenet.com, office.officenet.com, ofisnet.com, office.ofisnet.com, officenet.local, office.officenet.local
unknown_local_recipient_reject_code = 450
# ip-адреса вашей локальной сети
mynetworks = 192.168.0.0/24, 127.0.0.0/8
# следующие две строки очень важны!
# по умолчанию postfix - open relay.
# Если вы их не укажете, то очень скоро
# вас пропишут на spamcop.net в blacklist
# и вы не сможете отправлять почту!
relay_domains = $mydestination
relay_domains_reject_code = 554
# домены, которые будут подставляться в письма
# при отправке по интернету
masquerade_domains = officenet.com, ofisnet.com
# в этом файле настраивается переадрессация почты
# формат строк в этом файле следующий:
# адрес_получателя новый_адрес_получателя
# например:
# givi@officenet.com givi@yandex.ru
# Почта приходящая на адрес givi@officenet.com
# будет перенаправлена на адрес givi@yandex.ru
virtual_alias_maps = hash:/etc/postfix/virtual
alias_maps = $alias_database
mail_spool_directory = /var/spool/mail
# приветствие, выдаваемое сервером при подключении
# клиентов. Может быть любое.
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version). Officenet SMTP Server.
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.0.8/samples
readme_directory = /usr/share/doc/postfix-2.0.8/README_FILES
# файл с псевдонимами
alias_database = hash:/etc/postfix/aliases

Запускается сервер командой:
# /etc/rc.d/init.d/postfix start

Чтобы клиенты в сети могли забирать почту, необходимо установить POP3 или IMAP-сервер.
Хотя бы один пакет для его установки есть в любом дистрибутиве Linux (например, imap). Как правило, настройка этого сервера не требуется.

Пользователям же в почтовых клиентах (Outlook или The Bat!) необходимо указать сервер отправки почты (SMTP-server) 192.168.0.254 (порт 25) и сервер получения почты (POP3-server) 192.168.0.254 (порт 110). Пользователи, забирающие почту должны присутствовать в /etc/passwd и для них должны быть определены пароли. Имя пользователя и пароль указываются в почтовом клиенте.

Взято отсюда: http://www.glotov.pp.ru/linux/mail.shtml
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Пн Dec 25, 2006 8:00 am    Заголовок сообщения:
Ответить с цитатой

Вот еще: http://www.yekt.info/postfix_antyspam.html

Настройка Postfix или Антиспам без оружия
Лично от demon
Весьма признателен автору этой статьи Сергею Литвиненко.
После настройки postfix по этой статье практически полностью избавился спама.

Пролог: спам - чума 21 века. В данной статье приведены практические рекомендации,
позволяющие избавиться от этой чумы.

Имеем:
Любую установку Postfix для сервера example.com, с внутренним интерфейсом 192.168.0.1 и внешним 80.80.80.80
(для примера, везде где встречаются необходиом заменитть на свои).
Задача:
минимизировать трафик, поступаемый вместе со спамом, а также уменшить кол-во спама,
попадающего в почтовые ящики конечных пользователей, причем силами только самого Постфикса.

Требуемая политика для Postfix:

* разрешена отправка писем с адресов внутренней сети
* разрешен прием писем снаружи для адресатов внутри
* прием писем только от существующих и корректных адресатов
* прием писем только для имеющихся на сервере адресатов
* для отправки писем FROM: *@example.com с невнутренних хостов требовать обязательную авторизацию,
без авторизации письма отклонять


Применяемые технические решения:

* разрешать внутренним ип-адресам отправлять письма на несуществующие email-адреса (рассылка рекламного отдела)
* проверять существование и корректность адреса отправителя
* проверять существование и корректность адреса получателя
* проверять корректность IP-адреса сервера передающего письм
* проверять наличие IP-адреса отправителя в списках DNSBL
* отклонять письма с IP-адресов, определяемых как динамические (dialup & adsl)
* для "особо продвинутых" респондентов с кривыми настройками применять "белые списки"


Настройки
файл /etc/postfix/main.cf:


# список подсетей, которым разрешена отправка писем, и на
# письма с которых многие проверки не распространяются.
# здесь не должно быть подсетей, которые не являются "внешними"(80.80.80.80 - везде меняем на свой IP)
mynetworks = 80.80.80.80, 192.168.0.0/24, 127.0.0.0/8

# отсекаем криво настроенные почтовые агенты
strict_rfc821_envelopes = yes

# запрещаем проверку отправителем существование адреса получателя
# на этапе передачи заголовка
disable_vrfy_command = yes

# разрешаем дополнительные проверки пока отправитель
# передает RCPT TO: и MAIL FROM: заголовки. Для детализации mail.log
smtpd_delay_reject = yes

# требуем от отправителя представиться
# (на том, как себя представляет передающий комп,
# основаны многие эффективные проверки "на вшивость"
# автоматических рассылок от зомби и троянов)
smtpd_helo_required = yes

# ограничения на приветствие отправителя HELO/EHLO
smtpd_helo_restrictions =
# разрешаем все для внутренних клиентов
permit_mynetworks,
# разрешаем все для тех, кто пройдет SASL-авторизацию по SMTP
permit_sasl_authenticated,
# "Белый Список" должен быть впереди остальных проверок
# отсекаем приветствия отправителя от моего имени
# а также прописываем разрешения для "продвинутых"
# пример файлика см ниже
check_helo_access hash:/etc/postfix/helo_access,
# отсекаем тех, кто представляется ИП-адресом.
# это явное нарушение RFC, но практика показала, что это один из явных признаков спама.
check_helo_access regexp:/etc/postfix/helo_regexp,
# также проверям на динамические адреса (спасибо тем ISP, которые прописывают обратные зоны)
check_helo_access regexp:/etc/postfix/dul_checks,
# отсекаем кривые адреса (противоречащие RFC, например бывают и
# такие helo=<|http://mail.oldartero.com:8888/cgi-bin/put>
reject_invalid_hostname,
# если все вышеперечисленное подошло, идем дальше
permit

# ограничения, проверяемые на этапе MAIL FROM:
smtpd_sender_restrictions =
# принимаем почту на отправку с "чужих" хостов, если пользователь
# авторизовался по логину/паролю
permit_sasl_authenticated,
# "своим" можно и "просто"
permit_mynetworks,
# разрешаем или запрещаем "продвинутым"
check_sender_access regexp:/etc/postfix/sender_access,
# см комментарий к разделу smtpd_helo_restrictions
reject_non_fqdn_sender,
reject_unknown_sender_domain,
# если все вышеперечисленное подошло, идем дальше
permit

# ограничения, проверяемые на этапе RCPT TO:
smtpd_recipient_restrictions =
# запрещаем выдачу писем в поток, как это делают
# нетерпеливые спаммеры
reject_unauth_pipelining,
# разрешаем "своим" все
permit_sasl_authenticated,
permit_mynetworks,
# см комментарий к разделу smtpd_sender_restrictions
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
# запрещаем принимать письма для несуществующих в системе адресов
reject_unlisted_recipient,
# запрещаем или разрешаем "продвинутым"
check_recipient_access regexp:/etc/postfix/recipient_access,
# !!! !!! !!! !!! !!!
# запрещаем прием и передачу писем, не относящихся к нам
# без этой строчки сервер становится open-relay
reject_unauth_destination,
# !!! !!! !!! !!! !!!
# если все вышеперечисленное подошло, идем дальше
permit

# проверяем, а не является (по признакам ДНС-имен) ли
# динамически-назначаемым IP-адрес хоста-отправителя (определяемого
# по соединению, а не по приветствию или разрешенному ДНС/IP-адресу)
smtpd_client_restrictions =
# разрешаем "своим" все
permit_mynetworks,
# прописываем адреса "продвинутых" в белом списке (пример файлика ниже)
check_client_access hash:/etc/postfix/client_access,
# в файле dul_checks регулярные выражения доменных имен,
# наиболее часто используемых для обратных зон блоков
# динамически назначаемых адресов и
# широкополосных клиентских подключений
check_client_access regexp:/etc/postfix/dul_checks,
# проверяем IP-адрес отправителя по спискам DNSBL (www.ordb.org)
reject_rbl_client bl.spamcop.net,
reject_rbl_client list.dsbl.org,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client relays.ordb.org,
reject_rbl_client relays.ordb.org,
permit
остальное вообщем-то на усмотрение или стандартно.


теперь указанные в кач-ве параметров файлы:
файл /etc/postfix/helo_access:


example.com REJECT you are not in my local networks
80.80.80.80 REJECT you are not in my local networks
dc.DOM OK broken M$ Widnows server

последняя строка иллюстрирует пример "продвинутого" респондента, чей компьютер
выдает бесмысленное приветствие helo, а почту от такого респондента все равно принимать надо.

файл /etc/postfix/dul_checks:


/81-177-70-6\.donnetwork\.ru/i OK 81-177-70-6.donnetwork.ru (@aaanet.ru)
/([0-9]*-){3}[0-9]*(\..*){2,}/i 553 SPAM_ip-add-rr-ess_networks
/([0-9]*\.){4}(.*\.){3,}.*/i 553 SPAM_ip-add-rr-ess_networks
/.*\..*\...\.comcast\.net/i 553 SPAM_comcast-net
/.*yahoobb.*\.bbtec\.net/i 553 SPAM_yahoobb_bbtec-net
/[0-9]{12}\.bbtec\.net/i 553 SPAM_host_bbtec-net
/.*\.broadband\.hu/i 553 SPAM_broadband-hu
/client.*\..*\..*/i 553 SPAM_CLIENT
/cable.*\..*\..*/i 553 SPAM_CABLE
/pool.*\..*\..*/i 553 SPAM_POOL
/dial.*\..*\..*/i 553 SPAM_DIAL
/ppp.*\..*\..*/i 553 SPAM_PPP
/dslam.*\..*\..*/i 553 SPAM_DSLAM
/dhcp.*\..*\..*/i 553 SPAM_DHCP
/adsl\.r61\.net/i OK adsl.r61.net
/adsl\.infotecstt\.ru/i OK adsl.infotecstt.ru
/[\.-]dsl.*\..*\..*/i 553 SPAM_DSL
/[ax]dsl.*\..*\..*/i 553 SPAM_XDSL
/.*([0-9]*\.){4}cableonline\.com\.mx/i 553 SPAM_IP-cableonline-com-mx
/.*\.([0-9]*\.){4}ip\.holtonks\.net/i 553 SPAM_ip-holtonks-net
/([0-9]*-){3}[0-9]*\.fibertel\.com\.ar/i 553 SPAM_IP-fibertel-com-ar
/.*[0-9]*-[0-9]*\.fibertel\.com\.ar/i 553 SPAM_IP-fibertel-com-ar
/[0-9]*\.user\.veloxzone\.com\.br/i 553 SPAM_user-veloxzone-com-br
/[0-9]*\.customer\.alfanett\.no/i 553 SPAM_customer-alfanett-no
/.*([0-9]*-){3}[0-9]*\.telecom\.net\.ar/i 553 SPAM_host-telecom-net-ar
/.*(-[0-9]*){2}\.telpol\.net\.pl/i 553 SPAM_host-telpol-net-pl
/(.*\.){2}maxonline\.com\.sg/i 553 SPAM_host-maxonline-com-sg
/(.*-){2}.*\.fairgamemail\.us/i 553 SPAM_host-fairgamemail-us
/[0-9]*[0-9]*-\.wispnet\.net/i 553 SPAM_host-wispnet-net
/.*-.*(\..*){2}\.ne\.jp/i 553 SPAM_host-ne-jp
/[0-9]*\..*\.ne\.jp/i 553 SPAM_h09t-ne-jp
/(.*\.){3}ad\.jp/i 553 SPAM_host-ad-jp
/(.*\.){4}revip\.asianet\.co\.th/i 553 SPAM_revip-asianet-co-th
/[0-9]*\..*\.virtua\.com\.br/i 553 SPAM_host-virtua-com-br
/([0-9]*-){3}[0-9]*\.exatt\.net/i 553 SPAM_host-exatt-net
/([0-9]*\.){4}ip\.alltel\.net/i 553 SPAM_host-ip-alltel-net
/[0-9]{6,}\.chello\.../i 553 SPAM_host-chello
/.*[0-9]*\..*\.chello\.../i 553 SPAM_host-chello-xx
/.*\..*\.t-dialin\.net/i 553 SPAM_t-dialin-net
/.*\..*\.t-ipconnect\.de/i 553 SPAM_t-ipconnect-de
/([0-9]*-){2,3}[0-9]*\..*\.cgocable\.net/i 553 SPAM_host-cgocable-net
/.*\..*\.shawcable\.net/i 553 SPAM_host-shawcable-net
/p[0-9]*\.mp[0-9]*\.aaanet\.ru/i 553 SPAM_aaa_modem_pool
/([0-9]*-){2}[0-9]*\.ip\.adsl\.hu/i 553 SPAM_ip-adsl-hu
/([0-9]{1,3}\.){2}broadband4\.iol\.cz/i 553 SPAM_broadband-iol-cz
/.*\.yandex\.ru/i OK yandex.ru
первая строка - исключение, с тем же успехом этот адрес можно было внести в /etc/postfix/client_access


файл /etc/postfix/sender_access:

/.*@friends\.ru/i OK
/.*evil\.org/i REJECT
здесь задаем маски адресов, от кого мы хотим получать (или запрещать) корреспонденцию несмотря на то,
что домены этих адресов могут быть неопределены.


файл /etc/postfix/recipient_access:

/.*@friends\.ru/i OK
/.*evil\.org/i REJECT
разрешаем или запрещаем отправку писем на эти адреса

файл /etc/postfix/helo_regexp:

/([0-9]{1,3}(\.|-)){3}[0-9]{1,3}/i REJECT IP-able helo SPAM
запрещаем ИП-адрес в качестве HELO.
Это явное нарушение RFC, но практика показала, что это работает без сбоев.


после создания файлов helo_access, client_access и dul_checks необходимо выполнить


server# postmap helo_access
server# postmap client_access
server# postfix check
и если все прошло без ругани, то


server# postfix reload
и можно смотреть лог-файл на предмет ошибок и наличие ошибочных срабатываний (if ever any Smile ). Для удобства можно grep'ить по ключевому слову SPAM

server# tail -f /var/log/maillog | grep SPAM


В моем примере я несколько дней изучал журналы /var/log/mail.log на предмет ложных срабатываний,
и еще в течение нескольких месяцев наблюдал за всем отсеянным по dul_cheсks письмам,
и не обнаружил ни одного случая блокировки нормальной почты по вине нашего сервера.

Следует отметить, что встречались очень искусные попытки мимикрии под реальные емайл-адреса,
которые тем не менее легко проверялись с помощью whois-запросов.

После настроек периодически всплывали "продвинутые" респонденты, которые отсылали письма с адресов,
не имеющих ДНС-имен или с некорректным HELO.
Для них всех были добавлены записи в "белые списки", что также решило проблему.

Как показал опыт, DNSBL-проверки отсекают примерно 40% спама в процессе приема заголовков,
еще 30% отсекается с помощью dul_checks, и на этом экономится трафик не принятых тел писем спамов
(примерно 20-50 kb на каждой попытке,
а их может быть примерно 30-50 тыс в неделю).

Удивительное рядом, но на проверках HELO/EHLO отсекается большинство хитрых спаммеров, которые
пытаются замаскироваться под приличный сервер(10% от общего числа писем).

Это особенно актуально в связи с тем, что динамически выделяемые IP-адреса технически не очень
эффективно попадают в DNSBL-списки, так как часто к моменту проверки на open-relay&prime;ность
некоторого адреса на нем уже "сидит" совершенно другой комп.
Зато по обратным доменным именам такие адреса легко распознаются Smile, и это не зависит от
спаммеров, а только от ISP.

Однако, оказалось неэффективным требовать обязательного разрешение ИП-адрес отправителя в ДНС.
Хотя это тоже режет спам, часто попадаются сервера небольших фирм, чьи ISP поленились
расписать раздаваемые для подключений ИП-адреса в DNS.
От опции reject_unknown_client пришлось отказаться совсем.

Приведенные настройки обеспечили эффективную фильтрацию спама, уменьшив его кол-во
на порядок (с 300-500 спамов в сутки до 10-15 на один ящик электронной почты).

Для сервера с 30 почтовыми ящиками (примерно 5 тыс принятых и 10 тыс отклоненных писем в неделю)
кумулятивная экономия трафика составляет примерно 300 мб в неделю, или около полутора гигабайт в месяц.

Стоит отметить, что вместе с "закручиванию гаек" для проверок на этапе SMTP-соединений
осуществлялись offline-меры по борьбе со спамом. Среди них анализ тенденций по журналу mail.log
и отсылка spam-report'ов на www.spamcop.net

"Спам - явление социальное, и только объединившись и действуя сообща, мы сможем его победить" (Кто-то из великих)

Буду признателен за любую критику и статистику эффективности, на sergey @ rsu точка ru
Автор: Сергей Литвиненко
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
Показать сообщения:   
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> Сеть Часовой пояс: GMT
Страница 1 из 1
 Главная страница сайта
 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
© Колисниченко Денис