The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"rspamd - работа модуля ratelimit"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Почта / Linux)
Изначальное сообщение [ Отслеживать ]

"rspamd - работа модуля ratelimit"  +/
Сообщение от ll75 email(ok) on 18-Июн-18, 14:30 
Возможно ли с помощью модуля Ratelimit в rspamd настроить такое:

1. Ограничить кол-во отсылаемых писем с одного IP до 2000 в час
2. При превышении этого лимита письма отклоняюся

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "rspamd - работа модуля ratelimit"  +1 +/
Сообщение от eRIC (ok) on 19-Июн-18, 09:38 
> Возможно ли с помощью модуля Ratelimit в rspamd настроить такое:
> 1. Ограничить кол-во отсылаемых писем с одного IP до 2000 в час
> 2. При превышении этого лимита письма отклоняюся

возможна такая настройка на стороне rspamd, но вы уже письма получили своим MTA и передаете rspamd на дополнительную проверку. расход ресурсов ненужных.

такое ограничение нужно на стороне MTA делать, если хотите эффективно фильтровать


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "rspamd - работа модуля ratelimit"  +/
Сообщение от ll75 email(ok) on 19-Июн-18, 13:34 
> возможна такая настройка на стороне rspamd, но вы уже письма получили своим
> MTA и передаете rspamd на дополнительную проверку. расход ресурсов ненужных.
> такое ограничение нужно на стороне MTA делать, если хотите эффективно фильтровать

А Exim умеет фильтровать количество писем по ip-адресу?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "rspamd - работа модуля ratelimit"  +1 +/
Сообщение от B on 19-Июн-18, 16:32 
Умеет

drop  message =  High intensity of connections $sender_host_address $acl_c_clearsender
      ratelimit = 2000 / 1h / strict / $sender_host_address
      log_message = $sender_rate / $sender_rate_period High intensity of connections $acl_c_clearsender

>> возможна такая настройка на стороне rspamd, но вы уже письма получили своим
>> MTA и передаете rspamd на дополнительную проверку. расход ресурсов ненужных.
>> такое ограничение нужно на стороне MTA делать, если хотите эффективно фильтровать
> А Exim умеет фильтровать количество писем по ip-адресу?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "rspamd - работа модуля ratelimit"  +/
Сообщение от ll75 email(ok) on 20-Июн-18, 10:59 
> Умеет
> drop  message =  High intensity of connections $sender_host_address $acl_c_clearsender
>       ratelimit = 2000 / 1h /
> strict / $sender_host_address
>       log_message = $sender_rate / $sender_rate_period High
> intensity of connections $acl_c_clearsender

да, попробовал, дейсвительно работает, спасибо.

Вообще хочется попробовать на реальной нагрузке оба варианта - и с rspamd и с Exim и выбрать из них оптимальное. В rspamd возможно ли поотключать саму проверку на спам, например отредактировав exim.conf и отключив ненужные дефолтные модули в rspamd просто для работоспособности модуля ratelimit? Или модуль ratelimit будет работоспособен только при включенной спамозащите от rspamd?

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "rspamd - работа модуля ratelimit"  +/
Сообщение от ll75 email(ok) on 20-Июн-18, 11:53 
> Вообще хочется попробовать на реальной нагрузке оба варианта - и с rspamd
> и с Exim и выбрать из них оптимальное. В rspamd возможно
> ли поотключать саму проверку на спам, например отредактировав exim.conf и отключив
> ненужные дефолтные модули в rspamd просто для работоспособности модуля ratelimit? Или
> модуль ratelimit будет работоспособен только при включенной спамозащите от rspamd?

По поводу настройки Rspamd без проверки спама, а только используя модуль ratelimit, насколько я понял из https://rspamd.com/doc/tutorials/scanning_outbound.html:

При сканировании исходящей почты с помощью rspamd при работающей интеграции с Exim, rspamd должен знать, была ли почта отправлена аутентифицированным пользователем (и каим именно), а также IP-адрес, по которому была получена почта. При этом если почта была получена от аутентифицированного пользователя или IP-адреса, указанного в local_addrs, следующие проверки не проводятся :

-    DKIM: checking is disabled; signing is enabled
-    DMARC: is disabled
-    Greylist: is disabled
-    Hfilter: only URL-checks are applied
-    IP Score: is disabled
-    MX Check: is disabled
-   One Received header policy: is disabled
-    RBL: RBLs are disabled according to exclude_users and exclude_local settings (all save for RAMBLER_EMAILBL)
-    Replies: action is not forced
-    SPF: is disabled

