Какие порты и для чего использует почтовый сервер. Ликбез

  • Автор:

mail-server-network-ports-000.pngС одной стороны, ответ на поставленный в заголовке вопрос прост и очевиден, список "почтовых" портов знают все. Но когда доходит дела, в частности настройки брандмауэра и проброса портов, то вопросов меньше не становится, а ровно наоборот. Какие порты следует открыть наружу? Какие нет? Какие нужны для работы почтовых клиентов? И т.д. и т.п. Чтобы каждый раз не отвечать на подобные вопросы мы решили сделать краткую статью ликбез, где рассмотрим типовой современный почтовый сервер и его сетевое взаимодействие с клиентами и внешним миром.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Современный почтовый сервер - сложная система, состоящая из множества компонентов, работающих между собой на сетевом уровне с использованием различных протоколов. И представления: SMTP - 25 порт, POP3 - 110, IMAP - 143 - сегодня явно недостаточно. К тому же широкое применение веб-интерфейсов и защищенных протоколов вносит дополнительную путаницу. Поэтому давайте разбираться.

Ниже показана условная схема типового почтового сервера, данный набор компонент так или иначе присутствует у любого из них, разница, может быть, в незначительных мелочах, поэтому мы не будем касаться конкретных реализаций, а рассмотрим работу почтовой системы в целом.

mail-server-network-ports-001.pngНачнем с основной функции почтового сервера - отправки и получения почты, за это отвечает Message transfer agent (MTA) - агент передачи сообщений, по сути, это и есть почтовый сервер. Он работает по протоколу SMTP и обеспечивает взаимодействие с другими MTA, получая или отправляя почту, а сам процесс обмена почтой между серверами называется ретрансляцией.

Протокол SMTP - это старый и очень простой протокол, в котором отсутствуют многие возможности без которых работа сегодня немыслима, поэтому сегодня практически везде используется его расширенная версия ESMTP (Extended Simple Mail Transfer Protocol), но очень часто название протокола, даже в технической литературе, продолжает указываться как SMTP.

Протокол SMTP использует для работы порт 25 TCP и изменить это значение нельзя, точнее, вы можете это сделать, но после этого вас не смогут найти другие почтовые сервера, которые решат доставить вам почту. Также это единственный порт, который обязательно должен быть доступен из внешней сети.

Современные коммуникации нельзя представить без шифрования и SMTP не исключение. Первоначально развитие многих протоколов шло по пути создания защищенной при помощи SSL/TLS версии и назначения для нее отдельного порта. Поэтому в свое время появился защищённый протокол SMTPS (SMTP over SSL) работавший на порту 465 TCP.

Однако такой подход, по многим причинам, не принес желаемого результата и для протокола SMTP было разработано расширение STARTTLS, которое является основным способом защиты почтового соединения. Так как STARTTLS всего лишь расширение, то MTA начинают сессию как обычную SMTP, а только потом начинают договариваться о шифровании и согласовывать криптоалгоритмы. Всегда используется самый стойкий алгоритм из доступных обеим сторонам, если же договориться не получилось, то обмен почтой происходит в открытом виде.

Все это взаимодействие происходит через один-единственный порт - 25, как для зашифрованной, так и незашифрованной почты.

Протокол SMTPS и порт 465 TCP уже много лет признаны устаревшими и использовать их не следует!

В настоящий момент принято соглашение, что порт 25 используется только для ретрансляции почты, т.е. взаимодействия между серверами, клиентам использовать этот порт не следует. Для взаимодейтсвия с клиентами была создана новая служба Message submission agent (MSA) - агент отправки почты, который обычно является частью MTA, но использует собственный порт 587 TCP. Именно этот порт следует указывать как порт отправки почты в почтовых клиентах. Он также поддерживает аутентификацию и TLS-шифрование.

Более того, вынесение обслуживания клиентов в отдельную службу позволяет более тонко настроить безопасность, например, запретив незащищенные подключения, что не позволит пользователю настроить почтовый клиент неправильно. При разделении функций MTA и MSA наилучшей практикой будет открытие 25 порта только во внешнюю сеть, а 587 во внутреннюю.

Необходимость доступа к 587 порту извне обусловлена необходимостью подключения клиентов, если такие есть, то порт также должен быть доступен снаружи. Также не забываем, что многие провайдеры блокируют исходящие соединения на 25 порт из "домашних" сетей, к которым подключены преимущественно частные пользователи, при этом 587 остается доступен.

С отправкой почты выяснили, теперь перейдем к ее получению. Под получением почты в данном контексте мы подразумеваем не получение сообщений сервером, а доступ клиента к своему почтовому ящику на сервере, для этих целей предназначен Message delivery agent (MDA) - агент доставки сообщений.

Традиционно для доступа к почте используется два протокола POP3 и IMAP. Протокол POP3 (Post Office Protocol Version 3) более примитивен и работает по принципу "загрузи и удали", хотя поддерживает возможность оставлять письма на сервере. Широко использовался в прошлом, когда доступ к интернет был лимитирован, что позволяло скачать все новые сообщения и работать с ними локально.

Ему на смену пришел протокол IMAP (Internet Message Access Protocol), который позволяет работать с почтовым ящиком клиента на сервере как с локальным, не перемещая все его содержимое на компьютер пользователя, загрузка сообщения производится по требованию клиента, например, когда он решил прочитать сообщение. Все современные реализации почтовых клиентов по умолчанию используют IMAP.

Данные протоколы имеют свои защищенные версии: POP3S и IMAPS и используют двойной набор портов для защищенной и незащищенной версии. Так для POP3 это пара 110 / 995 TCP, для IMAP - 143 / 993 TCP. Большинство современных решений почтовых серверов позволяют делать прозрачное перенаправление с незащищенных портов на защищенные и даже указав в настройках 110 или 143 порт клиент все равно будет использовать шифрование. Если это не так, то доступ к незащищенным портам следует ограничить. Доступ из внешней сети также обусловлен наличием там клиентов, если они есть - порты должны быть доступны. Если у вас настроен редирект, то следует открывать наружу оба порта, что облегчит настройку почтовых клиентов.

В современных реалиях для доступа к почте достаточно протокола IMAP и если нет каких-то особых требований POP3 можно просто отключить.

Еще одной особенностью современной почты является широкое применение веб-интерфейсов для доступа к содержимому почтового ящика. По факту веб-клиент является разновидностью Mail User Agent (MUA) - обычного почтового клиента, только расположен он не на компьютере пользователя, а на сервере. Поэтому его внутреннее взаимодействие с компонентами почтового сервера нас особо не волнует, гораздо важнее способы доступа к нему.

Сегодня для этого используется защищённый протокол HTTPS - 443 TCP, но несмотря на это обязательно поддерживается доступ по HTTP - 80 TCP, все соединения с которого прозрачно перенаправляются на 443 порт. Это сделано как для совместимости, так и для удобства пользователей, потому что если мы наберем в адресной строке браузера просто адрес, без указания протокола, то соединение будет установлено через HTTP.

Поэтому оба порта должны быть доступны для клиентов и именно веб-интерфейс чаще всего открывается для доступа из внешних сетей.

Отдельного разговора заслуживает популярная ныне служба получение бесплатных сертификатов Let's Encrypt, для ее нормальной работы обязательно требуется доступ из внешней сети к серверу по протоколу HTTP, и не смотря на то, что Certbot умеет нормально работать по HTTPS, для нормальной работы службы порт 80 обязательно должен быть доступен, а в зависимости от настроек веб-сервера также может потребоваться 443. Поэтому при использовании Let's Encrypt обязательно откройте доступ к портам 80 и 443 из внешней сети.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments