Трендовые github проекты в нашем телеграм канале. Подпишись → Собираем почту для локальных пользователей Linux
Свой почтовый сервер требует больше внимания, чем установка пары пакетов. Почта проходит через DNS, TLS, аутентификацию, ограничения SMTP и репутационные проверки принимающих сторон. Связка Postfix и Dovecot закрывает транспорт и доступ клиентов к ящикам; OpenDKIM и OpenDMARC добавляют проверку доменной подписи и политики.
Ниже — рабочая карта настройки для Arch Linux. Она подходит для сервера с публичным IP-адресом и собственным доменом, где каждому локальному пользователю ОС соответствует почтовый ящик в домашнем каталоге.
Что подготовить до установки пакетов
Для внешней почты нужны домен, публичный IP и управление DNS-записями. Обратная DNS-запись (PTR) должна возвращать имя, указывающее на этот IP: получающие серверы используют её как один из сигналов при оценке отправителя. Проверить запись можно командой:
dig -x 203.0.113.10
PTR обычно настраивается в панели провайдера или через его поддержку. Также заранее стоит получить сертификат. Certbot ставится обычным способом:
pacman -S certbot
certbot -d mail.example.org
Метод выпуска сертификата зависит от доступного веб-сервера и DNS. Важно, чтобы пути к fullchain.pem и privkey.pem были известны всем сервисам, которым требуется TLS.
До отправки писем на реальные адреса полезно проверить сервер через тестовый ящик и сервисы диагностики. Ошибки в DNS или SMTP-конфигурации легко приводят к плохой репутации IP и попаданию сообщений в спам.
Dovecot: ящики и IMAP-доступ
Dovecot обслуживает доступ почтовых клиентов к ящикам и может предоставить Postfix сокет для SMTP-аутентификации. Для установки достаточно:
pacman -S dovecot
Для модели с системными пользователями почта хранится в ~/Maildir, драйвер — maildir, а namespace inbox помечает стандартные папки. В конфигурации задают Drafts, Junk, Trash, Sent и при необходимости Sent Messages с соответствующими флагами special_use.
Проверка активных настроек удобна в формате без комментариев:
doveconf -n mail_path mail_driver namespace inbox
Аутентификация может опираться на системные учётные записи через userdb с драйвером passwd и passdb с драйвером pam. В таком случае логин пользователя становится локальной частью адреса, а пароль проверяется средствами ОС. Новый ящик появляется вместе с пользователем:
useradd alice -m
passwd alice
Сервису потребуется доступ к группе mail:
usermod -aG mail dovecot
Для TLS в Dovecot включают SSL и указывают сертификат, ключ и файл параметров Диффи—Хеллмана. Пути могут выглядеть так:
ssl = yes
ssl_server_cert_file = /etc/letsencrypt/live/mail.example.org/fullchain.pem
ssl_server_key_file = /etc/letsencrypt/live/mail.example.org/privkey.pem
ssl_server_dh_file = /etc/dovecot/dh.pem
Ключевая часть интеграции с Postfix — Unix-сокет /var/spool/postfix/private/auth. Его владельцем и группой задают postfix, а режим доступа должен позволять SMTP-сервису обратиться к Dovecot. После проверки конфигурации сервис включают при загрузке:
systemctl enable --now dovecot.service
Postfix: домен, TLS и отправка клиентами
Postfix устанавливается пакетом:
pacman -S postfix
Базовые параметры связывают myhostname, mydomain, myorigin и mydestination. В mydestination обычно перечисляют имя хоста, localhost и обслуживаемый домен. Хранилище локальной почты указывается через home_mailbox = Maildir/.
Входящий SMTP должен использовать сертификат, а аутентификация — требовать TLS. Основные параметры имеют такой смысл:
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.org/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.org/privkey.pem
smtpd_tls_auth_only = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
Для исходящих соединений достаточно разрешить TLS:
smtp_tls_security_level = may
Релей открывают только доверенным сетям и пользователям, успешно прошедшим SMTP-аутентификацию. Это защищает сервер от использования в качестве открытого ретранслятора:
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
Порт submission предназначен для почтовых клиентов. В master.cf для него включают обязательное шифрование, SASL-аутентификацию и ограничение получателей аутентифицированным пользователем. Клиент Thunderbird может подключаться к нему на порту 587 с STARTTLS, обычным паролем и логином системного пользователя. Для входящей почты используется IMAP на порту 993 с SSL/TLS.
После настройки Postfix запускают вместе с системой:
systemctl enable --now postfix.service
Активную конфигурацию обоих сервисов полезно сохранять перед обновлениями. Форматы конфигов меняются, а резервная копия помогает быстро вернуть рабочее состояние и спокойно разобрать несовместимость.
DNS и криптографическая репутация домена
Открытый SMTP без корректных DNS-записей редко доставляет почту стабильно. Минимальный набор начинается с MX-записи для домена и SPF TXT-записи, где перечислены допустимые источники отправки. Пример проверки TXT-записей:
drill -Q example.org TXT
drill -Q mail.example.org TXT
DKIM добавляет подпись исходящим сообщениям. Установите OpenDKIM:
pacman -S opendkim
В конфигурации задают домен, селектор, путь к закрытому ключу и локальный сокет, например inet:8891@localhost. Пару ключей создают командой:
opendkim-genkey --restrict --selector mail --domain example.org --directory /etc/opendkim
Содержимое созданного TXT-файла публикуют в DNS для mail._domainkey.example.org. Postfix подключает OpenDKIM как milter через smtpd_milters и non_smtpd_milters.
DMARC задаёт политику обработки писем, которые не проходят SPF или DKIM, и адреса для отчётов. OpenDMARC устанавливается отдельным пакетом:
pacman -S opendmarc
Его локальный сокет, например inet:8893@localhost, добавляют в список milter-ов Postfix. В DNS публикуют TXT-запись _dmarc.example.org с политикой и адресом rua. Политику стоит усиливать постепенно: сначала собирать отчёты, затем выбирать режим quarantine или reject после проверки легитимных потоков.
Контрольный список перед эксплуатацией
Перед постоянным использованием проверьте, что сертификаты доступны Dovecot и Postfix, PTR соответствует имени сервера, а DNS уже отдаёт MX, SPF, DKIM и DMARC. Убедитесь, что SMTP submission требует TLS и аутентификацию, а smtpd_relay_restrictions исключает открытый relay.
Отправьте тестовые сообщения и проверьте заголовки: в них должны появиться результаты SPF, DKIM и DMARC. Дополнительно проверьте доступность TLS на SMTP:
openssl s_client -connect mail.example.org:25 -starttls smtp
Почтовый сервер становится предсказуемым, когда конфигурация, DNS и диагностика рассматриваются как единая система. Регулярные резервные копии конфигов и проверка после изменений сохранят доставляемость и доступ к ящикам.