Геостатики

Я хочу рассказать историю службы техподдержки, которая может показаться невероятной далеким от этой работы людям. Но мне хочется изложить ее широкой аудитории — хотя бы потому, что это прекрасная рассказка под выпивку в коллективе коллег. Кое-что слегка приукрашено, но это — для красоты рассказа, все важные детали сохранены.


Несколько лет назад я работал в службе технической поддержки электронной почты университетского кампуса. Мне позвонил заведующий кафедрой статистики.


«У нас проблема с отправкой почты с кафедры» Я: «В чем проблема?»


«Мы не можем послать электронную почту больше чем на 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. Пятьсот пятьдесят восемь миль.

IT-юмор

5.7K постов52.6K подписчиков

Добавить пост

Правила сообщества

Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору

Вы смотрите срез комментариев. Показать все
44
Автор поста оценил этот комментарий
Ниче не понял, но история держала меня в напряжении до конца
раскрыть ветку (13)
59
DELETED
Автор поста оценил этот комментарий
Короче, у них в универе засорились интернет-кабеля, а на конце кабелей были специальные электронные ворота, не пропускающие интернет. И захлопывались они через 3 милисекунды после отправки электронного сигнала по кабелю. Короче, программу криво обновили и все, электронные письма за 3 милисекунды успевали пройти 500 миль, а потом ворота включались.
раскрыть ветку (7)
28
Автор поста оценил этот комментарий

Спасибо тебе, Добрый Человек. А то я уже начал искать записку: "Я уехала. Твоя крыша." А оно воночё - "засорились интернет-кабеля".

Иллюстрация к комментарию
раскрыть ветку (1)
3
Автор поста оценил этот комментарий

ты не знал, что их чистить нужно https://www.youtube.com/watch?v=uQNMgmshu7g

1
Автор поста оценил этот комментарий
как он понимал, что письмо отправилось? не по ответу от удаленного сервера? если нет, то тогда, наверное, должно зависеть еще от самого письма, его размера. если да, то тогда должно быть 1,5мс - т. е тоже не сходится
Автор поста оценил этот комментарий

стоп, а какого чёрта? Попахивает пиздежом, т.к. пакет с письмом в любом случае отправился, и ни один сервер в мире не способен его вернуть))) и плевать а таймаут в 3мс. Или он сперва ждёт ответа от сервера(на который и установлен таймаут)?

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

А никто не говорит, что адресаты этих писем не получали :-) Если не успел вернуться tcp-пакет с smtp-подтверждением о доставке, то сервер автора байки считал, что она не состоялась и рвал tcp-соединение. возможно, у sendmail есть какой-то свой отдельный таймаут на это дело.

раскрыть ветку (1)
Автор поста оценил этот комментарий

тогда причём тут скорость света? в таком случае, расстояние нужно делить на 2 + скорость обработки инфы серверами(своими и чужими).

Автор поста оценил этот комментарий

На сколько я знаю маршрутизацию, то всегда есть 2 сигнала. Входной и Отправленный. Отправляется сигнал на сервер, если ответа нет(сервер на который ты послал сигнал не отправил сигнал в ответ), и тебе не пришёл "входной" сигнал. Так и определяется доступность сервера и вообще дошло ли письмо в данном случае.

13
Автор поста оценил этот комментарий

Из за ошибки в конфигурации, все письма которые не успевали доставиться за 3 мс, считались не доставленными.

раскрыть ветку (3)
2
Автор поста оценил этот комментарий

Не письма, а TCP-пакеты. Пакетов при одной передаче может быть и миллион и сколько угодно вообще, но каждый должен пролететь за эти милисекунды и не дольше.

раскрыть ветку (2)
1
Автор поста оценил этот комментарий

возможно, там не tcp-пакеты, а просто какой-то таймаут на прикладном уровне работал.

Автор поста оценил этот комментарий
А как же ответ от сервера?
Автор поста оценил этот комментарий

я только понял что он хороший администратор, а с sun я ваще как то слабо знаком

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку