Phoenix Mailдокументация

Порты и сеть

Все порты, которые слушает узел, зачем они нужны и что открывать наружу. Всё, что помечено «только локально», наружу выпускать не нужно.

Наружу

ПортСлужбаЗачем
25/tcpPostfixприём почты от других серверов. Обязателен, закрывать нельзя
587/tcpPostfixотправка из клиентов, STARTTLS, требует авторизации
465/tcpPostfixотправка из клиентов сразу по TLS
143/tcpDovecotIMAP, при авторизации переводится на TLS
993/tcpDovecotIMAP сразу по TLS — то, что указывают в клиентах
4190/tcpDovecotManageSieve: фильтры и автоответы из клиента
80/tcpCaddyвыпуск сертификата и редирект на https
443/tcpCaddyпанель, веб-почта, календари
POP3 нет Порты 110 и 995 не используются: письма хранятся на сервере, клиенты работают по IMAP.

Только локально

ПортЧтоЗачем
8780mailpanelпанель, наружу её публикует Caddy по https
8891OpenDKIMmilter, подпись писем
11332rspamdmilter, проверка спама

Открыть порты в файрволе

# nftables (Debian 13)
nft add rule inet filter input tcp dport { 25, 80, 443, 465, 587, 993, 143, 4190 } accept

# ufw (Ubuntu)
ufw allow 25,80,443,465,587,993,143,4190/tcp

Провайдерский файрвол

У большинства хостеров есть свой сетевой экран в панели. Открыть порты нужно и там, иначе пакеты не дойдут до сервера. Порт 25 часто закрыт по умолчанию — это первое, что просят открыть.

Проверка снаружи

nc -vz mail.example.ru 25
nc -vz mail.example.ru 993
nc -vz mail.example.ru 443
openssl s_client -connect mail.example.ru:993 -servername mail.example.ru </dev/null 2>/dev/null | openssl x509 -noout -subject -dates

Последняя команда показывает, какой сертификат отдаёт IMAP и до какой даты он годен.

Что видно снаружи

Наружу торчат только почтовые порты и веб. База, панель и милтеры слушают 127.0.0.1: снаружи к ним не подключиться даже зная порт.