В настоящее время у меня настроен постфикс, чтобы все пользователи получали ретрансляцию с локальной машины, за исключением один пользователь который передается через Gmail. Для этого я добавил следующую конфигурацию:
/etc/postfix/main.cf
# default options to allow relay via gmail
smtp_use_tls=yes
smtp_sasl_auth_enable = yes
smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt
smtp_sasl_security_options = noanonymous
# map the relayhosts according to user
sender_dependent_relayhost_maps = hash:/etc/postfix/relayhost_maps
# keep a list of user and passwords
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
/ и т.д. / постфикс / relayhost_maps
user-one@localhost [smtp.gmail.com]:587
/ и т.д. / постфикс / sasl_passwd
[smtp.gmail.com]:587 user-one-at-google@gmail.com:user-one-pass-at-google
Я знаю, что могу сопоставить нескольких пользователей с несколькими паролями с помощью smtp_sasl_password_maps, но это будет означать, что все ретрансляции будут выполняться через gmail, где я специально хочу, чтобы все ретрансляции выполнялись локальным хостом, за исключением некоторых пользователей.
Теперь я хотел бы иметь реле user-two @ localhost (etc) через google с их собственными паролями. Это возможно?
Установить параметр smtp_sender_dependent_authentication к да. Затем вы можете использовать адрес отправителя пользователя в качестве ключа поиска для smtp_sasl_password_maps
.
Ссылки: официальная документация и эта страница
На практике вам нужно просто изменить ключ в вашем sasl_passwd
на основе пользователя. В соответствии с вашим примером просто добавьте обоих пользователей в relayhost_maps
файл и измените следующий файл:
/ и т.д. / постфикс / sasl_passwd
user-one@localhost user-one-at-google@gmail.com:user-one-pass-at-google
user-two@localhost user-two-at-google@gmail.com:user-two-pass-at-google