Como posso remover ou reescrever o nome do remetente de um endereço de quando estiver usando o postfix?

1

Objetivo

Estou tentando configurar um sistema do CentOS 7 para que todos os e-mails enviados para contas do sistema local sejam redirecionados para um endereço de e-mail alternativo. Por exemplo, se o email for enviado para root , eu quero que ele seja redirecionado para [email protected] .

Eu tenho uma configuração que funciona principalmente usando postfix, mapas genéricos e aliases. Se a configuração completa que estou usando ajudará, peça e modificarei a pergunta para incluí-la.

Se houver uma maneira melhor de realizar meu objetivo, por favor, me diga. Eu preferiria ficar com o postfix, mas apenas porque é o MTA padrão no CentOS.

Problema

Estou tentando configurar o postfix como um host inteligente para que eu possa retransmitir mensagens por meio de uma conta do ZOHO. No entanto, o ZOHO é extremamente exigente quanto ao formato do endereço de origem.

Quando tento enviar e-mails com um endereço de remetente semelhante a este, funciona:

[email protected]

No entanto, quando tento enviar e-mails com um endereço de remetente assim, ele falha:

[email protected] (Ryan)

Exemplos

Abaixo, 4 exemplos são enviados usando a mesma configuração de postfix.

Permitido

Eu uso este comando:

mail -r "[email protected]" -s "Testing." root <<< "Test to root."

... e veja isso em maillog (eu reduzi a mensagem e a reformatei para torná-la um pouco mais legível):

CD9FA29D20: from=<[email protected]>
CD9FA29D20: to=<[email protected]>,
    orig_to=<root>,
    relay=smtp.zoho.com[74.201.154.90]:587,
    delay=2.4,
    delays=0/0.02/1.7/0.66, dsn=2.0.0,
    status=sent (250 Message received)

Permitido

Eu uso este comando:

mail -r "Ryan <[email protected]>" -s "Testing." root <<< "Test to root."

... e veja isso em maillog (eu reduzi a mensagem e a reformatei para torná-la um pouco mais legível):

936C929D20: from=<[email protected]>
936C929D20: to=<[email protected]>,
    orig_to=<root>,
    relay=smtp.zoho.com[74.201.154.90]:587,
    delay=2.3,
    delays=0/0.03/1.6/0.7,
    dsn=2.0.0,
    status=sent (250 Message received)

Reencaminhamento negado

Eu uso este comando:

mail -r "[email protected] (Ryan)" -s "Testing." root <<< "Test to root."

... e veja isso em maillog (eu reduzi a mensagem e a reformatei para torná-la um pouco mais legível):

D57C529D20: from=<[email protected]>
D57C529D20: to=<[email protected]>,
    orig_to=<root>,
    relay=smtp.zoho.com[74.201.154.90]:587,
    delay=2,
    delays=0.01/0/1.4/0.64,
    dsn=5.0.0,
    status=bounced (host smtp.zoho.com[74.201.154.90] said:
        553 Relaying disallowed as [email protected] (Ryan) (in reply to end of DATA command))

Reencaminhamento negado

Eu uso este comando:

mail -s "Testing." root <<< "Test to root."

... e veja isso em maillog (eu reduzi a mensagem e a reformatei para torná-la um pouco mais legível):

9CFE629D20: from=<[email protected]>
9CFE629D20: to=<[email protected]>,
    orig_to=<root>,
    relay=smtp.zoho.com[74.201.154.90]:587,
    delay=2,
    delays=0/0.02/1.4/0.6,
    dsn=5.0.0,
    status=bounced (host smtp.zoho.com[74.201.154.90] said:
        553 Relaying disallowed as [email protected] (Ryan) (in reply to end of DATA command))

Pergunta

É o último exemplo com o qual estou tendo problemas, já que o padrão quando não incluir explicitamente o endereço é escrever o endereço de uma forma que o ZOHO rejeitará.

É possível ter uma faixa do postfix ou reescrever o nome de uma pessoa ao reescrever um endereço de remetente? Há uma pergunta semelhante a aqui , mas não realiza o que eu quero. Não quero depender da alteração das configurações da conta do usuário para garantir que meu e-mail não seja devolvido.

    
por Ryan J 29.08.2015 / 19:18

2 respostas

1

A chave para resolver isso é entender como o processo postfix cleanup manipula informações de cabeçalho ausentes. Na página man de limpeza:

The cleanup(8) daemon always performs the following transformations:

   o      Insert missing  message  headers:  (Resent-)  From:,  To:,  Mes-
          sage-Id:, and Date:.

Uma antiga postagem na lista dá uma dica sobre a formatação da% inseridaFrom headers:

The defaults are:

MAIL FROM address = UNIX login name
FROM: header = UNIX login name (GECOS information)

Como são as informações do cabeçalho que precisam ser alteradas ou reformatadas, usar header_checks do postfix parece ser a solução óbvia. No entanto, isso não funciona. Ao ler a página do manual header_checks , há outra dica na seção BUGS .

Message headers added by the cleanup(8) daemon itself are excluded from
inspection.  Examples  of  such  message  headers  are From:, To:, Mes-
sage-ID:, Date:.

outro tópico da lista de discussão com alguém tentando resolver o mesmo problema e eles acabam usando smtp_header_checks . Não há muita documentação para smtp_header_checks , mas, como o processamento é aplicado quando o correio é entregue via SMTP, ele pode ser usado para reescrever o From cabeçalho adicionado por cleanup .

Veja um exemplo de uma configuração /etc/postfix/smtp_header_checks que alterará o endereço From (cabeçalho) de cada mensagem de saída para LOCALHOST System <[email protected]> :

/^From:.*/ REPLACE From: LOCALHOST System <[email protected]>

Por favor, note que eu não sou um especialista em regex, então você pode querer testar seu próprio regex em vez de confiar no que está acima.

Depois de adicionar smtp_header_checks , a seguinte opção de configuração deve ser adicionada ao /etc/postfix/main.cf :

smtp_header_checks = pcre:/etc/postfix/smtp_header_checks

Em seguida, recarregue a configuração do postfix (assumindo systemd ) e envie uma mensagem de teste:

sudo systemctl reload postfix
sendmail [email protected] << EOF
Subject: Test email to root.

Testing.
EOF
    
por 24.09.2015 / 08:28
3

É bastante comum que os servidores de e-mail exijam um endereço de e-mail válido e rejeitem os inválidos.

 [email protected] (Ryan)

não é um endereço de e-mail válido. A entrada da wikipedia tem alguns indicadores úteis, bem como referências aos RFCs relevantes.

Na prática, você usa um endereço de e-mail simples:

[email protected]

ou qualquer nome de exibição seguido por uma caixa de correio entre < > como:

Ryan <[email protected]> 
    
por 29.08.2015 / 19:37