Управление очередью сообщений в Postfix

Доброго дня дорогие читатели. Использую в своей работе почтовые сервера на postfix. Приведу тут пожалуй самые часто используемые команды. Управление очередью сообщений Postfix нужны как говорится на каждый день. Итак приступим.

Просмотр и отправка сообщений

Вывести список писем в очереди

mailq

или второй вариант

postqueue -p

Список сообщений выводится в формате таблицы. Слева направо: уникальный код сообщения, размер сообщения, дата и время постановки сообщения в очередь. На следующей строке адрес сервера получателя и состояние отправки. Последней строчкой идет адрес получателя.

Пример сообщения в очереди Postfix

Команда mailq выводит все сообщения в очереди полным списком. По окончании вывода внизу указывается строка с объемом всех сообщений в очереди и их количеством. В примере ниже видно, что в очереди находится 52 сообщения общим объемом 26834 Кбайт.

-- 26834 Kbytes in 52 Requests.

Для быстрой проверки количества сообщений в очереди можно использовать grep

mailq|grep Requests

И на выходе получим одну строчку с количеством сообщений в очереди и их объемом.

Вывести всю информацию по сообщению в очереди

postcat -q <идентификатор>

<идентификатор> — уникальный код сообщения, который можно увидеть если ввести команду mailq. Данная команда позволяет более детально разобраться почему еще не отправлено указанное сообщение.

Принудительная отправка всех сообщений в очереди

mailq -q

либо команда

postqueue -f

После этой команды будет предпринята повторная попытка отправить все сообщения в очереди.

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

postsuper -r <идентификатор>

Перезапуск очереди для повторной обработки сообщений

postsuper -r ALL

Принудительная отправка сообщений в очереди относящихся к определенному домену

postqueue -s newadmin.ru

Установка периодичности повторной отправки сообщений

postconf -e "queue_run_delay = 20m"

где 20m — количество минут.

Установка времени приостановки отправки сообщений

Сообщения не отправленные по причине временных неисправностей. Например принимающий сервер не отвечает или просит повторить запрос позже и т.п. Такое поведение также применяет для фильтрации СПАМа greylist

postconf -e "minimal_backoff_time = 20m"
postconf -e "maximal_backoff_time = 60m"

где minimal_backoff_time — минимальное время
maximal_backoff_time — максимальное время

Установить время до удаления сообщения из очереди

Это время в течении которого postfix будет пытаться отправить сообщение. После окончания указанного периода сообщение будет безвозвратно удалено. В примере указано 2d — тоесть два дня

postconf -e "maximal_queue_lifetime = 2d"

После изменения в конфигурации Postfix не забываем перезагружать сервис для применения настроек

systemctl restart postfix

Удаление сообщений

Удалить письмо из очереди

Удалить письмо из очереди можно по его идентификатору, его можно узнать используя команду mailq. Подробнее можно прочитать выше.

postsuper -d <идентификатор>

Удалить все сообщения

postsuper -d ALL

Удалить все сообщения по определенному отправителю

mailq | tail -n +2 | awk 'BEGIN { RS = "" } /spamer.ru$/ { print $1 }' | tr -d '*!' | postsuper -d -

где spamer.ru — домен по которому будет произведено удаление. Если необходимо удалить письма с конкретного адреса, то вместо домена указываем точный адрес. Например: spam@spamer.ru

И напоследок, список директорий где Postfix хранит сообщения в очереди пока их не отправит, либо не удалит.

/var/spool/postfix/deferred
/var/spool/postfix/active
/var/spool/postfix/incoming
/var/spool/postfix/defer

Управление очередью сообщений Postfix можно автоматизировать. В дальнейшем рассмотрим скрипты на данную тему.

Официальный сайт Postfix где есть много информации на английском языке. Следите за нашим почтовым разделом, будет много интересного.

Хотите отблагодарить автора статьи? Это даст ему дополнительный стимул к написанию новых статей.
Поделиться:
Подписаться
Уведомить о
guest
11 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Владислав
Владислав
2 лет назад

Добрый день, можно как-то посмотреть все письма от одного отправителя?

Владислав
Владислав
2 лет назад
Ответить на  admin

Спасибо

Серж
Серж
2 лет назад

Добрый день.
А как перенаправить сообщение на другой smtp?
Допустим в очереди есть сообщение которое было отправлено на домен имеющий две MX записи, при этом один из указанных MX стал недоступен и соединения на него не принимаются. Сообщение зависло в очереди со статусом «connection timed out», при этом второй узел доступен и готов принимать сообщения.

Серж
Серж
2 лет назад
Ответить на  admin

Попробовал: создается новый идентификатор, но сообщение отправляется все туда же. MX preference явно указывает, что нужно отправлять на другой адрес, но при повторной отправке как и раньше шлет на старый. DNS кэш пробовал очищать рестартом dnsmasq. Не помогает.
Использую Zimbra OSE 8.8.15_GA_3901
Перезапуск MTA не помогает.

Серж
Серж
2 лет назад

6C85A1FE0A77 842336 Wed Sep 16 07:38:16 @
(connect to mail2.akson.ru[79.175.40.191]:25: Connection timed out)
@akson.ru

219411FE0A8C 840673 Wed Sep 16 07:54:06 @
(connect to mail2.akson.ru[79.175.40.191]:25: Connection timed out)
@akson.ru

# nslookup -type=MX akson.ru
Server: 127.0.0.1
Address: 127.0.0.1#53

Non-authoritative answer:
akson.ru mail exchanger = 10 mail.akson.ru.
akson.ru mail exchanger = 1000 mail2.akson.ru.

Authoritative answers can be found from:
mail.akson.ru internet address = 134.19.150.100
mail2.akson.ru internet address = 79.175.40.191

Сообщение 219411FE0A8C было создано заново и отправлено после обнаружения застрявшего.

Sep 16 09:43:35 zcs20 postfix/smtp[27197]: connect to mail2.akson.ru[79.175.40.191]:25: Connection timed out
Sep 16 09:43:35 zcs20 postfix/smtp[27197]: 90DB31FE0C42: to=<@akson.ru>, relay=none, delay=619, delays=589/0.01/30/0, dsn=4.4.1, status=deferred (connect to mail2.akson.ru[79.175.40.191]:25: Connection timed out)

Серж
Серж
2 лет назад

Нашел в чем причина.
При отправке письма этому адресату происходит соединение с правильным MX mail.akson.ru, но он отвечает User doesn’t exist.
Следом начинается попытка установить соединение с MX mail2.akson.ru и тут сообщение подвисает в очереди так как Connection timed out.
Sep 16 13:09:31 zcs20 postfix/smtp[14680]: DB7281FE0CE9: to=, relay=127.0.0.1[127.0.0.1]:10032, delay=0.15, delays=0.05/0.01/0.01/0.08, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 070031FE0CED)
Sep 16 13:09:31 zcs20 postfix/smtp[18821]: 070031FE0CED: host mail.akson.ru[134.19.150.100] said: 450 4.1.1 : Recipient address rejected: unverified address: host mail.akson.ru[private/dovecot-lmtp] said: 550 5.1.1 kolotaevea@akson.ru> User doesn’t exist: kolotaevea@akson.ru (in reply to RCPT TO command) (in reply to RCPT TO command)
Sep 16 13:10:01 zcs20 postfix/smtp[18821]: 070031FE0CED: to=, relay=none, delay=30, delays=0.01/0/30/0, dsn=4.4.1, status=deferred (connect to mail2.akson.ru[79.175.40.191]:25: Connection timed out)

Спасибо!