Возможно, я гонюсь за ошибкой, но я пытаюсь настроить своего рода прокси-сервер smtp. У меня есть сервер postfix, который получает всю электронную почту для набора серверов / клиентов. Он использует умный хост (relayhost = ...) для пересылки почты на наш корпоративный MTA. Я хотел бы ограничить количество сообщений, которые может ретранслировать отдельный сервер, чтобы предотвратить перегрузку корпоративного MTA. В Postfix есть программа под названием «наковальня», которая способна отслеживать статистику о почте, которая будет использоваться для таких вещей, но, похоже, она не выполняется. Я запустил "inotifywait -m / usr / lib / postfix / anvil", в то время как я запустил postfix и отправил через него несколько сообщений с удаленного сервера. inotifywait указал, что наковальня никогда не запускалась. Кто-нибудь заставил работать регуляторы скорости постфикса / наковальни?
main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
myhostname = site-server-q9
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost
relayhost = Out outgoing mail relay
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 10.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = 10.X.X.X
smtpd_client_message_rate_limit = 1
anvil_rate_time_unit = 1h
master.cf экстракт
anvil unix - - - - 1 anvil
smtp inet n - - - - smtpd
В конце концов, я использовал policyd, который делает именно такие вещи. Я настроил его, чтобы ограничить один IP-адрес не более 10000 сообщений в час и 1 ГБ. Ниже представлена копия документа, написанного для меня на случай, если кто-то сочтет его полезным.
После установки пакетов внесите следующие изменения в их конфигурации. В /etc/postfix/main.cf добавьте следующую строку
smtpd_client_restrictions = check_policy_service inet:127.0.0.1:10031
В /etc/postfix-policyd.conf
WHITELISTING=1
к WHITELISTING=0
GREYLISTING=1
к GREYLISTING=0
SENDERTHROTTLE=0
к SENDERTHROTTLE=1
QUOTA_EXCEEDED_TEMP_REJECT=1
к QUOTA_EXCEEDED_TEMP_REJECT=0
SENDER_QUOTA_REJECTION="Quota Exceeded."
к SENDER_QUOTA_REJECTION="Quota Exceeded, 10,000 messages/hour max!"
SENDER_SIZE_REJECTION="Message size too big."
к SENDER_SIZE_REJECTION="Message size too big. 10Mb per message or 1 Gb/hour max!"
SENDERMSGLIMIT=512
к SENDERMSGLIMIT=10000
SENDERRCPTLIMIT=3600
к SENDERRCPTLIMIT=10000
SENDERQUOTALIMIT=250000000
к SENDERQUOTALIMIT=1000000000
SENDERMSGSIZE=10240000
к SENDERMSGSIZE=50000000
SENDER_INACTIVE_EXPIRE=31d
к SENDER_INACTIVE_EXPIRE=1h
Возможно интересно для вашей реализации:
default_destination_concurrency_limit (default: 20)
The default maximal number of parallel deliveries to the same destination. This is the default limit for delivery via the lmtp(8), pipe(8), smtp(8) and virtual(8) delivery agents. With per-destination recipient limit > 1, a destination is a domain, otherwise it is a recipient.
Use transport_destination_concurrency_limit to specify a transport-specific override, where transport is the master.cf name of the message delivery transport.
Anvil действительно предназначалась для ограничения скорости входящих сообщений, а не для исходящих. Думайте об этом как о грубом фильтре DoS.
Возможно, вы захотите посмотреть настройки, относящиеся к qmgr часть постфикса. В частности, вы можете захотеть установить свой параллелизм пределы чего-то очень низкого, и ваш время ожидания в очереди очень высоко. Вы захотите установить скорость доставки для чего-то, что имеет большую (r) задержку, а также хотите уменьшить количество процессов доставки в master.cf.
Ты посмотрел с помощью qshape чтобы определить, какая ставка будет приемлемой для вашего внутреннего MTA?
Anvil ведет журнал для постфикса, я добавил ниже в main.cf и, похоже, у меня работает
#### Prevent server sending excess mail from clients add to /etc/postfix/main.cf
####
anvil_rate_time_unit = 60s
anvil_status_update_time = 120s
smtpd_error_sleep_time = 2s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20
smtpd_client_message_rate_limit =
#### End Prevent server sending excess mail