Вики / Службы и systemd
Postfix (почтовый сервер)
Отправка и приём почты — конфиг, очередь, логи, типичная отладка доставки.
Postfix — MTA (агент пересылки почты): отправляет, принимает и маршрутизирует
email по SMTP. Часто ставят просто для исходящих уведомлений с сервера. Служба
postfix под systemd; конфиг /etc/postfix/main.cf.
systemctl status postfix
postconf -n # действующая конфигурация (только изменённое от дефолта)
ss -tlnp | grep -E ':25|:587' # слушает ли SMTP (см. ss)
postconf -n # текущие настройки (изменённые)
postconf inet_interfaces mynetworks relayhost # конкретные параметры
sudo postconf -e 'myhostname=mail.example.com' # изменить параметр
sudo postconf -e 'relayhost=[smtp.provider.com]:587' # слать через смартхост
sudo systemctl reload postfix
# очередь писем
mailq # = postqueue -p — что застряло и почему
postqueue -f # форсировать повторную отправку всей очереди
postqueue -i <QUEUEID> # один конкретный элемент
postcat -q <QUEUEID> # посмотреть содержимое письма в очереди
sudo postsuper -d ALL # удалить ВСЁ из очереди (осторожно!)
sudo postsuper -d ALL deferred # только отложенные
echo "test" | mail -s "тема" you@example.com # тестовое письмо (пакет mailutils)
Типовой кейс «сервер шлёт уведомления через внешний SMTP» (main.cf):
relayhost = [smtp.provider.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt
echo '[smtp.provider.com]:587 user:pass' | sudo tee /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd # собрать .db (после ЛЮБОЙ правки map!)
sudo systemctl reload postfix
Письма не уходят / висят в очереди
mailq покажет причину рядом с каждым письмом. Лог: journalctl -u postfix или
/var/log/mail.log. Частое: получатель отверг, нет обратного DNS (PTR),
порт 25 закрыт провайдером (тогда слать через relayhost:587).
Relay access denied
Postfix не пересылает чужую почту (anti-relay). Для своих сетей — mynetworks; для
аутентифицированных — SASL. Не делай открытый релей (спам/блок-листы).
Письма попадают в спам
Нужны SPF/DKIM/DMARC-записи в DNS и корректный PTR (rDNS). Без них крупные провайдеры режут.
Поменял map, а не применилось
После правки sasl_passwd/transport/virtual всегда postmap файл (пересобрать
.db) и reload.
Connection refused на 25
Слушает только localhost (inet_interfaces = loopback-only) или порт закрыт
(firewall). Проверь ss -tlnp | grep :25 и postconf inet_interfaces.
postconf -n # действующий конфиг
mailq ; postqueue -f # очередь / форс отправки
postcat -q ID # посмотреть письмо в очереди
journalctl -u postfix # или /var/log/mail.log
sudo postmap /etc/postfix/sasl_passwd && sudo systemctl reload postfix
echo body | mail -s subj to@x # тест
См. также
- journalctl — Логи и аудит
- ss (сокеты и порты) — Сеть
- DNS и разрешение имён — Сеть