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 / 1147667
Accepted
user2690527
user2690527
Asked: 2023-11-11 22:47:58 +0800 CST2023-11-11 22:47:58 +0800 CST 2023-11-11 22:47:58 +0800 CST

O Postfix verifica falsamente a política SPF para clientes de email autenticados e enviados

  • 772

Estou executando o Postfix 3.8.1 no Ubuntu 23.10. O Postfix atende a porta 25 para mensagens recebidas de outros MTAs e a porta 587 para MUAs autenticados.

O Postfix deve verificar o SPF para e-mails de outros MTAs na porta 25, mas não para e-mails de MUAs autenticados na porta 587. No entanto, o Postfix faz isso falsamente para MUAs autenticados e o SPF falha (porque o MUA não está listado como um servidor de e-mail permitido ).

Tenho a sensação de que o Postfix simplesmente ignora as regras especiais para MUAs, mas não encontro meu erro de configuração.

Meumaster.cnf

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (no)    (never) (100)
# ==========================================================================
smtp      inet  n       -       y       -       -       smtpd
submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o cleanup_service_name=header_cleanup
  -o smtpd_client_restrictions=$mua_client_restrictions
  -o smtpd_helo_restrictions=$mua_helo_restrictions
  -o smtpd_sender_restrictions=$mua_sender_restrictions
  -o smtpd_relay_restrictions=$mua_relay_restrictions
header_cleanup unix n   -       -       -       0       cleanup
  -o header_checks=regexp:/etc/postfix/submission_header_cleanup.cf

A ideia da configuração acima é que smtpdna porta 587 ( submission) seja utilizada alguma configuração especial.

Meumain.cf

smtpd_delay_reject = yes

smtpd_client_restrictions =
  reject_unauth_pipelining,
  reject_unknown_client_hostname
mua_client_restrictions =
  reject_unauth_pipelining

smtpd_helo_required = yes

smtpd_helo_restrictions =
  reject_invalid_helo_hostname,
  reject_non_fqdn_helo_hostname,
  reject_unknown_helo_hostname
mua_helo_restrictions =
  reject_invalid_helo_hostname

strict_rfc821_envelopes = yes

smtpd_sender_restrictions =
  reject_non_fqdn_sender,
  reject_unknown_sender_domain
mua_sender_restrictions =
  reject_non_fqdn_sender,
  reject_unknown_sender_domain
  reject_plaintext_session,
  reject_sender_login_mismatch

smtpd_relay_restrictions =
  reject_non_fqdn_recipient,
  reject_unknown_recipient_domain,
  reject_unauth_destination
mua_relay_restrictions =
  reject_non_fqdn_recipient,
  reject_unknown_recipient_domain,
  permit_sasl_authenticated,
  reject

smtpd_recipient_restrictions =
  check_policy_service unix:private/policyd-spf,
  permit

policyd-spf_time_limit = 3600

smtpd_sasl_type=dovecot
smtpd_sasl_path=private/auth
smtpd_sasl_auth_enable=no

A ideia é que mua_relay_restrictionsclientes autenticados passo a passo sejam permitidos incondicionalmente e todo o resto rejeitado. Isso significa que para clientes autenticados o controle de acesso deve parar por aí. Esta é também a razão pela qual existe apenas smtpd_recipient_restrictionspara clientes na porta 25 e nenhum correspondente mua_recipient_restriction, porque o Postfix nunca deve chegar a esse ponto.

No entanto, se eu usar um cliente de e-mail para enviar um e-mail através do meu servidor de e-mail Postfix para outra caixa de e-mail minha (hospedada externamente), vejo os seguintes logs no meu servidor de e-mail:

postfix/submission/smtpd[515502]: Anonymous TLS connection established from pd9ecf27b.dip0.t-ipconnect.de[217.236.242.123]: TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-sign>
policyd-spf[515508]: : prepend Received-SPF: Softfail (mailfrom) identity=mailfrom; client-ip=217.236.242.123; helo=my-touchpad.localnet; [email protected]; receiver=other-domain.tld

Que o SPF tem que falhar é óbvio. O MUA é um cliente (my-touchpad.localnet) em uma linha dial-up (pd9ecf27b.dip0.t-ipconnect.de[217.236.242.123]) que não está listado pela política SPF para my-domain.tld. Claro, não é porque a política SPF lista apenas o próprio servidor de e-mail.

No entanto, eu me pergunto por que o Postfix executou essa verificação em primeiro lugar. A verificação do SPF é apenas parte do smtpd_recipient_restrictionsque não deve ser aplicado a MUAs autenticados.

postfix
  • 2 2 respostas
  • 44 Views

2 respostas

  • Voted
  1. Best Answer
    Esa Jokinen
    2023-11-12T16:26:19+08:002023-11-12T16:26:19+08:00

    A verificação do SPF é apenas parte do smtpd_recipient_restrictionsque não deve ser aplicado a MUAs autenticados.

    Esta é uma falsa suposição. O smtpd_recipient_restrictionssó faria isso se fosse configurado para permitir MUAs autenticados antes de verificar a política SPF, por exemplo,

    smtpd_recipient_restrictions =
      permit_sasl_authenticated,
      check_policy_service unix:private/policyd-spf,
      permit
    

    Porque...

    As restrições são aplicadas na ordem especificada; a primeira restrição que corresponder vence.

    Atualmente você tem uma configuração global para todas as instâncias do smtpd, incluindo envio que verifica o SPF e permite que qualquer mensagem passe na verificação do SPF:

    smtpd_recipient_restrictions =
      check_policy_service unix:private/policyd-spf,
      permit
    

    Para não aplicar isso a MUAs autenticados, este parâmetro deve ser diferente para envio, o que é conseguido substituindo o parâmetro em master.cf:

    submission inet n       -       y       -       -       smtpd
      . . .
      -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
    

    Ou, se você seguir seu padrão de ter variáveis ​​personalizadas (ou seja, não um parâmetro de configuração do Postfix ) definidas como mua_*_restrictionsem seu main.cfe usá-las como variáveis ​​em master.cf, você teria:

    • em main.cf:

      mua_recipient_restrictions =
         permit_sasl_authenticated,
         reject
      
    • em master.cf:

      submission inet n       -       y       -       -       smtpd
         . . .
         -o smtpd_recipient_restrictions=$mua_recipient_restrictions
      
    • 2
  2. anx
    2023-11-12T09:23:59+08:002023-11-12T09:23:59+08:00

    Não vejo nenhuma -o smtpd_recipient_restrictions=$mua_recipient_restrictionslinha master.cfque substitua seu padrão global main.cf.

    que não deve ser aplicado a MUAs autenticados

    O que você acha que não deveria ser aplicado não está configurado exclusivamente para a instância da porta 25. Como você o colocou em main.cf, ele serve como padrão para ambos. O Postfix está aplicando a mesma classe de restrição de destinatário para ambas smtpdas instâncias (aquela que serve a função MX e aquela que manipula o envio autenticado), porque você modificou o padrão global e não o alterou novamente para esse serviço de envio especial.

    Você pode (não é a única solução, mas parece uma maneira consistente e legível de chegar onde deseja) substituí-la, assim como fez com as outras classes de restrição.

    mua_recipient_restrictions = permit_sasl_authenticated, reject

    • 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