Открыл недавно несколько возможностей в Постфиксе для отсеивания нежелательной почты на этапе HELO.
Теперь у меня сервер отсеивает от 90 до 98% почты сразу. Антивирус (clamAV) и SA отдыхают.Коэффициент SA задрал до 7.3. Все равно до него мало что доходит.
Итак в main.cf стоит:
smtpd_recipient_restrictions =
permit_mynetworks,
reject_non_fqdn_recipient,
reject_unauth_destination,
check_helo_access hash:/etc/postfix/helo_checks,
check_helo_access pcre:/etc/postfix/helo_checks_pcre,
check_sender_access hash:/etc/postfix/sender_checks,
check_client_access hash:/etc/postfix/client_checks,
check_sender_mx_access cidr:/etc/postfix/mx_access,
check_recipient_mx_access cidr:/etc/postfix/mx_access,
reject_rbl_client relays.ordb.org,
reject_rbl_client sbl.spamhaus.org,
reject_unknown_sender_domain,
reject_unknown_recipient_domain/etc/postfix/helo_checks:
# Reject anybody that HELO's as being in our own domain(s)
# (Note that if you followed the order suggested in the main.cf
# examples, above, that machines in mynetworks will be okay.)
<Мой домен> REJECT You are not in trala.la# Somebody HELO'ing with our IP address?
<мой IP> REJECT You are not meЭто хорошо помогает против вирус и зомби.
/etc/postfix/helo_checks.pcre:
# Initial expression
#/^[0-9]+(\.[0-9]+){3}$/ REJECT Invalid hostname (plain D)
# expression modified by Eugene 22.03.2005
/[^[] *[0-9]+((\.|-)[0-9]+){3}/ REJECT Invalid hostname (ipable)
#
/(modem|dia(l|lup)|dsl|p[cp]p|cable|catv|poo(l|les)|dhcp|client|customer|user|[0
-9]{4,})(-|\.|[0-9])/ REJECT Invalid hostname (client)
#
/[0-9]+-[0-9]+/ REJECT Invalid hostname (D-D)
URL:
Обсуждается: http://www.opennet.me/tips/info/813.shtml
Приделал тоже самое через mimedefang
-реально работает.Спасибо за идею!
Не пойму, почему вы проверяете helo, а не client?
>Не пойму, почему вы проверяете helo, а не client?
HELO пишет сам клиент, а имя в client получается из резолвинга. Для IP без обратной зоны, это помогает.
>HELO пишет сам клиент, а имя в client получается из резолвинга. Для
>IP без обратной зоны, это помогает.
А вы логи свои читать не пробовали???
Как много клиентов с адресов типа bla-pool-1.2.3.some.net говорят это "bla-pool-1.2.3.some.net" в helo?
а как насчет резать и еще и тех кто в helo
говорит что он локалхост ?то есть в /etc/postfix/helo_checks добавить
localhost REJECT You are not my localhost
127.0.0.1 REJECT You are not my localhost
от таких резальщиков просто кошмар какой-то: приходится почти индивидуально каждого лечить - то один придумает способ как мешать жить нормальной почте - то другой, то ip с резольвингом в customer режут то еще что-то нагородят. единственный выход - spamassassin+razor+pyzor+dcc и нормально по русски настроенный local.cf - сколько можно повторять :(((
>нагородят. единственный выход - spamassassin+razor+pyzor+dcc и нормально по русски настроенный local.cf
>- сколько можно повторять :(((Покажите свой local.cf, если не жалко.А то про особенности блокировки русского спама в spamassassin в интернете ничего нет :-(
А чем плох данный метод ? У меня установлен spamassassin правда без razor, pyzor и dcc. Из всех настроек в local.cf - увеличены балы получаемые за Баейс, ну и различные e-mail адреса в белых списках. В сутки отсеивается от 300 до 500 писем спама, ну бывает резанет полезное письмо, но это достаточно редко происходит (в основном из-за кривости пользователей). В месяц приходит 150-170 мегабайт спама. Включив эту фильтрацию (только сегодня), SA практически простаивает, все режется на этапе HELO.
мне так думается, что customers могли бы использовать релей своего провайдера, если уж лениво им для своего сервера назначить нормальное имя.
я не прав?а идея действительно эффективная, только я кроме проверки helo зодно проверяю и PTR (один и тот же файл с шаблонами для обоих случаев). Список гораздо объёмней. Если кому надо -- могу намылить.
там в local.cf надо задавить то что мешает - это надо отслеживать периодически, а главное подключить razor+pyzor+dcc - я потом выложу где-нибудь local.cf и все как настраивать,
А есть у когонить мнение по поводу реальных мыл серверов, которые дают не существующие (не правильные) HELO, отключение проверки на HELO в разы увеличивает приток спама, как бороться (почта от клиентов таких серверов нужна) ?
да, к сожалению, такие сервера попадаются довольно часто. Как вариант борьбы - писать админу сервера и пытаться втолковать ему что его сервер криво настроен, но успех маловероятен. Если уж нужна почта от таких "криворуких" то только один вариант - отлавливать в логах эти сервера и вносить их в свой белый список "кривых хело серверов"
Спасибо автору, статья замечательная.
Жалоб нет, а трафик упал в разы !
Ну а по поводу spamassassin+razor+pyzor+dcc, а попробуйте это сделать на 486SX25, боюсь работать всё будет о-очень медленно )))
А попробуйте взять нормальный сервер, например достаточно дешевый 2xPIII-600,512MB, Стоит такая "игрушка для админа" не более 5000 рублей, а если таких денег нет, значит и почтовый сервер вам не нужен.
Как сделать то же самое на сендмыле?
В дополнение к своей предыдущей заметке.
Сейчас юзаю Postfix 2.1 (кое-где 2.2).
Нашел там такую фичу. Начиная с версии 2.1 Постфикс поддерживает выражения вида1c.ru reject_unverified_sender
в файле access. Это означает, для указанного домена проверить наличие отправителя, и если его нет или он запрещен, то режектить его почту. Настройки позволяют кэшировать проверки отправителя. Кажется, по умолчанию положительные проверки кэшатся на 30 суток, отрицательные - на 3 (или на 7). Все настраиваемо в main.cf. Файл для кэша прописывается там же. Таким образом у меня стоят полностью домены com, net, edu, разные экзотические страны типа ws, и выборочно русские домены типа mail.ru, rambler.ru и т.п. Т.е. те домены, которые часто ставят спамеры в своих письмах в качестве поддельных адресов. Иногда улов на таких проверках бывает до 15-20 процентов почты.
Кроме того, я поменял некоторые настройки в helo_checks_pcre:
# My net below
/192\.168\.82\.\d+/ OK
/\d+((\.|-)\d+){3}/ REJECT Invalid hostname (ipable)
#/(dsl|p[cp]p|cable|catv|dhcp|dynamic|client|customer|user|net|modem|di(a|au)(l|lup)|po(ol|oles|ll))(-|\.|\d)/ REJECT Invalid hostname (client)
/(dsl|p[cp]p|cable|catv|dhcp|dynamic|client|customer|modem|di(a|au)(l|lup)|po(ol|oles|ll))(-|\.|\d)/ REJECT Invalid hostname (client)
/\d{2,}[-\.]+\d{2,}/ REJECT Invalid hostname (D-D)
/\d{2,}.*?(t-dialin|optonline|comcast)\.net/ REJECT Invalid hostname (D-risk)
/\d{2,}.*?(isp\.belgacom\.be|chello\.|gehc-cmms1\.co\.uk|mundo-r\.com|sb\.brewet\.pl|adelphia\.net|affinity\.com|home\.nl|virtua\.com\.br|nckcn\.co
m|brewet\.pl|\.jp$|\.cz$|\.pl$)/ REJECT Invalid hostname (D-risk)
/^(((newm|em|gm|m)ail|yandex|rambler|hotbox|chat|rbc|subscribe|spbnit)\.ru)$/ REJECT Faked hostname ($1)
/^(((mcim|newm|em)ail|post|hotbox|msn|microsoft|aol|news|compuserve|yahoo|google|earthlink|netscape)\.(com|net))$/ REJECT Faked hostname ($1)
# YAHOO use big numbers
/yahoo\.com/ OK
#/\d{6,}/ REJECT Invalid hostname (D6)
#/^localhost/ REJECT localhost not allowed hereВыражение в для задания проверок в main.cf выглядит так (с учетом оптимизации трафика и вероятности попадания):
smtpd_sender_restrictions =
reject_non_fqdn_sender,
check_helo_access hash:/etc/postfix/helo_checks,
check_helo_access pcre:/etc/postfix/helo_checks_pcre,
check_sender_access hash:/etc/postfix/sender_checks,
check_client_access hash:/etc/postfix/client_checks,
check_sender_mx_access cidr:/etc/postfix/mx_access,
reject_unknown_sender_domain,
hash:/etc/postfix/access,
reject_rbl_client relays.ordb.org,
reject_rbl_client sbl.spamhaus.org
# reject_unknown_hostnameПоследняя строка закомментирована из-за кривости настройки DNS у некоторых почтовых админов (не прописан обратный резолв по адресу для почтовика). Хотя работает очень даже неплохо.
Файл mx_access:
# Netblock returned by Verisign domain hijacking .com and .net domains
64.94.110.0/24 REJECT 010 Verisign hijacked domain
# My Net
#192.168.82.0/24 OK
0.0.0.0/8 REJECT 020 Domain MX in broadcast network
10.0.0.0/8 REJECT 030 Domain MX in RFC 1918 private network
127.0.0.0/8 REJECT 040 Domain MX in loopback network
169.254.0.0/16 REJECT 050 Domain MX in link local network
172.16.0.0/12 REJECT 060 Domain MX in RFC 1918 private network
192.0.2.0/24 REJECT 070 Domain MX in TEST-NET network
#192.168.0.0/16 REJECT 080 Domain MX in RFC 1918 private network
224.0.0.0/4 REJECT 090 Domain MX in class D multicast network
240.0.0.0/5 REJECT 100 Domain MX in class E reserved network
248.0.0.0/5 REJECT 110 Domain MX in reserved network
А здесь немного про SA.
Недавно поставил Spamassassin версии 3.10 и хочу предостеречь народ от торопливой установки сего продукта на своих серверах. До этого был 3.01. После доводки его (ранее был 2.63) жалоб в процессе эксплуатации больше не было. А с 3.10 чувствую придется помучиться, либо вернуться на 3.01.
Началось с того, что почему-то сильно поменялись (и далеко в нелучшую сторону) коэффициенты. Вдруг bayes_99 упал до 3.5, а русские буквы в заголовках from и subj вдруг стали весить более 4 баллов. Ужас! Стал проходить спам и отсеиваться почта от роботов и рассылок. Ведь роботы пишут наши криворукие программеры, которые не читают RFC. Видимо, это может полечиться ручной правкой баллов local.cf. Но что печальнее, появились непонятки в работе журналирования и стал глючить sa-learn.
Хотя начинает появляться мысль, а нафиг он нужен? Spamassassin, то есть. Он сейчас отлавливает у меня всего то 3-5 писем в день. Да и то раз в неделю неправильно отсеивает "правильную" (вернее нужную, но корявую) почту с рассылок с работных сайтов. Кадровики жалуются :-(
Так недавно пришло письмо с 11.5 баллов и было забраковано. Оказалось, это было хорошее письмо по рассылке. Все после того, как в 10-м SA были увеличены баллы за FROM_ILLEGAL_CHARS и
SUBJ_ILLEGAL_CHARS до нереально высоких величин.
Как в postfix запретить прием писем с com доменов?
>Как в postfix запретить прием писем с com доменов?com Reject .com not allowed
/(modem|dia(l|lup)|dsl|p[cp]p|cable|catv|poo(l|les)|dhcp|client|customer|user|[0
-9]{4,})(-|\.|[0-9])/ REJECT Invalid hostname (client)нужно удалить |[0-9]{4,} иначе почта с gmail неидет ((((
а можно что-то аналогичное прикрутить на qmail?
ll /etc/postfix/helo_checks-rw-r--r-- 1 root root 336 Апр 10 10:35 /etc/postfix/helo_checks
less /var/log/maillog
Apr 10 10:40:23 localhost postfix/smtpd[29324]: fatal: open database /etc/postfix/helo_checks.db: No such file or directory
cat /etc/postfix/main.cf |grep helo_chcheck_helo_access hash:/etc/postfix/helo_checks,
Где ошиПка ?
ЗЫ
Apr 11 14:10:43 localhost postfix/postfix-script: starting the Postfix mail system
Apr 11 14:10:43 localhost postfix/master[24983]: daemon started -- version 2.2.2, configuration /etc/postfix
>[оверквотинг удален]
>
>Apr 10 10:40:23 localhost postfix/smtpd[29324]: fatal: open database /etc/postfix/helo_checks.db: No such file
>or directory
>
>
>cat /etc/postfix/main.cf |grep helo_ch
>
>check_helo_access hash:/etc/postfix/helo_checks,
>
>Где ошиПка ?cd /etc/postfix
postmap helo_checksman postmap
Spamhaus -- организация, которая пытается ввести цензуру в интернете. Блокирует сети датацентров и целые страны.НЕ ИСПОЛЬЗУЙТЕ Spamhaus !