Ошибки IMAP и POP3: что отвечает сервер и что чинить
Почтовый клиент пишет, что не может подключиться, а числового кода, который можно было бы загуглить, нигде нет. Так и задумано: у IMAP и POP3 кодов ошибок не существует, сервер отвечает словами. Разбираем, что означают эти слова и в каком порядке проверять настройки.
Чем ошибки IMAP и POP3 отличаются от SMTP
Протоколы делят работу пополам. SMTP отправляет письма, IMAP и POP3 их забирают. Поэтому и ошибки у них разного рода: у SMTP это отказы получателя и политики, у IMAP и POP3 это вход в ящик, права доступа и состояние папок.
Второе отличие в формате. У SMTP есть трёхзначные коды, одинаковые у всех серверов. У IMAP и POP3 числовых кодов нет вовсе: сервер отвечает словами OK, NO или BAD, а дальше пишет пояснение своими словами. Именно поэтому «код ошибки IMAP» найти не получается: искать надо текст.
Числа, которые люди принимают за коды IMAP, обычно приходят от почтового клиента, а не от сервера. Outlook выдаёт свои внутренние номера вроде 0x800CCC0E, Thunderbird пишет текстом. Их стоит гуглить вместе с названием программы.
NO, BAD и BYE: три ответа сервера
NO означает, что команда понята, но выполнить её нельзя. Неверный пароль, нет прав на папку, ящик переполнен. Это отказ по существу, и повторять бессмысленно, пока не устраните причину.
BAD означает, что сервер не понял команду. Почти всегда это ошибка клиента или прокси между вами и сервером, а не проблема учётной записи.
BYE означает, что сервер закрывает соединение сам. Причины бывают мирные (истёк таймаут бездействия) и не очень (превышен лимит подключений с одного IP).
Что встречается чаще всего
Invalid credentials or IMAP is disabled. Формулировка Mail.ru и ряда российских провайдеров, и она двусмысленна нарочно. Либо пароль неверен, либо доступ по протоколу выключен в настройках ящика. Начинайте со второго: у новых ящиков IMAP по умолчанию отключён, а пароль при этом рабочий.
LOGIN failure or POP3 disabled. То же самое для POP3. Проверяйте переключатель в настройках, потом пароль приложения, потом всё остальное.
Must issue a STARTTLS command first. Сервер требует шифрование, а клиент пытается войти в открытом виде. Лечится настройкой соединения: для IMAP это порт 993 с SSL или 143 со STARTTLS, для POP3 порт 995 с SSL или 110 со STARTTLS.
Authentication failed без уточнений. Чаще всего это отсутствие пароля приложения. Gmail, Яндекс и Mail.ru давно не пускают сторонние программы по основному паролю от аккаунта.
Maximum number of connections exceeded. Превышен лимит одновременных подключений. Типичная причина в том, что один и тот же ящик открыт на телефоне, ноутбуке и в веб-интерфейсе, плюс какой-нибудь скрипт синхронизации.
Порты и шифрование: короткая таблица
| Протокол | SSL | STARTTLS |
|---|---|---|
| IMAP | 993 | 143 |
| POP3 | 995 | 110 |
| SMTP | 465 | 587 |
Открытые порты без шифрования (143 и 110 без STARTTLS) большинство провайдеров уже закрыло. Если клиент настроен на них, вы получите либо требование STARTTLS, либо обрыв соединения без объяснений.
Как посмотреть, что отвечает сервер
Соединитесь руками, это занимает минуту и сразу отделяет проблему сервера от проблемы клиента.
openssl s_client -connect imap.yandex.ru:993 -crlf a1 LOGIN ivan@example.com пароль_приложения a2 LIST "" "*" a3 LOGOUT
Ответ вида a1 OK означает, что вход прошёл и дело в настройках клиента. a1 NO вместе с текстом даёт настоящую причину, которую почтовая программа обычно прячет за своим сообщением.
Что выбрать, IMAP или POP3
Если ошибки лезут при настройке нового ящика, стоит заодно решить этот вопрос. POP3 забирает письма на устройство и по умолчанию стирает их с сервера, IMAP оставляет всё на сервере и синхронизирует изменения между устройствами. Подробное сравнение с таблицей лежит на странице POP3 или IMAP.
Забрать почту получилось, теперь про отправку
IMAP и POP3 отвечают за входящие. Как только доходит до исходящих, начинается другая история: коды SMTP, возвраты и репутация домена.
Проверьте базу в uChecker, 100 адресов бесплатно, чтобы отправка не упиралась в несуществующие ящики.
