Pular para o conteúdo

Design clássico · Sênior

Serviço de e-mail distribuído (Gmail)

Projeto de entrevista clássico. Pontos centrais: entrega de blobs e vídeo e SMTP/IMAP.

16 min de leitura · Conteúdo revisado em 23 de outubro de 2026

Resposta curta

Projeto de entrevista clássico. Pontos centrais: entrega de blobs e vídeo e SMTP/IMAP. Um serviço de e-mail recebe mensagens de outros domínios, guarda cada uma na caixa certa e deixa a pessoa lê-las. Entre servidores a mensagem trafega por SMTP; o cliente acessa as mensagens guardadas no servidor por IMAP.

01 · CONTEXTO

O que um serviço de e-mail precisa fazer

Um serviço de e-mail recebe mensagens de outros domínios, guarda cada uma na caixa certa e deixa a pessoa lê-las. Entre servidores a mensagem trafega por SMTP; o cliente acessa as mensagens guardadas no servidor por IMAP.

Este caso se apoia só em fontes públicas: os padrões do IETF, a documentação do servidor Dovecot e a do filtro Apache SpamAssassin.

Uma mensagem raramente vai direto do remetente ao destino final. Os hosts intermediários são normalmente descobertos pelo registro MX do DNS, e um servidor relay que aceita a tarefa vira ele próprio um cliente SMTP e abre o canal até o próximo servidor.

02 · ENTREGA PELA INTERNET

SMTP, DNS e filas de retentativa

O ponto crítico da entrada é a resposta de sucesso: depois dela, o padrão exige que o servidor que a emitiu assuma a responsabilidade de entregar a mensagem ou de reportar a falha.

Nesta leitura, a entrada é desenhada com uma fila de mensagens entre o servidor SMTP e o processamento da mensagem.

  1. O servidor do remetente consulta o DNS para descobrir quais servidores recebem o e-mail do domínio de destino.

    Diagrama da arquitetura: E-mail: entrada pela internet
    CPServidor do remetente
    NWDNS do domínioregistro MX
    CPServidor SMTP de entrada
    QFila de entrada
    CPFiltro anti-spam
    DBÍndice de caixas
    DBArmazenamento de mensagens
  2. Ele abre a conexão SMTP com o servidor de entrada indicado e transmite a mensagem.

    Diagrama da arquitetura: E-mail: entrada pela internet
    CPServidor do remetente
    NWDNS do domínio
    CPServidor SMTP de entradarecebe
    QFila de entrada
    CPFiltro anti-spam
    DBÍndice de caixas
    DBArmazenamento de mensagens
  3. O servidor de entrada passa a mensagem para a fila de entrada; a resposta de sucesso ao remetente marca a transferência de responsabilidade.

    Diagrama da arquitetura: E-mail: entrada pela internet
    CPServidor do remetente
    NWDNS do domínio
    CPServidor SMTP de entrada
    QFila de entradamensagem aceita
    CPFiltro anti-spam
    DBÍndice de caixas
    DBArmazenamento de mensagens
  4. Um consumidor tira a mensagem da fila e a passa pelo filtro anti-spam, detalhado mais adiante.

    Diagrama da arquitetura: E-mail: entrada pela internet
    CPServidor do remetente
    NWDNS do domínio
    CPServidor SMTP de entrada
    QFila de entrada
    CPFiltro anti-spamclassifica
    DBÍndice de caixas
    DBArmazenamento de mensagens
  5. O conteúdo vai para o armazenamento de mensagens e o índice da caixa registra a nova mensagem.

    Diagrama da arquitetura: E-mail: entrada pela internet
    CPServidor do remetente
    NWDNS do domínio
    CPServidor SMTP de entrada
    QFila de entrada
    CPFiltro anti-spam
    DBÍndice de caixasmetadados
    DBArmazenamento de mensagensconteúdo

A mensagem que não pode ser transmitida de imediato deve ser enfileirada e retentada periodicamente, e a entrada da fila guarda a mensagem junto com as informações do envelope. O padrão pede que o intervalo entre tentativas seja de pelo menos 30 minutos e que o prazo de desistência seja de pelo menos 4-5 dias. Um erro temporário na consulta MX também leva a mensagem à fila para nova tentativa.

03 · ARMAZENAMENTO DE CAIXAS

Formatos de caixa e acesso por IMAP

A documentação do Dovecot lista formatos de caixa que organizam as mensagens em disco de jeitos bem diferentes.

FormatoOrganizaçãoO que a documentação destaca
mboxUm único arquivo contém várias mensagensFormato tradicional de caixa UNIX
MaildirUm arquivo contém uma mensagemArquivos nunca são modificados e as operações são atômicas
dboxMensagens em um ou mais arquivos, cada um com uma ou mais mensagensFormato próprio de alto desempenho do Dovecot

