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

Ошибки SMTP с устройствами iOS

Я пытаюсь диагностировать, почему, когда устройство iOS, такое как iPhone или iPad, настроено для использования электронной почты с нашим сервером впервые, возникают эти ошибки. Мы выбираем «Другой» из начального набора вариантов для провайдера при настройке учетной записи. Вы можете увидеть транзакцию подключения ниже после ввода имен серверов IMAP и SMTP. 69.197.220.11 - это адрес телефона. Мы запускаем CommuniGate Pro 6.0.10.

Ошибки не возникают при настройке IMAP / SMTP на Macbook (Почта), ПК (Outlook, Thunderbird), Linux или на одном устройстве Android, с которым мне удалось протестировать. Ошибки протокола приводят к тому, что IP-адрес устройства iOS заносится почтовым сервером в черный список.

Системный журнал следует:

10:06:40.688 5 SMTP [0.0.0.0]:587 <- [69.197.220.11]:49426 connection request. socket=191
10:06:40.688 5 SMTP new VStream created, 1 total
10:06:40.688 5 SMTP stream thread started
10:06:40.688 4 SMTPI-011473([69.197.220.11]) [192.168.200.100]:587 <- [69.197.220.11]:49426 incoming connection(our domain.net)
10:06:40.688 5 SMTPI-011473([69.197.220.11]) out: 220 ourdomain.net ESMTP CommuniGate Pro 6.0.10\r\n
10:06:40.691 5 SMTPI-011473([69.197.220.11]) inp: \022\003\001
10:06:42.693 5 SMTPI-011473([69.197.220.11]) out: 501 Unknown command\r\n
10:06:42.693 5 SMTPI-011473([69.197.220.11]) inp: \163\001
10:06:44.696 5 SMTPI-011473([69.197.220.11]) out: 501 Unknown command\r\n
10:06:44.696 5 SMTPI-011473([69.197.220.11]) inp:
10:06:46.698 5 SMTPI-011473([69.197.220.11]) out: 501 Unknown command\r\n
10:06:46.698 5 SMTPI-011473([69.197.220.11]) inp: \159\003\001T\135 l
10:06:48.700 5 SMTPI-011473([69.197.220.11]) out: 501 Unknown command\r\n
10:06:48.700 5 SMTPI-011473([69.197.220.11]) inp: \004\225\176d2\217\180\005"]\167\176\182\131N&\183\175\218\167\200\167\245\003\246\005\221
10:06:50.702 5 SMTPI-011473([69.197.220.11]) out: 501 Unknown command\r\n
10:06:50.702 1 SMTPI-011473([69.197.220.11]) Too many protocol errors, aborting
10:06:50.723 4 SMTPI-011473([69.197.220.11]) closing connection
10:06:50.723 4 SMTPI-011473([69.197.220.11]) releasing stream
10:06:50.966 5 SMTP [0.0.0.0]:587 <- [69.197.220.11]:49427 connection request. socket=214
10:06:50.966 4 SMTPI-011474([69.197.220.11]) [192.168.200.100]:587 <- [69.197.220.11]:49427 incoming connection(ourdomain.net)
10:06:50.966 5 SMTPI-011474([69.197.220.11]) out: 220 ourdomain.net ESMTP CommuniGate Pro 6.0.10\r\n
10:06:51.067 5 SMTPI-011474([69.197.220.11]) inp: EHLO [10.233.64.161]
10:06:51.067 5 SMTPI-011474([69.197.220.11]) out: 250-ourdomain.net your name is not [10.233.64.161]\r\n250-DSN\r\n250-SIZE\r\n250-STARTTLS\r\n250-AUTH LOGIN PLAIN CRAM-MD5 GSSAPI\r\n250-ETRN\r\n250-TURN\r\n250-ATRN\r\n250-NO-SOLICITING\r\n250-8BITMIME\r\n250-HELP\r\n250-PIPELINING\r\n250 EHLO\r\n
10:06:51.165 5 SMTPI-011474([69.197.220.11]) inp: STARTTLS
10:06:51.165 5 SMTPI-011474([69.197.220.11]) out: 220 please start a TLS connection\r\n
10:06:51.549 4 SMTPI-011474([69.197.220.11]) TLSv1.0 security initiated
10:06:51.635 4 SMTPI-011474([69.197.220.11]) TLS-102107(AES256_SHA) connection accepted for 'ourdomain.net'
10:06:51.865 5 SMTPI-011474([69.197.220.11]) s-inp: EHLO [10.233.64.161]
10:06:51.865 5 SMTPI-011474([69.197.220.11]) s-out: 250-ourdomain.net your name is not [10.233.64.161]\r\n250-DSN\r\n250-SIZE\r\n250-AUTH LOGIN PLAIN CRAM-MD5 GSSAPI\r\n250-ETRN\r\n250-TURN\r\n250-ATRN\r\n250-NO-SOLICITING\r\n250-8BITMIME\r\n250-HELP\r\n250-PIPELINING\r\n250 EHLO\r\n
10:06:51.976 5 SMTPI-011474([69.197.220.11]) s-inp: AUTH PLAIN AGZ1ZGRsZXMAMWJpZ2RvZw==
10:06:51.976 5 SMTPI-011474([69.197.220.11]) SASL(PLAIN) ini: \000fuddles\0001bigdog\000
10:06:51.977 2 SMTPI-011474([69.197.220.11]) 'fuddles@ourdomain.net' connected(CLRTXT) [69.197.220.11]:49427->[192.168.200.100]:587(tls)
10:06:51.977 2 SMTPI-011474([69.197.220.11]) 'fuddles@ourdomain.net' disconnected ([69.197.220.11]:49427)
10:06:51.977 2 SMTPI-011474([69.197.220.11]) authenticated as fuddles@ourdomain.net
10:06:51.977 5 SMTPI-011474([69.197.220.11]) s-out: 235 fuddles@ourdomain.net relaying authenticated\r\n
10:06:52.086 5 SMTPI-011474([69.197.220.11]) s-inp: QUIT
10:06:52.086 5 SMTPI-011474([69.197.220.11]) s-out: 221 ourdomain.net CommuniGate Pro SMTP closing connection\r\n
10:06:52.086 4 SMTPI-011474([69.197.220.11]) TLS connection is closing
10:06:52.086 4 SMTPI-011474([69.197.220.11]) closing connection
10:06:52.086 4 SMTPI-011474([69.197.220.11]) releasing stream

