Path: csiph.com!weretis.net!feeder9.news.weretis.net!news.quux.org!eternal-september.org!feeder2.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Patricia Ferreira Newsgroups: pt.comp.programacao Subject: Re: como montar um servidor de e-mail nos =?utf-8?Q?padr=C3=B5es?= de hoje Date: Mon, 11 Nov 2024 11:22:15 -0300 Organization: A noiseless patient Spider Lines: 226 Message-ID: <87cyj1rgtk.fsf@example.com> References: <87frpl43k7.fsf@example.com> <87setkyyj5.fsf@lispclub.com> <87setkyoux.fsf@example.com> <87frpi69c8.fsf@lispclub.com> <87ldyinvb2.fsf@example.com> <87r089wque.fsf@lispclub.com> <87a5exmbh9.fsf@example.com> <87plns7hrh.fsf@lispclub.com> <87v7xkjqu1.fsf@example.com> <87r088fhqv.fsf@lispclub.com> <87sesohzg9.fsf@example.com> <87ed3kwp6z.fsf@example.com> <87v7wwozkp.fsf@ic.ufrj.br> <871pzjxdut.fsf@example.com> <87r07jvyp0.fsf@example.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Date: Mon, 11 Nov 2024 15:22:20 +0100 (CET) Injection-Info: dont-email.me; posting-host="3b9c4e065a5e8a9a86df711005fd4432"; logging-data="1091149"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX189vQ3bv0dZr0s9Xm8wRZlQcsfcteY80rA=" Cancel-Lock: sha1:GptWv1AuRYmtkS2dp5BOXWDL0TA= sha1:BUwnI4p1mZa282oNxop+iTQ518Q= Xref: csiph.com pt.comp.programacao:344 Patricia Ferreira writes: > Patricia Ferreira writes: > >> Patricia Ferreira writes: >> >> [...] >> >>>> Vou precisar recompilar o sendmail pra habilitar autenticação de >>>> clientes: o sendmail precompilado do FreeBSD não vem com suporta a >>>> autenticação. Nem com AUTH PLAIN nem qualquer outro mecanismo. >>> >>> Cerqueira, estou com um sendmail perfeitamente operacional. >>> Retransmissão de e-mail completamente fechada exceto pra usuários com >>> senha devidamente cadastrada. Métodos de autenticação DIGEST-MD5 e >>> CRAM-MD5. STARTTLS em perfeita operação também. Servidor POP3 em >>> operação também e exigindo TLS. Mas sem DKIM. Próxima tarefa então vai >>> ser aderir ao DKIM. Mais notícias em breve. >> >> Cerqueira, tenho DKIM em operação. Mas tem coisas a serem >> investigadas. Por exemplo, agora num primeiro teste, a mensagem é >> realmente enviada e encontro uma assinatura nela: >> >> --8<-------------------------------------------------------->8--- >> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=my.domain; s=default; >> t=1731254856; bh=ecGWgWCJeWxJFeM0urOVWP+KOlqqvsQYKOpYUP8nk7I=; >> h=Date:To:From:Subject; >> b=Hg9ThE+cWPxSdOxilB/8JDzVG6PqWfvVg4Kjz1hdcC7iUoh6BVvqW2crkd2z0xsWb >> NK7y07dwf+y3+0rJOg4XIXH4+Csl+AYhYFa9kZEqpNH3oIrBjc2NSmkjf/84KZ8HWW >> pPVkxQtkY1TL4lu9hBokdgDJNoXO/gcBuN96Rk7Y= >> --8<-------------------------------------------------------->8--- >> >> Por outro lado, mx.google.com anota o seguinte cabeçalho: >> >> --8<-------------------------------------------------------->8--- >> Authentication-Results: mx.google.com; >> dkim=permerror (no key for signature) header.i=@my.domain header.s=default header.b=Hg9ThE+c; >> spf=pass (google.com: domain of me@my.domain designates 1.2.3.4 as permitted sender) smtp.mailfrom=me@my.domain >> --8<-------------------------------------------------------->8--- >> >> Note que troquei meu domínio verdadeiro por my.domain e meu usuário por >> me, bem como meu endereço IP por 1.2.3.4. Somos tão sensíveis na >> Internet de hoje. :) >> >> Note que minha chave está cadastrada na minha zona de DNS: >> >> --8<-------------------------------------------------------->8--- >> %host -t txt my.domain >> my.domain descriptive text "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9yjHh4+28QGxMOXOVIxQM5kpESx1ILsdtVRwqwVEmnNozOgPdx8N42iHPlpvYALsDdHxX/sY6AYurdZCgtRSlnieoCFu2eeA7KczpO8o8evpqzUqEUnxH7YIFbi4ZqP+FMocNal4WCPWr5XLdsyQ7mQacVb3L/AxUOIyUvclPnQIDAQAB" >> my.domain descriptive text "v=spf1 a mx ip4:1.2.3.4 -all" >> --8<-------------------------------------------------------->8--- > > Cadastrei-a incorretamente. A chave pública precisa estar em > > default._domainkey.my.domain. > > Ajustei e learndmarc.com confirma a instalação. O mx.google.com > continua a dizer que não encontra a chave pública do filtro dkim, mas > isso pode ser caching the DNS em mx.google.com. Agora é esperar. Ele > deveria usar o cache por no máximo 1 minuto, já que esse é o tempo de > caching que tenho configurado na minha zona, mas não há mais nada a > fazer senão esperar. Valeu! Era caching mesmo. Aproveitei o momento SMTP da minha vida e configurei DMARC também. Comecei com a política mais agressiva possível: # host -t txt _dmarc.my.domain _dmarc.my.domain descriptive text "v=DMARC1; p=reject; aspf=s; adkim=s; rua=mailto:postmaster@my.domain;" Instalei o OpenDMARC. Não parece ainda que tudo está certo. Embora mx.google.com confirme que tudo está certo e aprove meus e-mails pra lá, parece que meu próprio sendmail não aprova minhas próprias mensagens. Eis uns cabeçalhos recebidos por mx.google.com de uma mensagem minha enviada pra lá. --8<-------------------------------------------------------->8--- Delivered-To: me@remote.host Received: by 2002:a17:505:5392:b0:1be7:a527:160d with SMTP id ma18csp4442001njb; Mon, 11 Nov 2024 05:14:27 -0800 (PST) X-Google-Smtp-Source: [...] X-Received: by 2002:a05:6808:1520:b0:3e6:63b5:f248 with SMTP id [...]; Mon, 11 Nov 2024 05:14:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1731330866; cv=none; d=google.com; s=arc-20240605; b=[...] ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=message-id:subject:from:to:date:dkim-signature; bh=[...]; fh=[...]; b=[...]; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@my.domain header.s=default header.b=hlrKpCsb; spf=pass (google.com: domain of me@my.domain designates 1.2.3.4 as permitted sender) smtp.mailfrom=me@my.domain; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=my.domain Return-Path: Received: from my.domain (mx.my.domain. [1.2.3.4]) by mx.google.com with ESMTPS id [...] for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Nov 2024 05:14:26 -0800 (PST) Received-SPF: pass (google.com: domain of me@my.domain designates 1.2.3.4 as permitted sender) client-ip=1.2.3.4; Authentication-Results: mx.google.com; dkim=pass header.i=@my.domain header.s=default header.b=hlrKpCsb; spf=pass (google.com: domain of me@my.domain designates 1.2.3.4 as permitted sender) smtp.mailfrom=me@my.domain; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=my.domain Received: from my.domain (mx.my.domain [1.2.3.4]) (authenticated bits=0) by my.domain (8.18.1/8.18.1) with ESMTPA id 4ABDEK9W052215 for ; Mon, 11 Nov 2024 10:14:21 -0300 (-03) (envelope-from me@my.domain) Authentication-Results: my.domain; dmarc=fail (p=reject dis=none) header.from=my.domain DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=my.domain; s=default; t=1731330861; bh=[...]; h=Date:To:From:Subject; b=[...] Date: Mon, 11 Nov 2024 10:14:18 -0300 To: me@remote.host From: me@my.domain Subject: test Mon, 11 Nov 2024 10:14:18 -0300 Message-Id: <20241111101418.052214@my.domain> X-Mailer: swaks v20240103.0 jetmore.org/john/code/swaks/ X-Test: test email [... body ...] --8<-------------------------------------------------------->8--- Leia os cabeçalhos de baixo pra cima. Observe como o primeiro Authentication-Results resulta em dmarc=fail. Meu entendimento é que esse cabeçalho foi adicionado pelo próprio OpenDMARC. Os logs confirmam o fracasso, apesar da mensagem ser aceita. Nov 11 10:14:21 my.host opendmarc[52048]: implicit authentication service: my.domain Nov 11 10:14:21 my.host opendmarc[52048]: 4ABDEK9W052215: my.domain fail Nov 11 10:14:21 my.host sm-mta[52215]: 4ABDEK9W052215: Milter (opendmarc) insert (1): header: Authentication-Results: my.domain; dmarc=fail (p=reject dis=none) header.from=my.domain Nov 11 10:14:21 my.host sm-mta[52215]: 4ABDEK9W052215: Milter accept: message Minha configuração do OpenDMARC é mínima: %grep -v '^#' opendmarc.conf | grep -v '^$' HistoryFile /var/run/opendmarc/history.txt RecordAllMessages true No history.txt, encontro spf -1, o que significa que SPF não foi analisado. Deve ser esse o problema. Preciso de um 0 lá, que significa ``pass''. É o que me reporta o README do OpenDMARC em https://raw.githubusercontent.com/trusteddomainproject/OpenDMARC/refs/heads/master/opendmarc/README Eis um relatório que encontro no history.txt relativo a uma mensagem que é aprovada pelo DMARC Google, mas não é aprovada pelo próprio DMARC: --8<-------------------------------------------------------->8--- job 4ABDiW59052746 reporter my.domain received 1731332674 ipaddr 1.2.3.4 from my.domain mfrom my.domain spf -1 pdomain my.domain policy 16 rua mailto:postmaster@my.domain pct 100 adkim 115 aspf 115 p 114 sp 0 align_dkim 5 align_spf 5 arc 7 arc_policy 2 json:[] action 2 --8<-------------------------------------------------------->8--- Então meu OpenDMARC não identifica que dkim e spf estão alinhados com mfrom: align_dkim 5 align_spf 5 O valor teria que ser 4 e não 5. Além disso, spf -1. Tem coisa errada. Vamos dar uma olhada numa mensagem na direção gmail --> my.domain. Obtenho uma aprovação DMARC do meu próprio DMARC. Então não é o caso que toda verificação DMARC esteja fracassando em my.domain. As evidências: --8<-------------------------------------------------------->8--- Nov 11 11:14:10 my.host opendkim[35443]: 4ABEE8nA053200: DKIM verification successful Nov 11 11:14:10 my.host sm-mta[53200]: 4ABEE8nA053200: Milter (dkim-filter) insert (1): header: Authentication-Results: my.domain;\n\tdkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=gEybCgM7 Nov 11 11:14:10 my.host opendkim[35443]: 4ABEE8nA053200: s=20230601 d=gmail.com SSL Nov 11 11:14:10 my.host sm-mta[53200]: 4ABEE8nA053200: milter=opendmarc, action=header, continue Nov 11 11:14:10 my.host syslogd: last message repeated 13 times Nov 11 11:14:10 my.host sm-mta[53200]: 4ABEE8nA053200: milter=opendmarc, action=eoh, continue Nov 11 11:14:10 my.host opendmarc[53126]: 4ABEE8nA053200: gmail.com pass Nov 11 11:14:10 my.host sm-mta[53200]: 4ABEE8nA053200: Milter (opendmarc) insert (1): header: Authentication-Results: my.domain; dmarc=pass (p=none dis=none) header.from=gmail.com Nov 11 11:14:10 my.host sm-mta[53200]: 4ABEE8nA053200: Milter accept: message --8<-------------------------------------------------------->8--- Na mensagem em si, podemos ver os cabeçalhos esperados: --8<-------------------------------------------------------->8--- Authentication-Results: my.domain; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: my.domain; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=gEybCgM7 --8<-------------------------------------------------------->8--- Esses foram adicionados pelo meu OpenDMARC. Uma suspeita. Seria o caso que meu filtro DMARC esteja trabalhando em paralelo ao DKIM? Porque DMARC precisa dos resultados de DKIM e SPF. A impressão que tenho dos logs do sendmail é que ambos começam a trabalhar em paralelo: --8<-------------------------------------------------------->8--- Nov 11 11:14:09 my.host sm-mta[53200]: 4ABEE8nA053200: milter=dkim-filter, action=mail, continue Nov 11 11:14:09 my.host sm-mta[53200]: 4ABEE8nA053200: milter=opendmarc, action=mail, continue Nov 11 11:14:09 my.host sm-mta[53200]: 4ABEE8nA053200: --- 250 2.1.0 ... Sender ok --8<-------------------------------------------------------->8--- Isso faria com que minhas mensagens emitidas a parti do meu sendmail cheguem ao OpenDMARC sem qualquer cabeçalho DKIM e aí não serão aprovadas mesmo. Não faço ideia. Valeu!