Т.е. можно даже просто включить 1 модуль ratelimit в /etc/rspamd/override.d/options.inc и будут применяться только встроенные стандартные ммодули + ratelimit?

А как понять эту фразу:
-    Ratelimit: only user ratelimit is applied (to authenticated users- does not deal with local_addrs)

Т.е. в этом случае применяется только user ratelimit- лимит для аутентифицированного юзера (если юзер аутентифицирован, то не просматривать local_addrs map в /etc/rspamd/local.d/options.inc)?

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "rspamd - работа модуля ratelimit"  +/
Сообщение от ll75 email(ok) on 20-Июн-18, 12:05 

Как теперь правильно интегрировать Exim с rspamd, если проверка на спам вообще не нужна?
Оставить в exim.conf только строку

spamd_address = 127.0.0.1 11333 variant=rspamd

и не указывать никакого ACL типа указанного на официальгой сайте rspamd :


acl_check_spam:
  # do not scan messages submitted from our own hosts
  # +relay_from_hosts is assumed to be a list of hosts in configuration
  accept hosts = +relay_from_hosts

  # do not scan messages from submission port (or maybe you want to?)
  accept condition = ${if eq{$interface_port}{587}}

  # skip scanning for authenticated users (if desired?)
  accept authenticated = *

  # scan the message with rspamd
  warn spam = nobody:true
  # This will set variables as follows:
  # $spam_action is the action recommended by rspamd
  # $spam_score is the message score (we unlikely need it)
  # $spam_score_int is spam score multiplied by 10
  # $spam_report lists symbols matched & protocol messages
  # $spam_bar is a visual indicator of spam/ham level

  # use greylisting available in rspamd v1.3+
  defer message    = Please try again later
        condition  = ${if eq{$spam_action}{soft reject}}

  deny  message    = Message discarded as high-probability spam
        condition  = ${if eq{$spam_action}{reject}}

  # Remove foreign headers
  warn remove_header = x-spam-bar : x-spam-score : x-spam-report : x-spam-status

  # add spam-score and spam-report header when "add header" action is recommended by rspamd
  warn
    condition  = ${if eq{$spam_action}{add header}}
    add_header = X-Spam-Score: $spam_score ($spam_bar)
    add_header = X-Spam-Report: $spam_report

  # add x-spam-status header if message is not ham
  warn
    ! condition  = ${if match{$spam_action}{^no action\$|^greylist\$}}
    add_header = X-Spam-Status: Yes

  # add x-spam-bar header if score is positive
  warn
    condition = ${if >{$spam_score_int}{0}}
    add_header = X-Spam-Bar: $spam_bar

  accept

Или все таки указывать этот ACL, но убрать строки, добавляющие X-Spam заголовки, greylisting и оставить только такое:

acl_check_spam:
  # do not scan messages submitted from our own hosts
  # +relay_from_hosts is assumed to be a list of hosts in configuration
  accept hosts = +relay_from_hosts

  # do not scan messages from submission port (or maybe you want to?)
  accept condition = ${if eq{$interface_port}{587}}

  # skip scanning for authenticated users (if desired?)
  accept authenticated = *

accept

?


Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "rspamd - работа модуля ratelimit"  +/
Сообщение от eRIC (ok) on 20-Июн-18, 16:57 
> Вообще хочется попробовать на реальной нагрузке оба варианта - и с rspamd
> и с Exim и выбрать из них оптимальное. В rspamd возможно
> ли поотключать саму проверку на спам, например отредактировав exim.conf и отключив
> ненужные дефолтные модули в rspamd просто для работоспособности модуля ratelimit? Или
> модуль ratelimit будет работоспособен только при включенной спамозащите от rspamd?

используйте инструменты по прямому назначению, можно и ножом вместо отвертки откручивать болтики.


Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

8. "rspamd - работа модуля ratelimit"  +/
Сообщение от ll75 email(ok) on 20-Июн-18, 17:09 
>используйте инструменты по прямому назначению, можно и ножом вместо отвертки откручивать
> болтики.

интересно разобраться с 2 вариантами и сравнить эмпирически так сказать...

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "rspamd - работа модуля ratelimit"  +/
Сообщение от eRIC (ok) on 21-Июн-18, 08:27 
> интересно разобраться с 2 вариантами и сравнить эмпирически так сказать...

