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

Ошибка отправки eximʻa «421 Тайм-аут входящих данных SMTP» - в теле сообщения отсутствует '\ n' в конце

Я пытаюсь понять, как возникает эта проблема и как ее решить. Каким-то образом сообщения попадают в нашу входящую спул Exim без символа \ n в конце. Когда наш исходящий процесс eximʻa пытается доставить эти письма, они терпят неудачу, поскольку exim выводит '.' в той же строке, что и отправленный. Я проверил это, записав разговор SMTP с обеих сторон с помощью tcpdump.

tcpdump показывает, что в конце отправляется следующее:

<! - www.https: //example.com--> <! - www.https: //example.com-->.

Что не является правильным завершением ДАННЫХ. В конце концов принимающий MTA отвечает

421 Потеряно входящее соединение

Передача сообщения в спуле через od, Я вижу в конце тела сообщения:

0011700 e. c o m - ->

Нет \ ns. Эти сообщения, застревающие в спуле, кажутся спамом. Что я вижу в исходящем журнале,

1NLolk-0003aD-3V == email@example.com R = Хранилище T = Отсрочка хранилища (-46): Ошибка SMTP от удаленного почтового сервера после окончания данных: хост 192.168.1.3 [192.168.1.3]: 421 mda.local SMTP время ожидания входящих данных - закрытие соединения.

У кого-нибудь есть идеи? Параметр message_suffix звучал так, как будто это был бы хороший бандаж, но он применяется только к appendfile и pipe.

Я проконсультировался по этому поводу со списком рассылки Exim, и похоже, что проблема заключается в фильтре содержимого MailScanner. У нас есть MailScanner, который выполняет сканирование на вирусы / спам для нас, и он кажется на некоторых сообщениях, когда он очищает конец сообщения, \n не учитывается, и сообщение помещается в исходящую очередь exim`a в состоянии, при котором exim не может его доставить. Exim не утверждает, что он послал \n перед попыткой завершить SMTP DATA передача с ., который сейчас обсуждают некоторые разработчики Exim.

Я думаю, что спамеры делают это специально, надеясь, что ваш почтовый сервер обратное рассеяние полное сообщение (ваш SMTP-сервер следует правилам, поэтому он добавит \ n) невиновному человеку, указанному в ответе.

Чтобы исправить это, вам нужно стать более агрессивным со своим антиспамом, проверив, что IP-адрес отправителя не указан в списках RBL, что SPF записывать матчи и т. д.

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

HTH