Como os clientes SMTP determinar se deve usar SSL explícito ou implícito
Pergunta
A maioria dos clientes de email que suporte a SSL / TLS só exigem que o usuário dizer se é ou não SSL deve ser ativado. O usuário não precisa saber nada sobre SSL explícita e implícita e as diferenças entre eles.
Então, como é o cliente de correio determinar que tipo de SSL para uso? É baseado em números de porta padrão? Será que apenas tentar um e depois o outro?
Solução
Um cliente de email deve saber se SSL implícita está em uso quando ele se conecta, pois é responsável por iniciar o handshake SSL com uma mensagem ClientHello
. Como determina isso é com o cliente. Os números de porta são uma ótima dica, mas também poderia ser uma caixa de seleção em alguns UI que as forças que mesmo quando o número padrão (sem proteção) porta é usada.
Existem IANA registrado números de porta para email seguro, mas alguns ISPs podem usar outras portas.
- IMAP / SSL: 993
- POP3 / SSL: 995
SMTP / SSL é muitas vezes oferecido na porta 465, mas isso não é registrado, e é menos comum desde o suporte para SSL explícito é amplamente apoiada por agentes SMTP.
O suporte para SSL explícito pode ser anunciado por um servidor usando uma negociação específica de protocolo. Por exemplo, quando um cliente se conecta a um servidor SMTP, e emite o comando EHLO, o servidor irá listar as suas capacidades, o que pode incluir suporte para o comando STARTTLS.
Outras dicas
Port 465 é muito comum entre os servidores de correio comercial e é usado com muita freqüência. Na maioria das vezes usado para SSL implícito. Quando você telnet para essa porta você vai ter um tempo limite desde que você deve configurar a conexão SSL antes de comunicações com o servidor de correio. Assim, um tempo limite pode ser o primeiro indício de que você tem uma conexão SSL implícito. Você não pode usar EHLO para retornar resultados porque nenhuma outra conexão de uma conexão SSL é permitido. E NENHUM você não simplesmente conectar a um servidor SMTP em execução SSL implícito que não irá responder e só vai cair a conexão. Isso é o que é suposto fazer. SSL explícito irá permitir a conexão primeiro e depois configurar SSL. E sim SSL implícito é frequentemente utilizado. A desvantagem é que os padrões RFC não são específicos de como ele é implementado desenvolvedores para diferentes configurá-lo de maneiras diferentes, embora SSL implícita é considerada por alguns como depreciados.
Eu acredito que a maioria dos clientes que o apoio SMTP sobre SSL começam com uma conexão não criptografada e emitir um EHLO ao invés de HELO. O primeiro tem respostas bandeira extras, um dos quais indica se o servidor suporta o comando STARTTLS ou não. Se o fizerem, então o cliente pode usar STARTTLS, e depois usar SSL a partir desse ponto.
Exemplo:
% telnet quack.kfu.com 25
220 quack.kfu.com ESMTP ready NO UCE
EHLO client
250-quack.kfu.com Hello client [xx.xx.xx.xx] (may be forged), pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 25000000
250-ETRN
250-AUTH PLAIN LOGIN
250-STARTTLS
250-DELIVERBY
250 HELP
starttls
220 2.0.0 Ready to start TLS