пожалуйста, никто не запрещает ;)

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "rspamd - работа модуля ratelimit"  +/
Сообщение от ll75 email(ok) on 21-Июн-18, 15:27 
>> интересно разобраться с 2 вариантами и сравнить эмпирически так сказать...
> пожалуйста, никто не запрещает ;)

Единственное, что меня в Opensource software не устраивает - местами невнятная документацию, дпускающая недопонимания или многовариантность некоторых моментов. Если полностьб разберусь с Rspamd - напишу альтернативную документацию, разжеванную по полочкам и скину Всеволоду Стахнову - создателю Rspamd...

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "rspamd - работа модуля ratelimit"  +/
Сообщение от Аноним (??) on 21-Июн-18, 17:54 
> Единственное, что меня в Opensource software не устраивает - местами невнятная документацию,
> дпускающая недопонимания или многовариантность некоторых моментов.

Не устраивает - переходите на Windows. А это философия Юникс - предоставлять инструменты отдельно от правил. Иными словами можно ещё выразиться "сделай это по-своему".

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "rspamd - работа модуля ratelimit"  +/
Сообщение от ll75 email(ok) on 22-Июн-18, 11:17 
Теперь если я отправляю почту от postmaster@domain.tk наружу я вижу в логе параметр R_RATELIMIT(0.00), а когда я отправляю от адреса типа user@domain.tk этого параметра нет в логе.

Как правильно временно исключить адрес postmaster@domain.tk из whitelisted_rcpts модуля ratelimit? Пробовал просто указать в /etc/rspamd/local.d/ratelimit.conf строку

whitelisted_rcpts = "mailer-daemon";

но тогда в логе rspamd:
2018-06-22 10:55:28 #19477(normal) <4856d6>; task; lua_metric_symbol_callback: call to (R_RATELIMIT) failed (2): /usr/share/rspamd/lua//ratelimit.lua:339: attempt to index field 'whitelisted_rcpts' (a nil value); trace: [1]:{/usr/share/rspamd/lua//ratelimit.lua:339 - fun [Lua]}; [2]:{/usr/share/rspamd/lib/fun.lua:30 - call_if_not_empty [Lua]}; [3]:{/usr/share/rspamd/lib/fun.lua:654 - any [Lua]}; [4]:{/usr/share/rspamd/lua//ratelimit.lua:339 - <unknown> [Lua]};


Аналогично если создать файл /etc/rspamd/override.d/ratelimit.conf с 1 параметром:

whitelisted_rcpts = "mailer-daemon";

появляется та же ошибка call to (R_RATELIMIT) failed (2)...

при этом

$ rspamadm configdump

ratelimit {
    whitelisted_rcpts = "mailer-daemon";
    symbol = "R_RATELIMIT";
    rates {
        to_ip = "3 / 2min";
        to = "2 / 1min";
        bounce_to = "2 / 1h";
        to_ip_from = "1 / 1min";
        user = "1 / 1min";
        bounce_to_ip = "1 / 1h";
    }
    max_rcpt = 5;
    info_symbol = "R_RATELIMIT_INFO";
    enabled = true;
}

Т.е. если я не изменяю дефолтные
whitelisted_rcpts = "postmaster,mailer-daemon"

то в логе rspamd присутствует нулевое значение
R_RATELIMIT(0.00), т.к. при отправке от postmaster@ модуль ratelimit не срабатывает. А если я отправляю письмо от обычного адреса R_RATELIMIT в логе вообще отсутствует...

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "rspamd - работа модуля ratelimit"  +/
Сообщение от eRIC (ok) on 22-Июн-18, 17:45 
> Т.е. если я не изменяю дефолтные
> whitelisted_rcpts = "postmaster,mailer-daemon"
> то в логе rspamd присутствует нулевое значение
> R_RATELIMIT(0.00), т.к. при отправке от postmaster@ модуль ratelimit не срабатывает. А
> если я отправляю письмо от обычного адреса R_RATELIMIT в логе вообще
> отсутствует...

создавать тикет с ошибкой, возможно есть ошибка


Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "rspamd - работа модуля ratelimit"  +/
Сообщение от ll75 email(ok) on 28-Июн-18, 16:34 
> создавать тикет с ошибкой, возможно есть ошибка

