RE:NODE

Приложения13 мин чтения

Настройка почтового клиента: параметры IMAP и SMTP, которые работают

Thunderbird, Outlook, iPhone и Android на собственном почтовом сервере: правильные порты и режимы TLS, имена пользователей и autoconfig, чтобы клиенты находили всё сами.

0 прочтений

Любому почтовому клиенту нужны одни и те же шесть сведений: имя сервера входящей почты, его порт, режим шифрования, имя сервера исходящей почты, его порт и режим шифрования, а также имя пользователя и пароль. Для современного сервера это значит IMAP на порту 993 с TLS с первого байта и отправка через SMTP submission на 465 (TLS с первого байта) или 587 (обычное соединение, которое повышается командой STARTTLS), с входом под логином почтового ящика. Укажите эти шесть параметров правильно - и Thunderbird, Outlook, Apple Mail и любой клиент на Android заработают. Ошибитесь с режимом шифрования для порта - это самая распространённая ошибка - и клиент либо зависнет, либо выдаст ошибку сертификата или протокола, из которой ничего полезного не узнать.

В этой статье - сами параметры, четыре клиента, которыми пользуется большинство, как заставить клиенты находить настройки самостоятельно с помощью autoconfig и autodiscover, и ошибки, которые встретятся вам по пути.

Параметры, которые спрашивает любой клиент#

Доступ к почте - это две отдельные задачи. Чтение идёт по IMAP (или по более старому POP3, или по более новому JMAP), и клиент общается с сервером почтового ящика. Отправка идёт через SMTP submission: клиент передаёт письмо своему же серверу, а тот доставляет его серверу получателя через порт 25. Сам клиент никогда не отправляет на порт 25, и почти любая домашняя или мобильная сеть заблокировала бы такую попытку.

ЗадачаПротоколПортШифрованиеПримечания
Чтение почтыIMAP993Неявный TLSВыбор по умолчанию
Чтение почтыIMAP143STARTTLSТот же протокол, шифрование включается после подключения
Чтение почтыPOP3995Неявный TLSСкачивает письма и обычно удаляет их с сервера
Отправка почтыSubmission465Неявный TLSРекомендован RFC 8314
Отправка почтыSubmission587STARTTLSНичем не хуже, и его чаще помнят
Между серверамиSMTP25Оппортунистический STARTTLSНе для клиентов

Два термина путают людей, потому что клиенты называют их непоследовательно. Неявный TLS означает, что зашифрованный сеанс начинается сразу при подключении; клиенты называют это «SSL/TLS», «SSL» или просто «TLS». STARTTLS означает, что соединение начинается открытым текстом и повышается до шифрованного до отправки пароля; клиенты называют это «STARTTLS» или, что сбивает с толку, тоже «TLS». Порты 993 и 465 - неявные. Порты 143 и 587 - STARTTLS. Выберите «SSL/TLS» на 587 - и клиент будет ждать TLS-рукопожатия, которое сервер никогда не начнёт; выберите STARTTLS на 465 - и сервер будет ждать TLS-рукопожатия, которое клиент никогда не отправит. В обоих случаях это выглядит как тайм-аут.

Выбирайте IMAP, а не POP3, если у вас нет особой причины. IMAP хранит почту на сервере и синхронизирует папки, отметки о прочтении и отправленные письма на всех устройствах. POP3 был задуман для одного компьютера, который скачивает почту и удаляет её с сервера, а это ровно то, что не нужно человеку с телефоном и ноутбуком. В статье IMAP, POP3 и JMAP все три протокола сравниваются как следует, в том числе почему JMAP на бумаге лучше, а в клиентах всё ещё встречается редко.

Остальные поля:

  • Имя пользователя. То, что сервер использует как логин. На большинстве самостоятельно размещённых серверов это полный адрес (anna@example.com), но может быть и просто имя учётной записи. Используйте то, с чем создавался почтовый ящик.
  • Пароль. Пароль почтового ящика. Если у учётной записи включена двухфакторная аутентификация, для IMAP и SMTP обычно нужен пароль приложения, потому что ни один из этих протоколов не умеет запрашивать код.
  • Способ аутентификации. «Обычный пароль» (Thunderbird) или «Пароль» (Outlook) - правильный выбор поверх TLS: пароль защищён зашифрованным соединением. Варианты с «зашифрованным паролем» - это старые схемы «запрос - ответ», которые многие серверы не поддерживают, и если выбрать ту, которой у сервера нет, аутентификация провалится даже с правильным паролем.
  • Аутентификация для исходящей почты. Всегда включена, с теми же учётными данными. Сервер отправки, принимающий почту без аутентификации, - это открытый релей, а правильно настроенный отклонит вас с ошибкой «relay access denied».

Имена хостов и сертификаты#

Каждый клиент проверяет, что TLS-сертификат, который предъявляет сервер, выпущен на то имя хоста, которое вы ввели. Введите 203.0.113.25 или server42.somehost.net, когда в сертификате указано mail.example.com, - и получите предупреждение. Если нажать «продолжить», всё заработает, но заодно каждый человек в организации научится пропускать предупреждения о сертификатах, а именно на эту привычку рассчитывает злоумышленник в гостиничном wifi.

Аккуратная настройка - одно имя для всего, обычно mail.example.com:

  1. Создайте запись A для mail.example.com, указывающую на адрес почтового сервера. Если это для вас ново, типы записей разобраны в статье DNS-записи простыми словами.
  2. Убедитесь, что сертификат сервера покрывает это имя. Stalwart умеет получать и продлевать сертификаты через ACME (Let's Encrypt и аналоги), так что это вопрос настройки, а не покупки.
  3. Указывайте mail.example.com как сервер входящей и исходящей почты во всех клиентах.

Запись MX домена должна указывать на то же имя. Это не обязательно, но одно имя хоста для приёма, чтения и отправки означает один сертификат и одну вещь, которую нужно объяснить пользователям. Приоритеты и резервные MX, если у вас больше одного сервера, описаны в статье MX-записи простыми словами.

Thunderbird#

У Thunderbird лучшая автоматическая настройка среди всех клиентов и самый прозрачный ручной режим.

  1. Откройте Account Settings, затем Account Actions, затем Add Mail Account.
  2. Введите своё имя, адрес и пароль и нажмите Continue.
  3. Thunderbird ищет настройки (порядок поиска описан ниже, в разделе про autoconfig). Если находит, показывает IMAP и SMTP с именами хостов и портами. Проверьте их и нажмите Done.
  4. Если он ничего не нашёл или угадал неправильно, выберите Configure manually и заполните поля по таблице выше: IMAP, mail.example.com, 993, SSL/TLS, Normal password; SMTP, mail.example.com, 465, SSL/TLS, Normal password. Перед сохранением нажмите Re-test, чтобы убедиться, что всё работает.

Догадки Thunderbird разумны, но не всегда верны. Если он выбрал STARTTLS на 143, хотя сервер предлагает и 993, работать будет и так, но переключение на 993 с SSL/TLS убирает одну движущуюся деталь.

После этого стоит проверить две настройки в разделе Copies and Folders учётной записи: где хранятся отправленные письма (это должна быть папка Sent на сервере, а не локальная папка, тогда отправленное появится и на телефоне) и сохраняются ли черновики на сервере. Thunderbird для Android - клиент, который раньше назывался K-9 Mail, - использует ту же логику настройки и те же запросы autoconfig.

Outlook#

Outlook для Windows существует в двух заметно разных версиях, и для собственного почтового сервера эта разница важна.

Классический Outlook (настольное приложение Microsoft 365) общается с вашим сервером напрямую. Выберите File, Add Account, введите адрес, откройте Advanced options, отметьте «Let me set up my account manually» и выберите IMAP. Укажите сервер входящей и исходящей почты, порт и способ шифрования по таблице. Outlook называет неявный TLS «SSL/TLS», а режим с повышением - «STARTTLS»; в старых сборках был вариант «Auto», которого лучше избегать, потому что он скрывает, что именно выбрано.

Новый Outlook для Windows и Outlook в браузере работают с учётными записями IMAP не от Microsoft, синхронизируя их через облако Microsoft. Ваш сервер видит подключения с адресов Microsoft, а не с компьютера пользователя, и копия почтового ящика хранится у Microsoft. Для многих это приемлемо. Для организации, которая держит собственный почтовый сервер именно затем, чтобы почта оставалась на её оборудовании, это лишает затею смысла, и об этом стоит сказать одну фразу в инструкции для пользователей.

У Outlook для macOS, iOS и Android свой порядок добавления учётной записи, и для учётных записей IMAP он тоже использовал службу синхронизации Microsoft. Если для вас это важно, проверьте текущее поведение в документации Microsoft, потому что от версии к версии оно менялось.

Типичные ошибки Outlook сводятся к таблице: «The server does not support the specified connection encryption type» - это несоответствие порта и режима, а повторяющийся запрос пароля почти всегда означает неверный формат имени пользователя.

iPhone, iPad и Mac#

Apple Mail не использует autoconfig в стиле Thunderbird. Он пытается угадать настройки по адресу, а если не может - спрашивает.

На iPhone или iPad: откройте Settings, перейдите в Mail (в iOS 18 и новее - в разделе Apps), затем Mail Accounts, Add Account, Other, Add Mail Account. Введите имя, адрес, пароль и описание и нажмите Next. Выберите IMAP и заполните Incoming Mail Server и Outgoing Mail Server: имя хоста, имя пользователя и пароль. iOS пробует TLS на стандартных портах и сохраняет учётную запись, если попытка удалась.

Если сервер использует нестандартные порты, первая проверка в iOS не пройдёт. Всё равно сохраните учётную запись, а затем отредактируйте её: порт входящей почты находится в разделе Advanced учётной записи, а порт исходящей - в записи SMTP-сервера внутри учётной записи. Включите «Use SSL», укажите порт и выберите аутентификацию Password.

На Mac путь такой: Mail, Add Account, Other Mail Account, с теми же полями. Если устройств больше нескольких, Apple поддерживает профили конфигурации (файлы .mobileconfig), содержащие полное описание учётной записи; их создаёт Apple Configurator, а пользователи устанавливают их одним касанием. Это аналог autoconfig у Apple, и для команды это правильный инструмент.

Android: приложение Gmail, Samsung Email, Thunderbird#

Единого почтового клиента на Android нет. Чаще всего вам встретятся три:

  • Приложение Gmail. Добавьте ещё одну учётную запись, выберите Other, введите адрес, выберите Personal (IMAP), затем пароль, затем настройки серверов входящей и исходящей почты. Для учётных записей IMAP приложение Gmail подключается к вашему серверу напрямую.
  • Samsung Email. Добавьте учётную запись, введите адрес и пароль, выберите ручную настройку и IMAP, затем данные сервера. Названия типов защиты в нём отличаются от версии к версии, поэтому смотрите на порт, который он подставляет рядом с выбором, и проверяйте, что пара совпадает с таблицей выше.
  • Thunderbird для Android. Использует те же запросы autoconfig, что и настольный Thunderbird, так что домен с настроенным autoconfig настраивается сам.

Каким бы клиентом ни пользовались люди, push-уведомления о почте на Android зависят от IMAP IDLE: клиент держит соединение открытым, а сервер сообщает ему о новых письмах. На некоторых телефонах оптимизация батареи разрывает эти соединения, и тогда почта приходит, только когда открываешь приложение. Это настройка телефона, а не проблема сервера.

Autoconfig и autodiscover: пусть клиенты находят настройки сами#

Ввод шести параметров на каждом устройстве - вот куда уходит время поддержки. Два соглашения позволяют клиентам настраиваться по одному только адресу.

Autoconfig - формат Mozilla, который используют Thunderbird, Thunderbird для Android и некоторые другие клиенты. Получив anna@example.com, Thunderbird ищет примерно в таком порядке: конфигурация, встроенная в клиент, https://autoconfig.example.com/mail/config-v1.1.xml, https://example.com/.well-known/autoconfig/mail/config-v1.1.xml, публичная база провайдеров Mozilla, запись в этой базе для домена, на который указывает ваш MX, и, наконец, перебор распространённых имён хостов и портов. Если опубликовать файл, удачным окажется первый же полезный запрос:

mail/config-v1.1.xml
<?xml version="1.0" encoding="UTF-8"?><clientConfig version="1.1">  <emailProvider id="example.com">    <domain>example.com</domain>    <displayName>Example mail</displayName>    <incomingServer type="imap">      <hostname>mail.example.com</hostname>      <port>993</port>      <socketType>SSL</socketType>      <authentication>password-cleartext</authentication>      <username>%EMAILADDRESS%</username>    </incomingServer>    <outgoingServer type="smtp">      <hostname>mail.example.com</hostname>      <port>465</port>      <socketType>SSL</socketType>      <authentication>password-cleartext</authentication>      <username>%EMAILADDRESS%</username>    </outgoingServer>  </emailProvider></clientConfig>

socketType равен SSL для неявного TLS и STARTTLS для режима с повышением. password-cleartext звучит тревожно, а означает «отправлять пароль внутри TLS-сеанса», и это правильно. %EMAILADDRESS% заменяется тем, что ввёл пользователь; используйте %EMAILLOCALPART%, если логины у вас - просто имена учётных записей.

Autodiscover - аналог от Microsoft, который использует классический Outlook. Клиент отправляет запрос на https://autodiscover.example.com/autodiscover/autodiscover.xml (и ещё по нескольким адресам, включая https://example.com/autodiscover/autodiscover.xml и запись SRV по имени _autodiscover._tcp.example.com) и ждёт XML-ответа с описанием серверов IMAP и SMTP. В отличие от autoconfig это POST-запрос, поэтому статический файл на обычном веб-сервере на него не ответит - отвечать на запрос должно что-то живое.

Stalwart может сам обслуживать оба вида запросов, если клиент может достучаться до него по HTTPS по этим именам. Если это неудобно, файл autoconfig статический и может лежать на любом веб-хостинге с действительным сертификатом - для этого хватит небольшого сайта на тарифе веб-хостинга, у которого слот прокси направлен на autoconfig.example.com.

Есть и вариант только на DNS - записи SRV по RFC 6186, которые прямо называют серверы IMAP и отправки:

SRV records for example.com
_imaps._tcp.example.com.       3600 IN SRV 0 1 993 mail.example.com._submissions._tcp.example.com. 3600 IN SRV 0 1 465 mail.example.com._submission._tcp.example.com.  3600 IN SRV 0 1 587 mail.example.com.

На них полагаются немногие клиенты, так что считайте их дешёвым дополнением, а не заменой autoconfig.

Почтовый сервер на RE:NODE#

Линейка Mail Server работает на Stalwart, который говорит на SMTP, IMAP и JMAP и имеет веб-админку, где вы создаёте домены и почтовые ящики. Клиенты подключаются к адресу сервера и к портам, выделенным тарифу - у каждого тарифа Mail их пять, - поэтому берите адрес и номера портов из панели, а не рассчитывайте на стандартные из таблицы выше. Если номер порта отличается от стандартного, укажите в клиенте именно его и оставьте режим шифрования, который соответствует слушателю (неявный TLS или STARTTLS); и файл autoconfig, и записи SRV принимают любой порт.

Порт 25 - отдельная история. Он нужен, чтобы принимать почту от других серверов в интернете, контейнер не может открыть его сам, и поддержка по запросу перенаправляет его на ваш сервер (один почтовый сервер на адрес). К клиентам это отношения не имеет: они всегда используют IMAP и submission и никогда - 25. Точно так же DNS-записи, благодаря которым домен работает для внешнего мира - MX, SPF, DKIM, DMARC, - вы добавляете сами у своего DNS-провайдера. В пошаговой настройке Stalwart описано, как создать домен, почтовые ящики и ключ DKIM в веб-админке до того, как настраивать какой-либо клиент.

Решение проблем с подключением клиентов#

Клиент уходит в тайм-аут. Неверный порт, неверный режим шифрования для порта или сеть, которая блокирует порт. Проверьте из командной строки - так клиент выпадает из уравнения:

bash
$ openssl s_client -connect mail.example.com:993 -servername mail.example.com$ openssl s_client -connect mail.example.com:587 -starttls smtp$ openssl s_client -connect mail.example.com:465 -servername mail.example.com

Подключение, которое выводит цепочку сертификатов, а затем приветствие сервера (* OK для IMAP, 220 для SMTP), доказывает, что порт и режим TLS работают. Если на 993 всё зависает, а на 143 с -starttls imap работает, вы узнали, какой режим на самом деле использует слушатель.

Предупреждение о сертификате. Среди имён в сертификате нет хоста, который вы ввели. Вывод openssl выше показывает subject и альтернативные имена; сравните их с полем сервера в клиенте.

Пароль отклонён, хотя он точно правильный. Формат имени пользователя (полный адрес или имя учётной записи), способ аутентификации, которого нет у сервера, или двухфакторная аутентификация, требующая пароля приложения. Повторные неудачи могут ещё и включить на сервере защиту от перебора, после чего какое-то время не проходит даже правильный пароль.

Приём работает, отправка падает с «relay access denied». В клиенте выключена аутентификация для исходящей почты. Включите её и используйте те же учётные данные, что и для входящей.

Отправка работает, а извне ничего не приходит. Это не проблема клиента. Дело в записи MX, в том, доходит ли порт 25 до сервера, или в том, что почту отправителя отклоняют как спам - последний случай со стороны отправителя разобран в статье почему письма попадают в спам.

Отправленные письма появляются в Sent дважды или не появляются вовсе. Клиент сохраняет копию каждого отправленного письма в папку Sent на сервере по IMAP. Если клиент направлен в локальную папку, на других устройствах отправленного не будет; если у двух клиентов привязки специальных папок указывают на разные папки, вы получите Sent и Sent Items рядом. Привяжите все клиенты к одной и той же папке на сервере.

FAQ#

Какой порт использовать для отправки - 465 или 587?

Любой. 465 использует TLS с первого байта, и RFC 8314 рекомендует его для отправки; 587 со STARTTLS так же безопасен, если клиент требует повышения. Выберите один, подберите к нему режим шифрования и используйте один и тот же выбор во всех клиентах, чтобы у вопросов в поддержку был один ответ.

Почему телефон получает новую почту, только когда я открываю приложение?

Телефон закрывает долгоживущее IMAP-соединение клиента, чтобы сэкономить батарею, и сервер не может сообщить ему о новых письмах. Исключите почтовое приложение из оптимизации батареи или смиритесь с периодической проверкой. Сервер ведёт себя нормально.

Можно ли использовать POP3 вместо IMAP?

Можно, если сервер его предлагает, но, скорее всего, не стоит. POP3 скачивает почту на одно устройство и обычно удаляет её с сервера, так что второе устройство ничего не видит. IMAP хранит на сервере одну копию, общую для всех устройств, а это то, чего на самом деле хотят почти все.

Нужен ли autoconfig, если у меня всего пять пользователей?

Нет. Пятерых человек можно настроить вручную за полдня. Autoconfig начинает окупаться, когда пользователи сами настраивают свои устройства или когда телефоны меняются каждый год, а настроек никто не помнит. Это один статический файл, так что добавить его позже дёшево.

Безопасно ли читать рабочую почту через новый Outlook?

Работать будет, но почта синхронизируется через облако Microsoft, а не забирается напрямую с вашего сервера. Приемлемо ли это, зависит от того, зачем вы держите собственный сервер. Если причина в том, чтобы почта оставалась на вашем оборудовании, направьте пользователей к клиенту, который подключается напрямую, например к Thunderbird или классическому Outlook.


Комментарии

Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000