Exim: altere o endereço do remetente ao enviar e-mails da rede local


8

Temos uma configuração de exim funcionando em um site, onde os usuários podem enviar e receber e-mails. Estamos tentando configurar um servidor para enviar alguns avisos e erros usando o email para um endereço que esteja fora da rede local.

O problema é:

O programa que envia os e-mails os envia usando o nome de usuário em que é executado e o nome do host local do servidor. Isso faz com que os emails tenham um remetente no formato: myapp@myserver.mydomain. O Exim envia esses e-mails para o servidor SMTP do ISP, que rejeita os e-mails porque eles têm um remetente ilegal ou não verificável (o endereço interno).

Estou pensando em configurar o exim para reescrever o remetente quando:

  • o domínio do remetente está na rede local
  • O domínio do receptor está fora da rede local

Tentei definir algum tipo de reescrita na configuração do exim, mas não consegui fazê-la funcionar. Mostraria o que tentei, mas fiquei sem tempo na última visita ao site e tive que voltar à versão original, perdendo todas as alterações que tentei.

Respostas:


9
begin rewrite
myapp@myserver.mydomain   legal.user@myserver.mydomain   SFfrs

As bandeiras têm os seguintes significados:

  1. S - Faça toda a reescrita no horário SMTP. Isso significa que todos os seguintes sinalizadores são executados imediatamente à medida que os dados aos quais eles se aplicam são recebidos, e não são adiados até mais tarde.
  2. F - Reescreva o envelope do campo.
  3. f - Reescreva o campo de cabeçalho De:.
  4. r - Reescreva o campo de cabeçalho Responder para:.
  5. s - Reescreva o campo de cabeçalho Remetente Para:.

Leia o capítulo 31 da especificação Exim para obter mais detalhes sobre a reescrita de mensagens.


1
É assim que eu comecei a trabalhar, exceto: Tem que haver um ^no início da regra, como Sexcepts um regexp
Esa Varemo

1
s deve ser " Sender:" cabeçalho não " Sender-To:" (E é uma muito pequena mudança para editar o post)
Gert van den Berg

11

O arquivo /etc/email-addressesdeve lidar com o problema. Esta é uma parte padrão da distribuição Exim. Você precisará configurar um registro para cada usuário local que envia email.

Tente uma linha para /etc/email-addressesgostar:

 myapp:   donotreply@example.com

No seu servidor MX, adicione um alias como:

 donotreply:    :blackhole:

Use um Reply-to:cabeçalho para permitir que o destinatário responda à mensagem.

O arquivo /etc/email-addressesé usado com o seguinte código de reescrita, que deve estar no início da rewriteseção do arquivo de configuração.

*@+local_domains "${lookup{${local_part}}lsearch{/etc/email-addresses}\
                  {$value}fail}" Ffrs

/etc/email-addressesnão existe no meu servidor. Posso apenas criá-lo ou isso indica que algo está faltando?
Esa Varemo

@EsaVaremo email-addressesVerifique o seu arquivo de configuração ou verifique a seção de reescrita. É possível que isso não tenha sido configurado em sua distribuição.
BillThor

Eu tentei grep, locatee olhou por alguns man-pages, mas não encontrou nada. O arquivo deve ser definido em exim.conf?
Esa Varemo 26/10/2013

@EsaVaremo A linha no final da minha resposta deve estar na seção de reescrita de exim.conf. Se estiver faltando, adicione-o. Verifique se a variável local_domainsinclui seu domínio.
BillThor

Notei sua edição um tempo depois de fazer meu último comentário. Por qualquer motivo, não consegui que isso funcionasse, então fui com a outra resposta, pois estava ficando sem tempo. Eu não tenho dúvida de que isso é certo, eu propably apenas tinha digitado errado / configurado alguma coisa ...
Esa Varemo

1

/etc/email-addressesé útil quando você só precisa associar um endereço de email por nome de usuário. No entanto, se o usuário precisar enviar e-mails com vários endereços, será necessário modificar /etc/email-addressescada vez e, inevitavelmente, você acabará usando o endereço errado.

Outra abordagem é enviar o email usando o exim4comando e sua -fopção:

$ cat email|/usr/sbin/exim4 -f myapp@example.com recipient@example.com

Observe que, para que a -fopção funcione, é necessário que o usuário esteja nos usuários confiáveis ​​do exim ou exim para aceitá-lo como remetente não confiável permitido.

No meu caso, o último era o padrão, graças a este curinga em /etc/exim4/conf.d/main/02_exim4-config_options :

untrusted_set_sender = *

A outra solução é adicionar a seguinte linha /etc/exim4/conf.d/main/00_local_settings(assumindo a configuração de divisão do exim e criá-la se ela já não existir):

MAIN_TRUSTED_USERS = yourusername

Ambas as opções precisam ser recarregadas da configuração do exim. Debian:

# dpkg-reconfigure exim4-config
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.