Postfix: altere o remetente em mensagens na fila

8

Após uma reinstalação completa, tivemos um problema com a configuração: o endereço do remetente estava errado e alguns destinatários (servidores de e-mail) os rejeitaram.

Portanto, há vários e-mails presos na fila do Postfix.

Idealmente, uma alteração do endereço do remetente diretamente nos emails enfileirados e, em seguida, a liberação da fila seria ideal.

Eu tentei esta resposta que resolve esse problema. Mas as mensagens não parecem ser facilmente modificáveis na versão que tenho (2.11.0).

Por exemplo, não há /var/spool/mqueue dir, mas /var/spool/postfix/...

active
bounce
corrupt
defer
deferred
dev
etc
flush
hold
incoming
lib
maildrop
pid
private
public
saved
trace
usr

e o diretório de interesse é deferred . Eu tentei modificar alguns arquivos lá mudando o domínio errado com o correto (e tive o cuidado de garantir que apenas aqueles fossem alterados).

Mas então, esses e-mails foram movidos para corrupt , o que significa que uma simples mudança de texto parece não funcionar (feita com vi ).

Alguma outra maneira mais limpa de alterar o remetente em emails enfileirados?

    
por Ring Ø 22.08.2014 / 04:28

1 resposta

17

I tried this answer that addresses this very problem. But messages don't seem to be easily modifiable in the version I have (2.11.0).

For instance there is no /var/spool/mqueue dir, but, instead, /var/spool/postfix/...

Eu quero esclarecer duas coisas.

  • Primeiro, essa resposta foi aplicada ao sendmail NOT postfix.
  • Segundo, os arquivos de fila direta de manipulação direta não eram suportados.

Então, você tem várias opções aqui

1. Parâmetro smtp_generic_maps

Esta resposta inspirada por este excelente resposta . Ele irá reescrever o endereço antigo para o novo endereço automaticamente. Você pode definir o arquivo para mapear o endereço antigo para o novo endereço.

/etc/postfix/main.cf:
    smtp_generic_maps = hash:/etc/postfix/generic

/etc/postfix/generic:
    [email protected]       [email protected]

Não se esqueça de postmap /etc/postfix/generic e executar postfix reload

  • Upside: Você não precisa reenfilizar a mensagem
  • No lado negativo: o Postfix reescreve o endereço remetente e destinatário correspondente a [email protected] .

2. sender_canonical_address

Para superar a desvantagem da primeira opção, você pode usar sender_canonical_maps . Esta solução é baseada na sugestão do autor do postfix . Igual à primeira opção, você pode definir o arquivo para mapear o endereço antigo para o novo endereço.

/etc/postfix/main.cf:
    sender_canonical_maps = hash:/etc/postfix/sender_canonical

/etc/postfix/sender_canonical:
    [email protected]       [email protected]

Execute postmap /etc/postfix/sender_canonical e, em seguida, execute postfix reload . Devido ao fluxo da fila de postfix, você deve enfileirar novamente a fila afetada com o comando postsuper -r queueid

  • Upside: o postfix não reescreve o endereço do destinatário.
  • Desvantagem: você deve re-filmar todas as mensagens afetadas. Mas você pode re-filmar tudo deferido com um único comando postsuper -r ALL deferred

3. manipulação direta da fila postfix

Isso é uma maneira antiga e manual de modificar a fila para processamento avançado. Essa resposta veio das listas de usuários postfix-users

Em suma

  • Fila de extração

    # postsuper -h queueid
    # postcat -qbh queueid > tempfile.eml
    # vi tempfile.eml
    
  • Reenviar fila e excluir fila antiga

    # sendmail -f $sender $recipient < tempfile.eml
    # postsuper -d queueid
    

Para documentação do comando acima, consulte esta página

Nota:
Solução original das listas de usuários postfix-users , use postcat -q queueid >tempfile para extrair a fila. Este comando irá extrair o cabeçalho, corpo e meta-informação da fila. Como apontado Azendale abaixo , sendmail se recusará a enviar este e-mail mal-formado devido a meta-informação.

O uso do parâmetro -bh além do parâmetro q fará com que o postcat filtre a saída somente para o cabeçalho e o corpo, não incluindo a meta-informação. Um benefício colateral disso é que o arquivo temporário está no formato que a maioria dos clientes de email reconhece como formato .eml, permitindo que você visualize a mensagem resultante (editada).

    
por 22.08.2014 / 11:35

Tags