Контроль скорости SMTP-сообщений в Ubuntu 8.04, желательно с постфиксом

8

Возможно я преследую ошибку, но я пытаюсь настроить прокси smtp своего рода. У меня есть постфиксный сервер, который получает всю электронную почту для коллекции серверов / клиентов. Он использует smarthost (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
TimDaMan
источник

Ответы:

7

В конце концов я использовал policyd, который делает именно такие вещи. Я настроил его на ограничение одного IP-адреса не более 10000 сообщений в час и 1 ГБ. Ниже приведена копия документа, написанного для меня на случай, если кто-то посчитает это полезным.


Настройка postfix и policyd

После установки пакетов внесите следующие изменения в их конфигурации. В /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
TimDaMan
источник
2

Возможно, интересно для вашей реализации:

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.
Greeblesnort
источник
1

Anvil действительно предназначался для ограничения скорости входящих сообщений, а не для ограничения исходящих. Думайте об этом как о сыром фильтре DoS.

Возможно, вы захотите взглянуть на настройки, относящиеся к части qmgr постфикса. В частности, вы можете установить ограничения на параллелизм на очень низком уровне, а время ожидания в очереди очень высокое. Вы захотите установить скорость доставки для чего-то, что имеет большую (r) задержку , а также хотите уменьшить количество процессов доставки в master.cf.

Вы смотрели на использование qshape, чтобы определить приемлемый тариф для вашего внутреннего MTA?

Эйвери Пэйн
источник
Моя цель не в том, чтобы что-то замедлять, я просто хочу, чтобы процесс запуска не вывел корпоративный сервер. Это сделка, которую я заключил с обменной командой за их услуги. Почта все еще должна быть быстрой. Я перенастроил postfix для локальной доставки и повторил тест. Сообщение все еще игнорирует лимит.
TimDaMan
1
Я понял!! Наковальня не получает данные канала / процесса о клиентах, которые находятся в «mynetworks = ...». Я изменил их на mynetworks = 127.0.0.0/8 и соблюдаю ограничение.
TimDaMan
0

Anvil делает запись для postfix, я добавил ниже в 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 
Алекс Халл
источник