Resumo

  • A RFC 1846, de setembro de 1995, tratou de máquinas especializadas que jamais aceitavam e-mail. Sem serviço SMTP, o emissor podia classificar a falha como temporária e manter uma mensagem mal endereçada na fila por dias. O código experimental 521 permitiria uma recusa definitiva por um relay MX ou por um servidor mínimo no próprio host.
  • Os autores observaram que alguns clientes recolocavam a mensagem na fila se o servidor enviasse 521 e fechasse a conexão imediatamente; se esperasse pelo QUIT, eles a devolviam ao remetente. A RFC 7504, de 2015, formalizou 521 para a máquina que nunca recebe e-mail e acrescentou 556 para o intermediário que já sabe que um domínio não recebe mensagens.

A caixa postal que ninguém abriu

É bom que um sistema de e-mail saiba esperar. Se o destino fica fora do ar por algumas horas, a mensagem pode ser entregue quando ele volta. O custo dessa paciência aparece quando o destino não oferece e jamais pretende oferecer correio eletrônico. Na proposta experimental de 1995, Alain Durand e Francis Dupont apontaram a multiplicação de hosts dedicados a tarefas específicas, como DNS e NTP. Uma pessoa ainda podia endereçar uma mensagem a uma dessas máquinas por engano.

Ao tentar a conexão e não encontrar servidor SMTP, o cliente emissor não tinha uma declaração de que o host recusava correio em definitivo. A falha poderia significar que o programa seria ligado amanhã. O cliente guardava a mensagem e voltava a tentar. Segundo a RFC, ela podia passar dias na fila até regressar com um erro pouco claro. O operador do host sem e-mail não armazenava nenhuma correspondência. O armazenamento, as tentativas e a espera do usuário estavam todos no lado de quem enviava.

A diferença entre uma falha e uma decisão é o ponto decisivo. O modelo SMTP de 1982 estabelecia uma conversa entre o sistema de origem e o de destino, com comandos e respostas numéricas para orientar o próximo passo. Durand e Dupont queriam dar ao destino — ou a um relay que falasse por ele — a oportunidade de afirmar algo que o silêncio não conseguia: este host não recebe e-mail. O número proposto para essa resposta foi 521. Não criava uma caixa postal. Acabava com a procura por uma que não existia.

A resposta poderia partir de dois lugares. Um relay MX devolveria 521 quando a conversa identificasse um destinatário naquele host. Ou o próprio host executaria um servidor SMTP minúsculo que recusaria todas as mensagens. O primeiro caminho concentrava a decisão num intermediário de correio; o segundo deixava a máquina anunciar sua própria regra. Ambos exigiam um responsável pela palavra «nunca». Sem ele, cada remetente continuaria tentando descobrir por conta própria se a porta estava fechada hoje ou para sempre.

O relay também tinha de falar com uma só voz. A RFC 1846 recomendou que relays MX de preferência menor recusassem igualmente as mensagens quando outro relay já fazia isso pelo host. Se o primeiro caminho desse a resposta definitiva e o segundo não, o emissor poderia seguir pela rota alternativa e retomar as tentativas. Publicar vários caminhos para um destino obriga o operador a manter coerente a decisão em cada um deles.

Uma recusa rápida demais podia soar como defeito

O servidor mínimo enviaria 521 assim que uma conexão fosse aberta, seguido pelo nome oficial do host ou seu endereço IP. Depois poderia fechar o canal ou continuar a receber comandos, responder 521 a todos menos QUIT e esperar o encerramento. A mesma RFC proibiu que um host com essa saudação aparecesse como MX de qualquer domínio. Uma máquina não pode anunciar que jamais aceita correio e simultaneamente ser apresentada como destino de correio.

Por que manter a conexão viva depois da negativa? Porque alguns programas já instalados não reagiam como a especificação pretendia. Durand e Dupont relataram que certos clientes interpretavam a desconexão imediata após 521 como falha temporária e devolviam a mensagem à fila. Se o servidor esperasse, esses clientes enviavam QUIT e retornavam a mensagem ao usuário. O sentido de 521 era idêntico. O ritmo da conversa mudava a conclusão que o emissor tirava dele. Uma resposta correta no lado do destino podia não encerrar o trabalho no lado de origem.

Assim, o host sem e-mail ganhava uma pequena obrigação de correio: atender à conexão, dizer seu nome, recusar a entrega e às vezes esperar a despedida. Não precisava guardar uma única mensagem. Precisava impedir que outras máquinas guardassem por dias uma mensagem impossível de entregar. A solução parecia paradoxal porque era: rodar um serviço cuja única função era declarar a ausência daquele serviço.

A RFC de 1995 era experimental e solicitava relatos de implementação. A observação sobre «alguns» clientes que insistiam depois de uma desconexão não é uma contagem de sistemas ou mensagens afetadas. Uma avaliação do tamanho do problema naquele momento dependeria de registros de filas e de um levantamento de programas. O texto já estabelece, porém, a falha de interoperabilidade: emitir um não não prova que o outro lado parou de tentar.

Duas formas de encerrar a visita

Vinte anos depois, a RFC 7504 integrou 521 ao SMTP por meio de um documento da trilha de padrões. Ela declarou que o código estava em uso amplo, mas ainda não havia sido formalmente incorporado ao protocolo básico. Reservou 521 para o início de uma conexão com um host que nunca aceita e-mail, em nenhuma circunstância. É uma informação diferente de uma recusa genérica 554, que pode decorrer de um emissor, destinatário ou caso particular. A norma de 2015 encerrou o experimento de 1995 ao dar ao número uma função mais precisa.

A resposta também podia vir de antes da conexão. A RFC 7505 descreveu o registro DNS null MX, pelo qual um domínio anuncia que não recebe correio. Na ausência de MX, o remetente normalmente pode recorrer aos endereços A ou AAAA e tentar entregar a mensagem a um host que oferece páginas ou outra função, mas não e-mail. O null MX torna a recusa explícita na camada do nome. Dispensa um servidor SMTP apenas para negar a entrega.

A RFC 7504 ainda criou 556 para o intermediário que já sabe, por informação como null MX, que o domínio de um endereço de encaminhamento não recebe correio. Ele pode responder ao sistema que lhe passou a mensagem sem abrir conexão com o destino. O 521 é a voz do host na abertura da porta. O 556 é a voz do relay que conhece a regra do domínio antes de bater. As duas situações terminam uma tentativa inútil, mas deixam claro quem sabia o quê e em que momento.

Em 1995, uma máquina sem caixa postal talvez precisasse de um programa pequeno para dizer que não tinha caixa postal. Em 2015, o DNS oferecia um aviso anterior. O ganho comum era retirar da fila a obrigação de adivinhar. Se o destino sabe que jamais receberá a mensagem, uma negativa confiável poupa ao resto da rede dias de cortesia inútil.