У меня есть сервер, который будет пытаться отправлять почту прямо на целевые серверы MX. Но некоторые из них отклоняют письма из-за плохой репутации MTA (вот что они говорят).
Я сделал все, чтобы улучшить репутацию, и у меня не осталось выбора.
Только несколько серверов отклоняют наши письма. Поэтому я решил использовать Postmark для отправки таких писем.
Но мне нужно настроить Postfix для использования sasl auth только для fallback_relay
и не для прямой почтовой рассылки на сервер MX.
Некоторые серверы MX выдают ошибку из-за этой sasl-аутентификации (например, hotmail). Серверы Google принимают без проблем.
#my configuration
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = static:key:key
smtp_sasl_security_options = noanonymous
fallback_relay = [smtp.postmarkapp.com]:25
Я столкнулся с той же проблемой. Чтобы расширить ответ mailq и дать ему немного больше подробностей, вот что я сделал для решения своей проблемы.
# old main.cf
smtp_sasl_password_maps = static:username:password
# new main.cf
smtp_sasl_password_maps = hash:/etc/postfix/smtp_sasl_password_maps
Чтобы сгенерировать файл smtp_sasl_password_maps.db, вам необходимо создать текстовый файл со следующим:
smtp.sendgrid.net = username:password
Обратите внимание на отсутствие здесь префикса «static». Оттуда вы просто запускаете (как root):
postmap /etc/postfix/smtp_sasl_password_maps
service postfix restart
Ключевым моментом здесь является то, что если в карте паролей SASL нет совпадения имени хоста, то он продолжился. без аутентификации.
Если имя пользователя: пароль не найдены, то SMTP-клиент Postfix не будет пытаться аутентифицироваться на удаленном хосте.
Это ожидаемое поведение при использовании «статической» карты. Следуя руководству http://www.postfix.org/postconf.5.html#smtp_sasl_password_maps вам нужно настроить как минимум хеш-карту для smtp_sasl_password_maps
.
Файл хеш-карты должен содержать одну строку с
smtp.postmarkapp.com user:password
Это использует sasl только для указанного хоста.