Встановлення 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 налаштований передавати листи через контент-фільтр (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.