Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

03 - Protocolo IMAP (143)

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

Protocolo IMAP (Internet Message Access Protocol) - Porta 143

O IMAP (Internet Message Access Protocol), padronizado na RFC 3501 (2003), substituindo a RFC 2060 (1996), é o protocolo da camada de aplicação que permite a clientes de e-mail acessarem e manipularem mensagens armazenadas em um servidor remoto. Diferente do POP3, que tradicionalmente baixa as mensagens para o dispositivo local e as remove do servidor, o IMAP mantém as mensagens centralizadas no servidor, permitindo acesso sincronizado de múltiplos dispositivos simultaneamente — característica essencial na era de smartphones, tablets e notebooks compartilhando a mesma caixa de entrada.


1. Características Fundamentais

Atributo Valor
RFC principal RFC 3501 (IMAP4rev1), RFC 9051 (IMAP4rev2)
Porta padrão TCP 143 (plain)
Porta segura TCP 993 (IMAPS, implícito TLS)
Transporte TCP, orientado a conexão
Estado Mantém estado de sessão no servidor
Sincronização Multi-device, mensagens ficam no servidor
Modelo Cliente-Servidor, comandos tagged

Por que IMAP em vez de POP3?

  • Acesso Multi-dispositivo: Mensagens permanecem no servidor; smartphones, tablets e desktops veem o mesmo estado.
  • Pastas server-side: Suporte a criação de pastas no servidor (INBOX, Sent, Drafts, Trash, Junk), ao contrário do POP3 que só tem INBOX.
  • Flags de mensagem: Suporte a marcadores como \Seen, \Answered, \Flagged, \Deleted, \Draft.
  • Busca server-side: Permite buscar mensagens no servidor sem baixá-las (ex: SEARCH UNSEEN FROM "alice").
  • Acesso parcial: Permite baixar apenas cabeçalhos ou partes MIME específicas (ex: apenas texto sem anexos).

2. Estados da Sessão IMAP

Uma sessão IMAP passa por estados bem definidos, cada um com comandos permitidos distintos:

Comandos por Estado

Estado Comandos Permitidos
NON-AUTHENTICATED CAPABILITY, NOOP, LOGOUT, STARTTLS, LOGIN, AUTHENTICATE
AUTHENTICATED SELECT, EXAMINE, CREATE, DELETE, RENAME, SUBSCRIBE, LIST, LSUB, STATUS, APPEND, LOGOUT
SELECTED CHECK, CLOSE, EXPUNGE, SEARCH, FETCH, STORE, COPY, UID

Fluxo típico: NON-AUTHENTICATED → (LOGIN/AUTHENTICATE) → AUTHENTICATED → (SELECT) → SELECTED → (CLOSE/LOGOUT) → LOGOUT.


3. Comandos Essenciais

3.1 Capacidade e Login

C: A001 CAPABILITY
S: * CAPABILITY IMAP4rev1 STARTTLS AUTH=PLAIN AUTH=CRAM-MD5
S: A001 OK CAPABILITY completed
C: A002 LOGIN alice secretpass
S: A002 OK LOGIN completed

3.2 Seleção de Pasta e Busca

C: A003 SELECT INBOX
S: * 23 EXISTS
S: * OK [UIDVALIDITY 1234567890] UIDs valid
S: A003 OK [READ-WRITE] SELECT completed

C: A004 SEARCH UNSEEN FROM "boss@corp.com"
S: * SEARCH 15 18 22
S: A004 OK SEARCH completed

C: A005 FETCH 15:18 (FLAGS BODY.PEEK[HEADER.FIELDS (SUBJECT FROM DATE)])
S: * 15 FETCH (FLAGS (\Seen) BODY[HEADER.FIELDS (SUBJECT FROM DATE)] {78}
S: Subject: Re: Quarterly Report
S: From: boss@corp.com
S: )
S: A005 OK FETCH completed

3.3 Marcação e Exclusão

C: A006 STORE 15 +FLAGS (\Deleted)
S: A006 OK STORE completed
C: A007 EXPUNGE
S: * 15 EXPUNGE
S: A007 OK EXPUNGE completed

4. IMAPS e STARTTLS

Para proteger credenciais e conteúdo em trânsito, o IMAP utiliza TLS de duas formas:

