Postfix + Dovecot + DKIM: настройка почтового сервера на Debian

Postfix + Dovecot + DKIM: настройка почтового сервера на Debian

Postfix + Dovecot + DKIM: настройка почтового сервера на Debian
Linux 24 марта 2026 Автор: Евгений Семёнов
Postfix + Dovecot + DKIM: настройка почтового сервера на Debian

Собственный почтовый сервер — это полный контроль над корпоративной перепиской, независимость от сторонних сервисов и возможность гибкой настройки под нужды бизнеса. В этом руководстве мы пошагово разберём установку и конфигурацию всех компонентов: Postfix для отправки и приёма писем, Dovecot для доступа через IMAP, PostfixAdmin для администрирования, Roundcube для веб-интерфейса и DKIM для цифровой подписи сообщений.

Зачем нужен собственный почтовый сервер и кому он подходит?

Компании с высокими требованиями к конфиденциальности переписки, организации, работающие с персональными данными по 152-ФЗ, и бизнес, которому важна независимость от облачных провайдеров — все они выигрывают от собственного почтового сервера. Вы получаете полный контроль над логами, можете настроить любые фильтры и правила, а при грамотной конфигурации DKIM, SPF и DMARC ваши письма будут доставляться в Inbox, а не в спам.

С другой стороны, собственный mail-сервер требует квалифицированного обслуживания. Ошибки в настройке приводят к попаданию в чёрные списки, потере писем и уязвимостям. Если у вас нет штатного администратора — рассмотрите аутсорсинг этой задачи.

Какие компоненты входят в почтовый стек и как они взаимодействуют?

Современный Linux mail-сервер — это несколько компонентов в связке:

Совет: Все компоненты устанавливаются на один сервер. Для офиса до 50 человек достаточно VPS с 2 ядрами, 4 ГБ RAM и 40 ГБ SSD.

Как подготовить сервер 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, Яндекс) будут отклонять вашу почту.

Важно: Если ваш провайдер не позволяет настроить PTR-запись — забудьте об исходящей почте на Mail.ru. Это обязательное требование.

Как установить и настроить 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
  }
}
Внимание (Dovecot 2.4+): Если вы используете Debian 13 с Dovecot 2.4, плагин mailbox_alias удалён из стандартной поставки. Вместо него используйте секцию mailbox с атрибутами special_use и auto = subscribe. Это частая проблема при обновлении — письма перестают доходить до ящиков.
Как развернуть PostfixAdmin для управления доменами и ящиками?

Как развернуть 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..."
Совет: DKIM привязан к домену, а не к FQDN сервера. Если вы обслуживаете несколько почтовых доменов на одном сервере, вам нужно добавить DKIM-запись для каждого домена, но сертификат SSL остаётся один — на имя почтового сервера.

Как получить 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.

Как проверить работоспособность почтового сервера?

После завершения настройки проведите комплексную проверку:

  1. Отправка тестового письма: echo "Test" | mail -s "Test" user@gmail.com
  2. Проверка DKIM: отправьте письмо на check-auth@verifier.port25.com
  3. Проверка SPF/DMARC: используйте MXToolbox
  4. Проверка чёрных списков: mxtoolbox.com/blacklists.aspx
  5. Логи Postfix: tail -f /var/log/mail.log
  6. Логи 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

Как обеспечить отказоустойчивость и мониторинг почтового сервера?

Почтовый сервер — критический сервис. Обеспечьте его надёжность:

# Настройка 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 или компонентов почтового стека следуйте правилам:

  1. Создайте полный бэкап конфигов и данных перед обновлением
  2. Обновляйте пакеты поочерёдно: сначала Dovecot, затем Postfix
  3. Проверяйте совместимость конфигов с новыми версиями (особенно Dovecot 2.4)
  4. Держите staging-сервер для тестирования обновлений
  5. После обновления проверьте отправку и приём через тестовые ящики

Заключение: почтовый сервер как инвестиция в инфраструктуру

Настройка собственного почтового сервера 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 на базе МТС.

15+лет опыта
25+клиентов
40Gсвоя сеть
24/7поддержка

Столкнулись с похожей задачей? Обращайтесь — решим

Если у вас происходит что-то из описанного в этой статье — или любая другая проблема с ИТ-инфраструктурой, — обращайтесь в любое время. Мои специалисты и я лично разберём ситуацию, найдём настоящую причину и доведём до решения.

Возьмёмся и за разовую задачу, и за постоянное обслуживание. Первичная консультация — бесплатно и без обязательств.

📞 +7 903 729-62-41 💬 MAX: +7 903 729-62-41 ✈ Telegram @ITfresh_Boss

С уважением, Семёнов Евгений Сергеевич, директор «АйТи Фреш» — IT-аутсорсинг для компаний до 50 рабочих мест, 15+ лет практики

Подпишитесь на рассылку ITfresh

Каждую неделю мы выпускаем практические гайды для руководителей IT и системных администраторов. Это не просто теория! Здесь вы найдёте всё: безопасность, 1С, миграции, резервные копии и проверенные лайфхаки из наших реальных проектов.

Письмо придёт в течение минутыНе нашли его во «Входящих» — загляните в папку «Спам» или «Промоакции» и нажмите «Не спам». Так все следующие выпуски будут приходить прямо в основную почту.
Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.