Я хочу рассказать
историю службы техподдержки, которая может показаться невероятной далеким от этой
работы людям. Но мне хочется изложить ее широкой аудитории - хотя бы потому, что это прекрасная рассказка под
выпивку в коллективе
коллег. Кое-что слегка приукрашено, но это - для красоты рассказа, все важные детали сохранены.
Несколько лет назад
я работал в службе технической поддержки электронной
почты университетского кампуса. Мне позвонил заведующий кафедрой
статистики.
"
У нас проблема
с отправкой почты с кафедры"
Я:"В чем проблема?"
"
Мы не можем
послать электронную
почту больше чем на 500 миль"
Я роняю
чашку с
кофе. "Повторите, пожалуйста?"
"Мы не можем отправить
письмо адресатам, находящимся далее 500 миль отсюда", повторяет завкафедрой. "Точнее, 520. Но не дальше".
Я пытаюсь собраться с
мыслями.
Крыша начинает медленно меня покидать, но нельзя позволить
крыше уйти в
разговоре с завкафедрой. Даже завкафедрой статистики. "Хммм... Понимаете,
принцип доставки электронной почты не зависит от
расстояния. Почему
Вы думаете, что не можете отправлять почту далее 500 миль?"
"Я не думаю, я знаю" - довольно жестким тоном заявляет завкафедрой.
"Когда
мы впервые это заметили, несколько
дней назад..."
"Вы ждали несколько ДНЕЙ?" - перебиваю я уже слегка дрожащим
голосом - "
и вы обходились без почты?"
"Нет. Мы могли отправлять
письма, но...".
"Но не далее 500 миль, сэр? Но почему же Вы не позвонили раньше?"
"Ну,
у нас не было достаточного
количества данных до сегодняшнего дня".
Ну да. Кафедра статистики, как-никак. О Господи...
"Ну, так или иначе - я попросил наших геостатистиков разобраться."
Так. Геостатистики.
"...и у
них получилась карта, показывающая
расстояние, на которое мы можем отсылать почту. Чуть больше 500 миль. На некоторые
адреса, находящиеся ближе, мы тоже не можем отправить почту с первой
попытки - но дальше 500 миль мы не можем отправить ничего вообще".
"Я понял, сэр". Крыша-таки решила меня оставить. "Когда это началось? Вы сказали - несколько дней назад. Вы перенастраивали Ваши сервера в последнее время?"
"Да, приходили ребята от производителя, пропатчили сервер и перезагрузили
его. Но я специально у них спросил -
они говорят, что почты это никоим образом не коснулось".
"Хорошо, давайте я посмотрю, что присходит, и перезвоню
Вам" - ответил я, искренне надеясь, что так не шутят даже на Первое
Апреля -
а сегодня далеко не Первое Апреля. Хотелось догадаться, кто из моих
знакомых мог устроить подобное представление. Нууу... Для начала я залогинился на сервер
их кафедры и отправил несколько пробных
писем. Все это происходило в Северной Каролине, и все письма моментально вернулись ко мне в
ящик. Ричмонд, Атланта, Вашингтон - сработало. Принстон (400 миль) - сработало.
Далее я попробовал послать письмо в Мемфис (600 миль). Отлуп.
Бостон, отлуп.
Детройт, отлуп.
Я открыл адресную
книгу и начал пытаться сузить
круги. Нью-Йорк (420 миль) - работает, Провиденс (580 миль) - отлуп.
У меня появились
сомнения в собственной вменяемости. Я решил попробовать отправить письмо своему другу, живущему в Северной Каролине, но работающему с провайдером в Сиэттле.
Благодарю
Тебя, Господи. Отлуп. Если бы оказалось, что прохождение писем зависит от того, где находится
человек, их получающий - я бы сам, по собственной
инициативе и с гордо поднятой
головой пошел бы сдаваться
санитарам.
Поняв, наконец, что завкафедрой не бредит,
я решил посмотреть на sendmail.cf. Вполне нормальный sendmail.cf.
Знакомый даже.
Я сравнил его diff"ом со стандартным sendmail.cf у меня на диске.
Он не изменялся. Это был ровно тот же sendmail.cf, который я делал собственноручно.
Но опцию "FAIL_MAIL_OVER_500_MILES" я не включал, это точно.
Каюк. Ну что еще попробовать? telnet по 25-му порту на сервер этой гребаной кафедры.
Сервер радостно отвечает, как ему и положено - blah-blah-blah, я, говорит, SunOS.
Стоп-стоп-стоп... SunOS sendmail? Sun тогда поставлял со своей операционкой sendmail 5, хотя все нормальные
люди уже работали с sendmail 8.
Поскольку я - все-таки неплохой администратор,
почта у меня ходила под sendmail 8. Ну и опять-таки - поскольку я - человек, приученный к порядку, я переписал sendmail.cf с нормальными, понятными
именами переменных и опций. Что с переменными и опциями делал sendmail 5, вы должны помнить.
Так-так-так... Картинка собиралась. Мне снова захотелось кофе.
Ребятки от Sun пропатчили операционку, но sendmail, в общем-то, тоже ее часть.
Они удачно закрыли дыры, но sendmail снова стал 5, а не 8. Но в одном они были правы - sendmail.cf действительно никто не тронул.
А какая разница, для восьмой версии
он или для пятой?
Ну,
короче говоря. Пятый (по крайней мере, в варианте Sun"а) - нормально отрабатывал sendmail.cf от восьмого.
Рулсеты-то не изменились.
Но вот опции настройки, такие неприлично длинные - он считал чуть ли не комментариями. Клал на них. А откомпилирован он был без настроек по умолчанию.
И, как честный человек, не найдя чего-то в sendmail.cf, он устанавливал это в 0.
Одна из успешно установленных в
ноль настроек - таймаут для соединения с удаленным SMTP - сервером. Поигравшись с этим сервером, я понял, что "ноль" по его мнению - это около трех миллисекунд.
Так. Ага...
Сетка наша уже в то
время была на коммутаторах, и
задержек практически не имела.
Задержки снаружи - это, в общем. Было понятно.
Ага.
Скорость распространения электромагнитной
волны.
ОООПС....
Умножаем время на
скорость света, и получаем... и получаем...
558.84719
Пятьсот пятьдесят восемь миль.