Назад | Перейти на главную страницу

Как предотвратить потерю почты sendmail при недоступности удаленного хоста

У меня небольшой домен с несколькими хостами. Sendmail настроен для пересылки всей локально созданной почты (в основном почты на root@localhost генерируется заданиями cron) в центральный «почтовый узел», используя

define(`MAIL_HUB', `somehost.mydomain.org')

в sendmail.mc. Недавно у меня возникла проблема с почтовым сервером на удаленном конце, так что он не принимал почту с этого хоста. Это привело к тому, что sendmail отбросил всю почту. Из /var/log/maillog:

sendmail[3133]: n4461S5s003133: n4461S5t003133: return to sender: Service unavailable
sendmail[3133]: n4461S5t003133: to=root, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=34772, relay=XXXXX.org.  [91.184.38.153], dsn=5.0.0, stat=Service unavailable
sendmail[3133]: n4461S5s003133: Losing ./qfn4461S5s003133: savemail panic

Все письма, отправленные за это время, были отброшены и потеряны навсегда.

Как я могу предотвратить это? В идеале я бы хотел, чтобы sendmail повторил попытку laiter или, в конечном итоге, сохранил почту в локальный файл в крайнем случае.

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

вам нужно убедиться, что у вас нет (из приведенных выше ссылок):

  • Отсутствует псевдоним почтмейстера в /etc/aliases
  • Жесткий диск заполнен
  • Почтовый ящик для почтмейстера неправильный владелец
  • В mbox файл для почтмейстера превышает 2 ГБ и procmail не могу доставить электронное письмо

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

В контексте эта ошибка означает, что sendmail пытался доставить сообщение в спул-файл ./qfn4461S5s003133 но удаленный почтовый сервер вернул ошибку «Служба недоступна». Таким образом, местные sendmail попытался отскочить от электронной почты. При попытке сделать это что-то пошло не так, поэтому от электронной почты отказались.

Это эквивалент двойной шины CPU в EMail. То есть фатальная ошибка (невозможность сохранить или отклонить сообщение электронной почты), возникающая в ответ на фатальную ошибку (удаленный сервер недоступен достаточно долго, чтобы sendmail отказался от повторных попыток).

Ваш сервер почти сделал "правильную" вещь здесь.

Дальний конец вернул сообщение об ошибке класса «5xx», указывающее на постоянную неспособность доставить сообщение, следовательно, ваш конец полностью прервал доставку.

Чтобы ваш сервер продолжал ставить сообщение в очередь, он должен был получить сообщение класса «4xx», указывающее на временный сбой.

Однако, чтобы предотвратить потерю сообщений навсегда, вам необходимо определить причину ошибки «savemail panic» - они должны были быть просто возвращены отправителям.