Resumo

  • A RFC 2369, de julho de 1998, permitiu que listas anunciassem no cabeçalho como cancelar a inscrição. Se visitar a URL já removia o assinante, o servidor confundia a inspeção automática com a decisão de uma pessoa.
  • A RFC 8058, de janeiro de 2017, acrescentou List-Unsubscribe-Post: List-Unsubscribe=One-Click. Uma assinatura DKIM válida deve proteger esse campo e List-Unsubscribe; o receptor precisa do consentimento do usuário antes de enviar o HTTPS POST.
  • O POST leva apenas o par chave-valor fixado na norma, sem cookies ou autorização HTTP. O servidor não pode responder com redirecionamento HTTPS. A IANA registra o novo cabeçalho.

A visita que virou voto

O primeiro mecanismo resolvia uma dificuldade real. A RFC 2369 deu às listas um lugar padronizado para indicar a saída. O programa de e-mail podia mostrar List-Unsubscribe sem obrigar o leitor a procurar uma frase no rodapé. O cabeçalho podia conter uma URL HTTPS. A porta ficava visível. O endereço, porém, não revelava se quem o abrira era uma pessoa querendo sair ou um programa trabalhando nos bastidores.

Os filtros antispam também abrem URLs. A RFC 8058 descreve programas que buscam automaticamente recursos mencionados nos cabeçalhos, sem iniciativa do leitor. Se o servidor considerasse a simples visita um cancelamento completo, a inspeção apagava a inscrição. Do lado da lista, não havia uma forma mecânica de distinguir o pedido humano daquela requisição automática. O software chamado a proteger a caixa postal acabava retirando seu dono da lista.

Uma página de confirmação impedia o acidente. O scanner chegava à página, mas não apertava o próximo botão; o leitor podia terminar. O preço era mais uma etapa para quem realmente desejava sair. O defeito estava em tratar uma URL publicada para ser consultada como prova suficiente de vontade para modificar um cadastro.

O novo cabeçalho definiu a ação

A RFC 8058 manteve o cabeçalho de 1998 e adicionou uma marca própria para o cancelamento em uma ação. O remetente coloca uma URI HTTPS em List-Unsubscribe e exatamente List-Unsubscribe=One-Click em List-Unsubscribe-Post. Depois do consentimento, o programa receptor envia à URI um HTTPS POST com esse par como corpo. Buscar o endereço para examiná-lo e enviar um POST para alterar a inscrição são dois verbos distintos no próprio protocolo.

O remetente deve ainda aplicar uma assinatura DKIM válida que cubra os dois cabeçalhos e os inclua na lista h=. A assinatura liga o endereço e a declaração de funcionamento a uma mensagem verificável. Sem ela, o receptor não deveria oferecer o cancelamento em uma ação. Essa verificação confirma a oferta do remetente, não a vontade do leitor.

A vontade tem uma regra separada: o receptor não pode enviar o POST sem consentimento do usuário. A RFC não define qual tela o recolhe. O operador da lista apresenta e assina a oferta; o programa de correio apresenta a escolha e executa a requisição; o leitor decide. A leitura automática de um link não ocupa o lugar de nenhuma dessas etapas.

O servidor tem de cumprir a promessa no endereço anunciado

O corpo do POST contém somente o par determinado. Não há cookies, autorização HTTP ou outro contexto. Por isso, a URI precisa identificar suficientemente a lista e o destinatário cuja inscrição será removida. A RFC recomenda um identificador opaco e difícil de adivinhar. Uma implementação que espere uma sessão aberta no navegador não consegue concluir a requisição padronizada do cliente de e-mail.

O servidor também não pode redirecionar esse POST para outra URL HTTPS. A RFC explica o motivo: historicamente, redirecionamentos de POST falharam ou foram convertidos em GET por navegadores. Jogar a ação decisiva para o fim de uma sequência de saltos arriscaria apagar a distinção entre inspeção e comando. O endereço anunciado deve receber a requisição autorizada e concluir a remoção ali.

A RFC 8058 não altera os demais usos das URLs de cancelamento da RFC 2369. Ela estabelece um trajeto marcado para a operação em uma ação. A IANA registrou List-Unsubscribe-Post; o registro dá nome ao sinal, enquanto assinatura, consentimento, POST e servidor fazem o procedimento funcionar.

Sair exige uma cadeia, não apenas um link

O operador controla a oferta assinada e o servidor. O programa receptor controla a apresentação e a hora da requisição. O leitor controla a decisão. A inspeção automática continua sendo inspeção. Essa divisão é o efeito da pequena mudança de 2017. Se uma parte falha, a saída pode virar uma máquina de remoções indevidas ou um botão que não conclui nada.

Os documentos oficiais estabelecem a regra e o registro do cabeçalho. Para medir a implantação em um serviço específico seriam necessários e-mails brutos datados, manuais do receptor e registros do servidor. A lição histórica é precisa: a Web tornou fácil para programas abrir links; o correio precisou dizer qual abertura tinha força de ordem.