Como usar este gerador TLS-RPT
Passo 1: Adicionar destinos de relatório
Indique onde pretende receber os relatórios de falhas de TLS:
Email (recomendado para começar)
mailto:tlsrpt@captaindns.com
Webhook HTTPS (para automação)
https://tlsrpt.captaindns.com/v1/report
Pode adicionar vários destinos: os relatórios são enviados para todos.
Passo 2: Copiar o registo gerado
O gerador cria um registo RFC 8460 válido:
v=TLSRPTv1; rua=mailto:tlsrpt@captaindns.com
Passo 3: Publicar no DNS
Crie um registo TXT em _smtp._tls.captaindns.com com o valor gerado.
Exemplo para captaindns.com:
- Tipo: TXT
- Host:
_smtp._tls - Valor:
v=TLSRPTv1; rua=mailto:tlsrpt@captaindns.com
Passo 4: Verificar a publicação
Use o nosso TLS-RPT Checker para confirmar que a configuração está correta.
O que o TLS-RPT realmente relata
O TLS-RPT é uma ferramenta de observabilidade pura: nunca altera o comportamento de um servidor; revela o que realmente aconteceu durante as ligações TLS de entrada para os seus MX.
Os operadores emissores assinalam-lhe nomeadamente:
- um downgrade ou stripping de STARTTLS, em que a sessão volta a texto claro
- um certificado expirado, não fiável ou autoassinado
- um certificado cujo hostname não corresponde ao MX esperado
- a falha na obtenção ou validação de uma política MTA-STS
- uma falha DANE: registo TLSA inválido ou cadeia DNSSEC quebrada
O TLS-RPT não aplica nenhuma regra. A recusa em entregar uma mensagem em texto claro vem do MTA-STS ou do DANE; o TLS-RPT limita-se a dizer-lhe quando e porque a encriptação falhou, para que possa corrigir antes de passar a enforce.
Formato do registo TLS-RPT
Componentes obrigatórios
| Componente | Formato | Exemplo |
|---|---|---|
| Versão | v=TLSRPTv1 | Deve ser exatamente isto |
| URI de relatório | rua=esquema:destino | rua=mailto:reports@captaindns.com |
Esquemas de URI suportados
mailto: - Entrega por email
rua=mailto:equipa-seguranca@captaindns.com
Os relatórios chegam como anexos JSON comprimidos.
https: - Entrega por webhook
rua=https://api.captaindns.com/tlsrpt/ingest
Os relatórios são enviados via POST, em formato JSON, com o cabeçalho Content-Type: application/tlsrpt+gzip
Múltiplos destinos
Separe-os por vírgulas:
v=TLSRPTv1; rua=mailto:reports@captaindns.com,https://tlsrpt.captaindns.com/report
Enviar os relatórios para um domínio terceiro
Uma rua que aponta para um domínio diferente do seu funciona tal como está, sem qualquer registo de autorização do lado do destinatário.
Esta é uma diferença importante em relação ao DMARC. O DMARC exige um registo _report._dmarc no domínio terceiro antes de aceitar relatórios cross-domain. A RFC 8460 afastou deliberadamente esse mecanismo (secção 7): o risco de amplificação com o TLS-RPT é menor do que com o DMARC e a confiança é assegurada de outra forma. Os relatórios mailto: são assinados com DKIM pelo operador emissor, e os relatórios https: assentam na posse do DNS e do certificado do endpoint.
v=TLSRPTv1; rua=mailto:reports@tlsrpt-service.com
Não é necessária qualquer ação em tlsrpt-service.com para que esta rua seja válida.
Para manter a simplicidade, um endereço no seu próprio domínio é suficiente na maioria dos casos:
v=TLSRPTv1; rua=mailto:tlsrpt@captaindns.com
Exemplos por fornecedor de DNS
Cloudflare
- Aceda às definições de DNS do seu domínio
- Adicione um registo:
- Tipo: TXT
- Nome:
_smtp._tls - Conteúdo: o valor do registo gerado
- TTL: Auto
AWS Route 53
- Abra a zona alojada do seu domínio
- Crie um registo:
- Nome do registo:
_smtp._tls - Tipo de registo: TXT
- Valor:
"v=TLSRPTv1; rua=mailto:tlsrpt@captaindns.com" - TTL: 3600
- Nome do registo:
OVH / Google Domains
- Aceda à zona DNS
- Adicione uma entrada:
- Subdomínio:
_smtp._tls - Tipo: TXT
- Destino: o valor do registo gerado
- TTL: 3600
- Subdomínio:
Compreender os relatórios TLS-RPT
Um relatório TLS-RPT é um documento JSON agregado, comprimido com gzip, que resume as sessões TLS de um operador para o seu domínio ao longo de um dia.
Anatomia de um relatório
{
"organization-name": "Google Inc.",
"date-range": {
"start-datetime": "2024-01-15T00:00:00Z",
"end-datetime": "2024-01-16T00:00:00Z"
},
"contact-info": "postmaster@google.com",
"report-id": "2024011512345",
"policies": [{
"policy": {
"policy-type": "sts",
"policy-string": ["version: STSv1", "mode: enforce", "mx: mail.captaindns.com", "max_age: 604800"],
"policy-domain": "captaindns.com"
},
"summary": {
"total-successful-session-count": 8432,
"total-failure-session-count": 3
},
"failure-details": [{
"result-type": "certificate-expired",
"sending-mta-ip": "198.51.100.1",
"receiving-mx-hostname": "mail.captaindns.com",
"failed-session-count": 3
}]
}]
}
| Campo | Significado |
|---|---|
organization-name | Nome do operador que emite o relatório |
date-range | Janela coberta, no formato RFC 3339 (24 horas) |
contact-info | Contacto do emissor, frequentemente um endereço postmaster |
report-id | Identificador único do relatório |
policies[] | Políticas avaliadas (MTA-STS, DANE ou nenhuma) |
summary | Contadores agregados sobre a janela |
total-successful-session-count | Sessões TLS bem-sucedidas |
total-failure-session-count | Sessões TLS falhadas |
failure-details[] | Detalhe por tipo de falha |
result-type | Razão precisa da falha |
sending-mta-ip | IP do emissor que tentou a ligação |
receiving-mx-hostname | MX recetor em causa |
failed-session-count | Número de sessões afetadas por esta falha |
Os tipos de falha (result-type)
O registo IANA define 11 valores possíveis para result-type:
| result-type | Significado |
|---|---|
starttls-not-supported | O MX recetor não anuncia STARTTLS; a sessão permanece em texto claro |
certificate-host-mismatch | O certificado apresentado não corresponde ao hostname do MX esperado |
certificate-expired | O certificado TLS do recetor expirou |
certificate-not-trusted | O certificado não está assinado por uma autoridade de confiança (cadeia incompleta, autoassinado) |
validation-failure | Falha TLS genérica não coberta pelos outros tipos (negociação, protocolo) |
tlsa-invalid | O registo DANE TLSA não corresponde ao certificado apresentado |
dnssec-invalid | A cadeia DNSSEC necessária ao DANE está quebrada ou em falta |
dane-required | O DANE era exigido mas o recetor não o suporta corretamente |
sts-policy-fetch-error | Impossível obter a política MTA-STS (HTTPS ou DNS) |
sts-policy-invalid | A política MTA-STS obtida está malformada |
sts-webpki-invalid | O certificado não valida segundo as regras PKIX exigidas pelo MTA-STS |
Os tipos de política (policy-type)
Cada sessão está associada a um dos 3 policy-type:
| policy-type | Significado |
|---|---|
sts | A sessão foi avaliada segundo uma política MTA-STS |
tlsa | A sessão foi avaliada segundo o DANE (registos TLSA validados por DNSSEC) |
no-policy-found | Não foi encontrada qualquer política MTA-STS ou DANE para o domínio |
Transporte e cadência
Todos os relatórios são comprimidos com gzip. Existem dois canais de entrega, conforme o esquema da sua rua:
- HTTPS: o relatório é enviado via POST com o cabeçalho
Content-Type: application/tlsrpt+gzip(ouapplication/tlsrpt+json). O endpoint confirma a receção com um estado 2xx. - Email: a mensagem é um
multipart/report; report-type="tlsrpt"com um anexoapplication/tlsrpt+gzip. Inclui os cabeçalhosTLS-Report-DomaineTLS-Report-Submitter, um assunto da formaReport Domain: captaindns.com Submitter: google.com Report-ID: 2024011512345, e é assinada com DKIM com o seletors=tlsrpt.
Cadência: cada operador emissor envia um relatório agregado por dia, cobrindo a janela das 00:00 às 24:00 UTC. Em caso de falha de entrega, tenta de novo até 24 horas.
Quem envia os relatórios
Os grandes operadores emitem relatórios TLS-RPT: a Google, a Microsoft e o Yahoo fazem-no sistematicamente; a Apple e a Comcast também já foram assinaladas. Cada operador produz o seu próprio relatório independente, pelo que pode receber vários por dia, um por emissor.
TLS-RPT com MTA-STS e DANE
O TLS-RPT é o ciclo de observabilidade do MTA-STS e do DANE. Estes protocolos impõem a encriptação; o TLS-RPT mostra-lhe o efeito dessa imposição, antes e depois da entrada em produção.
Ordem de implementação recomendada
- Publicar o TLS-RPT, e o MTA-STS em
mode: testing - Analisar os relatórios durante 2 a 4 semanas
- Passar o MTA-STS para
mode: enforce - Continuar a monitorização via TLS-RPT
Passar a enforce sem TLS-RPT é avançar às cegas: se uma política quebrar a entregabilidade, só o saberá pelas queixas dos utilizadores.
Ferramentas relacionadas
- Gerar uma política MTA-STS
- Verificar o estado MTA-STS
- Verificar o estado TLS-RPT
- Verificar os registos DANE TLSA
Boas práticas e armadilhas comuns
Boas práticas
- Aponte a
ruapara uma caixa ou endpoint dedicado, capaz de absorver o volume e de analisar o JSON. Nunca uma caixa humana: os relatórios chegam todos os dias, em JSON comprimido com gzip, de cada operador. - Use uma ferramenta de agregação para transformar estes relatórios em tendências acionáveis, em vez de os abrir um a um.
Armadilhas a evitar
- Dois registos TXT em
_smtp._tlstornam a configuração inválida. Mantenha um único registo com um único valor. - Aplique percent-encoding aos caracteres
,,!e;quando aparecem numa URI (por exemplo nummailto:com parâmetros), caso contrário o parsing do registo quebra.
Casos de uso concretos
Cada cenário abaixo traduz-se num result-type preciso nos seus relatórios:
- Um MX de backup nunca configurado para TLS:
starttls-not-supported. Deteta-o antes que um atacante tire partido disso. - O certificado de um parceiro expirou:
certificate-expirednas sessões em causa. - Um MX apresenta um certificado emitido para o hostname errado:
certificate-host-mismatch. - Um downgrade ativo de STARTTLS (ataque na rede) faz cair as sessões encriptadas: pico de
starttls-not-supported. - A sua própria política MTA-STS está quebrada ou inacessível:
sts-policy-fetch-errorousts-policy-invalid, antes que bloqueie correio legítimo. - Um DANE mal configurado:
tlsa-invalid(TLSA que deixou de corresponder após uma rotação de certificado) oudnssec-invalid(cadeia DNSSEC quebrada).
Ferramentas complementares
| Ferramenta | Propósito |
|---|---|
| TLS-RPT Syntax Checker | Validar o registo antes de publicar |
| TLS-RPT Record Checker | Verificar a configuração DNS em tempo real |
| MTA-STS Generator | Criar política MTA-STS |
| MTA-STS Record Checker | Verificar a implementação MTA-STS |
| Verificação de domínio email | Auditoria completa de autenticação |
| DANE TLSA Checker | Verificar registos DANE TLSA (segurança TLS via DNSSEC) |
| Analisador de relatórios TLS-RPT | Analisar os relatórios TLS-RPT recebidos por email |
| Monitorização TLS-RPT | Monitorizar e analisar automaticamente os relatórios TLS-RPT |
| Alojamento MTA-STS | Implemente o MTA-STS em conjunto com o TLS-RPT com políticas alojadas grátis |
Recursos úteis
- RFC 8460 - SMTP TLS Reporting (especificação oficial)
- RFC 8461 - MTA-STS (protocolo complementar)
- Google - Configurar TLS reporting
- Postfix - Documentação TLS