Testar IMAP, POP3 e SMTP à mão com openssl s_client: um guia para utilizadores técnicos

E-mail·· 11 visualizações· 4 min de leitura

Este artigo é para utilizadores técnicos com uma linha de comandos (Linux, macOS, ou Windows com OpenSSL). A resposta curta: o openssl s_client abre uma ligação cifrada ao servidor e deixa-o escrever os comandos do protocolo à mão. Assim separa o problema do servidor do problema do programa: se à mão funciona, o servidor, a porta e a palavra-passe estão certos, e o erro está nas definições do programa.

As respostas que vai ver

Protocolo Correu bem Correu mal
IMAP (porta 993) A linha acaba com OK, precedida da etiqueta que escreveu (a1, a2...). NO (o servidor recusou, por exemplo a palavra-passe) ou BAD (o comando está mal escrito).
POP3 (porta 995) +OK -ERR, seguido do motivo.
SMTP (porta 465 ou 587) Códigos 2xx (220 saudação, 235 autenticado, 250 aceite) e 354 (pode escrever a mensagem). 4xx temporário, 5xx definitivo: 535 é palavra-passe recusada, 550 é destino ou remetente recusado.

IMAP à mão

1 Ligue-se. Troque pelo seu domínio: openssl s_client -connect mail.oseudominio:993 -crlf -quiet O servidor responde com uma linha que começa por * OK.
2 Veja o que o servidor sabe fazer e entre. Cada comando IMAP começa por uma etiqueta à sua escolha: a0 CAPABILITY
a1 LOGIN voce@oseudominio "a-palavra-passe"
Se a palavra-passe tiver espaços ou aspas, o mais simples é testar com uma provisória.
3 Liste as pastas e abra a Caixa de entrada: a2 LIST "" "*"
a3 SELECT INBOX
O SELECT diz quantas mensagens existem (EXISTS).
4 Leia o cabeçalho da primeira mensagem sem a marcar como lida (o PEEK é que evita a marca): a4 FETCH 1 (FLAGS BODY.PEEK[HEADER.FIELDS (FROM SUBJECT DATE)])
5 Saia: a5 LOGOUT

POP3 à mão

1 Ligue-se e entre: openssl s_client -connect mail.oseudominio:995 -crlf -quiet
USER voce@oseudominio
PASS a-palavra-passe
2 Conte e liste as mensagens: STAT
LIST
UIDL
O STAT dá o número de mensagens e o tamanho total; o UIDL dá o identificador único de cada uma, o mesmo que o programa usa para saber o que já descarregou.
3 Saia com QUIT. Não use DELE num teste: marca a mensagem para apagar, e o QUIT apaga-a de vez.

SMTP à mão

1 Prepare o utilizador e a palavra-passe em base64 (formato AUTH PLAIN). O read -s pede a palavra-passe sem a mostrar nem a guardar no histórico: read -s P
printf '\0%s\0%s' 'voce@oseudominio' "$P" | base64
2 Ligue-se. Pela 465 (SSL/TLS) ou pela 587 (STARTTLS): openssl s_client -connect mail.oseudominio:465 -crlf -quiet
openssl s_client -starttls smtp -connect mail.oseudominio:587 -crlf -quiet
3 Apresente-se, autentique-se e envie para um endereço seu: EHLO teste
AUTH PLAIN o-texto-base64-do-passo-1
MAIL FROM:<voce@oseudominio>
RCPT TO:<outro-endereco-seu@exemplo.com>
DATA
Subject: teste a mao

Isto e um teste.
.
QUIT
A linha só com um ponto termina a mensagem; o servidor responde 250 e a mensagem entra na fila.
4 Leia a resposta do EHLO: a lista de linhas 250 mostra as extensões que o servidor aceita (AUTH, SIZE, STARTTLS...). Se não aparece AUTH, a ligação não está no modo certo para autenticar.
O que escreve fica no ecrã. A palavra-passe aparece em claro na janela do terminal, e no SMTP vai em base64, que não é cifra nenhuma: qualquer pessoa a descodifica. Faça estes testes num computador seu, feche o terminal no fim, e nunca cole a saída num pedido de suporte ou num fórum sem apagar a palavra-passe e a linha AUTH.
Sem o -quiet, o s_client interpreta algumas letras. Uma linha que comece por R maiúsculo (como RCPT TO) renegoceia a ligação, e uma que comece por Q fecha-a. Com -quiet isso não acontece; em alternativa, escreva os comandos SMTP em minúsculas, que o protocolo aceita.

O teste à mão passa mas o seu programa continua a falhar? Diga-nos o programa, a porta e a mensagem de erro, sem a palavra-passe.

Abrir pedido de suporte

VEJA TAMBÉM

Portas SMTP 465, 587 e 25: SSL, STARTTLS e qual usar

Que portas estão abertas, e porque é que a sua integração fica pendurada sem erro

POP ou IMAP: qual escolher, e o que perde se escolher mal

Pastas, marcas e IDLE no IMAP: como chega o e-mail na hora e porque uma pasta se atrasa

Como viaja um e-mail: SMTP até ao servidor MX, e depois IMAP ou POP até quem o lê

Porque o seu e-mail não envia ou não recebe

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
Esta resposta foi útil? A sua resposta ajuda-nos a melhorar este artigo.