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 / 734919
Accepted
Law29
Law29
Asked: 2015-11-10 02:59:38 +0800 CST2015-11-10 02:59:38 +0800 CST 2015-11-10 02:59:38 +0800 CST

Como posso usar curingas para sendmail TLS_Rcpt?

  • 772

O sendmail permite colocar restrições nas conversas TLS. Desejo verificar se as mensagens enviadas para example.com são enviadas para um servidor que possui um certificado *.messagelabs.com. Quero me proteger contra falsificação de DNS e MitM. Se o messagelabs tivesse apenas um servidor, seria fácil:

TLS_Rcpt:example.com VERIFY:256+CN:mx.messagelabs.com

No entanto, o messagelabs possui muitos servidores e clusters de servidores diferentes com IPs e certificados exclusivos para o mesmo nome. Tudo bem, só quero verificar se o servidor para o qual estou enviando o e-mail é certificado como pertencente a messagelabs.

eu tentei

TLS_Rcpt:example.com VERIFY:256+CN:messagelabs.com
TLS_Rcpt:example.com VERIFY:256+CN:*.messagelabs.com
TLS_Rcpt:example.com VERIFY:256+CN:.*.messagelabs.com

mas recebo erros como

CN mail31.messagelabs.com does not match .*.messagelabs.com

Como posso fazer isso? Esta é uma solicitação recorrente para nós (principalmente para configurações como TLS_Rcpt:example.com VERIFY:256+CN:*.example.com), então eu estaria pronto para modificar sendmail.cf, mas não consigo entender

STLS_req
R $| $+         $@ OK
R<CN> $* $| <$+>                $: <CN:$&{TLS_Name}> $1 $| <$2>
R<CN:$&{cn_subject}> $* $| <$+>         $@ $>"TLS_req" $1 $| <$2>
R<CN:$+> $* $| <$-:$+>  $#error $@ $4 $: $3 " CN " $&{cn_subject} " does not match " $1
R<CS:$&{cert_subject}> $* $| <$+>       $@ $>"TLS_req" $1 $| <$2>
R<CS:$+> $* $| <$-:$+>  $#error $@ $4 $: $3 " Cert Subject " $&{cert_subject} " does not match " $1
R<CI:$&{cert_issuer}> $* $| <$+>        $@ $>"TLS_req" $1 $| <$2>
R<CI:$+> $* $| <$-:$+>  $#error $@ $4 $: $3 " Cert Issuer " $&{cert_issuer} " does not match " $1
ROK                     $@ OK

Sendmail 8.14.7 (atualizando para 8.15.2 em breve).

smtp
  • 2 2 respostas
  • 902 Views

2 respostas

  • Voted
  1. mc0e
    2016-01-18T05:38:18+08:002016-01-18T05:38:18+08:00

    Esta não é exatamente uma resposta para a pergunta feita, mas parece-me que você está fazendo as coisas da maneira mais difícil.

    A configuração do Sendmail foi escrita de forma a priorizar a facilidade e eficiência para o software que analisa essa configuração, não para fácil configuração e manutenção por humanos. Simplesmente não houve uma boa razão para fazer isso nas últimas décadas.

    Sendmail era uma relíquia terrivelmente arcana 15 anos atrás. Algumas distribuições linux ainda o fornecem por padrão, e tudo bem se a configuração padrão funcionar para você, mas assim que você se pegar fazendo algo que demore mais do que alguns minutos, é melhor descartar o sendmail e instalar um MTA moderno .

    Cerca de 15 anos atrás, o qmail ainda poderia ser um substituto sensato, mas por quase tanto tempo considerei o postfix uma escolha melhor. A documentação do site postfix.org é boa quando você encontra o bit de que precisa. No seu caso, você vai querer http://www.postfix.org/TLS_README.html para este problema.

    Sei que você provavelmente já gastou algum tempo resolvendo alguns problemas no sendmail, mas em vez de gastar mais tempo nesse buraco, troque na primeira oportunidade. Se você olhar para trás, vai se encolher.

    • 1
  2. Best Answer
    AnFi
    2016-01-30T13:04:29+08:002016-01-30T13:04:29+08:00

    Faça o armazenamento sendmail.cf ${cn_subject}com a parte do host removida em ${cn1_subject}.
    Isso torna o acabamento da implementação quase trivial.

    AVISO: Peça opiniões news:comp.mail.sendmailantes de implantá-lo em um ambiente sem teste. PODE funcionar, mas o sendmail evita "efeitos colaterais inesperados" MUITO MAIS meticuloso do que estou pronto para "investir". Eu "testei a seco" com sendmail-8.15.2.

    entrada de acesso:

    TLS_Rcpt:example.com VERIFY:256+CN1:messagelabs.com
    

    correção do sendmail.mc para suportar a entrada acima

    ATENÇÃO: lembre-se do TAB (\t) entre RHS e LHS nas Rlinhas.
    É uma implementação mais suja via sendmail.mc apenas .

    define(`_LOCAL_TLS_RCPT_')dnl
    LOCAL_RULESETS
    SLocal_tls_rcpt
    R$*     $: $&{cn_subject}
    R$-.$+  $@ $(macro {cn1_subject}  $@ $2 $)
    R$*     $@ $(macro {cn1_subject}  $@ $)    
    
    # Ruleset continued
    STLS_req
    R<CN1:$&{cn1_subject}> $* $| <$+>               $@ $>"TLS_req" $1 $| <$2>
    R<CN1:$+> $* $| <$-:$+> $#error $@ $4 $: $3 " CN-1 " $&{cn_subject} " does not match " $1
    ROK                     $@ OK
    divert(0)dnl
    

    Explicação:

    1. Tornar Local_tls_rcpto armazenamento do conjunto de regras ${cn_subject}com a parte "antes do primeiro ponto" removida${cn1_subject}
    2. Adicionar verificações de ${cn1_subject}acionado pelo prefixo CN1 na "parte extra" do TLS_reqconjunto de regras

    Exemplo de script para testá-lo

    #!/bin/sh
    # -C sendmail-test.cf -- use non standard cf file
    # -d60.5 -- trace (access) map lookus
    # -d21.12 -- trace R lines rewriting 
    sendmail -C sendmail-test.cf -bt -d60.5 <<END
    .D{verify}OK
    .D{cn_subject}mail31.messagelabs.com
    .D{server_name}mail31.messagelabs.com
    tls_rcpt [email protected]
    END
    
    • 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