Лимитирование трафика postfix поможет несколько угомонить локальных и внешних спамеров, не терять сообщения при работе через смтп-провайдера и многое другое.
Для ограничения трафика в postfix можно использовать следующие переменные:
- initial_destination_concurrency = количество одновременных доставок возможно первоначально. (по умолчанию 5 )
- smtpd_client_event_limit_exceptions = клиенты, которые исключены из подсчёта (по умолчанию: $mynetworks)
- anvil_rate_time_unit =период времени, в течение которого рассчитываются показатели. (default: 60s)
- anvil_status_update_time = как часто писать в лог статистику. (default: 600s)
- default_client_message_rate_limit = максимальное количество сообщений, которое клиент имеет право отправить в период времени. (default: 0)
- smtpd_destination_concurrency_limit = сколько одновременных доставок. (по умолчанию: 100)
- smtpd_destination_rate_delay = задержка между отдельными доставками на один и тот же домен
- smtpd_destination_recipient_limit = максимальное количество получателей письма (по умолчанию: 50)
- smtpd_error_sleep_time = время задержки ответов клиенту. Значение должно быть больше smtpd_soft_error_limit и меньше smtpd_hard_error_limit
- smtpd_soft_error_limit = количество ошибок в смтп-сессии перед замедлением сессии на smtpd_error_sleep_time. (по умолчанию: 10)
- smtpd_hard_error_limit = количество ошибок в смтп-сессии перед отключением клиента. (по умолчанию: 20)
- smtpd_client_connection_count_limit = колическо одновременных соединений (default: 50)
- smtpd_client_connection_rate_limit = количество соединений в anvil_rate_time_unit период (по умолчанию anvil_rate_time_unit: 60s, а smtpd_client_connection_rate_limit: 0)
- smtpd_process_limit = количество процессов postfix. (по умолчанию 100) .
- smtp_mx_session_limit = количество попыток отправки письма перед сбросом на fallback и удалением письма
- maximal_backoff_time = максимальное время между попытка отправить задержанное письмо (по умолчанию: 4000s)
- minimal_backoff_time = минимальное время между попытка отправить задержанное письмо (по умолчанию: 300s)
- queue_run_delay = время опроса очереди задержаных писем. Должно быть меньше minimal_backoff_time (по умолчанию: 300s)
anvil_status_update_time = 600s anvil_rate_time_unit = 60s initial_destination_concurrency=1 default_destination_concurrency_limit=50 default_destination_recipient_limit=50 default_destination_rate_delay = 1s default_process_limit=200 smtp_mx_session_limit=100 smtpd_client_connection_rate_limit = 60 smtpd_client_connection_count_limit = 25 smtpd_client_message_rate_limit = 50 smtpd_client_recipient_rate_limit = 100 smtpd_destination_concurrency_limit=100 smtpd_destination_recipient_limit = 2 smtpd_destination_rate_delay = 1s maximal_backoff_time = 1000s minimal_backoff_time = 300s queue_run_delay = 300s smtpd_error_sleep_time = 1s smtpd_soft_error_limit = 10 smtpd_hard_error_limit = 20В postfix возможно задавать индивидуальные параметры доставок для доменов. Для этого необходимо задать файл транспортов, которые расскажут postfix по каким правилам работать с определенными доменами, и создать набор правил.
Добавил ограничение 10/5/2 одновременных доставок для домена с задержками:
transport_maps = hash:/etc/postfix/transport smtp_rate10_destination_concurrency_limit = 10 policy5_destination_concurrency_limit = 2 policy5_destination_rate_delay = 0 policy5_destination_recipient_limit = 5 policy2_destination_concurrency_limit = 1 policy2_destination_rate_delay = 3s policy2_destination_recipient_limit = 2/etc/postfix/transport:
domain.ru smtp_rate10:somedomain.ru domain5.ru policy5: domain2.ru policy2:/etc/postfix/master.cf:
smtp_rate10 unix - - n - - smtp policy5 unix - - n - - smtp policy2 unix - - n - - smtpТестирование:
#!/bin/bash i=0 while [ $i != 2500 ]; do echo test | /bin/mail -s "test message$i" "user@test.com" i=$(( $i + 1 )) done;
Комментарии (0)