Baseado neste thread na lista de discussão postfix: transporte diferente para todos os emails introduzidos via sendmail (1) , parece que o seu caso foi possível. Infelizmente você não pode confiar apenas em duas tabelas sender_dependent_relayhost_maps e smtp_sasl_password_maps . Você precisa modificar master.cf . A ideia é usar header_checks para rotear e-mail para diferentes transportes. Em seguida, em cada transporte, definimos o cliente smtp que usa credenciais independentes e relayhost.
Primeiro defina header_checks no main.cf e em sua tabela pcre
#main.cf
header_checks = pcre:/etc/postfix/header_dependent_relay
#/etc/postfix/header_dependent_relay
/^From:.*specialsender1\@example\.com/ smtp1:[host1.example.com]
/^From:.*specialsender2\@example\.com/ smtp2:[host2.example.com]
/^From:.*specialsender3\@example\.com/ smtp3:[host3.example.com]
Bom, agora configuramos smtp1 , smtp2 , smtp3 transport em master.cf
#master.cf
smtp1 unix - - - - 10 smtp
-o smtp_sasl_password_maps=hash:/etc/postfix/smtp1.relay
smtp2 unix - - - - 10 smtp
-o smtp_sasl_password_maps=hash:/etc/postfix/smtp2.relay
smtp3 unix - - - - 10 smtp
-o smtp_sasl_password_maps=hash:/etc/postfix/smtp3.relay
O arquivo smtpX.relay tem conteúdo semelhante, por exemplo,
[hostX.example.com] userX:passwordX
Aviso:
- A tabela de hash de
smtp_sasl_password_mapsé apenas por exemplo. Você pode substituí-lo com a tabela mysql. - Você também pode substituir a tabela pcre de header_checks pela combinação de SELECT e REGEXP no MySQL. Mas pode matar seu banco de dados como o postfix atingirá o MySQL para todas as linhas de cabeçalho