Postfix + Dovecot + DKIM: настройка почтового сервера на Debian
Собственный почтовый сервер — это полный контроль над корпоративной перепиской, независимость от сторонних сервисов и возможность гибкой настройки под нужды бизнеса. В этом руководстве мы пошагово разберём установку и конфигурацию всех компонентов: Postfix для отправки и приёма писем, Dovecot для доступа через IMAP, PostfixAdmin для администрирования, Roundcube для веб-интерфейса и DKIM для цифровой подписи сообщений.
Зачем нужен собственный почтовый сервер и кому он подходит?
Компании с высокими требованиями к конфиденциальности переписки, организации, работающие с персональными данными по 152-ФЗ, и бизнес, которому важна независимость от облачных провайдеров — все они выигрывают от собственного почтового сервера. Вы получаете полный контроль над логами, можете настроить любые фильтры и правила, а при грамотной конфигурации DKIM, SPF и DMARC ваши письма будут доставляться в Inbox, а не в спам.
С другой стороны, собственный mail-сервер требует квалифицированного обслуживания. Ошибки в настройке приводят к попаданию в чёрные списки, потере писем и уязвимостям. Если у вас нет штатного администратора — рассмотрите аутсорсинг этой задачи.
Какие компоненты входят в почтовый стек и как они взаимодействуют?
Современный Linux mail-сервер — это несколько компонентов в связке:
- Postfix (MTA) — принимает входящие письма по SMTP (порт 25) и отправляет исходящие через submission (порт 587)
- Dovecot (MDA/IMAP-сервер) — обеспечивает доступ к почтовым ящикам через IMAP (порт 993) и выполняет локальную доставку
- PostfixAdmin — веб-панель управления доменами, ящиками и алиасами
- Roundcube — веб-интерфейс для чтения и отправки почты (webmail)
- OpenDKIM — подписывает исходящие письма цифровой подписью DKIM
- Let's Encrypt / Angie — SSL-сертификаты для шифрования соединений
Как подготовить сервер Debian к установке почтового сервера?
Начинаем с чистой установки Debian 12 (Bookworm) или Debian 13 (Trixie). Первым делом настраиваем hostname — он должен совпадать с FQDN вашего почтового сервера:
hostnamectl set-hostname mail.example.ru
echo "212.69.85.169 mail.example.ru mail" >> /etc/hosts
Устанавливаем базовые пакеты:
apt update && apt upgrade -y
apt install -y curl wget gnupg2 ca-certificates lsb-release apt-transport-https
PTR-запись (обратный DNS) у хостинг-провайдера — обязательно. Без неё письма попадут в спам. PTR должна указывать на FQDN почтового сервера (mail.example.ru). Без PTR крупные провайдеры (Mail.ru, Gmail, Яндекс) будут отклонять вашу почту.
Как установить и настроить Postfix для отправки и приёма писем?
Postfix с поддержкой MySQL — для виртуальных доменов и ящиков:
apt install -y postfix postfix-mysql
При установке выбираем «Internet Site» и указываем FQDN сервера. Затем редактируем основной конфиг /etc/postfix/main.cf:
# Основные параметры
myhostname = mail.example.ru
mydomain = example.ru
myorigin = $mydomain
mydestination = localhost
mynetworks = 127.0.0.0/8
# Виртуальные домены
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias.cf
# TLS
smtpd_tls_cert_file = /etc/ssl/certs/mail.example.ru.pem
smtpd_tls_key_file = /etc/ssl/private/mail.example.ru.key
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
# SASL авторизация через Dovecot
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
В /etc/postfix/master.cf включаем submission на порту 587 для авторизованной отправки:
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unlisted_recipient=no
Как настроить Dovecot для IMAP-доступа к почтовым ящикам?
Dovecot — это IMAP/POP3-сервер, который обеспечивает доступ клиентов к почте и выполняет локальную доставку (LDA). Устанавливаем:
apt install -y dovecot-imapd dovecot-lmtpd dovecot-mysql
Основная конфигурация /etc/dovecot/dovecot.conf:
protocols = imap lmtp
listen = *
# SSL
ssl = required
ssl_cert = </etc/ssl/certs/mail.example.ru.pem
ssl_key = </etc/ssl/private/mail.example.ru.key
ssl_min_protocol = TLSv1.2
# Аутентификация
auth_mechanisms = plain login
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf
}
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf
}
# Доставка
mail_location = maildir:/var/vmail/%d/%n
mail_uid = vmail
mail_gid = vmail
# Сокет для Postfix SASL
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
mailbox_alias удалён из стандартной поставки. Вместо него используйте секцию mailbox с атрибутами special_use и auto = subscribe. Это частая проблема при обновлении — письма перестают доходить до ящиков.Как развернуть PostfixAdmin для управления доменами и ящиками?
PostfixAdmin — это PHP-приложение для управления виртуальными доменами, почтовыми ящиками и алиасами через веб-интерфейс. Устанавливаем зависимости:
apt install -y nginx php-fpm php-mysql php-mbstring php-imap php-curl
cd /var/www
wget https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.3.13.tar.gz
tar xzf postfixadmin-3.3.13.tar.gz
mv postfixadmin-postfixadmin-3.3.13 postfixadmin
chown -R www-data:www-data postfixadmin
Создаём базу данных MySQL/MariaDB:
mysql -u root -p
CREATE DATABASE postfixadmin CHARACTER SET utf8mb4;
CREATE USER 'postfixadmin'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD';
GRANT ALL ON postfixadmin.* TO 'postfixadmin'@'localhost';
FLUSH PRIVILEGES;
Конфигурируем PostfixAdmin через config.local.php и запускаем setup.php через браузер для первоначальной инициализации базы и создания суперадмина.
Как установить Roundcube для веб-доступа к почте?
Roundcube предоставляет удобный веб-интерфейс для чтения и отправки почты. Это особенно важно для сотрудников, которые работают с разных устройств:
apt install -y roundcube roundcube-mysql roundcube-plugins
# Или установка из исходников для последней версии
cd /var/www
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz
tar xzf roundcubemail-1.6.9-complete.tar.gz
mv roundcubemail-1.6.9 roundcube
В конфиге Roundcube указываем подключение к IMAP через Dovecot и SMTP через Postfix:
$config['imap_host'] = 'ssl://localhost:993';
$config['smtp_host'] = 'tls://localhost:587';
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';
Как настроить DKIM для подписания исходящих писем?
DKIM (DomainKeys Identified Mail) — это технология цифровой подписи, которая подтверждает подлинность отправителя. Без DKIM ваши письма с высокой вероятностью попадут в спам:
apt install -y opendkim opendkim-tools
# Генерируем ключ DKIM
mkdir -p /etc/opendkim/keys/example.ru
opendkim-genkey -D /etc/opendkim/keys/example.ru -d example.ru -s mail
chown -R opendkim:opendkim /etc/opendkim
Настраиваем /etc/opendkim.conf:
Syslog yes
UMask 007
Mode sv
SubDomains no
AutoRestart yes
AutoRestartRate 10/1M
Background yes
Canonicalization relaxed/simple
SignatureAlgorithm rsa-sha256
KeyTable /etc/opendkim/key.table
SigningTable refile:/etc/opendkim/signing.table
InternalHosts /etc/opendkim/trusted.hosts
Socket inet:8891@localhost
Добавляем в DNS TXT-запись с публичным ключом из файла mail.txt. Также настраиваем SPF и DMARC записи:
# SPF запись
example.ru. IN TXT "v=spf1 ip4:212.69.85.169 mx -all"
# DMARC запись
_dmarc.example.ru. IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.ru"
# DKIM запись (из файла mail.txt)
mail._domainkey.example.ru. IN TXT "v=DKIM1; k=rsa; p=MIG..."
Как получить SSL-сертификат Let's Encrypt для почтового сервера?
Для шифрования IMAP и SMTP соединений необходим валидный SSL-сертификат. Самый простой способ — Let's Encrypt через certbot:
apt install -y certbot python3-certbot-nginx
certbot certonly --nginx -d mail.example.ru
# Обновляем пути в Postfix и Dovecot
# /etc/postfix/main.cf:
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.ru/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.ru/privkey.pem
# /etc/dovecot/dovecot.conf:
ssl_cert = </etc/letsencrypt/live/mail.example.ru/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.ru/privkey.pem
Настраиваем автообновление сертификата и перезагрузку служб:
echo '0 3 * * * root certbot renew --quiet --post-hook "systemctl reload postfix dovecot nginx"' > /etc/cron.d/certbot-mail
Какие проблемы чаще всего возникают при настройке и как их решать?
На основе сотен комментариев и реальных кейсов выделяем типичные проблемы:
Письма не доходят до Mail.ru
Три обязательных условия для доставки на Mail.ru: корректная PTR-запись, настроенные SPF и DKIM, и отсутствие IP в чёрных списках. Проверьте PTR через dig -x YOUR_IP. Если при переходе с VK WorkSpace (бывший Mail.ru для бизнеса) домен «застрял» — подайте заявку через support.mcs.mail.ru с добавлением TXT-записи.
Dovecot 2.4: плагин mailbox_alias не найден
После обновления на Debian 13 с Dovecot 2.4 появляется ошибка Fatal: Plugin 'mailbox_alias' not found. Решение: удалить упоминание плагина из конфигурации. Функционал IMAP SPECIAL-USE (RFC 6154) заменяет его полностью.
Несколько доменов на одном сервере
Один SSL-сертификат выдаётся на имя почтового сервера (mail.example.ru), а не на почтовый домен. Один сервер спокойно обслуживает десятки доменов с одним сертификатом. Для каждого домена нужно добавить отдельную DKIM-запись в DNS.
Ошибки аутентификации после миграции
При переходе с устаревших схем хранения паролей (MD5, PLAIN) на современные (BLF-CRYPT, SHA512-CRYPT) необходимо пересоздать пароли пользователей. Dovecot 2.4 помечает слабые схемы как deprecated.
Как проверить работоспособность почтового сервера?
После завершения настройки проведите комплексную проверку:
- Отправка тестового письма:
echo "Test" | mail -s "Test" user@gmail.com - Проверка DKIM: отправьте письмо на check-auth@verifier.port25.com
- Проверка SPF/DMARC: используйте MXToolbox
- Проверка чёрных списков:
mxtoolbox.com/blacklists.aspx - Логи Postfix:
tail -f /var/log/mail.log - Логи Dovecot:
doveadm log find
# Быстрая проверка SMTP
openssl s_client -connect mail.example.ru:587 -starttls smtp
EHLO test
AUTH LOGIN
# Проверка IMAP
openssl s_client -connect mail.example.ru:993
a1 LOGIN user@example.ru password
a2 LIST "" "*"
Как настроить антиспам-фильтрацию входящей почты?
Базовая защита от спама через Postfix:
# /etc/postfix/main.cf - дополнительные ограничения
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks,
reject_non_fqdn_helo_hostname,
reject_invalid_helo_hostname
smtpd_sender_restrictions =
permit_mynetworks,
reject_non_fqdn_sender,
reject_unknown_sender_domain
smtpd_relay_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
defer_unauth_destination
Для продвинутой фильтрации установите SpamAssassin или Rspamd. Rspamd — более современное решение с машинным обучением:
apt install -y rspamd
# Интеграция с Postfix через milter
milter_protocol = 6
smtpd_milters = inet:localhost:11332
non_smtpd_milters = inet:localhost:11332
Как обеспечить отказоустойчивость и мониторинг почтового сервера?
Почтовый сервер — критический сервис. Обеспечьте его надёжность:
- Бэкап: ежедневное резервное копирование
/var/vmail/, конфигов и базы данных PostfixAdmin - Мониторинг: следите за размером очереди Postfix (
mailq), свободным местом на диске, загрузкой CPU - Логирование: настройте ротацию логов через logrotate, храните минимум 30 дней
- Резервный MX: при наличии второго сервера настройте MX-запись с приоритетом 20
- Fail2ban: защита от brute-force атак на SASL-аутентификацию
# Настройка Fail2ban для Postfix
apt install -y fail2ban
cat > /etc/fail2ban/jail.local << 'EOF'
[postfix-sasl]
enabled = true
filter = postfix[mode=auth]
port = smtp,465,submission
logpath = /var/log/mail.log
maxretry = 3
bantime = 3600
EOF
systemctl restart fail2ban
Как обновлять почтовый сервер без простоя?
При обновлении Debian или компонентов почтового стека следуйте правилам:
- Создайте полный бэкап конфигов и данных перед обновлением
- Обновляйте пакеты поочерёдно: сначала Dovecot, затем Postfix
- Проверяйте совместимость конфигов с новыми версиями (особенно Dovecot 2.4)
- Держите staging-сервер для тестирования обновлений
- После обновления проверьте отправку и приём через тестовые ящики
Заключение: почтовый сервер как инвестиция в инфраструктуру
Настройка собственного почтового сервера Postfix + Dovecot + DKIM на Debian — это проект на один-два рабочих дня для опытного администратора. Результат — полный контроль над корпоративной почтой, соответствие требованиям законодательства о персональных данных и независимость от облачных сервисов. Главное — не забывайте про PTR-запись, корректные DNS-записи (SPF, DKIM, DMARC) и регулярное обновление компонентов. А если нет времени или ресурсов настраивать самостоятельно — обращайтесь к профессионалам.
Документация: Postfix Official Docs, Dovecot Documentation
Часто задаваемые вопросы
Можно ли использовать один SSL-сертификат для нескольких почтовых доменов?
Да. Сертификат выдаётся на имя почтового сервера (например, mail.example.ru), а не на почтовый домен. Один сервер может обслуживать десятки доменов с одним сертификатом. Для каждого домена нужно добавить отдельную DKIM-запись в DNS.
Почему письма не доходят до Mail.ru после настройки DKIM и SPF?
Три обязательных условия для доставки на Mail.ru: корректная PTR-запись (обратная DNS), настроенные SPF и DKIM, и отсутствие IP-адреса сервера в чёрных списках. Без PTR-записи Mail.ru откажется принимать вашу почту. Проверьте PTR командой dig -x YOUR_IP.
Что делать с ошибкой Plugin mailbox_alias not found в Dovecot 2.4?
В Dovecot 2.4 (Debian 13) плагин mailbox_alias удалён из стандартной поставки. Удалите упоминание плагина из конфигурации и используйте секцию mailbox с атрибутами special_use и auto = subscribe. Функционал IMAP SPECIAL-USE (RFC 6154) полностью заменяет этот плагин.
Сколько ресурсов нужно серверу для корпоративной почты на 50 пользователей?
Для офиса до 50 пользователей достаточно VPS с 2 ядрами CPU, 4 ГБ оперативной памяти и 40 ГБ SSD. При активном использовании вложений рекомендуется увеличить дисковое пространство до 100 ГБ и настроить квоты на почтовые ящики.
Как перенести домен с VK WorkSpace (Mail.ru для бизнеса) на собственный сервер?
После переноса MX-записей на свой сервер Mail.ru может продолжать считать домен своим. Подайте заявку через support.mcs.mail.ru — вас попросят добавить TXT-запись в DNS для подтверждения владения доменом. После верификации проблема решается.
Нужно ли менять hostname на FQDN почтового сервера?
Это не критично для работы Postfix и Dovecot, так как все значения берутся из конфигов. Однако рекомендуется для порядка — чтобы hostname соответствовал тому, как сервер резолвится в DNS. Команда: hostnamectl set-hostname mail.example.ru.
Какую базу данных лучше использовать — MySQL или PostgreSQL?
Для PostfixAdmin стандартно используется MySQL/MariaDB. Если вы работаете на ARM64 или предпочитаете PostgreSQL — PostfixAdmin поддерживает обе СУБД. На новых системах можно также использовать lmdb вместо MySQL для хранения карт Postfix.
ООО «АйТи Фреш» возьмёт это на себя
Не хватает времени или своих специалистов — мы настроим, оптимизируем и возьмём вашу IT-инфраструктуру на постоянное сопровождение. Работаем с юридическими лицами в Москве и регионах. Собственный дата-центр, команда из 8 серверов Dell Xeon Platinum 8280 на базе МТС.


