O padrão IF corresponde à mesma linha que outros padrões entre IF e ENDIF, portanto, você não pode misturar cabeçalhos To: e From: na instrução. Veja BUGS na página man header_checks (5).
Eu tenho um aplicativo da Web em execução no Amazon AWS e ele está usando o Amazon SES para enviar e-mails. Uma das coisas que eu realmente quero que este sistema faça é poder encaminhar e-mails para determinados endereços de qualquer um que o envie, por exemplo, se alguma pessoa aleatória enviar um e-mail para [email protected], então eu quero encaminhar para o meu endereço de e-mail pessoal .
Eu tentei fazer isso com aliases, mas não funciona devido a restrições no Amazon SES que me impedem de enviar e-mails de remetentes não verificados. Funciona bem se eu enviar um e-mail para [email protected] a partir de um endereço de e-mail verificado, mas não se eu enviar um e-mail de um endereço não verificado.
Então, o que eu gostaria de tentar é reescrever os cabeçalhos De e Responder a todas as mensagens enviadas para [email protected] (e também em outros endereços, como [email protected]) . Gostaria de mover o cabeçalho De original para o cabeçalho Reply-To e, em seguida, alterar o cabeçalho De para [email protected] (ou algo assim). Por exemplo:
From: "Bruce Wayne" <[email protected]>
To: "MySite Support" <[email protected]>
se tornaria
From: "Mail Services" <[email protected]>
Reply-To: "Bruce Wayne" <[email protected]>
To: "MySite Support" <[email protected]>
Eu tenho [email protected] definido no arquivo de aliases e o transforma em meu e-mail pessoal. Não tenho certeza de como os aliases serão afetados por header_checks ou o que for necessário para resolver isso.
Existe também um apelido catchall que envia outros e-mails para minha aplicação web, então todo este material de reescrita de cabeçalho é realmente algo que eu só preciso / quero para endereços muito específicos, conforme descrito acima.
Reescrever um único cabeçalho usando regexp parece bastante simples, mas as coisas que não tenho certeza aqui são
Alguém pode me dar algumas dicas sobre como lidar com esses dois problemas? Ou se eu estou olhando para este problema da maneira errada, qualquer direção seria muito apreciada.
UPDATE - De alguma forma eu perdi que existem instruções if / endif em header_checks. Estou tentando fazer algo assim, mas minhas verificações de cabeçalho não parecem estar fazendo nada:
if /^To: ([email protected]|[email protected])/
/^From:(.+@.+).*$/ PREPEND Reply-To:$1
/^From:(.+@.+).*$/ REPLACE From: [email protected]
endif
Eu adicionei a seguinte linha ao main.cf:
header_checks = pcre:/etc/postfix/header_checks
Não está claro se devo postar este arquivo. Eu tentei os dois fazendo e não fazendo isso e não fez diferença.
Existe algo óbvio que estou fazendo errado aqui?
O padrão IF corresponde à mesma linha que outros padrões entre IF e ENDIF, portanto, você não pode misturar cabeçalhos To: e From: na instrução. Veja BUGS na página man header_checks (5).
Embora eu não tenha testado sua configuração específica, tenho certeza que o To regex deve corresponder ao cabeçalho completo. Ou seja, parece que você está correspondendo apenas ao caso em que há um endereço de e-mail simples. Se você quer corresponder 'To: "MySite Support" <[email protected]>'
, então você terá que usar:
if /^To:.*([email protected]|[email protected])/
ou algo mais complicado que exclui "[email protected]" e tal.