Resumo

  • DELE tornava um número indisponível dentro da transação, mas mantinha a mensagem e permitia que RSET retirasse a marca.
  • Apenas QUIT enviado em TRANSACTION levava a UPDATE. Queda anormal e autologout fechavam sem remover as mensagens marcadas.
  • RFC 1939 não prometeu tudo ou nada: falta de recursos podia apagar algumas marcas e deixar outras, embora itens não marcados fossem intocáveis.

A frase final veio cedo demais

Desde a RFC 1081, o POP3 abria uma visão do maildrop após autenticação, obtinha o bloqueio de acesso necessário e numerava as mensagens. DELE 4 operava sobre a quarta posição dessa visão. Depois de +OK, referências posteriores ao número falhavam, mas o objeto ainda existia.

RSET revelava a natureza da operação: enquanto a sessão permanecesse em TRANSACTION, todas as marcas podiam ser retiradas. Portanto, o primeiro sucesso comprovava uma intenção registrada, não a liberação do armazenamento.

O bloqueio mantinha os operandos coerentes até UPDATE. Não transformava a posição em identidade permanente nem dava ao cliente domínio sobre retenção. RFC 1225 e RFC 1460 conservaram a sequência: marcar, desfazer, entrar em UPDATE por QUIT, remover, liberar o bloqueio, responder e fechar.

O silêncio não autorizava a etapa destrutiva

A RFC 1725 explicitou que qualquer término diferente de QUIT emitido pelo cliente não entra em UPDATE e não pode remover mensagens. O temporizador de inatividade segue a mesma regra.

Isso protege o intervalo entre receber e armazenar. O servidor pode ter enviado todos os octetos, mas o cliente ainda pode falhar ao gravá-los. Se desaparecer da rede bastasse como autorização, a falha que tornou a cópia local duvidosa destruiria também o original recuperável.

QUIT em AUTHORIZATION apenas termina. Em TRANSACTION, onde há uma visão bloqueada e marcas, ele abre UPDATE. O contexto concede a autoridade que o verbo isolado não possui.

A fronteira não era um commit atômico

A RFC 1939 admite que um erro de recursos deixe algumas ou todas as mensagens marcadas no maildrop. O servidor pode responder -ERR some deleted messages not removed; nunca pode remover uma mensagem sem marca. Depois do resultado, libera o bloqueio e fecha.

Três marcas podem, assim, produzir duas remoções e um sobrevivente. Se a resposta final se perder, o cliente também não sabe se houve sucesso total, parcial ou nenhum UPDATE. Repetir o antigo número após reconectar é arriscado, pois a nova posição pode nomear outro item. UIDL ajuda a reconhecer sobreviventes, mas não prova a causa de uma ausência.

A RFC 2449 permitiu que EXPIRE 0 gerasse DELE implícito para mensagens obtidas por RETR quando a sessão entra em UPDATE. A política muda o conjunto marcado, não antecipa a remoção para a descarga ou para a queda do TCP.

O registro da IANA mantém pop3 na porta 110. Ele coordena um nome; não mede adoção ou conformidade atual.

O mérito histórico do POP3 foi impedir que uma resposta conveniente ganhasse autoridade excessiva. Marcado, removido, reportado e reconciliado permaneceram fatos diferentes.

Fontes