No Maildir, o diretório tmp é usado durante a entrega. A documentação também recomenda manter os arquivos de índice em disco diferente do spool de mensagens, o que dá melhor desempenho.

Do lado do cliente, o IMAP permite acessar e manipular as mensagens que ficam no servidor. As mensagens são referidas por números de sequência ou por identificadores únicos, o protocolo prevê flags e a obtenção seletiva de partes da mensagem, e o cliente offline consegue ressincronizar com o servidor. O IMAP também exige um número de identificação único e permanente por mensagem.

Os identificadores persistentes são o que permite ao cliente ressincronizar o estado de uma sessão anterior, e qualquer mudança deles entre sessões deve ser detectável pelo mecanismo UIDVALIDITY.

  1. O cliente de e-mail abre uma sessão IMAP e acessa as mensagens guardadas no servidor.

    Diagrama da arquitetura: E-mail: leitura e envio
    CLCliente de e-mail
    CPServidor IMAPsessão
    DBÍndice de caixas
    DBArmazenamento de mensagens
    CPServidor de submissão
    QFila de saída
    CPTransmissor SMTP
  2. O servidor IMAP lê no índice da caixa os identificadores e as flags das mensagens.

    Diagrama da arquitetura: E-mail: leitura e envio
    CLCliente de e-mail
    CPServidor IMAP
    DBÍndice de caixasflags e ids
    DBArmazenamento de mensagens
    CPServidor de submissão
    QFila de saída
    CPTransmissor SMTP
  3. Ao abrir uma mensagem, o servidor busca no armazenamento só as partes pedidas.

    Diagrama da arquitetura: E-mail: leitura e envio
    CLCliente de e-mail
    CPServidor IMAP
    DBÍndice de caixas
    DBArmazenamento de mensagenspartes pedidas
    CPServidor de submissão
    QFila de saída
    CPTransmissor SMTP
  4. Para enviar, o cliente entrega a mensagem ao servidor de submissão, que a coloca na fila de saída.

    Diagrama da arquitetura: E-mail: leitura e envio
    CLCliente de e-mail
    CPServidor IMAP
    DBÍndice de caixas
    DBArmazenamento de mensagens
    CPServidor de submissão
    QFila de saídaa enviar
    CPTransmissor SMTP
  5. O transmissor SMTP consome a fila de saída e retenta a entrega até conseguir ou desistir.

    Diagrama da arquitetura: E-mail: leitura e envio
    CLCliente de e-mail
    CPServidor IMAP
    DBÍndice de caixas
    DBArmazenamento de mensagens
    CPServidor de submissão
    QFila de saída
    CPTransmissor SMTPretentativas

Uma proposta de desenho para a entrevista: guardar o conteúdo bruto das mensagens e dos anexos em armazenamento de objetos e manter em um banco de documentos só os metadados de cada mensagem, como pasta, flags e identificador. O servidor IMAP responderia listagens e filtros por flag a partir do índice e só iria ao armazenamento de objetos para ler o conteúdo. Essa separação cobre a escolha do banco de dados e a modelagem dos dados, e uma busca por texto exigiria um sistema de busca à parte.

04 · ANTI-SPAM

Autenticar o remetente e pontuar o conteúdo

O protocolo de transporte não impede que alguém se passe por outro domínio: os protocolos existentes não restringem o que um host remetente pode usar como MAIL FROM de uma mensagem. Três mecanismos públicos tratam desse problema. O SPF permite que um domínio autorize explicitamente os hosts que podem usar seu nome e que o receptor verifique essa autorização. No DKIM, a responsabilidade é validada por assinatura criptográfica e pela consulta direta ao domínio do assinante para obter a chave pública. O DMARC deixa a organização de origem expressar políticas de validação, disposição e relatório que o receptor pode usar.

