У меня есть установка OpenSMTPD / Dovecot на сервере OpenBSD. Недавно я столкнулся с проблемой, когда Dovecot LMTP отклонял сообщение, отправленное локальному пользователю с адреса, содержащего один апостроф (например, (скрытый) По-видимому, апостроф, а также ряд других специальных символов являются допустимыми символами в локальной части адреса электронной почты (это все, что находится слева от символа @
).
В журналах я получаю следующее сообщение:
Jun 14 11:57:34 atlantic smtpd[42606]: 21749fd12ac76b57 mda delivery evpid=56aed6237d6444a0 from=<firstname.o'lastname@example.com> to=<me@example.org> rcpt=<me@example.org> user=me delay=0s result=PermFail stat=Error ("mail.lmtp: LMTP server error: 501 5.5.4 Invalid FROM: Invalid character in localpart")
где example.com
- внешний домен и example.org
является локальным.
Часть сообщения: Ошибка сервера LMTP: 501 5.5.4 Invalid FROM: Недействительный символ в localpart
возвращается ] dovecot-lmtp
.
Мой вопрос: знает ли кто-нибудь о параметре конфигурации, подобном auth_username_chars
, который перечисляет допустимые символы в адресе электронной почты, чтобы Dovecot LMTP не отклонял такие электронные письма? или, может быть, вы знаете другой способ заставить его принимать электронную почту с такого адреса?
My dovecot Versio n равно:
$ dovecot --version
2.3.5.1 (7ec6d0ade)
И если это имеет значение, я использую OpenBSD 6.5 с исправлением до 005_libssl.
Спасибо!
Игнорируя дебаты о том, должен ли LDA требовать любой удаленный адрес для соответствия спецификации, я действительно считаю, что парсер dovecot очень близок к RFC5322, и то, что вы видите, это , а не dovecot LMTP, отвергающий адрес с апострофом.
Вы можете проверить, что dovecot принимает ваш адрес, инициировав сеанс LMTP самостоятельно:
$ nc -U /var/dovecot/lmtp
220 example.com Dovecot ready.
LHLO example.com
250-example.com
MAIL FROM:<firstname.o'lastname@example.com>
250 2.1.0 OK
RCPT TO:<postmaster@example.com>
250 2.1.5 OK
DATA
empty
.
354 OK
250 2.0.0 <postmaster@example.com> FOOBAR Saved
Если dovecot принимает почту, когда вы вручную верифицируете в LMTP, но не получает ее при получении из MTA, вы хотите тщательно проверить конфигурацию вашего почтового сервера.
Почтовый сервер каким-то образом редактирует адрес перед передачей его dovecot? Получите транскрипт сеанса LMTP (попробуйте lmtp_rawlog_dir
в dovecot) и сравните, если адрес переписан между SMTP и LMTP.
Я думаю, что аналогичные ограничения, которые применяются к dovecot-lda, в отличие от dovecot-lmtp, применяются при использовании mail.lmtp
, что требует, чтобы его параметры также были действительными аргументами командной строки.