IMAPS (Implicit TLS, Porta 993)

Conexão TCP já inicia em modo cifrado. Recomendado pela RFC 8314 (2017) como preferido para novos deployments. Exemplo:

openssl s_client -crlf -connect imap.exemplo.com:993

STARTTLS (Porta 143)

Conexão inicia em plaintext e o cliente envia comando STARTTLS para upgrade para TLS. Suportado por praticamente todos os servidores modernos (Dovecot, Cyrus, Courier) como alternativa de compatibilidade.

openssl s_client -crlf -starttls imap -connect imap.exemplo.com:143

5. Implementações e Softwares

Software Tipo Licença Destaque
Dovecot Servidor MIT/LGPLv2 Mais usado (80%+ market share)
Cyrus IMAP Servidor BSD Alto desempenho, Carnegie Mellon
Courier-IMAP Servidor GPL Integrado com Courier-MTA
Microsoft Exchange Servidor Comercial Requer Active Directory
Thunderbird Cliente MPL Multiplataforma
Microsoft Outlook Cliente Comercial Padrão corporativo
Apple Mail Cliente Proprietário Padrão macOS/iOS

Exemplo de Configuração Dovecot

# /etc/dovecot/dovecot.conf
protocols = imap imaps
ssl = required
ssl_cert = </etc/letsencrypt/live/imap.exemplo.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/imap.exemplo.com/privkey.pem
ssl_min_protocol = TLSv1.2
mail_location = maildir:~/Maildir
service imap-login {
  inet_listener imap  { port = 143 }
  inet_listener imaps { port = 993; ssl = yes }
}
disable_plaintext_auth = yes
auth_mechanisms = plain login

6. Comparação IMAP vs POP3 vs Webmail

Característica POP3 (110) IMAP (143/993) Webmail (HTTPS)
Onde ficam msgs Cliente Servidor Servidor
Multi-device Não (restrito) Sim Sim
Pastas server-side Não Sim Sim
Busca server-side Não Sim Sim
Anexos sob demanda Não Sim Sim
Offline reading Sim (após download) Limitado Não
Largura de banda Alto (download tudo) Baixo (fetch sob demanda) Variável

7. Auditoria e Diagnóstico

# Teste manual IMAP via telnet/openssl (plain)
telnet imap.exemplo.com 143
A001 LOGIN alice password
A002 LIST "" "*"
A003 SELECT INBOX
A004 SEARCH UNSEEN
A005 LOGOUT

# Teste IMAPS (TLS implícito)
openssl s_client -crlf -connect imap.exemplo.com:993

# Logs Dovecot em tempo real
journalctl -u dovecot -f | grep imap
tail -f /var/log/dovecot.log

8. Resumo Técnico

Atributo Valor
RFC 3501 (IMAP4rev1), 9051 (IMAP4rev2), 8314 (Implicit TLS)
Porta plain TCP 143
Porta TLS implícito TCP 993
Porta STARTTLS TCP 143 (upgrade)
Transporte TCP orientado a conexão
Estado Stateful, sessão persistente
Comandos Tagged, comandos assíncronos
Implementação popular Dovecot, Cyrus, Courier
Mecanismos AUTH PLAIN, LOGIN, CRAM-MD5, OAuth2 (RFC 6749)

9. Conclusão

O Protocolo IMAP é o padrão moderno para acesso a e-mails, projetado desde o início para um mundo multi-device onde usuários acessam a mesma caixa de entrada de smartphones, tablets e desktops simultaneamente. Compreender os estados de sessão (NON-AUTHENTICATED → AUTHENTICATED → SELECTED → LOGOUT), dominar comandos essenciais (SELECT, FETCH, SEARCH, STORE, EXPUNGE), configurar corretamente IMAPS na porta 993 com TLS 1.2+ e auditar conexões via openssl s_client são competências essenciais para administradores de correio eletrônico em ambientes corporativos modernos. Em conjunto com o protocolo SMTP (envio) e Submission (RFC 6409, porta 587), o IMAP forma a tríade fundamental do e-mail corporativo contemporâneo, complementando protocolos auxiliares como JMAP (RFC 8620/8621) que prometem modernizar o acesso a mensagens via JSON API.