Настройка почтового сервера: Postfix и Dovecot
Полное руководство по настройке Postfix MTA, Dovecot IMAP/POP3, конфигурации SSL/TLS, поддержке виртуальных доменов, фильтрации спама и Docker Mail Server.
Содержание
Настройка почтового сервера: Postfix и Dovecot
Настройка собственного почтового сервера даёт полный контроль над электронной почтой. В этом руководстве рассматривается Postfix MTA, Dovecot IMAP/POP3, конфигурация SSL/TLS, поддержка виртуальных доменов и Docker Mail Server.
Управление почтовым сервером сложно и требует постоянного обслуживания. Репутация IP, фильтрация спама и обновления безопасности должны регулярно контролироваться.
Предварительные требования
DNS-записи
# A-запись — IP почтового сервера
mail.example.com A 185.x.x.x
# MX-запись — маршрутизация почты
example.com MX 10 mail.example.com
# SPF-запись
example.com TXT "v=spf1 mx ip4:185.x.x.x -all"
# Обратная DNS (PTR) запись
185.x.x.x PTR mail.example.com
PTR-запись (обратная DNS) может быть настроена через панель клиента REXE или через запрос в поддержку. Письма без PTR-записи могут быть помечены как спам.
Настройка hostname
sudo hostnamectl set-hostname mail.example.com
echo "185.x.x.x mail.example.com mail" | sudo tee -a /etc/hosts
hostname -f
Установка Postfix (MTA)
sudo apt update
sudo apt install postfix postfix-mysql -y
# Выберите "Internet Site" при установке
Базовая конфигурация
# /etc/postfix/main.cf
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost
inet_interfaces = all
inet_protocols = ipv4
mynetworks = 127.0.0.0/8
home_mailbox = Maildir/
# Настройки TLS
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_use_tls = yes
smtpd_tls_auth_only = yes
# Аутентификация SASL
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
# Ограничения
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_rbl_client zen.spamhaus.org
message_size_limit = 52428800
Порт Submission (587)
# /etc/postfix/master.cf
submission inet n - y - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_auth_only=yes
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
Установка Dovecot (IMAP/POP3)
sudo apt install dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd -y
Конфигурация
# /etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp
# /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-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_min_protocol = TLSv1.2
# /etc/dovecot/conf.d/10-master.conf
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
}
SSL/TLS-сертификат
sudo apt install certbot -y
sudo certbot certonly --standalone -d mail.example.com
Docker Mail Server (альтернатива)
version: '3.8'
services:
mailserver:
image: ghcr.io/docker-mailserver/docker-mailserver:latest
container_name: mailserver
hostname: mail.example.com
ports:
- "25:25"
- "465:465"
- "587:587"
- "993:993"
volumes:
- ./docker-data/dms/mail-data/:/var/mail/
- ./docker-data/dms/mail-state/:/var/mail-state/
- ./docker-data/dms/mail-logs/:/var/log/mail/
- ./docker-data/dms/config/:/tmp/docker-mailserver/
- /etc/letsencrypt:/etc/letsencrypt:ro
environment:
- ENABLE_SPAMASSASSIN=1
- ENABLE_CLAMAV=1
- ENABLE_FAIL2BAN=1
- SSL_TYPE=letsencrypt
restart: always
docker exec -it mailserver setup email add user@example.com
docker exec -it mailserver setup config dkim
docker compose up -d
Фильтрация спама
sudo apt install spamassassin spamc -y
sudo systemctl enable spamassassin
sudo systemctl start spamassassin
Тестирование и проверка
sudo systemctl status postfix
sudo systemctl status dovecot
sudo ss -tlnp | grep -E '25|587|993|995'
echo "Тестовое письмо" | mail -s "Тест" user@example.com
sudo tail -f /var/log/mail.log
openssl s_client -connect mail.example.com:587 -starttls smtp
openssl s_client -connect mail.example.com:993
После настройки проверьте свой спам-рейтинг на mail-tester.com. Убедитесь, что SPF, DKIM и DMARC правильно настроены для получения оценки 10/10.
Заключение
Настройка собственного почтового сервера обеспечивает полный контроль, но требует регулярного обслуживания. Комбинация Postfix + Dovecot предлагает надёжное решение, а Docker Mail Server обеспечивает более простое управление.
Связанные статьи
Руководство по удалению из чёрного списка email
Руководство по проверке чёрных списков, заявкам на удаление, процедурам Spamhaus/Barracuda/SORBS и управлению репутацией IP.
Настройка SPF, DKIM и DMARC
Полное руководство по настройке SPF-записей, DKIM-подписи, политик DMARC, DNS-записей и инструментов тестирования для повышения доставляемости и безопасности электронной почты.