Какие ошибки в журнале с 10: 06: 40.691 до 10: 06: 40.723?

Линия

10:06:40.691 5 SMTPI-011473([69.197.220.11]) inp: \022\003\001

был частью рукопожатия SSL.

  • Байт 0 = 022 означает тип записи SSL = 22 (SSL3_RT_HANDSHAKE)
  • Байт 1-2 = 0301 означает версию SSL = TLS1_VERSION

Видеть эта страница для справки.

Но, к сожалению, сервер на порту 587 работает не с SSL (SMTPS), а с STARTTLS. Сервер с STARTTLS ожидает, что начальное соединение будет находиться в незашифрованном канале, а затем перейдет в зашифрованный канал.

Так, на начальном IOS попыталась подключиться по SMTPS (протокол SMTP поверх SSL). Но сервер этого не понимает, поэтому выдает предупреждение Unknown command до каких-то ограничений, затем отключите клиента.

Поскольку первоначальное соединение отклонено, IOS выполняет резервное действие и подключиться снова на сервер с STARTTLS.

10:06:51.165 5 SMTPI-011474([69.197.220.11]) inp: STARTTLS

В этом случае iOS успешно подключится к серверу.

Какой адрес указан в момент 10: 06: 51.067 (10.33.64.161)?

IP-адрес 10.33.64.161 кажется IP-адресом от интернет-провайдера. Обычно клиент объявляет HELO <something> с участием <something> это IP-адрес / имя хоста компьютера / мобильного телефона

Поведение iOS

Поскольку я никогда не использовал IOS, я не могу сказать вам, какая настройка iOS вызвала такое поведение (или, может быть, это поведение iOS по умолчанию). В вашем случае предполагаемое поведение - прямое подключение через STARTSSL, минуя попытку SMTPS, поэтому она не будет отклонена и снова внесена в черный список.

В комментарии BillThor подтвердил, что указанное выше поведение является поведением по умолчанию для iOS.

IOS по умолчанию использует SSL (безопасное соединение), а затем предлагает небезопасное соединение, если это не удается. После сбоя подключения SSL пользователю предоставляется возможность небезопасного подключения. Если STARTTLS доступен, он используется. Действия, участвующие в обнаружении соединения, регистрируются сервером.

Решение

Очевидное решение - настроить почтовый сервер - CommuniGate Pro - так, чтобы он не заносил в черный список клиентов, которые ведут себя подобным образом. Такое поведение не следует рассматривать как сбой, и устройство также не должно попадать в черный список.

Обходной путь из OP

Настройки порога ошибки протокола и попадания в черный список находятся в Настройки-> Почта -> SMTP -> Получение -> Лимиты. По умолчанию Disconnect after 20 errors и Deny access for 15 minutes. Я поменял свой на Disconnect after 100 errors и Deny access for 0 seconds. Не уверен насчет 0 секунд, но он решил проблемы с первоначальной настройкой учетных записей IMAP на устройствах iOS с нашим сервером CommuniGate Pro.