Я использую сервер Postfix, который использует Dovecot LMTP для доставки почты. Я делаю это, потому что он хорошо работает с sieve.
Однако в последнее время я получил несколько писем с темой Unicode.
Это письмо успешно принимается Postfix, который явно поддерживает SMTPUTF8, однако оно прекращается, когда достигает LMTP:
<me@myhost> (expanded from <meother@mhost>): SMTPUTF8 is required, but was not offered by host myhost[public/lmtp]
Я прочитал в документации Postfix SMTPUTF8, что,
При получении сообщения с запросом SMTPUTF8 Postfix доставит сообщение на сервер SMTP или LMTP, не поддерживающий SMTPUTF8, ТОЛЬКО в следующих случаях:
Ни одно значение заголовка сообщения не содержит UTF-8.
Адрес отправителя конверта не содержит UTF-8,
Ни один адрес получателя конверта для этой конкретной транзакции доставки SMTP/LMTP не содержит UTF-8.
ПРИМЕЧАНИЕ: Получатели в других транзакциях доставки электронной почты для того же сообщения могут по-прежнему содержать UTF-8.
В противном случае Postfix вернет получателя(ей) для этой транзакции доставки электронной почты как недоставленный. Сообщение с уведомлением о статусе доставки будет сообщением SMTPUTF8. Поэтому оно будет подчиняться тем же ограничениям, что и электронная почта, полученная с запросом SMTPUTF8.
--http://www.postfix.org/SMTPUTF8_README.html#detecting
Соответствующая часть: «Postfix доставит ... на не-SMTPUTF8 ... LMTP-сервер ТОЛЬКО если ... [в сообщении нет UTF8]».
Это неловко сформулировано, но подразумевается, что Postfix будет передавать почту UTF8 на нижестоящий сервер только в том случае, если он поддерживает UTF8.
Поскольку я получаю почту в кодировке UTF8, Postfix отказывается доставлять ее в Dovecot LMTP.
Что подводит меня к паре вопросов:
- Поддерживает ли Dovecot LMTP SMTPUTF8? (Похоже, нет: http://www.dovecot.org/list/dovecot/2013-January/thread.html#87756)
- Есть ли у Postfix режим «мягкого сбоя» для этого, в котором он может поставить почту в очередь для отложенной доставки, обойти LMTP или сделать что-то более интеллектуальное, чем просто сбой?
решение1
TL;DR: СмотритеSumming up
!
Я также регулярно получаю письма с UTF-8
символами в Subject:
строке. Никогда не было никаких в других заголовках.
Хотя режим «мягкого сбоя» в postfix мне неизвестен, вы можете настроить другой smtp-транспорт и фильтровать возвраты через него как своего рода отказоустойчивый режим. Однако мне еще предстоит завершить эту настройку самостоятельно. На данный момент возвраты застревают в очереди как недоставленные до истечения срока действия. По крайней мере, они просто не возвращаются обратно отправителю, и я слежу за застрявшими членами очереди. С другой стороны, я не хочу идти дальше по этому пути, теперь, когда следующий метод работает для меня(tm):
Рабочим решением (только в случае UTF-8
символов Subject:
) было простозапрещатьпостфикс'smtputf8_enable
функция, которая в настоящее время по умолчанию установлена на "да" (используя обновленный Debian, конечно). В main.cf добавьте:
smtputf8_enable = no
Попытки что-то изменить smtputf8_autodetect_classes
не дали результата.
Сообщения электронной почты, содержащие эту UTF-8
Subject:
строку, теперь обрабатываются postfix и сохраняются dovecot без каких-либо проблем.
Решение может показаться нелогичным, особенно если учесть несколько неуклюже сформулированную постфиксную документацию (как вы уже упомянули).
Последнее обновление о SMTPUTF8
поддержке в dovecot, похоже, то, на что вы ссылаетесь. Где-то еще я припоминаю, что видел пост о том, что SMTPUTF8
в dovecot не будет реализовано в ближайшее время, если вообще будет [нужна ссылка]. Не уверен, было ли это авторитетным заявлением или нет.
Еще один комментарий о dovecot SMTPUTF8
можно найти здесь (включая вашу ссылку и этот вопрос SE):https://dovecot.org/list/dovecot/2016-November/106029.html
Вместе со следующим постом, похоже, тема застопорилась примерно в конце 2016 года:https://dovecot.org/list/dovecot/2016-September/105474.html
По состоянию на октябрь 2022 года все еще нет перспективы, что SMTPUTF8 будет поддерживаться dovecot LDA/LMTP в ближайшее время. Тем не менее, эта проблема теперь отслеживается с помощью идентификатора баг-трекера dovecot "DOP-1045" (см. https://dovecot.org/list/dovecot/2019-April/115430.html).
Подводя итоги:сегодня, если вам не нужна SMTPUTF8
поддержка заголовков, отличных от Subject:
заголовка, вы можете обойтись простоотключение smtputf8_enable
в postfix' main.cfи будьте счастливы как есть.
НТН