Настройка почтового сервера с нуля: от установки до первого письма | AdminWiki

Настройка почтового сервера с нуля: от установки до первого письма

27 августа 2026 7 мин. чтения
Содержание статьи

Введение: зачем нужен собственный почтовый сервер и что мы будем настраивать

Собственный почтовый сервер дает полный контроль над перепиской, конфиденциальностью и кастомизацией. Вы не зависите от тарифов сторонних провайдеров, можете создавать неограниченное число ящиков и управлять каждым аспектом доставки. Для 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.10

MX-запись с приоритетом 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.

Поделиться:
Сохранить гайд? В закладки браузера