Este post é uma tradução do original.
Adolfo FélixDe: 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