Установка Postfix
apt install postfix -y
# При установке выберите: Internet Site
# System mail name: yourdomain.com
Основные параметры main.cf
# /etc/postfix/main.cf
myhostname = mail.yourdomain.com
mydomain = yourdomain.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, $mydomain
# TLS
smtpd_tls_cert_file = /etc/letsencrypt/live/yourdomain.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/yourdomain.com/privkey.pem
smtpd_use_tls = yes
smtpd_tls_security_level = may
# Ограничения ретрансляции
smtpd_relay_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
Проверка настройки
# Тест отправки
echo "Test email" | mail -s "Subject" test@example.com
# Просмотр очереди
mailq
# Логи
tail -f /var/log/mail.log
Частые ошибки при настройке Postfix
Большинство проблем с почтой на VPS видны сразу в логах — научитесь их читать.
554 5.7.1 <user@example.com>: Relay access denied
Сервер отклоняет письмо, потому что отправитель не входит в mynetworks и не прошёл SASL-авторизацию, а получатель — не локальный домен. Проверьте smtpd_relay_restrictions в main.cf: если приложение шлёт письма с того же сервера через localhost, добавьте 127.0.0.1/32 в mynetworks.
connect to 127.0.0.1[127.0.0.1]:10024: Connection refused (port 10024)
Postfix настроен на передачу писем через content-фильтр (Amavis, Rspamd) на порту 10024, но сам фильтр не запущен или не установлен. Проверьте systemctl status rspamd либо уберите строку content_filter из main.cf, если фильтрация не нужна.
Received-SPF: fail (domain owner discourages use of this host)
Получатель проверил SPF-запись домена и не нашёл в ней IP вашего сервера. Письмо помечается как подозрительное или сразу отклоняется. Добавьте IP-адрес VPS в SPF-запись домена — см. настройку SPF, DKIM и DMARC.
Maildir и mbox: форматы хранения почты
| Параметр | Maildir | mbox |
|---|---|---|
| Формат | Каждое письмо — отдельный файл | Все письма в одном файле |
| Блокировки при доступе | Не нужны | Требуются (file locking) |
| Надёжность при сбое | Высокая | Риск повредить весь ящик |
| Поддержка IMAP-серверов | Dovecot, Courier | Только устаревшие |
По умолчанию современный Postfix с Dovecot использует Maildir — задаётся параметром home_mailbox = Maildir/ в main.cf. Переходить на mbox сегодня нет причин.
Когда Postfix на VPS не подходит
Разворачивать собственный почтовый сервер ради 10–20 транзакционных писем в день — избыточно: проще подключить SMTP-relay (SendGrid, Mailgun, Amazon SES) без забот о репутации IP и SPF/DKIM. Свежий IP-адрес VPS не имеет истории отправок — первые письма почтовые провайдеры массово отправляют в спам, пока IP не «прогреется» неделями постепенного роста объёма. Если PTR-запись для IP-адреса сервера не настроена (см. обратный DNS и PTR), крупные почтовые сервисы вроде Gmail отклоняют письма без объяснений — это первое, что нужно проверить до разбора остальных настроек.
Проверка результата
Не полагайтесь только на «письмо дошло» — проверьте очередь, шифрование и подпись отдельно:
# Очередь писем
mailq
# Тест TLS-соединения
openssl s_client -connect mail.example.com:587 -starttls smtp
# Проверка DKIM-ключа
opendkim-testkey -d example.com -s mail -vvv
Лучший внешний тест — mail-tester.com: отправьте письмо на выданный адрес и получите оценку по SPF, DKIM, DMARC, чёрным спискам и содержимому письма. Оценка ниже 8/10 обычно означает, что нужно исправить хотя бы один из пунктов выше.
Перед перезапуском службы всегда проверяйте синтаксис конфигурации командой postfix check — опечатка в main.cf не всегда роняет Postfix сразу, но может привести к тихому отказу приёма писем на новых подключениях. Такую ошибку легко пропустить, потому что сервис формально продолжает работать, а в логах видна лишь одна строка отказа на конкретное подключение, а не явная причина.
Частые вопросы
Сколько времени занимает открытие портов 25/465/587 после обращения в поддержку, и можно ли обойтись без них вообще?
Точный срок зависит от конкретного случая — заявку рассматривают индивидуально, а не по шаблону, проверяя репутацию клиента и цель использования портов. Обойтись без открытия портов можно, если отправлять письма через HTTP API почтового сервиса: он работает по порту 443 и ограничению не подчиняется, так что для многих проектов отдельная заявка вообще не требуется.
Нужно ли дополнительно устанавливать Dovecot, чтобы читать почту в почтовом клиенте, или Postfix справляется с этим сам?
Да, Postfix только принимает и отправляет почту по SMTP, а для доступа к ящику через почтовый клиент по IMAP или POP3 нужен отдельный сервис — чаще всего Dovecot. Без него письма технически доставляются и сохраняются на сервере, но прочитать их в Outlook, Thunderbird или на телефоне не получится.
Если переносить уже работающий почтовый сервер на новый VPS, нужно ли снова «прогревать» IP-адрес?
Да, репутация привязана к конкретному IP-адресу, а не к домену или истории переписки, поэтому при смене сервера прогрев начинается заново. Чтобы снизить риск попадания в спам на новом адресе, увеличивайте объём отправки постепенно, следите за SPF и DKIM и по возможности сохраните прежний IP, если провайдер такую миграцию поддерживает.
Безопасно ли держать Postfix и веб-сервер на одном и том же VPS?
Само совмещение не опасно: Postfix и веб-сервер — независимые службы, которые занимают разные порты и обычно отлично работают на одном VPS. Важнее другое — изолировать конфигурацию и логи друг от друга и следить, чтобы уязвимость в веб-приложении не позволила злоумышленнику превратить сервер в источник спама через тот же Postfix.