Собственный почтовый сервер принимает письма для домена и даёт доступ к ящикам через почтовую программу. Разберём базовую схему для одного домена и системных пользователей Linux, с шифрованием и проверками на каждом этапе.
Настройка почтового сервера в Linux: короткий и прямой ответ
Настройка почтового сервера в Linux для одного домена обычно строится на Postfix для приёма и отправки SMTP-почты и Dovecot для чтения ящиков по IMAP. Понадобятся домен, сервер с постоянным публичным IP-адресом, корректная DNS MX-запись и TLS-сертификат. Перед изменением конфигураций сохраните их копии: ошибка в параметрах способна остановить доставку писем.
Postfix принимает письмо, проверяет, для какого домена оно предназначено, и кладёт его в локальный ящик пользователя. Dovecot предоставляет этому пользователю доступ к письмам из Thunderbird, мобильного клиента или другой программы. В этой базовой схеме адрес ivan@example.com соответствует системной учётной записи ivan на сервере. Для большого числа ящиков, нескольких доменов или веб-почты требуется отдельная архитектура с виртуальными пользователями и базой данных.
| Компонент | Назначение | Стандартный защищённый способ подключения |
|---|---|---|
| Postfix | Передача и приём SMTP-писем | SMTP с STARTTLS, порт 25 для межсерверской почты |
| Dovecot | Доступ пользователя к ящику | IMAPS, порт 993 |
| DNS | Поиск сервера для домена | MX указывает на имя mail.example.com |
| TLS-сертификат | Шифрование соединения | Сертификат для имени почтового сервера |
Не открывайте пересылку писем для всех адресов и сетей. Такая ошибка превращает машину в открытый relay: через неё начинают рассылать спам, а IP-адрес быстро получает плохую репутацию.
Почему возникает проблема или зачем нужна эта настройка
Сервер нужен, когда почта домена должна находиться под вашим контролем или когда приложения и устройства должны отправлять уведомления с адреса домена. Без правильно настроенных DNS и защиты сервер может работать локально, но не принимать письма из интернета либо попадать в спам.
DNS MX-запись — это запись DNS, по которой другие почтовые серверы находят получателя для домена. Для домена example.com обычно создают MX со значением mail.example.com, а для имени mail.example.com добавляют A-запись с публичным IPv4-адресом сервера. Имя в MX должно вести на имя хоста, а не прямо на IP-адрес. Если есть IPv6-запись AAAA, она также должна быть доступна извне и настроена на том же сервере.
Для исходящей почты важны обратная DNS-запись IP-адреса, SPF и DKIM. SPF сообщает, какие серверы имеют право отправлять письма от домена, а DKIM добавляет криптографическую подпись. Они не заменяют настройку SMTP, но получающие сервисы учитывают их при оценке письма. Обратную запись PTR обычно меняют в панели хостинг-провайдера, поэтому сначала проверьте, что она совпадает с именем сервера, например mail.example.com.
Порт 25 служит для обмена письмами между почтовыми серверами. Некоторые провайдеры и домашние сети ограничивают исходящие подключения к нему; тогда прямая отправка может не работать даже при правильной конфигурации. Проверьте это заранее у провайдера и, если нужно, используйте согласованный SMTP-релей. Для пользовательских программ применяют защищённый IMAP на порту 993; антиспам и лимиты отправки лучше добавлять только после базовой успешной проверки.
Что проверить и подготовить перед основными действиями
До установки пакетов убедитесь, что сервер доступен по полному имени mail.ваш-домен, а его системное имя соответствует этому имени. Выполните hostname -f; результат должен быть полным доменным именем, доступным в DNS. Не меняйте имя работающего сервера без плана: это может затронуть приложения и сертификаты.
Подготовьте значения, которые затем подставите вместо примеров: домен example.com, имя сервера mail.example.com, публичный IP и имя локального пользователя, например ivan. Проверьте DNS с внешнего компьютера командами dig MX example.com и dig A mail.example.com. Ответы могут обновляться не мгновенно: ориентируйтесь на TTL, заданный у регистратора или DNS-провайдера.
Сделайте резервные копии файлов до редактирования. На Debian и Ubuntu это обычно /etc/postfix/main.cf, /etc/dovecot/conf.d/10-mail.conf, /etc/dovecot/conf.d/10-ssl.conf и /etc/dovecot/conf.d/10-master.conf. Команды ниже используют sudo; выполняйте их только под учётной записью с административными правами. Секретные ключи сертификата, пароли и содержимое писем не копируйте в чаты, заметки и общедоступные репозитории.
При удалённом администрировании сначала обеспечьте проверенный доступ к консоли провайдера. Для систем Alt отдельная задача — alt linux ssh настройка: её стоит выполнить и проверить до изменения сетевых правил, чтобы не потерять вход на сервер. После этого ограничьте доступ к SSH ключами и держите открытой текущую сессию, пока не убедитесь, что новая работает.
Проверьте, что в правилах межсетевого экрана разрешены TCP-порты 25 и 993. Порт 587 потребуется только при настройке отправки из почтовых клиентов с авторизацией; в базовом варианте ниже он не включается. Для TLS нужен действующий TLS-сертификат на имя mail.example.com; самоподписанный сертификат годится лишь для краткой внутренней проверки и будет выдавать предупреждения в клиентах.
Пошаговое решение для актуальных версий системы или устройства
Для Debian и Ubuntu установите пакеты командой sudo apt update && sudo apt install postfix dovecot-imapd. В диалоге установки Postfix выберите вариант «Internet Site» и укажите основной домен. В Fedora, RHEL и совместимых системах названия пакетов обычно те же, а установка выполняется через sudo dnf install postfix dovecot; расположение конфигурации следует сверить с документацией именно вашего дистрибутива.
Откройте /etc/postfix/main.cf и задайте или исправьте параметры, заменив примерные имена на свои:
```
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 127.0.0.0/8 [::1]/128
home_mailbox = Maildir/
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem
smtpd_tls_security_level = may
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
```
Последний параметр критичен: он разрешает доставку для локальных доменов и авторизованных клиентов, затем отклоняет чужие назначения. Не добавляйте в mynetworks широкие диапазоны и не удаляйте reject_unauth_destination. Проверьте синтаксис sudo postfix check, затем примените настройки: sudo systemctl restart postfix.
В /etc/dovecot/conf.d/10-mail.conf укажите mail_location = maildir:~/Maildir. В /etc/dovecot/conf.d/10-ssl.conf задайте ssl = required, а пути ssl_cert и ssl_key направьте на fullchain.pem и privkey.pem вашего TLS-сертификата, добавив перед каждым путём символ <. В блоке service auth файла /etc/dovecot/conf.d/10-master.conf добавьте Unix-сокет для Postfix:
```
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
```
Создайте папку ящика для существующего пользователя: sudo -u ivan maildirmake.dovecot /home/ivan/Maildir. Затем выполните sudo doveconf -n для просмотра активной конфигурации без значений по умолчанию и sudo systemctl restart dovecot. Команда sudo systemctl enable --now postfix dovecot включает запуск служб после перезагрузки.

Типичные ошибки, безопасный откат и проверка результата
Сначала проверьте службы локально: systemctl status postfix dovecot должен показывать состояние active (running). Если после правки сервис не запускается, не продолжайте настройку наугад: просмотрите journalctl -u postfix -u dovecot -b, верните сохранённую копию конкретного файла и повторите проверку синтаксиса. Это безопаснее, чем удалять пакеты или всю конфигурацию.
Отправьте локальное тестовое письмо: printf 'Проверка\n' | mail -s 'Тест' ivan. Если команды mail в системе нет, установите пакет с почтовым клиентом средствами своего дистрибутива либо проверьте очередь mailq. Письмо должно появиться в /home/ivan/Maildir/new/. Отсутствие файла часто означает неверное имя пользователя, права на домашний каталог или ошибку в параметре mail_location.
Для проверки внешней стороны используйте другое подключение к интернету и почтовый клиент: сервер mail.example.com, IMAP по SSL/TLS, порт 993, логин ivan и пароль этого системного пользователя. Не отправляйте пароль в незашифрованном виде и не отключайте TLS ради обхода ошибки сертификата. Если имя сертификата не совпадает с сервером, исправьте DNS или перевыпустите сертификат для правильного имени.
После базового запуска полезно следить за доступностью служб и местом на диске: переполненный раздел остановит приём новых писем. Когда потребуется централизованный мониторинг, отдельная zabbix agent linux настройка поможет передавать состояние служб и системные метрики. Сначала задайте уведомления о переполнении диска и недоступности портов, затем уже подключайте дополнительные проверки очереди почты.
Распространённые внешние проблемы — закрытый порт 25, неверный PTR, отсутствие SPF/DKIM или репутация IP-адреса. Они не исправляются сменой случайных параметров Postfix. Сопоставляйте текст ошибки из журнала со стадией доставки: DNS, подключение, TLS, авторизация или очередь.
FAQ
Почему сервер принимает письма локально, но не получает их из интернета?
Проверьте DNS MX-запись, A- или AAAA-запись имени из MX и доступность TCP-порта 25 с внешней сети. Также убедитесь, что в mydestination указан ваш домен. Если домен не входит в локальные назначения, Postfix не будет доставлять почту для него как для собственного.
Можно ли использовать самоподписанный сертификат?
Для внутреннего теста можно, но почтовые программы будут предупреждать, что сертификату нельзя доверять. Для реальной почты установите сертификат, выданный доверенным центром, на точное имя сервера. При HTTP-01 проверке Let’s Encrypt требуется доступ к TCP-порту 80; при недоступности этого порта выбирают другой подход к подтверждению домена.
Почему письма уходят в спам или не доставляются?
Проверьте обратную PTR-запись IP, SPF, DKIM и журналы Postfix с причиной отказа. Новый IP-адрес может не иметь репутации, а часть провайдеров ограничивает порт 25. Не пытайтесь увеличить объём отправки до устранения причины: это ухудшает репутацию адреса.
Когда лучше обратиться к специалисту?
Помощь нужна при обслуживании нескольких доменов, миграции действующих ящиков, настройке виртуальных пользователей, DKIM или антиспам-системы. Также не меняйте DNS и сетевой экран без резервного доступа к серверу, если на нём уже работает корпоративная почта. Специалист поможет спланировать изменения так, чтобы не потерять письма и доступ пользователей.
