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

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

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

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

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

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 ** origsender@example.biz P=<> R=dnslookup_forwarder 
  T=remote_smtp_forwarder: SMTP error from remote mail server after RCPT TO:<origsender@example.biz>: 
  host mail.example.biz [80.76.197.72]: 554 5.7.1 <origsender@example.biz>: 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 <= origsender@example.biz 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/ 
  (sarah@boyexample.com) <sarah@boyexample.com> P=<origsender@example.biz> R=virtual_user T=address_directory
2013-06-18 09:40:22 1UosOf-0000bX-BV => sarah <sarah@boyexample.com> P=<origsender@example.biz> 
  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

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

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

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

или же

exiqgrep -z -i | xargs exim -Mrm

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

exiqgrep -zi -o 86400 | xargs exim -Mrm

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

Exim может автоматически удалить замороженные скачки, установив опцию конфигурации ignore_bounce_errors_after до подходящего значения, например

ignore_bounce_errors_after = 12h

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

Другие вопросы по тегам