Среда: cPanel / WHM с использованием Exim 4.91.
Я заметил, что наши «Глобальные фильтры электронной почты» (на языке cPanel) некорректно работали с электронными письмами, отправленными определенными интернет-провайдерами.
Короче говоря, я обнаружил, что заголовки электронной почты, в которых неправильно используются символы новой строки, вызывают некорректную работу фильтрации. Ниже приведены некоторые примеры.
Фильтр работает
X-Custom-Header: allOneLine
To: "filtertest@example.com" <filtertest@example.com>
This message IS correctly filtered by Exim.
Фильтр не работает
X-Custom-Header: line1
line2
To: "filtertest@example.com" <filtertest@example.com>
This message is NOT correctly filtered by Exim due to the newline in X-Custom-Header that is not followed immediately by whitespace.
Фильтр работает
To: "filtertest@example.com" <filtertest@example.com>
X-Custom-Header: line1
line2
This message IS correctly filtered by Exim. There is an invalid newline in the X-Custom-Header, but the To filter precedes the newline, so filtering succeeds.
Фильтр работает
X-Custom-Header: line1
line2
To: "filtertest@example.com" <filtertest@example.com>
This message IS correctly filtered by Exim. Although there is a newline in X-Custom-Header, the subsequent line begins with whitespace.
Я рассмотрел актуальные фильтры Exim, которые cPanel создает в /etc/vfilters/example.com
, и я не вижу явных проблем. Итак, похоже, что это может быть ошибка в Exim. Если заголовок содержит новую строку, за которой сразу не следует пробел, фильтрация не будет выполняться для последующих заголовков.
Я понимаю, что использование новой строки, за которой не следует пробел, синтаксически недопустимо (RFC 2822; ищите "складной"). Проблема в том, что мы явно не контролируем заголовки других отправителей. Кажется, что законные отправители виновны в совершении этого греха. Yahoo, например, включает заголовок «Outgoing Spam Guard» (X-YMail-OSG
), который содержит символы новой строки без пробелов.
Это действительно похоже на ошибку в eximʻe?
Каковы возможные обходные пути?