O Apache SpamAssassin é um filtro para classificar e-mail e bloquear spam: usa um framework de pontuação e plug-ins que integram testes heurísticos e estatísticos sobre cabeçalhos e corpo, incluindo filtro bayesiano, listas de bloqueio via DNS e bancos colaborativos. Segundo o projeto, a ampla variedade de testes locais e de rede identifica assinaturas de spam, e o filtro pode ser integrado em qualquer ponto do fluxo de e-mail.

  1. A mensagem recebida segue do servidor de entrada para o verificador de autenticação.

    Diagrama da arquitetura: E-mail: anti-spam em camadas
    CPServidor SMTP de entrada
    CPVerificador de autenticaçãoverifica
    NWDNS público
    CPPontuação de conteúdo
    DBRegras e dados de treino
    DBArmazenamento de caixas
  2. O verificador checa a autorização do host pelo SPF e obtém a chave pública do assinante consultando o domínio dele, no DKIM; o DMARC expressa a política do domínio que o receptor pode usar.

    Diagrama da arquitetura: E-mail: anti-spam em camadas
    CPServidor SMTP de entrada
    CPVerificador de autenticação
    NWDNS públicopolíticas e chaves
    CPPontuação de conteúdo
    DBRegras e dados de treino
    DBArmazenamento de caixas
  3. A mensagem segue para a pontuação de conteúdo, que soma testes sobre cabeçalhos e corpo, incluindo listas de bloqueio via DNS.

    Diagrama da arquitetura: E-mail: anti-spam em camadas
    CPServidor SMTP de entrada
    CPVerificador de autenticação
    NWDNS público
    CPPontuação de conteúdosoma os testes
    DBRegras e dados de treino
    DBArmazenamento de caixas
  4. A pontuação consulta as regras e os dados do filtro estatístico, mantidos à parte do fluxo da mensagem.

    Diagrama da arquitetura: E-mail: anti-spam em camadas
    CPServidor SMTP de entrada
    CPVerificador de autenticação
    NWDNS público
    CPPontuação de conteúdo
    DBRegras e dados de treinoregras e dados
    DBArmazenamento de caixas
  5. Conforme a classificação, a mensagem é guardada na pasta indicada, como a caixa de entrada ou a pasta de spam.

    Diagrama da arquitetura: E-mail: anti-spam em camadas
    CPServidor SMTP de entrada
    CPVerificador de autenticação
    NWDNS público
    CPPontuação de conteúdo
    DBRegras e dados de treino
    DBArmazenamento de caixaspasta conforme a classe

05 · VISÃO COMPLETA

Juntando as peças e o que defender

Juntando os caminhos, o serviço tem uma via de entrada (DNS, servidor SMTP, fila, filtro e armazenamento), uma via de acesso (IMAP ou webmail lendo o índice e o armazenamento) e uma via de saída (submissão, fila e transmissor). As três compartilham o mesmo armazenamento de mensagens.

  1. Entrada: servidores externos descobrem o destino no DNS, o servidor SMTP aceita a mensagem e a coloca na fila de entrada.

    Diagrama da arquitetura: E-mail: visão completa
    CPServidores externos
    NWDNS do domínio
    CPServidor SMTP de entrada
    QFila de entradaaceita
    CPFiltro anti-spam
    DBÍndice de caixas
    DBArmazenamento de mensagens
    CPServidor IMAP e webmail
    CLCliente de e-mail
    CPServidor de submissão
    QFila de saída
  2. Processamento: o filtro consome a fila, classifica a mensagem e a grava no armazenamento e no índice.

    Diagrama da arquitetura: E-mail: visão completa
    CPServidores externos
    NWDNS do domínio
    CPServidor SMTP de entrada
    QFila de entrada
    CPFiltro anti-spamclassifica
    DBÍndice de caixasmetadados
    DBArmazenamento de mensagensconteúdo
    CPServidor IMAP e webmail
    CLCliente de e-mail
    CPServidor de submissão
    QFila de saída
  3. Acesso: o cliente lê pastas e mensagens pelo servidor IMAP, que usa o índice e o armazenamento.

    Diagrama da arquitetura: E-mail: visão completa
    CPServidores externos
    NWDNS do domínio
    CPServidor SMTP de entrada
    QFila de entrada
    CPFiltro anti-spam
    DBÍndice de caixas
    DBArmazenamento de mensagens
    CPServidor IMAP e webmailleitura
    CLCliente de e-mail
    CPServidor de submissão
    QFila de saída
  4. Saída: o cliente envia pelo servidor de submissão, a mensagem espera na fila de saída e segue para servidores externos.

    Diagrama da arquitetura: E-mail: visão completa
    CPServidores externos
    NWDNS do domínio
    CPServidor SMTP de entrada
    QFila de entrada
    CPFiltro anti-spam
    DBÍndice de caixas
    DBArmazenamento de mensagens
    CPServidor IMAP e webmail
    CLCliente de e-mail
    CPServidor de submissão
    QFila de saídaa enviar

Perguntas frequentes

O que é Serviço de e-mail distribuído (Gmail)?

Projeto de entrevista clássico. Pontos centrais: entrega de blobs e vídeo e SMTP/IMAP.

O que o design de Serviço de e-mail distribuído (Gmail) cobre?

Ele está organizado nestas seções: O que um serviço de e-mail precisa fazer, SMTP, DNS e filas de retentativa, Formatos de caixa e acesso por IMAP, Autenticar o remetente e pontuar o conteúdo e Juntando as peças e o que defender.

Quanto tempo leva Serviço de e-mail distribuído (Gmail) e qual é o nível?

Leva cerca de 16 minutos para ler e tem nível Sênior.

Agora projete você mesmo

Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.