AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1169632
Accepted
FireyFly
FireyFly
Asked: 2024-12-31 07:56:57 +0800 CST2024-12-31 07:56:57 +0800 CST 2024-12-31 07:56:57 +0800 CST

Serviço de filtro de conteúdo Postfix reconhecendo-o como retransmissão

  • 772

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.

ubuntu
  • 1 1 respostas
  • 45 Views

1 respostas

  • Voted
  1. Best Answer
    FireyFly
    2025-01-03T02:50:16+08:002025-01-03T02:50:16+08:00

    No final das contas, resolvi meu problema fazendo:

    smtp      inet  n       -       -       -       -       smtpd
      -o content_filter=piperelay
      -o receive_override_options=no_address_mappings
    piperelay unix - n n - - pipe
      flags=Rq user=filteruser argv=/usr/bin/php8.2 /etc/postfix/scripts/modify_header.php
    

    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.

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve