У меня есть Sendmail MTA с версией 8.15.2 на Debian 9, который ретранслирует почту для одного домена. Моя проблема в том, что когда сервер встречает файл. в любое время после заголовков и команды DATA он завершает почтовое соединение, как и должно быть в соответствии с RFC 5321. Это может произойти до конца границы для составного сообщения, эффективно усекая любое другое содержимое, включая вложения. (например, если в составной части HTML с вложениями встречается a., все оставшееся HTML-содержимое, включая любые другие составные объекты, такие как вложения, будет усечено).
Меня беспокоит то, что другие MTA (например, Exchange) для других организаций будут получать то же сообщение и обрабатывать контент без какого-либо усечения. (Я предполагаю, что вместо этого они ждут EOF.)
Я попытался определить (confIGNORE_DOTS',
true ') в конфигурации sendmail m4 безуспешно, однако я понимаю, что эта конфигурация по существу игнорируется во время работы сервера и предназначена для локальной передачи из командной строки.
Мой единственный другой вариант, о котором я могу думать, - это закодировать любой. в шестнадцатеричный (т.е. 2E) до обработки Sendmail, однако мне не удалось найти никаких примеров в Интернете.
Я предполагаю, что другие MTA, такие как Postfix или Exim, столкнутся с той же проблемой.
При необходимости я могу опубликовать файл конфигурации Sendmail и параметры времени выполнения сервера.
Любая помощь действительно ценится.
Сервер sendmail (SMTP / MTA) маскирует «одноточечные» строки в самом сообщении описанным в RFC способом.
Скорее всего, вы не укажете какую-то важную «деталь».
4.5.2. Прозрачность
Без некоторого обеспечения прозрачности данных последовательность символов "." заканчивает текст письма и не может быть отправлен пользователем. Обычно пользователи не знают о таких «запрещенных» последовательностях. Чтобы обеспечить прозрачную передачу всего текста, созданного пользователем, используются следующие процедуры:
o Перед отправкой строки почтового текста клиент SMTP проверяет первый символ строки. Если это точка, в начало строки вставляется одна дополнительная точка.
o Когда SMTP-сервер получает строку почтового текста, он проверяет ее. Если строка состоит из одной точки, она рассматривается как индикатор конца почты. Если первый символ - точка, а в строке есть другие символы, первый символ удаляется.