Módulo 1 · 1.4
Portas, encriptação e autenticação
Módulo 1: Como funciona o email · Tempo de leitura: 10 minutos
Objetivo de aprendizagem: Após esta lição, saberá indicar para que serve cada porta de correio eletrónico, explicar a diferença entre STARTTLS e TLS direto, e explicar um aviso de certificado ou uma autenticação recusada.
Conceitos-chave: porta 25, 587, 465, 993, 995, 143, 110, STARTTLS, TLS direto (implicit TLS, RFC 8314), certificado, nome do servidor, autenticação SMTP (SMTP AUTH), open relay, bloqueio da porta 25, palavra-passe de aplicação, OAuth
Uma porta é uma porta de entrada
Um servidor tem um único endereço IP, mas muitas portas de entrada. Cada serviço escuta na sua própria porta, um número. O seu navegador bate à porta 443, o seu programa de correio eletrónico bate à porta 993 para ler mensagens e à 587 ou 465 para as enviar. Se escolher a porta errada, ninguém responde, ou responde alguém que fala outra língua. Isso origina mensagens de erro vagas como "não é possível estabelecer ligação" ou "o servidor não responde".
As portas de correio eletrónico, numa lista:
| Porta | Para quê | Encriptação | Autenticação |
|---|---|---|---|
| 25 | Servidores entre si (entrega, lição 1.1 passo 4) | STARTTLS se ambos suportarem | Não |
| 587 | Envio a partir do seu programa de correio eletrónico (submission, RFC 6409) | STARTTLS | Sim, obrigatória |
| 465 | Envio a partir do seu programa de correio eletrónico (submissions) | TLS direto | Sim, obrigatória |
| 993 | Ler correio com IMAP | TLS direto | Sim |
| 995 | Obter correio com POP3 | TLS direto | Sim |
| 143 | IMAP, antigo | Eventualmente STARTTLS | Sim |
| 110 | POP3, antigo | Eventualmente STARTTLS | Sim |
Porque não usar simplesmente a porta 25 para enviar?
Antigamente configurava a porta 25 no seu programa de correio eletrónico. Isso é passado, por duas razões.
Em primeiro lugar: na porta 25, um servidor de correio aceita mensagens de qualquer pessoa, destinadas aos seus próprios domínios. Não é feita qualquer autenticação. Um servidor que, na porta 25, também reencaminha mensagens de qualquer pessoa para outros domínios chama-se um open relay, e é explorado por spammers em poucas horas. Por isso, o envio das suas próprias mensagens para o mundo inteiro passou a ser um serviço separado: submission, na porta 587 (e 465), onde é sempre necessário autenticar-se primeiro.
Em segundo lugar: muitos fornecedores de internet bloqueiam o tráfego de saída para a porta 25 a partir de ligações domésticas. Um computador infetado numa sala de estar não consegue assim enviar spam diretamente para servidores de correio. Consequência para si: se tentar enviar através da porta 25 a partir do seu programa de correio eletrónico, pode não funcionar em casa e funcionar no escritório, ou o contrário.
Lembre-se: os programas de correio eletrónico enviam através da porta 587 ou 465, com autenticação. A porta 25 é para servidores entre si.
STARTTLS ou TLS direto?
Existem duas formas de encriptar uma ligação de correio eletrónico.
TLS direto (implicit TLS): a ligação está encriptada desde o primeiro byte, tal como um sítio web com https. Isto acontece nas portas 465, 993 e 995.
STARTTLS: a ligação começa sem encriptação. O servidor diz "eu consigo encriptar", o cliente responde STARTTLS, e a partir desse momento tudo fica encriptado. Isto acontece na porta 587 (e nas portas 25, 143 e 110).
Para a segurança, faz pouca diferença, desde que o seu programa torne o STARTTLS obrigatório. O risco do STARTTLS está no início: alguém que esteja entre si e o servidor pode eliminar a oferta "eu consigo encriptar". Um programa que, nesse caso, continue silenciosamente sem encriptação, envia a sua palavra-passe de forma legível pela linha. Por isso, a RFC 8314 (2018) recomenda, para programas de correio eletrónico, o TLS direto (465, 993, 995) em vez do STARTTLS. Na prática, tanto a porta 587 com STARTTLS como a 465 com SSL/TLS são boas opções, desde que configure a encriptação no seu programa como "obrigatória" e não como "se disponível".
Um erro comum é a combinação errada: porta 587 com "SSL/TLS", ou porta 465 com "STARTTLS". O programa espera então algo diferente do que o servidor faz, e a ligação fica pendente ou falha. Lembre-se dos pares: 587 + STARTTLS e 465 + SSL/TLS. Os programas por vezes chamam ao TLS direto "SSL", "SSL/TLS" ou "TLS"; o STARTTLS também é por vezes chamado "TLS". Verifique, portanto, a porta.
O certificado e o nome do servidor
Em cada ligação encriptada, o servidor apresenta um certificado, que prova que é quem diz ser. O seu programa de correio eletrónico verifica duas coisas: se o certificado foi emitido por uma entidade de confiança e ainda é válido, e se o nome que introduziu como servidor consta nele.
É este último ponto que mais frequentemente falha. Se introduzir mail.example.com, mas o certificado contiver apenas server12.hosting.example, receberá um aviso do tipo "Não é possível verificar a identidade do servidor" ou "O nome principal do destino está incorreto". A ligação em si está encriptada, mas o seu programa não consegue confirmar que está a comunicar com o servidor verdadeiro.
Não ignore um aviso destes. A solução é utilizar um nome de servidor que conste no certificado (ver lição 2.1). Num servidor partilhado, esse é normalmente o próprio nome do servidor, fornecido pelo seu fornecedor. Outra causa conhecida: um antivírus que "analisa" o correio encriptado e, para isso, insere o seu próprio certificado. Nesse caso, o aviso indica o nome do antivírus em "emitido por".
Autenticação no envio
Nas portas 587 e 465, tem de se autenticar antes de o servidor aceitar enviar a sua mensagem para o exterior. Isto chama-se autenticação SMTP (SMTP AUTH). No seu programa, esta opção chama-se "o servidor de saída requer autenticação", "início de sessão necessário" ou "autenticação: palavra-passe normal". Normalmente, utiliza o mesmo nome de utilizador e a mesma palavra-passe que para o IMAP.
Se a autenticação estiver desativada, ou se o nome de utilizador do servidor de saída estiver em branco, consegue ler o correio mas não enviar mensagens. O servidor responde então com algo como 530 5.7.0 Authentication required ou 554 5.7.1 Relay access denied. Esta é a causa mais comum de "a receção funciona, o envio não".
Existe um segundo tipo de recusa: 535 5.7.8 Authentication failed. Nesse caso, a combinação de nome de utilizador e palavra-passe está incorreta. Atenção: após várias tentativas falhadas, muitos servidores bloqueiam o endereço IP de onde provêm essas tentativas, para se protegerem contra a adivinhação de palavras-passe. Um telemóvel antigo com uma palavra-passe desatualizada pode assim fazer bloquear todo o seu escritório.
Palavras-passe de aplicação e OAuth
Em grandes fornecedores como a Google e a Microsoft, a autenticação apenas com a sua palavra-passe normal num programa de correio eletrónico independente funciona cada vez menos. Estes fornecedores utilizam OAuth: o seu programa reencaminha-o para uma página de início de sessão do fornecedor, onde se autentica (eventualmente com verificação em dois passos), e o programa recebe uma chave em vez da sua palavra-passe. Os programas que não suportam isto recebem por vezes uma palavra-passe de aplicação: uma palavra-passe separada e longa, válida apenas para esse programa específico, e que pode revogar de forma independente.
Numa caixa de correio normal de uma empresa de alojamento, normalmente autentica-se com a palavra-passe da própria caixa de correio. Isso torna ainda mais importante uma palavra-passe forte e única (lição 3.4).
Na prática: as definições de uma caixa de correio
Numa caixa de correio da WebOké, as definições são: IMAP 993 com SSL/TLS, POP3 995 com SSL/TLS, envio na porta 587 com STARTTLS ou 465 com SSL/TLS, autenticação ativada com o seu endereço de email completo e a palavra-passe da caixa de correio. Noutros fornecedores, o funcionamento é semelhante: as portas são quase sempre as mesmas, apenas o nome do servidor difere. Qual o nome do servidor a escolher, pode ver na lição 2.1.
Resumo
- Os programas de correio eletrónico enviam através da porta 587 (STARTTLS) ou 465 (TLS direto), sempre com autenticação. A porta 25 é para servidores entre si e é frequentemente bloqueada em casa.
- A leitura é feita através da porta 993 (IMAP) ou 995 (POP3), ambas com TLS direto.
- Combine corretamente: 587 + STARTTLS, 465 + SSL/TLS. Defina a encriptação como obrigatória.
- Um aviso de certificado significa, na maioria dos casos: o nome do servidor que introduziu não consta no certificado. Ignorar o aviso não é uma solução.
- "A leitura funciona, o envio não" é quase sempre: a autenticação do servidor de saída está desativada ou em branco.
Quiz
Exercício
Exercício Z1.4: Portas e certificado de um servidor de correio. Introduza o nome do servidor de entrada e do servidor de saída que utiliza para a sua própria caixa de correio (se não tiver uma caixa de correio própria, utilize imap.gmail.com e smtp.gmail.com). Para a porta 993 (entrada) e para as portas 465 e 587 (saída), indique o que espera: TLS direto, STARTTLS ou inacessível, e indique se pensa que o nome consta no certificado. O programa liga-se automaticamente às três portas e compara o resultado com as suas respostas.
Para saber mais
Os passos descritos nestes artigos aplicam-se aos painéis da WebOké; noutros fornecedores o funcionamento é semelhante.
- Manual DirectAdmin 8.1: Todas as definições num relance: servidores, portas e segurança
- Manual DirectAdmin 8.8: Não consegue enviar ou receber e-mails: eis como resolver
- Erro de certificado ao receber e-mail
- Não consigo enviar e-mails (a receção funciona corretamente)
- RFC 8314 (TLS direto para programas de correio eletrónico), RFC 6409 (submission), RFC 3207 (STARTTLS), RFC 4954 (SMTP AUTH)
