configuração exim4 com daemon SRS

configuração exim4 com daemon SRS

Estou tendo dificuldades para configurar o exim 4 com um daemon SRS externo (pacote Debian srs). O srsd está rodando e convertendo endereços de volta e para frente perfeitamente. Não posso usar o código srs integrado do exim, pois ele não está habilitado no Debian (sei que posso me compilar, mas não é uma opção).

O que estou tendo problemas é com o roteador srs_forward no exim para adicionar tags SRS aos e-mails encaminhados. Eu tenho o seguinte roteador de redirecionamento instalado, que deve ser executado apenas para mensagens sem erro de remetentes e destinatários não locais, que não são retransmitidas para outro mx - pelo menos eu entendo que o srs deve ser 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 pude testar e funciona: O caminho de retorno é gerado corretamente (linhas com endereço_data e erros_to, bem como o endereço to (linha começando com dados).

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

senders = ! : 

Esta linha deve impedir que o roteador execute mensagens de erro.

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

Esta linha deve impedir que o roteador execute 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 esclarecer?

(usei ummanualcomo ponto de partida, embora sem sucesso.)

Responder1

Você não testou corretamente. As informações que você passa para o daemon 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 do remetente. Sua intenção de reescrever o caminho de retorno para o domínio pelo qual a mensagem foi encaminhada é honrosa, mas não funciona assim: A mensagem atinge seu roteador SRSdepoiso encaminhamento já foi feito, então $domain 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 esta linha deve ficar assim:

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 juntar as linhas "remetentes" e "condição":

senders = ! : ! *@+local_domains

Você só precisa ter certeza de que a lista de domínios local_domains realmente contém todos os seus domínios locais (pelo menos deve conter para a mensagem atualmente roteada $original_domain e $sender_address_domain).

Documente sua configuração se seu código estiver em execução e dê-nos algumas dicas aqui. Você precisa organizar mais algumas coisas: ACLs para verificar mensagens de devolução marcadas com SRS recebidas, desmarcar e-mails marcados com SRS para lista cinza, desmarcar devoluções, certificando-se de não adicionar outras tags como BATV às mensagens de saída, contornar para aceitar mensagens marcadas com SRS com um caso quebrado, reescreva o texto da mensagem de erro de devolução para não incluir o endereço do remetente marcado com SRS, talvez negue qualquer devolução não marcada, etc. Obrigado!

informação relacionada