Eu tentei esta resposta que aborda esse mesmo 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, em vez disso, / var / spool / postfix / ...
Eu quero esclarecer duas coisas.
- Primeiro, essa resposta foi aplicada ao sendmail NÃO postfix.
- Segundo, os arquivos de fila bruta 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 foi inspirada por esta excelente resposta . Ele 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:
account@localdomain.example.com account@example.com
Não se esqueça de postmap /etc/postfix/generic
correrpostfix reload
- De cabeça para baixo : você não precisa reencaminhar a mensagem
- Desvantagem: o Postfix reescreverá o endereço do remetente e do destinatário correspondente
account@localdomain.example.com
.
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 . Assim como na 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:
account@localdomain.example.com account@example.com
Execute, em postmap /etc/postfix/sender_canonical
seguida, execute postfix reload
. Devido ao fluxo da fila de postfix, você deve refazer a fila da fila afetada com o comandopostsuper -r queueid
- De cabeça para baixo : o Postfix não reescreve o endereço do destinatário.
- Desvantagem: você deve enfileirar todas as mensagens afetadas. Mas você pode enfileirar todos os adiados com um único comando
postsuper -r ALL deferred
3. manipulação direta da fila de postfix
Esta é uma maneira manual antiga de modificar a fila para processamento avançado. Esta resposta veio das listas de discussão dos usuários do postfix
Em resumo
Fila de extração
# postsuper -h queueid
# postcat -qbh queueid > tempfile.eml
# vi tempfile.eml
Reenvie a fila e exclua a fila antiga
# sendmail -f $sender $recipient < tempfile.eml
# postsuper -d queueid
Para documentação do comando acima, consulte esta página
Nota: A
solução original das listas de discussão de usuários do postfix usa postcat -q queueid >tempfile
para extrair a fila. Este comando extrairá o cabeçalho, o corpo e as meta-informações da fila. Como apontou Azendale abaixo , sendmail
se recusará a enviar este e-mail incorreto devido a metainformações .
O uso do -bh
parâmetro além do q
parâmetro fará com que o postcat filtre a saída apenas no cabeçalho e no corpo, sem incluir as meta-informações. Um benefício colateral disso é o tempfile no formato que a maioria dos clientes de email reconhece como formato .eml, permitindo visualizar a mensagem resultante (editada).
postcat -qbh queueid >tempfile
. (Benefício secundário: ele está no formato .eml.) Se eu apenas usasse-q
, parecia não fazer nada quando executei o sendmail. Postfix versão 2.8.4. alguém pode confirmar isso? Nesse caso, vamos editar esta resposta.