configuração exim4 com daemon do SRS

3

Estou lutando para configurar o exim 4 com um daemon SRS externo (srs do pacote Debian). O srsd está executando e convertendo endereços de volta e encaminhar muito bem. Eu não posso usar o código srs do exim, já que ele não está habilitado no Debian (sei que eu posso me compilar, mas não é uma opção).

O que tenho com problemas é o roteador srs_forward no exim para adicionar tags SRS aos emails encaminhados. Eu tenho o roteador de redirecionamento a seguir, que deve ser executado apenas para mensagens que não sejam de erro de remetentes não locais e destinatários não locais, que não são retransmitidos para outro mx - pelo menos eu entendo que o srs seja aplicado a essas mensagens. Por favor, corrija-me, se isso estiver errado. Eu tenho o seguinte código:

srs_forward:
  debug_print = "R: srs_forward for $local_part@$domain"
  driver = redirect
  senders = ! :
  condition = ${if ! match_domain{$sender_address_domain}{+local_domains}}
  domains = ! +local_domains : ! +relay_to_domains
  address_data = ${readsocket{/tmp/srsd}\
                {FORWARD $sender_address_local_part@$sender_address_domain $domain\n}\
                                        {5s}{\n}{:defer: SRS daemon failure}}
  errors_to = ${quote_local_part:${local_part:$address_data}}@${domain:$address_data}
  data = ${quote_local_part:$local_part}@$domain
  headers_add = X-SRS: Sender address rewritten from $sender_address to ${quote_local_part:${local_part:$address_data}}@$$
  repeat_use = false
  allow_defer
  no_verify

O que eu pude testar e funciona: O caminho de retorno é gerado corretamente (linhas com endereço_dados e erros_para, assim como o endereço no endereço (linha que inicia com os dados).

Não tenho certeza sobre as pré-condições:

senders = ! : 

Esta linha deve impedir que o roteador seja executado para mensagens de erro.

condition = ${if ! match_domain{$sender_address_domain}{+local_domains}}

Esta linha deve impedir que o roteador seja executado por mensagens de remetentes locais.

domains = ! +local_domains : ! +relay_to_domains

Esta linha deve impedir que o roteador seja executado para mensagens para destinatários locais ou para mensagens retransmitidas.

Alguém poderia, por favor, esclarecer?

(Eu usei um manual como ponto de partida, embora sem sucesso.

    
por Adrian Zaugg 14.10.2015 / 23:16

1 resposta

0

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!

    
por 04.12.2015 / 16:00