Você não testou corretamente. Suas informações que você passa para o daemon do SRS não estão corretas:
FORWARD $sender_address_local_part@$sender_address_domain $domain\n
Isso não faz o que você deseja: $ domain contém o domínio do destinatário e não o domínio de envio. Sua intenção de reescrever o caminho de retorno para o domínio para o qual a mensagem foi encaminhada é honrosa, mas não funciona assim: A mensagem atinge seu roteador SRS após o encaminhamento já ter sido feito, então $ domainn não contém mais o domínio para o qual a mensagem foi enviada. Você deve usar $ primary_hostname ou $ original_domain. Então, essa linha deve se parecer com:
address_data = ${readsocket{/tmp/srsd}\
{FORWARD $sender_address_local_part@$sender_address_domain $original_domain\n}\
{5s}{\n}{:defer: SRS daemon failure}}
No que diz respeito às suas pré-condições, elas estão bem. Você pode pegar as linhas "remetentes" e "condição" juntas:
senders = ! : ! *@+local_domains
Você só precisa ter certeza de que a domainlist local_domains realmente contém todos os seus domínios locais (pelo menos ele deve conter para a mensagem roteada atualmente $ original_domain e $ sender_address_domain).
Por favor, documente sua configuração se seu código está rodando e nos dê algumas dicas aqui. Você precisa organizar várias coisas mais: ACLs para verificar as mensagens de devolução marcadas SRS, desmarcar as mensagens marcadas com SRS para greylisting, untag bounces, certificando-se de não adicionar outras tags como BATV às mensagens de saída, contornar para aceitar mensagens marcadas SRS com um caso esmagado, reescrever o texto da mensagem de erro de rejeição para não incluir o endereço do remetente marcado com SRS, talvez negar quaisquer rejeições não marcadas, etc. Portanto, um bom tutorial seria apreciado. Thanx!