Depois de cerca de 30 horas quase batendo a cabeça nas paredes, tive que chegar à conclusão de que é melhor escrever para pessoas que podem ser mais versadas no assunto.
Tenho um servidor Digitalocean usando Ubuntu 22.
Sim, eu sei que a Digitalocean não suporta o envio de e-mails e coisas do tipo, mas estou usando o Postfix apenas como um servidor de retransmissão simples, nada mais.
Basicamente, estou usando o Amazon SES neste momento, para enviar um e-mail para ex: " [email protected] ". Tenho vários domínios que precisam ser manipulados, não apenas um, e todas as configurações desses domínios (DNS) estão corretamente definidas apontando para o servidor. Na verdade, estava funcionando antes com o brevo, mas devo ter tido alguma configuração incorreta, porque eles suspenderam aleatoriamente a conta por violação de TOS, o que, é claro, não foi dado com nenhuma razão, além de "desculpe, você está suspenso".
Suspeito que eu estava retransmitindo endereços "De:" diretamente dos remetentes, e eles pensaram que alguém assumiu o controle da conta ou algo assim, o que é justo.
De qualquer forma... Agora que descrevi a configuração básica e as circunstâncias. O problema é que tenho um filtro configurado, o que é absolutamente crucial para fazer isso funcionar, e parece que se eu fizer um serviço content_filter personalizado em master.cf:
shell_content_filter unix - n n - - pipe
flags=Rq user=filteruser argv=/usr/local/bin/minimal_filter.sh
Esta é a parte do log onde podemos ver o problema:
"relay=shell_content_filter, delay=0.04, delays=0.01/0/0/0.02, dsn=2.0.0, status=sent (delivered via shell_content_filter service"
E em main.cf:
content_filter = shell_content_filter
receive_override_options = no_address_mappings
Sim, um "filteruser" foi criado e sim, ele funciona corretamente, todas as permissões estão definidas corretamente e testadas, tudo está funcionando bem, mas meu filtro está sendo reconhecido como um retransmissor e está literalmente dizendo que os e-mails estão sendo entregues por um serviço externo, o que não faz sentido... para mim, pelo menos.
Não tenho certeza se essas informações são suficientes. Eu realmente agradeceria se alguém soubesse o que está acontecendo, porque estou com muitos problemas, e-mails foram perdidos, nunca mais serão recuperados e ainda não consigo fazer funcionar.
No final das contas, resolvi meu problema fazendo:
Talvez eu não tenha formulado minha pergunta original claramente, desculpe. Basicamente, eu queria ser capaz de sobrescrever a linha de endereço " From " e adicionar uma linha de cabeçalho Reply-To , mas com header_checks isso não parecia possível, então eu tive que recorrer a um milter ou a um content_filter , mas por alguma razão, nenhuma das soluções funcionou para mim que eu estava tentando enquanto procurava na internet por dias literais.
Naturalmente, também tentei consultar o GPT, pois o uso quase diariamente há anos, e ele tem algumas coisas construtivas a dizer, mas o modelo o1 é péssimo, e o modelo legado do GPT 4 resolveu meus problemas facilmente.
No final do dia, tentei não usar as "configurações globais" como em " main.cf ", mas configurei diretamente sob aquele serviço personalizado definido em " master.cf " e isso funcionou. O content_filter funcionou, e não houve mais loop infinito, o que foi um novo problema que surgiu depois, que foi resolvido pelo " -o receive_override_options=no_address_mappings ", o que foi interessante de ver, porque se eu adicionasse essa opção ao " main.cf " como uma "configuração global", não funcionaria! Só começou a funcionar depois que a adicionei diretamente sob meu comando para ser executada.
E a parte mais importante é, sim, o postfix dá ao nosso script externo (no meu caso, eu fiz um script php) os dados brutos, que podemos ler com STDIN, mas simplesmente fazer STDOUT não é o suficiente, o que NÃO ficou claro para mim. Eu tive que "enviar de volta" ou "injetar de volta" os dados de e-mail modificados para o serviço postfix usando sendmail, o que pode realmente causar loops infinitos se você não tomar cuidado. Então, basicamente, era isso que eu estava perdendo. Sim, ele trata como se o script externo fosse um "relay", portanto, o postfix não esperava que fosse apenas algo que o filtrasse e tivesse mais trabalho com ele, mas me corrija se eu estiver errado. De qualquer forma, enviei o e-mail modificado de volta com sendmail do script php e bum, tudo funcionou perfeitamente bem.
Espero que isso ajude alguém no futuro!
Desculpe se minha pergunta original não foi clara o suficiente, sou um pouco novato em fazer esse tipo de postagem.