Postfix. Работа с очередью сообщений — различия между версиями

Материал из megapuper
Перейти к: навигация, поиск
Строка 9: Строка 9:
 
или:  
 
или:  
 
  postqueue -f
 
  postqueue -f
 +
  
 
Очистить очередь
 
Очистить очередь
1. Удалить все сообщения:
+
1. Удалить все сообщения
 
  postsuper -d ALL
 
  postsuper -d ALL
  
2. Удалить определенное письмо из очереди:
+
2. Удалить определенное письмо из очереди
 
+
postsuper -d <идентификатор письма>
postsuper -d <идентификатор письма>
 
  
 
* идентификатор письма можно увидеть командой mailq.
 
* идентификатор письма можно увидеть командой mailq.
Строка 25: Строка 25:
  
 
* в данном примере мы удалим все письма от spammer@email.com.
 
* в данном примере мы удалим все письма от spammer@email.com.
 +
  
 
Количество писем в очереди
 
Количество писем в очереди
Строка 32: Строка 33:
  
 
* в данном примере в очереди находится 18 сообщений общим объемом 23 Кбайт.
 
* в данном примере в очереди находится 18 сообщений общим объемом 23 Кбайт.
 +
  
 
Также, очередь можно посмотреть командами:
 
Также, очередь можно посмотреть командами:
 +
find /var/spool/postfix/deferred -type f | wc -l
 +
find /var/spool/postfix/active -type f | wc -l
 +
find /var/spool/postfix/incoming -type f | wc -l
 +
find /var/spool/postfix/defer -type f | wc -l
 +
* данные каталоги являются местом, где временно хранятся письма очереди.
  
find /var/spool/postfix/deferred -type f | wc -l
 
 
find /var/spool/postfix/active -type f | wc -l
 
 
find /var/spool/postfix/incoming -type f | wc -l
 
 
find /var/spool/postfix/defer -type f | wc -l
 
 
* данные каталоги являются местом, где временно хранятся письма очереди.
 
  
 
Перезапустить очередь
 
Перезапустить очередь
postsuper -r ALL
+
postsuper -r ALL
  
 
Если не помогло, поочередно:
 
Если не помогло, поочередно:
 +
postfix stop
 +
postsuper -r ALL
 +
postfix start
  
postfix stop
 
 
postsuper -r ALL
 
 
postfix start
 
 
Настройка очереди
 
Задать периодичность повторной отправки сообщений:
 
 
postconf -e "queue_run_delay = 5m"
 
 
Задать время, на которое будет отложена отправка сообщений, которые не были отправлены по причине временных неисправностей (например, принимающий сервер не отвечает или просит повторить запрос позже):
 
 
postconf -e "minimal_backoff_time = 10m"
 
 
Задать максимальное время для отправки сообщений, которые не были отправлены по причине временных неисправностей:
 
 
postconf -e "maximal_backoff_time = 15m"
 
 
Выставить время жизни для сообщения в очереди:
 
 
postconf -e "maximal_queue_lifetime = 1d"
 
 
После внесения изменений необходимо перезапустить postfix:
 
 
service postfix restart || systemctl restart postfix
 
  
 
Информация о конкретном сообщении
 
Информация о конкретном сообщении
postcat -q <идентификатор>
+
postcat -q <идентификатор>
 
 
 
* показывает параметры сообщения и причину, по которой письмо еще не отправлено.
 
* показывает параметры сообщения и причину, по которой письмо еще не отправлено.

Версия 00:15, 7 апреля 2023

Посмотреть очередь

mailq

или:

postqueue -p


Принудительно запустить отправку из очереди

mailq -q

или:

postqueue -f


Очистить очередь 1. Удалить все сообщения

postsuper -d ALL

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

postsuper -d <идентификатор письма>
  • идентификатор письма можно увидеть командой mailq.

3. Очистить очередь по отправителю:

postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } /spammer@email\.com/ { print $1 }' | tr -d '*!' | postsuper -d -

  • в данном примере мы удалим все письма от spammer@email.com.


Количество писем в очереди Команда mailq в конце выдает общее количество сообщений в очереди, например:

-- 23 Kbytes in 18 Requests.

  • в данном примере в очереди находится 18 сообщений общим объемом 23 Кбайт.


Также, очередь можно посмотреть командами:

find /var/spool/postfix/deferred -type f | wc -l
find /var/spool/postfix/active -type f | wc -l
find /var/spool/postfix/incoming -type f | wc -l
find /var/spool/postfix/defer -type f | wc -l
  • данные каталоги являются местом, где временно хранятся письма очереди.


Перезапустить очередь

postsuper -r ALL

Если не помогло, поочередно:

postfix stop
postsuper -r ALL
postfix start


Информация о конкретном сообщении

postcat -q <идентификатор>
  • показывает параметры сообщения и причину, по которой письмо еще не отправлено.