Перейти к содержимому


Фото
- - - - -

Exim 4.89 + DrWeb для почтовых серверов


  • Please log in to reply
4 ответов в этой теме

#1 zirro.s

zirro.s

    Member

  • Posters
  • 132 Сообщений:

Отправлено 29 Сентябрь 2017 - 10:25

Добрый день.

Писал в техподдержку, но там уже неделю никто не отвечает, может тут подскажут.
Пытаюсь настройку связку Exim 4.89 + DrWeb для почтовых серверов. ОС FreeBSD 11.1 х64. 
Вопрос такой: правильно ли я понял из документации, что при использовании интерфейса сопряжения spamd/rspamd, Drweb сам не отвергает письма, а только сообщает Exim'у, что с письмом "что-то не так". И делается это с помощью правил, в которых должно присутствовать действие REJECT. Например: 
SpamdRuleSet1 = body match (".*купи.*") : REJECT "This is a SPAM message" 
А как Exim должен отвергать такие письма? По какому-то слову в параметре <description>? 
Положим в документации указано, что для настройки Exim'а нужно добавить следующие строки: 
 

warn spam = nobody:true 
  add_header = X-Spam_score: $spam_score 
     X-Spam_score_int: $spam_score_int 
     X-Spam_bar: $spam_bar 
     X-Spam_report: $spam_report 
  condition = ${if match {$spam_report}{SPAM}} 
deny spam = nobody:true 
  condition = ${if match {$spam_report}{THREAT}} 
 

То есть письмо отвергается если переменная $spam_report содержит "THREAT", а если $spam_report содержит "SPAM" - письму добавляются баллы, . 

В документации есть примеры правил: 
SpamdRuleSet0 = threat_category in (KnownVirus,VirusModification, UnknownVirus) : REJECT "The message contains a THREAT" 
SpamdRuleSet1 = body match (".*купи.*") : REJECT "This is a SPAM message" 
То есть на основе слова THREAT из фразы: "The message contains a THREAT" Exim должен отвергнуть письмо,

а на основе слова SPAM из фразы: "This is a SPAM message" Exim должен распознать письмо как спам. Так? 

А почему тогда после установки в правилах отсутствует параметр <description>: 
drweb-ctl cfshow | grep RspamdRule 
MailD.RspamdRuleSet0 = 
MailD.RspamdRuleSet1 = : set MailTemplatesDir = "rspamd" 
MailD.RspamdRuleSet2 = 
MailD.RspamdRuleSet3 = threat_category in (KnownVirus, VirusModification, UnknownVirus, Adware, Dialer) : REJECT 
MailD.RspamdRuleSet4 = 
MailD.RspamdRuleSet5 = url_category in (InfectionSource, NotRecommended, OwnersNotice) : REJECT 
MailD.RspamdRuleSet6 = 
MailD.RspamdRuleSet7 = total_spam_score gt 0.80 : REJECT 
MailD.RspamdRuleSet8 = 
Этот параметр надо задавать самому? И так же самому описывать действие в MTA (access, warn, deny. ...). Если так, то может поделитесь в таком случае примерами к описанным правилам и быть может ещё какие-то наиболее распространенные есть? 



#2 livelace

livelace

    Newbie

  • Dr.Web Staff
  • 15 Сообщений:

Отправлено 29 Сентябрь 2017 - 16:13

 

То есть на основе слова THREAT из фразы: "The message contains a THREAT" Exim должен отвергнуть письмо,

а на основе слова SPAM из фразы: "This is a SPAM message" Exim должен распознать письмо как спам. Так?

 

Да.

 

 

А почему тогда после установки в правилах отсутствует параметр <description>:
Этот параметр надо задавать самому? И так же самому описывать действие в MTA (access, warn, deny. ...).

 

Да, description должны указать вы, в данном конкретном случае, потому как мы не знаем какие строки совпадения вы хотите использовать. На основе текста description у вас будут срабатывать правила в Exim.

 

 

Если так, то может поделитесь в таком случае примерами к описанным правилам и быть может ещё какие-то наиболее распространенные есть?

 

Вы их сами привели в качестве примера:

 

SpamdRuleSet0 = threat_category in (KnownVirus,VirusModification, UnknownVirus) : REJECT "The message contains a THREAT"

 

deny spam = nobody:true 
  condition = ${if match {$spam_report}{THREAT}}

 

Предлагаю поступить следующим образом - вы напишите чего вы хотите достичь от связки Exim c нашим продуктом, а мы постараемся привести примеры (а если use cases будут здравыми/полезными, то и добавим их в документацию).



#3 zirro.s

zirro.s

    Member

  • Posters
  • 132 Сообщений:

Отправлено 01 Октябрь 2017 - 15:16

 

Предлагаю поступить следующим образом - вы напишите чего вы хотите достичь от связки Exim c нашим продуктом, а мы постараемся привести примеры (а если use cases будут здравыми/полезными, то и добавим их в документацию).

 

У меня нет каких-то конкретных пожеланий. Например из примера я понял, что если Drweb нашёл какой-то вирус то сработает правило 

 

SpamdRuleSet0 = threat_category in (KnownVirus,VirusModification, UnknownVirus)

 

И я понимаю, что это безусловно вирус, и такое письмо нужно блокировать (deny - на языке Exim'а)

А вот как со спамом бороться? В 6-ой версии этим занимался модуль VadeRetro, если не ошибаюсь. И требовалось только "скрестить" Drweb + Exim. Drweb сам неплохо справлялся с задачей отлова спама. А теперь на основе каких критериев мне блокировать спам? На каждое слово типа "купи" писать правило? Или, например, как в конфиге по умолчанию:

 

MailD.RspamdRuleSet7 = total_spam_score gt 0.80 : REJECT

 

Здесь не указан description есть только некая переменная, которую возвращает Drweb ASE. Если я правильно читаю это выражение, здесь проверяется значение переменной total_spam_score, больше она 0.80 или нет. Но непонятно 0.80 - это много или мало. Что делать с таким письмом? 0.80 - это некий порог когда письмо с очень высокой вероятностью спам? С какой?

Или опять же из документации:

 

SpamdRuleSet1 = body match (".*купи.*") : REJECT "This is a SPAM message" 

 

Вроде как это письмо однозначно можно квалифицировать как спам, однако далее в примере к письму с таким description Exim применяет действие не deny, а warn:

 

warn spam = nobody:true 
  add_header = X-Spam_score: $spam_score 
     X-Spam_score_int: $spam_score_int 
     X-Spam_bar: $spam_bar 
     X-Spam_report: $spam_report 
  condition = ${if match {$spam_report}{SPAM}} 



#4 livelace

livelace

    Newbie

  • Dr.Web Staff
  • 15 Сообщений:

Отправлено 02 Октябрь 2017 - 07:59

 

А теперь на основе каких критериев мне блокировать спам? На каждое слово типа "купи" писать правило?

 

Критерии задает администратор почтовой системы. "купи" в документации приведен как пример, пример того, что письмо с заданным словом администратор расценивает как спам. Это всего лишь примеры в документации.

 

 

Здесь не указан description есть только некая переменная, которую возвращает Drweb ASE. Если я правильно читаю это выражение, здесь проверяется значение переменной total_spam_score, больше она 0.80 или нет. Но непонятно 0.80 - это много или мало. Что делать с таким письмом? 0.80 - это некий порог когда письмо с очень высокой вероятностью спам? С какой?

 

Таблица соответствия баллов Vaderetro и нашего продукта предоставлена в документации - http://download.geo.drweb.com/pub/drweb/unix/mail/11.0/documentation/html/ru/index.html?dw_9_maild_principles.htm

Вы указываете величины в правилах нашего продукта и соотвествующие действия в Exim.

 

Пример:

 

total_spam_score gt 0.95 : REJECT "spam high"

 

 

Вроде как это письмо однозначно можно квалифицировать как спам, однако далее в примере к письму с таким description Exim применяет действие не deny, а warn:

 

Повторюсь дополнительно - это всего лишь пример в документации, вы должны настраивать свою систему согласно своим критериям.



#5 zirro.s

zirro.s

    Member

  • Posters
  • 132 Сообщений:

Отправлено 02 Октябрь 2017 - 09:15

Повторюсь дополнительно - это всего лишь пример в документации, вы должны настраивать свою систему согласно своим критериям.

Извиняюсь, дело в том, что я модуль vaderetro не настраивал (или настраивал давно) и совсем забыл что там есть какие-то баллы. Какие правила и их обработку в Exim'е мне нужно написать, если ранее в plugin_vaderetro.conf было:

 
# UnconditionalSubjectPrefix = {String}
# Prefix added to the beginning of Subject string, if message is spam.
UnconditionalSubjectPrefix = "[Unconditional SPAM] "
...
# UnconditionalSpamThreshold = {Digital}
# If message score is greater than or equal to this parameter value, message is
# regarded as unconditional spam.
UnconditionalSpamThreshold = 1000
 
# SpamThreshold = {Digital}
# If message score is greater than or equal to this parameter value, message is
# regarded as spam.
SpamThreshold = 100
 
# UnconditionalAction = {Action}
# Mandatory values: pass, reject, discard, tempfail
# Optional values: quarantine, redirect, add-header
# Action to be applied to unconditional spam.
UnconditionalAction = discard,quarantine
 
# Action = {Action}
# Mandatory values: pass, reject, discard, tempfail
# Optional values: quarantine, redirect, add-header
# Action to be applied to spam messages.
Action = tempfail,quarantine
 
# NotifyAction = {Action}
# Mandatory values: pass, reject, discard, tempfail
# Optional values: quarantine, redirect, add-header
# Action applied to DSN message.
NotifyAction = pass
 
# UseCustomReply = {Boolean}
# Reply strings to be used as SMTP reply when messages have been rejected.
UseCustomReply = yes
 
# SpamCustomReply = {String}
# Reply string to be used as SMTP reply when Action, UnconditionalAction,
# NotifyAction = reject actions are applied and also when UseCustomReply = yes.
SpamCustomReply = "Dr.WEB vaderetro plugin: Message is rejected by vaderetro"
 



Читают тему: 0

0 пользователей, 0 гостей, 0 скрытых