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 / 1113809
Accepted
HippoMan
HippoMan
Asked: 2022-10-24 10:31:11 +0800 CST2022-10-24 10:31:11 +0800 CST 2022-10-24 10:31:11 +0800 CST

postfix: ignorando condicionalmente certos erros "Usuário desconhecido na tabela de caixa de correio virtual" ao usar um milter

  • 772

Nota: Eu postei originalmente esta pergunta no Unix/Linux StackExchange, mas depois de uma semana, não houve respostas. Vejo mais discussões relacionadas ao postfix aqui e, por isso, votei para fechar a versão do StackExchange da minha pergunta e movi minha pergunta aqui.

Estou correndo postfix version 2.93sob Debian 8, e estou tentando realizar algo incomum.

Eu tenho usado um milter caseiro por anos que está funcionando bem. Ele executa vários testes em cada estágio da caixa de diálogo SMTP: ehlo, mail from, rcpt to, etc .

Eu configurei postfixpara fazer sua verificação padrão para "Usuário desconhecido na tabela de caixa de correio virtual", e isso também está funcionando como deveria.

No entanto ...

Em alguns casos raros, gostaria de interceptar a mensagem recebida durante o rcpt toestágio, antes postfix de determinar "Usuário desconhecido na tabela de caixa de correio virtual", e se essas mensagens vierem de um pequeno grupo de determinados remetentes selecionados e forem endereçadas a um pequeno grupo de nomes de destinatários desconhecidos específicos , quero processá-los de maneira diferente do normal por meio dessa etapa milter.

Há informações suficientes disponíveis durante a rcpt toetapa de milter para realizar esse processamento especial, mas, infelizmente, o processamento "Usuário desconhecido na tabela de caixa de correio virtual" postfixjá rejeita mensagens para usuários desconhecidos antes que a rcpt toetapa de milter seja chamada e, portanto, essa etapa de milter nunca recebe realizado.

Existe uma maneira de configurar postfixpara rejeitar apenas mensagens com "Usuário desconhecido na tabela de caixa de correio virtual" se o nome do remetente não corresponder a determinados padrões especiais?

Nesse caso, postfixpoderia continuar a rejeitar automaticamente mensagens para a maioria dos usuários desconhecidos e, então, passar apenas aquelas mensagens raras e especiais para o milter para que fossem tratadas durante a rcpt toetapa.

Eu sei que eu poderia desabilitar completamente os postfixtestes de destinatário desconhecido e, em seguida, gerenciar isso sozinho durante minha rcpt toetapa de milter para todas as mensagens recebidas. No entanto, se possível, gostaria de evitar isso e de alguma forma dizer postfixpara rejeitar condicionalmente a maioria das mensagens para usuários desconhecidos e passar apenas um pequeno subconjunto dessas mensagens recebidas de remetentes especiais para o processamento milter.

Não estou otimista sobre isso ser possível sob o postfix, mas talvez um ou mais de vocês conheçam uma maneira de realizar essa tarefa incomum.

Muito obrigado por quaisquer pensamentos e sugestões.

postfix filtering
  • 1 1 respostas
  • 54 Views

1 respostas

  • Voted
  1. Best Answer
    anx
    2022-10-24T13:44:16+08:002022-10-24T13:44:16+08:00

    O lado direito de uma check_sender_accesspesquisa em uma smtpd_*_restrictionslista pode, por sua vez, conter restrições condicionais nomeadas (documentadas no arquivo RESTRICTION_CLASS_README ). Isso significa que, se o critério para rejeitar mensagens para destinatários desconhecidos for exclusivamente‡ dependente do rfc5321.MailFrom ("envelope remetente"), mover a reject_unverified_recipientinstrução da smtpd_*_restrictionsprópria lista para uma pesquisa dependente do remetente deve resolver o problema:

    # OLD (example, you get the idea)
    smtpd_recipients_restrictions =
        reject_unauth_destination,
        reject_unknown_recipient_domain,
        reject_unverified_recipient
    
    # NEW (just a single replacement, adapt to your OLD version)
    smtpd_recipients_restrictions =
        reject_unauth_destination,
        reject_unknown_recipient_domain,
        check_sender_access pcre:/etc/postfix/maps/no-recipient-lookups.pcre
    
    # /etc/postfix/maps/no-recipient-lookups.pcre
    /.*@example.org/   DUNNO
    /./                reject_unverified_recipient
    

    Para cada remetente listado (ou qualquer outra check_*_accesscondição única), isso ignora a pergunta "Este destinatário existe?" cheque e, para todos os outros remetentes, ele aplicará essa verificação.

    Agora, todo esse exercício praticamente só faz sentido se você posteriormente rejeitar incondicionalmente quaisquer mensagens que recebam esse tratamento especial, porque o que o postfix vai fazer com as mensagens ele já deveria ter verificado anteriormente que não será capaz de entregá-las. Você nunca deve emitir relatórios de falha na entrega nos casos em que as rejeições do estágio SMTP seriam possíveis. Se o seu milter precisar apenas dos cabeçalhos das mensagens (como sugere o seu caso de uso de investigação de abusos) você poderá garantir isso adicionando a restrição incondicional também na smtpd_end_of_data_restrictionslista (esperando pequenas implicações de desempenho no caso desta segunda pesquisa competir com a verificação de endereço processo).


    ‡ Caso contrário, você pode implementar a decisão de se o caso especial é aplicável em a check_policy_service, o que permite decisões mais complexas do que uma pesquisa simples (ou regex) no remetente, por exemplo, você pode analisar o rfc5322.From (cabeçalhos indicando remetente) lá. A única diferença é que, em vez de escrever duas linhas de no-recipient-lookups.pcrearquivo, você precisa escrever/adaptar e executar um daemon de política que retorna o reject_unverified_recipientresultado, análogo a como seu Milter atualmente retorna códigos de status SMTP.

    • 0

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