Тикет создал, особо не помогли. Теперь при отправке от root@centoz.tk вижу в логе rspamd:

2018-06-28 16:26:37 #34641(normal) <7faa44>; lua; ratelimit.lua:383: set_symbol_only: ratelimit "to_ip_from(27:teztoid@vivaldi.net:192.168.42.1:root@centoz.tk)" exceeded, (1 / 3600): 15 (0:0 dyn)
2018-06-28 16:26:37 #34641(normal) <7faa44>; lua; ratelimit.lua:383: set_symbol_only: ratelimit "to(27:teztoid@vivaldi.net)" exceeded, (2 / 3600): 15 (0:0 dyn)
2018-06-28 16:26:37 #34641(normal) <7faa44>; lua; ratelimit.lua:383: set_symbol_only: ratelimit "to_ip(13:teztoid@vivaldi.net:192.168.42.1)" exceeded, (3 / 7200): 15 (0:0 dyn)

Т.е. видно, что значение, указанные в ratelimit.conf превышены (to_ip_from, to и to_ip), но письма все равно отправляются, а по идее по дефолту должны отбрасываться при превышении лимита...

Текущие значения для ratelimit.conf:
$ rspamadm configdump
......................................................
ratelimit {
    whitelisted_rcpts = "postmaster,mailer-daemon";
    symbol = "R_RATELIMIT";
    rates {
        to_ip = "3 / 2h";
        to = "2 / 1h";
        bounce_to = "2 / 1h";
        to_ip_from = "1 / 1h";
        user = "1 / 1h";
        bounce_to_ip = "1 / 1h";
    }
    max_rcpt = 5;
    info_symbol = "R_RATELIMIT_INFO";
    enabled = true;
}

Может нужно явно задавать какой-то параметр в options.inc для отбрасывания писем при превышении лимита?

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "rspamd - работа модуля ratelimit"  +/
Сообщение от eRIC (ok) on 03-Июл-18, 08:16 
> 2018-06-28 16:26:37 #34641(normal) <7faa44>; lua; ratelimit.lua:383: set_symbol_only:
> ratelimit "to_ip_from(27:teztoid@vivaldi.net:192.168.42.1:root@centoz.tk)" exceeded,
> (1 / 3600): 15 (0:0 dyn)
> 2018-06-28 16:26:37 #34641(normal) <7faa44>; lua; ratelimit.lua:383: set_symbol_only:
> ratelimit "to(27:teztoid@vivaldi.net)" exceeded, (2 / 3600): 15 (0:0 dyn)
> 2018-06-28 16:26:37 #34641(normal) <7faa44>; lua; ratelimit.lua:383: set_symbol_only:
> ratelimit "to_ip(13:teztoid@vivaldi.net:192.168.42.1)" exceeded, (3 / 7200): 15 (0:0
> dyn)

да, видно что лимиты срабатывают и оценка по лимитам выдается 15 и учитывая что в actions.conf (если не меняли значение) стоит:
reject = 15; # Reject when reaching this score

проверьте логи Exim на всякий случай. могу грешить вот на эти настройки ACL в Exim:
# skip scanning for authenticated users (if desired?)
  accept authenticated = *

возможно закомментировать его
ИЛИ
же нижеуказанное действие:
  warn
    condition = ${if >{$spam_score_int}{0}}
    add_header = X-Spam-Bar: $spam_bar

переформатировать для того чтобы не уведомлял, а запрещал:
deny message    = Limit exceded
     condition = ${if >{$spam_score_int}{0}}

а может вообще, следует проверять на R_RATELIMIT текст или закоментить их:
# If symbol is specified, then it is inserted instead of setting result
    #symbol = "R_RATELIMIT";

# If info_symbol is specified, then it is inserted next to set the result
#info_symbol = "R_RATELIMIT_INFO";

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

16. "rspamd - работа модуля ratelimit"  +/
Сообщение от eRIC (ok) on 03-Июл-18, 08:28 
также посоветовал бы в их почтовую рассылку написать, где возможно они подсказали бы правильную сторону куда копать :)
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

17. "rspamd - работа модуля ratelimit"  +/
Сообщение от eRIC (ok) on 03-Июл-18, 09:09 
Всеволод уже ответил вам в GitHub'е:
>>I don't understand what you are trying to say. set_symbol_only means that you have configured >>your module to add symbol instead of issuing soft reject message. You need to remove symbol from >>the configuration if you want to do rejections...
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру