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

Не могу отвечать на старую почту после миграции с MS Exchange на dovecot / postfix

Мы успешно перешли с древнего Microsoft Exchange на dovecot + postfix, и все работает нормально, за исключением одного конкретного случая:

Когда пользователи Outlook 2016 нажимают ответ на старое письмо от кого-то в компании (something@example.com) они получают сообщение об ошибке доставки из Outlook, и иногда я замечаю, что Outlook даже не подключается к SMTP-серверу, а в других случаях он устанавливает его и выдает ошибку (см. ниже). Если они нажимают вперед и вводят тот же адрес (something@example.com) вручную, все в порядке.

Письмо с уведомлением о недоставке, которое возвращается, находится в строках (перевод с греческого):

We couldn't reach one or more recipients... 
   'Company S.A. John Smith' at 22/10/2018 1:03 pm
Server error: '501 5.1.3 Bad recipient address syntax'" 

и postfix в логах есть такая строчка:

postfix/smtps/smtpd[3905]: warning: Illegal address syntax from xxx.yyy.local[192.168.0.153] in RCPT command: <Company S.A. John Smith>

У пользователей, у которых есть Thunderbird, нет никаких проблем. И Outlook, и Thunderbird используют одни и те же настройки подключения для сервера (безопасный IMAP и SMTP).

Будем очень признательны за любые идеи о том, что здесь идет не так.

Неправильные адреса поступают из кеша имен Outlook (файл .nk2). Вам необходимо удалить все записи файла .nk2, соответствующие адресам обмена.

В моем случае я использовал бесплатный редактор от Nirsoft для редактирования файла. Я щелкнул Адрес заголовок столбца для сортировки по типу адреса, и я выбрал все записи, показывающие EX вместо того SMTP. Затем я нажимаю удалить и сохранить.

Спасибо всем за полезные комментарии и joeqwerty в частности за очень информативная ссылка Это привело меня в правильное русло.

Адрес назначения в записи журнала: Company S.A. John Smith. Postfix прав, когда жалуется на это, поскольку пробелы в адресах электронной почты требуют цитирования, а адрес должен иметь @ символ, за которым следует домен.

Соответствующие стандарты, на которые следует обратить внимание: RFC 5321:

   Forward-path   = Path

   Path           = "<" [ A-d-l ":" ] Mailbox ">"

   A-d-l          = At-domain *( "," At-domain )
                  ; Note that this form, the so-called "source
                  ; route", MUST BE accepted, SHOULD NOT be
                  ; generated, and SHOULD be ignored.

   At-domain      = "@" Domain

   Mail-parameters  = esmtp-param *(SP esmtp-param)

   Rcpt-parameters  = esmtp-param *(SP esmtp-param)

   esmtp-param    = esmtp-keyword ["=" esmtp-value]

   esmtp-keyword  = (ALPHA / DIGIT) *(ALPHA / DIGIT / "-")

   esmtp-value    = 1*(%d33-60 / %d62-126)
                  ; any CHAR excluding "=", SP, and control
                  ; characters.  If this string is an email address,
                  ; i.e., a Mailbox, then the "xtext" syntax [32]
                  ; SHOULD be used.

   Keyword        = Ldh-str

   Argument       = Atom

   Domain         = sub-domain *("." sub-domain)

   sub-domain     = Let-dig [Ldh-str]

   Let-dig        = ALPHA / DIGIT

   Ldh-str        = *( ALPHA / DIGIT / "-" ) Let-dig

   address-literal  = "[" ( IPv4-address-literal /
                    IPv6-address-literal /
                    General-address-literal ) "]"
                    ; See Section 4.1.3

   Mailbox        = Local-part "@" ( Domain / address-literal )

   Local-part     = Dot-string / Quoted-string
                  ; MAY be case-sensitive


   Dot-string     = Atom *("."  Atom)

   Atom           = 1*atext

   Quoted-string  = DQUOTE *QcontentSMTP DQUOTE

и RFC 5322:

   atext           =   ALPHA / DIGIT /    ; Printable US-ASCII
                       "!" / "#" /        ;  characters not including
                       "$" / "%" /        ;  specials.  Used for atoms.
                       "&" / "'" /
                       "*" / "+" /
                       "-" / "/" /
                       "=" / "?" /
                       "^" / "_" /
                       "`" / "{" /
                       "|" / "}" /
                       "~"

Единственное исключение из требования @ а домен в адресе получателя - это зарезервированный адрес postmaster может использоваться без домена для отправки электронного письма администратору соответствующего почтового сервера.

Даже если Postfix достаточно ослабил свой синтаксический анализ, чтобы не жаловаться на две синтаксические ошибки, я думаю, вы, вероятно, не настроили Postfix, чтобы знать, как доставлять электронное письмо на Company S.A. John Smith.

Тогда возникает следующий вопрос: почему Outlook выдает такой неверный RCPT команда в первую очередь. Чтобы понять, вам нужно посмотреть на электронное письмо, на которое отвечают на стороне клиента, чтобы узнать, что From и Reply-To заголовки в почте выглядят так.