Защита от спама

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Reken
лейтенант
Сообщения: 611
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Защита от спама

Непрочитанное сообщение Reken » 2016-10-11 12:13:22

Здравствуйте
Только, только разобрался с настройкой тестового почтового сервера, как проблема на "боевом" почтовом серваке возникла... Участились случаи получения "спама", по 5-7 штук писем за ночь... Письма характера "исцеление","лечение","продажа" и т.д... Все письма по характеру одинаковые, внутри письма текста нет, только одна большая картинка в которой текст рекламы, при наведении мышки на картинку, отображается текст на ссылку, что то типа:

Код: Выделить всё

http://ad6a4daq68/bnr.pdf
И так почти каждое письмо со спамом содержит "картинку PDF" при нажатии на которую, выбросит на нежелательные сайты...

Как можно обезопасить себя и сотрудников от этого спама? Почтовый сервак действует следующим образом:
1) Fetchmail забирает почту с почтового ящика
2) Далее Fetchmail отдает почту EXIM
3) После чего Dovecot раскладывает почту по ящикам клиентов
В конфигах EXIM есть настройка стандартной защиты от спама, но толку от этого нет...

Похоже наш адрес попал в СПАМ базы... Что посоветуете предпринять?

Отправлено спустя 1 час 11 минут 16 секунд:
Наверное самый лучший вариант, это создать список "плохих" адресов для EXIM. Что бы EXIM не пропускал письма с этих адресов...

Так как похоже весь этот спам идет с одних и тех же адресов (только перед значком @ меняется набор букв)...

Отправлено спустя 1 час 55 минут 32 секунды:
Пока что попробую обезопасить почту от спама так:
В конфиге exim укажу:

Код: Выделить всё

discard message     = "sender in local black list"
senders     = /usr/local/etc/exim/blacklist.txt
accept
Создам файл blacklist.txt с содержанием адресов спамеров....
Вроде бы должно получиться... Спам должен отбрасываться....

P.S. Наверное будет не лишним добавить в конфиг EXIM:

Код: Выделить всё

  deny    message       = you in blacklist: $dnslist_domain \n $dnslist_text
          dnslists      = opm.blitzed.org : \
                          cbl.abuseat.org : \
                          bl.csma.biz : \
                          dynablock.njabl.org

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Защита от спама

Непрочитанное сообщение xM » 2016-10-11 15:17:58

Reken писал(а): P.S. Наверное будет не лишним добавить в конфиг EXIM:
В таком формате не рекомендую. Лучше в качестве комплексной меры с балльной оценкой или как критерий для грейлиста.
Лучше сразу думайте о комплексном решении от спама типа Spamassassin или rspamd что, впрочем, не отменяет и разумного антиспам конфига Exim.
IT voodoo blog https://kostikov.co

Аватара пользователя
Reken
лейтенант
Сообщения: 611
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Защита от спама

Непрочитанное сообщение Reken » 2016-10-12 8:49:07

Пока что "черный список" спасает от спама, ночью отбросил несколько писем... Но это временное решение, скоро спамеры с новых адресов начнут атаковать письмами...
Так что действительно попробую настроить спам фильтр. Какой посоветуете? Какой лучше? Те два которые выше приведены? Spamassassin и rspamd

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Защита от спама

Непрочитанное сообщение xM » 2016-10-12 10:49:56

Spamassassin и rspamd
Лучше тот, который вы сможете настроить и поддерживать.
Spamassassin старый, хорошо документированный и очень гибкий, но медленный. Rspamd быстрый, но хуже документирован и изучен. Кроме того, он довольно активно изменяется, в том числе и внутри, что может привести к проблемам со временем.
IT voodoo blog https://kostikov.co

Аватара пользователя
Reken
лейтенант
Сообщения: 611
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Защита от спама

Непрочитанное сообщение Reken » 2016-10-12 11:46:40

Понятно. Думаю со временем разберусь какой лучше спам-фильтр настроить.
Я вот ещё что подумал, все эти спам письма содержат картинку в которой текст рекламы (притом эта картинка вложением не считается, письмо числится как "пустое" без вложения), а наведя курсор на эту картинку, видна ссылка, куда произойдет перенаправление, в случае нажатия на картинку...
Можно в EXIM поставить задачу, что бы письма, которые содержат в себе такие картинки (со ссылками на http://dfsfs/spam.pdf), кстати весь спам ссылается на pdf... В общем что бы EXIM отбрасывал такие сообщения, в которых есть ссылки на pdf, возможно такое реализовать силами EXIM ?

Отправлено спустя 35 минут 52 секунды:
Эти письма получаются HTML-шаблоны? Которые и направляют по ссылкам...

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Защита от спама

Непрочитанное сообщение xM » 2016-10-12 14:07:45

Reken писал(а): В общем что бы EXIM отбрасывал такие сообщения, в которых есть ссылки на pdf, возможно такое реализовать силами EXIM ?
Можно. Например, средствами разбора синтаксического разбора вложений в ACL MIME.
IT voodoo blog https://kostikov.co

Аватара пользователя
Reken
лейтенант
Сообщения: 611
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Защита от спама

Непрочитанное сообщение Reken » 2016-10-12 14:17:15

xM писал(а):Можно. Например, средствами разбора синтаксического разбора вложений в ACL MIME.
Сможете пожалуйста чуть подробнее объяснить или подсказать, не могу понять.

P.S. Так же заметил, что только спам, в каждой теме письма использует знак !. Пытаюсь придумать правило по которому EXIM будет отбрасывать письма содержащие в ТЕМЕ знак ! ... Не самый лучший вариант конечно, но из нужных нам источников никогда, никто не использует в теме знак !, поэтому нужные письма не попадут под правило... Сможете пожалуйста подсказать, как правильно написать это правило для EXIM

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Защита от спама

Непрочитанное сообщение xM » 2016-10-12 14:28:50

http://www.exim.org/exim-html-current/d ... _time.html
и в частности "5. Scanning with regular expressions" - можно делать в ACL MIME и ACL DATA.
Ну и про PCRE читайте. Учебников и примеров пруд-пруди.
IT voodoo blog https://kostikov.co

Аватара пользователя
Reken
лейтенант
Сообщения: 611
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Защита от спама

Непрочитанное сообщение Reken » 2016-10-13 11:12:57

Да, читаю и смотрю примеры EXIM. В общем в процессе изучения...

Сможете пожалуйста подсказать мне в ошибках лога... Я всё пытаюсь зарубить СПАМ по ! знаку в теме письма, а то СПАМЕРЫ каждый день с новых адресов атакуют, черный список не справляется. Добавил в EXIM правило:

Код: Выделить всё

 deny    message        ="bad subject"
         condition      = ${if match{$h_subject}{*!}{yes}{no}}
В логе сыпется ошибка:

Код: Выделить всё

2016-10-13 11:16:26 H=(free.domen.local) [127.0.0.1] I=[127.0.0.1]:25 F=<***@yandex.ru> temporarily rejected RCPT <mail@domen.local>: failed to expand ACL string "${if match{$h_subject}{*!}{yes}{no}}": missing } at end of string - could be header name not terminated by colon
Ругается что правило неправильно составил... Подскажите пожалуйста, где в правиле допущена ошибка.
P.S. С яндекса это я отправил "проверочное" письмо с ! в теме...

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Защита от спама

Непрочитанное сообщение xM » 2016-10-13 15:18:18

Reken писал(а): *!
Это что за бред? Во-первых, ! это служебный символ отрицания. Если вам нужен он как символ, его надо экранировать.
И вообще, регулярные выражения в Exim надо экранировать \N с двух сторон.
Например, если вы хотите написать выражение для всех строк, которые будут оканчиваться на восклицательный знак, то для Exim надо писать так

Код: Выделить всё

\N.*\!$\N
Ещё раз, марш учить PCRE - он нужен везде почти бывает.
IT voodoo blog https://kostikov.co

Аватара пользователя
Reken
лейтенант
Сообщения: 611
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Защита от спама

Непрочитанное сообщение Reken » 2016-10-14 15:06:50

Изучать то изучаю. Просто не всё сразу получается понять...Но думаю со временем разберусь
Понял что *! действительно бред... Потому что получается отрицание

Подскажите мне пожалуйста, где я допускаю ошибку в правиле ниже:

Код: Выделить всё

deny message = "subject in blacklist"
       condition = ${if match{$h_Subject:}{\N\!$\N}{yes}{no}}
