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:
[email protected] [email protected]
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
[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 . 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:
[email protected] [email protected]
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.qbh
para fazê-la funcionar. Adicionando a explicação na resposta atualizado ... :)Greate writeup. Eu tive um problema com um servidor de email que estava em execução há alguns dias com configuração incorreta e, portanto, havia muitas filas que precisavam ser reenviadas com o novo destinatário. Então eu criei dois liners para percorrer todas as filas:
Primeiro, encontre todas as filas, coloque-as em espera, salve-as como arquivos .eml e reenvie-as:
Segundo para excluir as filas:
Lembre-se de verificar se não há novas filas que não estão em espera antes de executar este último código. Faça isso emitindo isso e procure os IDs da fila sem um '!' no fim:
O On podia facilmente colocar esses dois liners em um, mas senti que tinha mais controle verificando se os e-mails eram realmente recebidos antes de excluir as filas.
fonte