Вопрос или проблема
Я развернул Exchange Server 2016. Я могу отправлять электронную почту через 587, но сталкиваюсь с ошибкой входа через IMAP 993 и POP3 995.
При использовании инструмента Microsoft https://testconnectivity.microsoft.com/ тест IMAP проходит, но при использовании других методов (как Java Mail или сценарии) я сталкиваюсь с ошибкой аутентификации на 993.
Я могу отправлять письма с тем же сценарием или Java Mail.
Я пробовал устанавливать LoginType
во все разные режимы.
DEBUG IMAPS: пытается подключиться к хосту "mail.xxx.com", порт 993, isSSL true
* OK Служба Microsoft Exchange IMAP4 готова.
A0 CAPABILITY
* CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN SASL-IR UIDPLUS MOVE ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+
A0 OK CAPABILITY выполнено.
DEBUG IMAPS: AUTH: PLAIN
DEBUG IMAPS: протоколПодключение для входа, хост=mail.xxx.com, [email protected], пароль=<not-null>
DEBUG IMAPS: команда AUTHENTICATE PLAIN подавлена
DEBUG IMAPS: результат команды AUTHENTICATE PLAIN: A1 NO AUTHENTICATE не удалось.
DEBUG IMAPS: пытается подключиться к хосту "mail.xxx.com", порт 993, isSSL true
* OK Служба Microsoft Exchange IMAP4 готова.
A0 CAPABILITY
* CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN SASL-IR UIDPLUS MOVE ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+
A0 OK CAPABILITY выполнено.
DEBUG IMAPS: AUTH: PLAIN
DEBUG IMAPS: протоколПодключение для входа, хост=mail.xxx.com, [email protected], пароль=<not-null>
DEBUG IMAPS: команда AUTHENTICATE PLAIN подавлена
DEBUG IMAPS: результат команды AUTHENTICATE PLAIN: A1 NO AUTHENTICATE не удалось.
СЕРЬЕЗНО: Исключение: AUTHENTICATE не удалось.
Если вы настроите LoginType как SecureLogin, он будет использовать защищенный порт (993 для IMAP4 и 995 для POP3) и сертификат Exchange с службой POP3 или IMAP4.
Поэтому проверьте сертификат на вашем сервере Exchange, убедитесь, что он включен для службы POP3 и IMAP4.
.
Ответ или решение
Теория
Ваша проблема связана с проблемой аутентификации по протоколу IMAP на Exchange Server 2016 для порта 993, в то время как отправка сообщений через SMTP на порту 587 проходит успешно. Это может указывать на несколько возможных причин: неправильно сконфигурированный сертификат, ошибки в настройках службы IMAP, проблемы с аутентификацией или даже проблемы на стороне клиента, используемого для подключения.
IMAP (Internet Message Access Protocol) — это протокол прикладного уровня, используемый для доступа к сообщениям электронной почты на удалённом сервере из клиентского приложения. Он поддерживает транзакции и может работать совместно с различными клиентами электронной почты, включая JavaMail. Когда возникает ошибка аутентификации по IMAP, это обычно связано с проблемами доверия сертификату, неправильно настроенной службой на сервере или ошибками в конфигурации клиента.
Пример
Вы уже проводили тестирование с помощью инструмента Microsoft Connectivity Analyzer, и тест IMAP прошёл успешно, что указывает на возможность правильной конфигурации службы IMAP на сервере. Однако, использование других клиентов, таких как JavaMail, вызывает ошибки аутентификации. Ваши лог-файлы подтверждают, что используется команда AUTHENTICATE PLAIN, но возникают ошибки выполнения этой команды.
Эта ситуация может быть связана с тем, что Exchange Server неправильно обрабатывает команду AUTHENTICATE PLAIN от вашего клиентского приложения, или с тем, что клиентское приложение неправильно форматирует запрос на аутентификацию.
Применение
-
Проверка Сертификатов: Как указывает оригинальное описание проблемы, убедитесь, что ваш сертификат SSL/TLS действительно включает службы IMAP и POP3. Для проверки сертификатов на Exchange Server выполните следующую команду в Exchange Management Shell:
Get-ExchangeCertificate | Format-List Services, Thumbprint, Subject
Убедитесь, что у вашего активного сертификата в поле
Services
есть меткиIMAP
и/илиPOP3
. -
Настройка IMAP и POP служб:
-
Убедитесь, что службы IMAP и POP3 действительно запущены. Выполните в PowerShell:
Get-Service *imap* | Select-Object DisplayName, Status Get-Service *pop* | Select-Object DisplayName, Status
-
Если какой-либо сервис не работает, его следует вручную запустить:
Start-Service MSExchangeIMAP4 Start-Service MSExchangePOP3
-
-
Аутентификация и Логирование:
-
Проверьте настройки аутентификации для IMAP. Это можно сделать через EAC (Exchange Admin Center) или через PowerShell командой:
Get-ImapSettings | Format-List LoginType
-
Изменяйте тип входа между Basic, SecureLogin, и другими в зависимости от нужной конфигурации. Например:
Set-ImapSettings -LoginType Basic
-
-
Клиентская Конфигурация:
- Проверьте корректность формата данных, отправляемых клиентом при аутентификации. Убедитесь, что пользовательское имя и пароль передаются в корректной кодировке, особенно если сервер ожидает базовую аутентификацию.
- Добавьте расширенное логирование в клиентском приложении на основе JavaMail, чтобы получить дополнительные данные об ошибках.
-
Проверка Файрвола и Сетевых Настроек:
- Убедитесь, что ваш брандмауэр или сетевые устройства не блокируют трафик по необходимым портам. Используйте команду
Test-NetConnection
в PowerShell для проверки доступности:Test-NetConnection -ComputerName mail.xxx.com -Port 993
- Убедитесь, что ваш брандмауэр или сетевые устройства не блокируют трафик по необходимым портам. Используйте команду
-
Проверка Ошибок Журнала Exchange:
- В журнале событий Windows (Event Viewer) на сервере Exchange, ищите ошибки в логах приложений, связанные с IMAP, для получения дополнительной информации о возможных проблемах.
Применив верхеперечисленные шаги, вы сможете устранить проблему с аутентификацией по IMAP на Exchange Server 2016. Постарайтесь в удобном случае протестировать подключения и проверьте, исчезла ли ошибка.