Как я понимаю это правило:
deny message = "subject in blacklist" ### отклонить письмо с темой которая в черном списке

condition = ${if match{$h_Subject:} ### условие, что тема совпадает...
{\N\!$\N} ### \N флаги раскрытия, всё что между ними копируется без раскрытия
### \!$ обозначает если текст завершается !

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Защита от спама

Непрочитанное сообщение xM » 2016-10-14 21:01:37

Я не вижу ошибки. А в чём дело?
IT voodoo blog https://kostikov.co

Аватара пользователя
Reken
лейтенант
Сообщения: 611
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Защита от спама

Непрочитанное сообщение Reken » 2016-10-17 8:22:24

xM писал(а):Я не вижу ошибки. А в чём дело?
Не срабатывает правило. Я с яндекса отправляю письмо с темой "Рассылка!", и письмо успешно доставляется мне...
Восклицательный знак присутствует, а правило не запрещает это письмо
Как думаете, почему не срабатывает правило?

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Защита от спама

Непрочитанное сообщение xM » 2016-10-17 11:01:01

Два варианта.
1. Кодировка.
2. Вызов правила не из ACL DATA
IT voodoo blog https://kostikov.co

Аватара пользователя
Reken
лейтенант
Сообщения: 611
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Защита от спама

Непрочитанное сообщение Reken » 2016-10-17 11:54:46

Спасибо xM
Правильно направили, второй вариант оказался... Немного не там прописал правило.
Сейчас исправил, всё работает письма с ! в теме отбрасываются.
Я только deny в правиле поменял на discard, что бы спамеры не получали от меня уведомлений что я их письма по теме рублю...

Один минус, теперь мои локальные пользователи тоже не могут отправлять письма в мир указав в теме !.
Подскажите пожалуйста, можно ли своих локальных пользователей в исключение добавить? Знаю что можно, ещё пока не понял как))

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Защита от спама

Непрочитанное сообщение xM » 2016-10-17 15:39:42

Reken писал(а): Один минус, теперь мои локальные пользователи тоже не могут отправлять письма в мир указав в теме !.
Как-то типа

Код: Выделить всё

         !domains        = +local_domains
в этом правиле.
IT voodoo blog https://kostikov.co

Аватара пользователя
Reken
лейтенант
Сообщения: 611
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Защита от спама

Непрочитанное сообщение Reken » 2016-10-17 16:05:19

Понятно, я примерно так и думал...

xM сможете пожалуйста ещё подсказать. Как я говорил ранее, все спамеры вроде бы используют HTML шаблоны. Картинки которые не считаются вложением, а щелкнув мышкой по картинке отправляешся на сайт... Это же HTML шаблоны?

Не могу понять как в правиле объяснить EXIMу , что отбрасывать нужно письма с html вложением... Вот ниже пример в котором запрещаем допустим doc и xls

Код: Выделить всё

    acl_smtp_mime          = acl_check_mime
    acl_check_mime:
            deny
                    message         = We do not accept attachments like: $mime_filename
                    condition       = ${if match{$mime_filename}{\N\.(doc|xls)$\N}}
            accept
А какой формат у html шаблонов во вложении?

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Защита от спама

Непрочитанное сообщение xM » 2016-10-17 21:06:56

В ACL MIME или DATA. Но для HTML лучше, наверное, через $mime_content_type.
И, главное, decode не забудьте сделать в первом правиле начала разбора MIME.
IT voodoo blog https://kostikov.co

Аватара пользователя
Reken
лейтенант
Сообщения: 611
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Защита от спама

Непрочитанное сообщение Reken » 2016-10-18 9:35:59

Как думаете, такой вариант сработает?

Код: Выделить всё

    acl_smtp_mime          = acl_check_mime
    acl_check_mime:
    
    deny   message = "HTML mail is not accepted here"
           condition   = ${if eq{$mime_content_type}{text/html}{1}{0}}
           docode      = default
Подходит это правило что бы зарубить письма содержащие HTML шаблоны?

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Защита от спама

Непрочитанное сообщение xM » 2016-10-18 11:31:51

Reken писал(а): Подходит это правило что бы зарубить письма
Исправьте ошибку и проверьте отправкой.
Но вы же понимаете, что оно всю почту с HTML срубит?
IT voodoo blog https://kostikov.co

