Почтовый клиент не может отправлять через собственный Postfix: аутентификацию настраивали на 25-м порту, а нужен 587

Что было. Postfix с SASL-аутентификацией через saslauthd. Почтовый клиент с ноутбука получает 554 5.7.1 Relay access denied при отправке наружу. Проверка через telnet на порт 25 с командой AUTH вела в тупик. По ходу автор попробовал добавить свой адрес в mynetworks, что сработало, но, как заметили участники, это отключает аутентификацию для всех с этого адреса и не решает задачу.

Что оказалось. Порт 25 предназначен для приёма почты от других серверов; аутентификация клиентов на нём может быть выключена или ограничена. Для клиентов существует порт 587 (submission, STARTTLS) и 465 (submissions, TLS сразу), где включены smtpd_sasl_auth_enable и требование шифрования. Плюс две технические детали: список механизмов SASL при saslauthd должен быть PLAIN LOGIN (другие он не поддерживает), а сокет saslauthd должен быть доступен Postfix внутри его chroot (dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd и пользователь postfix в группе sasl). После настройки submission клиент заработал; подтверждено.

Минимальная настройка submission (/etc/postfix/master.cf, раскомментировать и дополнить):

submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject_unauth_destination

С аутентификацией через Dovecot (smtpd_sasl_type=dovecot) проблем с chroot и механизмами нет, поэтому сейчас это стандартный путь; saslauthd остался для старых схем.

Проверка.

openssl s_client -starttls smtp -connect mail.example.com:587 -crlf
EHLO test            # в ответе должно быть 250-AUTH PLAIN LOGIN

В журнале mail.log успешный вход выглядит как sasl_method=PLAIN, sasl_username=user@example.com.

Почему mynetworks не ответ. Любой процесс с разрешённого адреса становится авторизованным отправителем: скомпрометированный ноутбук, соседний контейнер, гость в той же сети. Динамические адреса вообще нельзя туда вписывать. mynetworks только для 127.0.0.0/8 и, при необходимости, для доверенных серверов.

SASL описан в документации Postfix.