Лимиты в Postfix

Обновлено Обновлено: Опубликовано Опубликовано:

Почтовый агент Postfix позволяет задавать различные ограничения, таймауты и лимиты. В данной инструкции мы рассмотрим примеры, как это сделать. Используемые значения подойдут для средне статистического сервера, однако, в каждой среде необходимо наблюдение и приведение параметром к оптимальному виду.

Редактирование конфигурационного файла Postfix

Изменения делаем в конфигурационном файле:

vi /etc/postfix/main.cf

* для FreeBSD путь будет /usr/local/etc/postfix/main.cf.

После редактирования не забываем перечитывать изменения командой:

systemctl reload postfix

* для FreeBSD или старых систем на базе Linux вводим service postfix restart.

1. Размер почтового ящика

Для установки квоты на почтовые ящики редактируем следующее:

mailbox_size_limit = 209715200
virtual_mailbox_limit = 209715200

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

Чтобы снять ограничения, можно выставить значения в 0:

mailbox_size_limit = 0
virtual_mailbox_limit = 0

2. Размер отправляемого сообщения

Открываем конфигурационный файл, находим и правим следующее (если строки нет, создаем):

message_size_limit = 73400320

*  в данном примере установлено ограничение на размер письма в 70 мб.

Необходимо, чтобы данный размер не превышал размер почтового ящика (mailbox_size_limit и virtual_mailbox_limit, которые по умолчанию имеют значения 51200000 или 50 мб), в противном случае, в логе мы увидим ошибку fatal: main.cf configuration error: mailbox_size_limit is smaller than message_size_limit.

Для этого можно либо задать значения равные (или больше) message_size_limit:

message_size_limit = 73400320
mailbox_size_limit = 73400320
virtual_mailbox_limit = 73400320

... либо отключить ограничения:

message_size_limit = 73400320
mailbox_size_limit = 0
virtual_mailbox_limit = 0

3. Количество сообщений и одновременных подключений

В конфигурационном файле добавляем такие строки:

anvil_rate_time_unit = 60s
smtpd_client_message_rate_limit = 200
smtpd_client_recipient_rate_limit = 60
smtpd_client_connection_count_limit = 20
smtpd_client_connection_rate_limit = 40

* в данном примере мы установили следующие ограничения на количество отправляемых писем: 

  • anvil_rate_time_unit — параметр расчетного времени. Именно от него будут вести отчет другие значения. По умолчанию также равен 60s.
  • smtpd_client_message_rate_limit — сколько клиенту можно отправлять сообщений за anvil_rate_time_unit. По умолчанию 0, то есть, ограничений нет.
  • smtpd_client_recipient_rate_limit — максимальное количество получателей за anvil_rate_time_unit. По умолчанию 0, то есть, ограничений нет.
  • smtpd_client_connection_count_limit — количество одновременно разрешенных подключений для клиента. По умолчанию 50.
  • smtpd_client_connection_rate_limit — максимальное количество коннектов, разрешенных для клиента за anvil_rate_time_unit. По умолчанию 0, то есть, ограничений нет.

4. Очередь сообщений

queue_run_delay = 5m
minimal_backoff_time = 10m
maximal_backoff_time = 15m
maximal_queue_lifetime = 1d

* где queue_run_delay задает время, как часто сообщения из очереди будут отправляться повторно; minimal_backoff_time устанавливает время, на которое будет отложена отправка сообщений, которые не были отправлены по причине временных неисправностей (например, принимающий сервер не отвечает или просит повторить запрос позже), но не позднее maximal_backoff_time; параметр maximal_queue_lifetime установит, через какой период перестать делать попытки при отправке сообщения и вернуть его отправителю с ошибкой.

5. Таймаут на отправку сообщений

smtp_data_done_timeout = 600s
smtp_data_init_timeout = 120s
smtp_data_xfer_timeout = 180s

* где smtp_data_done_timeout — ограничение времени для отправки сообщения; smtp_data_init_timeout — ограничение времени для отправки команды SMTP DATA и для получения ответа удаленного SMTP-сервера; smtp_data_xfer_timeout — ограничение времени для отправки содержимого сообщений.

6. Отправка сообщений об ошибках (4xx or 5xx)

smtpd_error_sleep_time = 3s
smtpd_soft_error_limit = 5
smtpd_hard_error_limit = 10

* где:

  • smtpd_error_sleep_time — задержка перед отправкой сообщения об ошибке (4xx or 5xx). По умолчанию 1s.
  • smtpd_soft_error_limit — количество ошибок, которые должны быть сделаны, прежде чем наш сервер начнет замедлять ответы. По умолчанию 10.
  • smtpd_hard_error_limit — максимальное количество ошибок, которые может сделать удаленный сервер SMTP. После с ним будет разорвана сессия. По умолчанию 20.

552 5.3.4 message size exceeds fixed limit

Если сталкиваемся с сообщением «552 5.3.4 message size exceeds fixed limit» (переводится как «Размер сообщения превышает установленные ограничения»), значит отправляемое письмо не вписывается в установленные лимиты. Чтобы исправить ситуацию, уменьшаем размер сообщения или редактируем лимиты (пункты 1 и 2).

То есть, размер message_size_limit не должен превышать mailbox_size_limit и virtual_mailbox_limit.

Работа с конфигом postfix

Неколько полезных консольных команд по работе с конфигурацией.

1. Посмотреть значение параметра по умолчанию:

postconf -d <Параметр>

Например:

postconf -d mailbox_size_limit

2. Посмотреть текущее значение параметра:

postconf -n <Параметр>

Например:

postconf -n message_size_limit

3. Изменить значение:

postconf -e "<Параметр = значение>"

Например: 

postconf -e "virtual_mailbox_limit = 0"

# UNIX # Безопасность # Почта # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет