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