Exim - Много замороженных сообщений без отправителя

Я новичок в Exim и использую его в качестве смарт-хоста (чтобы получать электронные письма от пользователей и отправлять их моему провайдеру). введите здесь описание изображения

Система работает нормально, но у меня проблемы с зависшими сообщениями. Я иногда наблюдаю за очередью, и там есть несколько замороженных сообщений без отправителя, поэтому Exim не может их отправить, потому что, если отправителя нет, он не может аутентифицироваться у провайдера.

Где я могу начать отлаживать это?

Миллион спасибо.


person Tomás Crespo García    schedule 18.06.2013    source источник


Ответы (3)


Это отказные сообщения. Что-то отправляет сообщения через ваш почтовый сервер, но получатель не принимает их, поэтому ваша система генерирует сообщение о возврате. Эти рикошеты также отклоняются, поэтому exim MTA "замораживает" их. Вам нужно выяснить, откуда изначально пришли сообщения, и остановить поток этих несанкционированных сообщений.

exigrep 1UorWC-0002Nz-Mz /var/log/exim/main.log (или какой у вас путь)

Это найдет сообщение о возврате в почтовых журналах. В качестве примера я выбрал замороженное сообщение в своей почтовой очереди (1UosOk-0000ej-KG):

# exigrep 1UosOk-0000ej-KG /var/log/exim/main.log
+++ 1UosOk-0000ej-KG has not completed +++
2013-06-18 09:40:22 1UosOk-0000ej-KG <= <> R=1UosOf-0000bX-BV U=www P=local S=894 
2013-06-18 09:40:24 1UosOk-0000ej-KG ** [email protected] P=<> R=dnslookup_forwarder 
  T=remote_smtp_forwarder: SMTP error from remote mail server after RCPT TO:<[email protected]>: 
  host mail.example.biz [80.76.197.72]: 554 5.7.1 <[email protected]>: Relay access denied
2013-06-18 09:40:24 1UosOk-0000ej-KG Frozen (delivery error message)

В первой строке говорится, что сообщение о возврате 1UosOk-0000ej-KG было создано в ответ на сообщение 1UosOf-0000bX-B (именно это фраза R= в ‹= линия значит). Теперь найдите идентификатор ЭТОГО сообщения, чтобы узнать, откуда оно пришло. В моем случае это был не рикошет, а автоответчик клиента:

# exigrep 1UosOf-0000bX-BV /var/log/exim/main.log
2013-06-18 09:40:18 1UosOf-0000bX-BV H=example.biz [62.189.29.157] Warning: SPF PASS (pass) to m.ivenue.com: 
  domain of example.biz designates 62.189.29.157 as permitted sender
2013-06-18 09:40:22 1UosOf-0000bX-BV <= [email protected] H=example.biz [62.189.29.157] P=esmtp S=17624
2013-06-18 09:40:22 1UosOf-0000bX-BV => /netapp3/mail/maildirs/b/o/y/boyexample.com/sarah/Maildir/ 
  ([email protected]) <[email protected]> P=<[email protected]> R=virtual_user T=address_directory
2013-06-18 09:40:22 1UosOf-0000bX-BV => sarah <[email protected]> P=<[email protected]> 
  R=autoresponder_always T=autoresponder_always_t
2013-06-18 09:40:22 1UosOf-0000bX-BV Completed

Как только вы узнаете, какой процесс используется для отправки этих сообщений через вашу систему, вы можете предпринять шаги, чтобы предотвратить их, предполагая, что они изначально недействительны. Какие шаги вы предпримете, во многом будет зависеть от того, что вы обнаружите.

Обычно вам не захочется повторно отправлять эти замороженные сообщения. Однако, если сообщения были заморожены из-за какой-то временной ошибки сети или конфигурации, и вы хотите, чтобы exim переслал их, вам нужно сгенерировать список замороженных сообщений и указать Exim'у доставить их. Самый простой способ — с помощью программы exiqgrep:

exiqgrep -z -i | xargs -n 1 exim -M
person Todd Lyons    schedule 18.06.2013
comment
Привет, испытал это сегодня. Хорошо объяснил. Так как же повторно отправить эти замороженные сообщения? И какие шаги обычно предпринимаются для их предотвращения? Огромное спасибо! - person jagc; 30.06.2014
comment
Добавлен абзац, объясняющий, как отправить повторно. - person Todd Lyons; 30.06.2014

Замороженные письма бесполезны в очереди exim. Вы можете удалить все это, чтобы уменьшить список очередей exim.

Следующая команда удалит все замороженные письма:

exim -bpr | grep frozen | awk {'print $3'} | xargs exim -Mrm

or

exiqgrep -z -i | xargs exim -Mrm

Если вы хотите удалить замороженные письма старше определенного часа, например 24 часа:

exiqgrep -zi -o 86400 | xargs exim -Mrm

86400 означает 24 часа в секундах. Это может быть изменено соответственно.

person Leo Prince    schedule 23.06.2013
comment
Это хорошие предложения по управлению очередью. ИМХО, всегда лучше использовать команду exiqgrep, чем вывод exim -bpr (он же команда 'mailq'). Он всегда будет производить последовательный и контролируемый результат. - person Todd Lyons; 25.06.2013

Замороженные возвраты могут быть автоматически очищены exim путем установки параметра конфигурации ignore_bounce_errors_after в подходящее значение, например.

ignore_bounce_errors_after = 12h

автоматически удалит эти ошибки отказов через 12 часов.

person krisku    schedule 15.04.2014
comment
Вы также должны добавить timeout_frozen_after = 1d для отмены (удаления) замороженных сообщений старше одного дня. - person andreszs; 08.12.2017