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).