Аватара пользователя
Reken
лейтенант
Сообщения: 611
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Защита от спама

Непрочитанное сообщение Reken » 2016-10-18 11:48:14

xM писал(а):Исправьте ошибку и проверьте отправкой.
Значит всё таки я допустил ошибку в правиле?
xM писал(а):Но вы же понимаете, что оно всю почту с HTML срубит?
Оно же срубит HTML шаблоны... Сколько помню, если приходила почта с HTML шаблоном, то 90% случаев это спам... Даже скрин приложу, вот такие сообщения и им подобные по 5 штук в день идут. Уже надоели эти спамеры.
А как ещё Вы посоветуете отбрасывать СПАМ? Помимо acl в EXIM настраивать дополнительные спам-фильтры? Хотя можно по всем клиентам в thunderbird настройку сделать, но это долго...
Вложения
spam.png

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Защита от спама

Непрочитанное сообщение xM » 2016-10-18 12:15:04

Reken писал(а): А как ещё Вы посоветуете отбрасывать СПАМ?
Синтаксический разбор сессии, заголовков и тела на соответствие RFC и подозрительные значения + использование данных SPF, DKIM, DMARC, DCC + локальные белые и чёрные листы + разбор контента при помощи комплексных средств типа Spamassassin / rspamd.

Отправлено спустя 1 минуту 18 секунд:
Reken писал(а): Значит всё таки я допустил ошибку в правиле?
Опечатку - dEcode
IT voodoo blog https://kostikov.co

Аватара пользователя
Reken
лейтенант
Сообщения: 611
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Защита от спама

Непрочитанное сообщение Reken » 2016-10-19 9:14:00

Правило то сработало, вот только я забыл про то, что многие "нужные" отправители, используют html в "подписи" письма, и моё правило их успешно отбрасывает... В acl_check_mime нельзя же добавить ещё условие, что бы помимо html в теме письма присутствовал знак "!" ?. Что бы отбрасывал письмо, только когда два условия совпадало...

Пока что попробую добавить следующее, думаю лишним не будет, а СПАМ хоть немного да отбросит...

Код: Выделить всё

  deny    message       = "HELO/EHLO require by SMTP RFC"
          condition     = ${if eq{$sender_helo_name}{}{yes}{no}}
          
  Ну и правила попробую добавить, которые будут проверять существование домена, от приходящих писем     

Аватара пользователя
Reken
лейтенант
Сообщения: 611
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Защита от спама

Непрочитанное сообщение Reken » 2016-10-19 16:29:09

Reken писал(а): В acl_check_mime нельзя же добавить ещё условие, что бы помимо html в теме письма присутствовал знак "!" ?. Что бы отбрасывал письмо, только когда два условия совпадало...
Получилось...

Код: Выделить всё

acl_check_mime:

 discard message = "URL and HTML mail is not accepted here"
          condition = ${if match{$h_Subject:}{\N\!$\N}{yes}{no}}
          condition = ${if eq{$mime_content_type}{text/html}{1}{0}}
          decode = default

Аватара пользователя
Reken
лейтенант
Сообщения: 611
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Защита от спама

Непрочитанное сообщение Reken » 2016-10-20 9:12:10

Последнее правило которое написал, вырубает почти весь СПАМ...

Код: Выделить всё

acl_check_mime:

 discard message = "URL and HTML mail is not accepted here"
          condition = ${if match{$h_Subject:}{\N\!$\N}{yes}{no}}
          condition = ${if eq{$mime_content_type}{text/html}{1}{0}}
          decode = default
Но к сожалению, есть нужные "отправители", которые используют html подпись в письме, и часто ставят ! знак в теме...

Правило это хорошо справляется со спамом, жалко его убирать, проще придумать список "белых адресов" на который не будет распространяться данное правило... Кстати это же правило и моих локальных пользователей отбрасывает, так как они используют html подпись, ну и когда используют ! в теме, их отбрасывает...

Можно ли это правило дополнить "белым списком"? Что то типа:

Код: Выделить всё

!senders = /usr/.../whitelist
А в whitelist уже прописать нужные адреса...

В mime не срабатывает правило

Код: Выделить всё

!domains = +local_domains
При отправке письма локальными пользователями, ругается что в mime допущена ошибка