O email de 800 quilômetros

Este post é uma tradução do original.

De: trey@sage.org 
Data: domingo, 24 de novembro de 2002 21:03:02
De: Trey Harris trey@sage.org
Para: sage-members@sage.org
Assunto: O caso do e-mail de 800 Km 
Aqui está um problema que *soou* impossível…

Eu quase me arrependo de postar a história para um público amplo, porque é uma ótima história para contar bebendo em um
conferência. 🙂

A história é ligeiramente alterada para proteger o
culpado, elidir sobre detalhes irrelevantes e chato, e em geral fazer a
coisa toda mais divertida.

Eu estava trabalhando cuidando do sistema de e-mail do campus alguns anos atrás, quando recebo uma ligação do presidente do departamento de estatística.

“Estamos com problemas para enviar e-mails para fora do departamento”.
“Qual é o problema?” Eu perguntei.
“Não podemos enviar e-mails a mais de 800 Km”, explicou o presidente.
Eu engasguei no meu café. “Como assim?”
“Não podemos enviar e-mails a mais de 800 Km daqui”, repetiu ele. “Um
pouco mais, na verdade. Diria uns 830 Km. Mas não mais longe.”
“Hmmm… e-mail não funciona assim, geralmente”, eu disse, tentando
manter o pânico fora da minha voz. Não se exibe pânico ao falar com um
presidente de departamento, mesmo de um departamento relativamente pequeno como o de Estatística.

“O que faz você achar que não pode enviar e-mails a mais de 800 Km?” Perguntei.
“Não é o que eu acho”, respondeu o presidente com irritação.  “Veja, quando nós notamos isso acontecendo alguns dias atrás… “

“Você esperou alguns DIAS?” Eu interrompi, com um leve tremor na voz. “E você não pode enviar e-mail esse tempo todo? “

“Nós conseguimos enviar e-mail. Só não mais que -“

“- 800 Km, sim”, eu terminei por ele, “eu entendi. Mas por que você não
ligou mais cedo? “

“Bem, nós não coletamos dados suficientes para ter certeza do que estava acontecendo até agora. “

Certo. Este é o presidente de estatística.

“De qualquer forma, eu pedi a um dos geo-estatísticos para cuidar disso -“

Geo-estatísticos…”

“- Sim, e ela fez um mapa mostrando o raio dentro do qual podemos
enviar e-mail, pouco mais de 800 Km. Há um certo número de
destinos dentro desse raio que não podemos alcançar, ou alcançar
esporadicamente, mas nunca podemos enviar e-mails além desse raio. “

“Entendo”, eu disse, e coloquei minha cabeça em minhas mãos. “Quando isso começou? Alguns dias atrás, você disse, mas fez alguma mudança em seus sistemas recentemente?”

“Bem, o consultor entrou e atualizou o nosso servidor e reiniciou-o.
Mas eu liguei para ele e ele disse que não tocou no sistema de e-mail. “

“Ok, deixe-me dar uma olhada, e eu te ligo de volta”, eu disse, mal
acreditando que eu estava dando trela. Não era o dia da mentira. Eu tentei lembrar se tinha feito alguma pegadinha com alguém e isso seria algum tipo de vingança.

Eu entrei no servidor de seu departamento e enviei alguns e-mails de teste. Este servidor no Triangulo de Pesquisa da Carolina do Norte, e um e-mail de teste para o meu próprio endereço, foi entregue sem problemas. Idem para um enviado para Richmond, Atlanta e Washington. Outro para Princeton (640 Km) funcionou.
Mas então eu tentei enviar um email para Memphis (965 Km). Falhou.
Boston falhou. Detroit falhou. Eu peguei meu livro de endereços e comecei tentando diminuir o raio. Nova York (675 Km) funcionou, mas Providence (933 Km) falhou.
Eu estava começando a me perguntar se eu tinha perdido minha sanidade. Eu tentei enviar um email para um amigo que morava na Carolina do Norte, mas cujo servidor estava em Seattle.
Felizmente, falhou. Se o problema tivesse a ver com a localização do
destinatário humano e não o seu servidor de e-mail, eu acho que teria debulhado em lágrimas.


Tendo estabelecido isso – inacreditavelmente – o problema relatado era verdadeiro, e replicável, dei uma olhada no arquivo sendmail.cf. Parecia razoavelmente normal. Na verdade, parecia familiar.
Eu o comparei com o sendmail.cf no meu computador. Não tinha sido
alterado – era o sendmail.cf que eu tinha escrito. E eu estava bastante certo de que não ativei a opção “FALHAR_EMAIL_APÓS_800KM”. Sem saber o que fazer, eu conectei via telnet na porta SMTP.

O servidor respondeu alegremente com um banner do sendmail do SunOS.
Peraí… um banner do sendmail do SunOS? Na época, a Sun ainda estava
enviando o Sendmail 5 com seu sistema operacional, embora o Sendmail 8 ja estivesse bastante maduro. Sendo um bom administrador de sistemas, eu tinha padronizado tudo para Sendmail 8. E também sendo um bom administrador de sistema, eu tinha escrito um
sendmail.cf bem documentado e com as variáveis, disponível no Sendmail 8 em vez das configurações crípticas e códigos que foram utilizados no Sendmail 5.
As peças se encaixaram de uma só vez, e eu novamente engasguei com a borra do meu café agora frio. Quando o consultor “atualizou o servidor”, ele aparentemente tinha atualizado a versão do SunOS, e ao fazê-lo
desatualizou o Sendmail 8 para o 5. A atualização não mexeu no sendmail.cf, embora agora fosse a versão errada.

Acontece que o Sendmail 5 – pelo menos, a versão que a Sun enviou,
que tinha alguns ajustes – era compatível com o sendmail.cf do Sendmail 8, como a maioria das regras permaneceram inalteradas.
Mas as regras novas eram consideradas lixo e ignoradas.
E o executável do sendmail não tinha nenhum padrão compilado para a maioria destas regras, portanto, ao não encontrar nenhuma configuração adequada no arquivo sendmail.cf, eles foram configurados para zero.
Uma das configurações definidas como zero foi o tempo limite para se conectar ao servidor SMTP remoto. Testando algumas coisas, percebi que neste servidor, com sua carga típica, um tempo limite de zero abortaria
a requisição em pouco mais de três milissegundos.
Uma característica estranha da nossa rede do campus na época era que era 100% com switches. Um pacote de saída não passaria pelo atraso de um roteador até atingir o POP e chegar a um roteador do outro lado. Então, a demora para se conectar a um servidor remoto em uma rede próxima seria em grande parte governado pela velocidade da luz até o destino, em vez de atrasos de roteador.
Sentindo-me um pouco tonto, eu digitei no terminal:

$ units 1311 units, 63 prefixes
You have: 3 millilightseconds
You want: miles * 558.84719 / 0.0017893979

“800 Km, ou um pouco mais.”


Trey Harris, 2002
unsplash-logoAdolfo Félix


Comments

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

pt_BRPortuguês do Brasil