Введение: зачем нужен собственный почтовый сервер и что мы будем настраивать
Собственный почтовый сервер дает полный контроль над перепиской, конфиденциальностью и кастомизацией. Вы не зависите от тарифов сторонних провайдеров, можете создавать неограниченное число ящиков и управлять каждым аспектом доставки. Для DevOps-инженера или системного администратора это еще и способ глубже понять механику SMTP, IMAP и POP3.
В этом руководстве мы развернем рабочий почтовый сервер на Ubuntu 22.04 LTS. В состав войдут Postfix для отправки почты, Dovecot для приема по IMAP и POP3, OpenDKIM для подписи писем, а также записи SPF и DMARC. Пройдем весь путь: подготовка VPS и DNS, установка пакетов, настройка безопасности, создание ящиков и отправка первого тестового письма.
Принципы конфигурации применимы к Debian и другим дистрибутивам на базе systemd. Команды и пути файлов могут отличаться, но логика настройки сохраняется. Если вы планируете контейнеризировать почтовый сервер, после базовой настройки изучите руководство по развертыванию в Docker и Kubernetes.
Основные этапы: подготовка окружения, установка и настройка Postfix, настройка Dovecot, создание почтовых ящиков, настройка DKIM/SPF/DMARC, тестирование и диагностика.
Подготовка окружения: выбор VPS, настройка DNS и установка необходимых пакетов
Для почтового сервера нужен VPS со статическим IPv4-адресом. Минимальные требования: 1 ГБ RAM, 10 ГБ дискового пространства, Ubuntu 22.04 LTS. Важно, чтобы провайдер разрешал отправку почты с порта 25 и предоставлял возможность настройки PTR-записи. Некоторые облачные провайдеры блокируют исходящий порт 25 для новых аккаунтов, поэтому проверьте это до начала настройки. Для размещения почтового сервера подойдет Timeweb Cloud: VDS/VPS с гибким изменением ресурсов и полным доступом к DNS.
Настройка DNS-записей для почтового домена
Корректные DNS-записи определяют, примут ли ваши письма получатели. Настройте три записи до установки пакетов.
A-запись для почтового хоста:
mail.example.com. IN A 203.0.113.10MX-запись с приоритетом 10 указывает, какой сервер принимает почту для домена:
example.com. IN MX 10 mail.example.com.PTR-запись для обратного разрешения IP настраивается в панели провайдера VPS. IP 203.0.113.10 должен резолвиться в mail.example.com. Без PTR-записи крупные почтовые сервисы часто отклоняют письма.
Полный разбор MX, SPF, DKIM и DMARC с шаблонами конфигураций есть в справочнике по DNS-записям почтового сервера.
Установка Postfix и Dovecot: базовые пакеты
Обновите систему и установите пакеты:
apt update && apt upgrade -y
apt install postfix dovecot-core dovecot-imapd opendkim opendkim-toolsПри установке Postfix выберите тип конфигурации Internet Site и укажите имя домена example.com. После установки проверьте запуск служб:
systemctl status postfix
systemctl status dovecotОбе службы должны быть в состоянии active (running). Если какая-то не запустилась, проверьте логи: journalctl -u postfix -e или journalctl -u dovecot -e.
Настройка Postfix для отправки почты (SMTP)
Postfix отвечает за отправку исходящих писем и прием входящих по SMTP. Основной файл конфигурации - /etc/postfix/main.cf. Перед редактированием создайте резервную копию:
cp /etc/postfix/main.cf /etc/postfix/main.cf.backupКонфигурация основных параметров Postfix
Добавьте или измените следующие директивы в /etc/postfix/main.cf:
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 127.0.0.0/8 [::1]/128
home_mailbox = Maildir/
mailbox_size_limit = 0
message_size_limit = 52428800
smtpd_banner = $myhostname ESMTP
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destinationПараметр mynetworks определяет доверенные сети. Никогда не добавляйте сюда внешние диапазоны, иначе сервер станет открытым релеем. Параметр smtpd_recipient_restrictions разрешает отправку только аутентифицированным пользователям и локальным процессам.
Настройка SASL-аутентификации через Dovecot
Postfix не умеет аутентифицировать пользователей самостоятельно. Эту задачу передают Dovecot через SASL. Добавьте в /etc/postfix/main.cf:
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = noanonymous
smtpd_tls_auth_only = yes
broken_sasl_auth_clients = yesДиректива smtpd_tls_auth_only = yes запрещает передачу паролей в открытом виде: аутентификация работает только после установки TLS-соединения.
Включение TLS: получение и установка SSL-сертификата
Установите Certbot и получите сертификат Let's Encrypt:
apt install certbot
certbot certonly --standalone -d mail.example.comСертификат сохранится в /etc/letsencrypt/live/mail.example.com/. Добавьте в /etc/postfix/main.cf:
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
smtp_tls_security_level = mayПосле изменения конфигурации перезагрузите Postfix:
systemctl reload postfixДетали работы SMTP, IMAP и POP3, включая порты и шифрование, разобраны в статье о протоколах почтовых серверов.
Настройка Dovecot для получения почты (IMAP/POP3)
Dovecot хранит письма и предоставляет к ним доступ по IMAP и POP3. Конфигурация разнесена по файлам в /etc/dovecot/conf.d/.
Базовая конфигурация Dovecot: Maildir и аутентификация
В файле /etc/dovecot/conf.d/10-mail.conf укажите формат хранения:
mail_location = maildir:~/MaildirВ файле /etc/dovecot/conf.d/10-auth.conf включите системную аутентификацию:
disable_plaintext_auth = yes
auth_mechanisms = plain loginВ файле /etc/dovecot/conf.d/10-master.conf настройте сокет для Postfix:
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}Настройка SSL для IMAP и POP3
В файле /etc/dovecot/conf.d/10-ssl.conf укажите пути к сертификатам:
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pemДиректива ssl = required запрещает незашифрованные соединения. Перезапустите Dovecot:
systemctl restart dovecotСоздание почтовых ящиков и управление пользователями
Для небольшого числа ящиков подойдут системные пользователи Linux. Для масштабирования на несколько доменов используйте виртуальных пользователей с базой данных.
Создание системных пользователей для почтовых ящиков
Создайте пользователя без права входа в shell:
useradd -m -s /usr/sbin/nologin ivan
passwd ivanПочтовый ящик будет доступен по адресу ivan@example.com. Проверьте доступ через IMAP с помощью telnet:
telnet localhost 143
a1 login ivan password
a2 list "" "*"
a3 logoutЕсли аутентификация успешна, ящик работает. Для проверки с шифрованием используйте порт 993 (IMAPS).
Настройка виртуальных доменов и пользователей (опционально)
Виртуальные пользователи хранятся в MySQL или PostgreSQL, что позволяет обслуживать несколько доменов и тысячи ящиков без создания системных аккаунтов. Postfix использует директивы virtual_mailbox_domains и virtual_mailbox_maps, Dovecot подключается к базе через SQL-бэкенд. Настройка требует создания схемы БД, конфигурации /etc/postfix/mysql-virtual-mailbox-maps.cf и включения passdb sql в Dovecot.
Настройка безопасности: DKIM, SPF, DMARC и защита от спама
Без DKIM, SPF и DMARC ваши письма с высокой вероятностью попадут в спам. Эти механизмы подтверждают подлинность отправителя.
Настройка DKIM: подпись исходящих писем
Сгенерируйте ключи OpenDKIM:
mkdir -p /etc/opendkim/keys/example.com
opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com -s default
chown -R opendkim:opendkim /etc/opendkim/keys/В файле /etc/opendkim.conf укажите:
Domain example.com
KeyFile /etc/opendkim/keys/example.com/default.private
Selector default
Socket inet:8891@localhostПодключите OpenDKIM к Postfix, добавив в /etc/postfix/main.cf:
milter_protocol = 6
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891Публичный ключ находится в /etc/opendkim/keys/example.com/default.txt. Опубликуйте его в DNS как TXT-запись:
default._domainkey.example.com. IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIIBIjAN..."Настройка SPF: разрешенные отправители
SPF указывает, какие серверы могут отправлять почту от вашего домена. Добавьте TXT-запись:
example.com. IN TXT "v=spf1 mx -all"Директива mx разрешает отправку с серверов, указанных в MX-записях, а -all запрещает всем остальным. Если вы также отправляете почту через внешние сервисы, добавьте их IP или include-директивы.
Настройка DMARC: политика обработки писем
DMARC определяет, что делать с письмами, не прошедшими проверку DKIM или SPF. Начните с политики none и постепенно ужесточайте:
_dmarc.example.com. IN TXT "v=DMARC1; p=none; rua=mailto:postmaster@example.com"После анализа отчетов переходите к p=quarantine, затем к p=reject. Стратегия постепенного внедрения DMARC описана в руководстве по DNS-записям.
Установка и настройка SpamAssassin
SpamAssassin фильтрует входящий спам на основе правил и байесовского анализа. Установите пакет:
apt install spamassassin spamc
systemctl enable spamassassin
systemctl start spamassassinДля интеграции с Postfix используйте spamass-milter или amavisd-new. Простейший вариант - добавить в /etc/postfix/master.cf транспорт, который пропускает письма через SpamAssassin перед доставкой.
Тестирование и диагностика: отправка первого письма и проверка логов
После настройки всех компонентов проверьте работоспособность сервера.
Отправка тестового письма и проверка доставки
Отправьте тестовое письмо через telnet на порт 25:
telnet localhost 25
EHLO example.com
MAIL FROM:<ivan@example.com>
RCPT TO:<ivan@example.com>
DATA
Subject: Test message
This is a test.
.
QUITПроверьте, что письмо появилось в Maildir пользователя:
ls /home/ivan/Maildir/new/Для проверки доставляемости на внешние адреса используйте сервисы типа mail-tester.com. Они анализируют SPF, DKIM, DMARC, PTR и дают оценку вероятности попадания в спам.
Анализ логов и устранение типичных ошибок
Основной лог почтовой системы - /var/log/mail.log. Просматривайте его в реальном времени:
tail -f /var/log/mail.logТипичные ошибки и их причины:
- Письма не отправляются: проверьте
smtpd_recipient_restrictionsи аутентификацию. Ошибкаrelay access deniedозначает, что клиент не прошел SASL. - Письма не приходят: проверьте MX-запись через
dig MX example.comи доступность порта 25 извне. - Письма попадают в спам: проверьте PTR-запись, SPF, DKIM и DMARC. Используйте mail-tester.com для полной диагностики.
- Ошибки TLS: убедитесь, что пути к сертификатам корректны и сертификат не истек.
Подробный разбор инцидентов с конкретными командами диагностики есть в статье об ошибках почтового сервера. Если письма застревают в очереди Gmail, изучите руководство по ускорению доставки в Gmail.
Заключение: дальнейшие шаги и поддержка сервера
Вы развернули рабочий почтовый сервер: Postfix отправляет письма, Dovecot предоставляет доступ по IMAP и POP3, OpenDKIM подписывает исходящие сообщения, SPF и DMARC подтверждают подлинность домена. Первое письмо отправлено и доставлено.
Для стабильной работы выполняйте регулярные задачи: обновляйте пакеты (apt update && apt upgrade), следите за очередью Postfix (mailq), настраивайте резервное копирование Maildir и конфигурационных файлов. Мониторинг логов /var/log/mail.log поможет выявить проблемы до того, как они повлияют на доставку.
Для углубления в тему изучите практическое руководство по Linux для IT-специалистов, которое покрывает базовое администрирование, сети и VPN. Если вы планируете масштабировать инфраструктуру, рассмотрите контейнеризацию почтового сервера в Docker и Kubernetes.