לפני כמה שנים עבדתי בתחזוקת מערכת הדואר האלקטרוני של הקמפוס, כשלפתע קיבלתי שיחה מיושב ראש המחלקה לסטטיסטיקה.

“יש לנו בעיה עם שליחת הודעות דואר אלקטרוני אל מחוץ למחלקה.”

“מה הבעיה?” שאלתי.

“אנחנו לא יכולים לשלוח הודעות ליותר מ־850 קילומטרים”, הסביר היו"ר.

נחנקתי קצת מהלאטה. “חזור שנית?”

“אנחנו לא יכולים לשלוח הודעות למקומות המרוחקים 850 קילומטרים מכאן”, הוא חזר. “טיפה יותר, למעשה, 885 קילומטרים. אבל לא רחוק מכך”.

“אה… דואר אלקטרוני לא בדיוק עובד ככה, בדרך כלל”, אמרתי, מנסה שהקול שלי לא ישקף את הבעתה שאחזה בי. אתה כנראה לא רוצה להראות את הבעתה שלך כשאתה מדבר ליו"ר מחלקה, אפילו אם מדובר על ראש מחלקה ענייה כמו המחלקה לסטטיסטיקה. “מה גורם לך לחשוב שאתה לא יכול לשלוח הודעות למקומות הרחוקים מכם 850 קילומטרים?”

“זה לא מה שאני חושב”, השיב ראש המחלקה בכעס. “אתה מבין, כששמנו לב לראשונה שזה קורה, לפני מספר ימים–”

“חיכיתם מספר ימים?”, הפרעתי עם קול מעט רועד, “ולא שלחתם לי הודעת דואר אלקטרוני כל הזמן הזה?”

“יכולנו לשלוח הודעה, פשוט לא יותר מ–”

“–למרחק של 850 קילומטרים מכם, כן”, השלמתי אותו, “את זה הבנתי. אבל למה לא התקשרתם עוד קודם?”

“ובכן, לא אספנו מספיק מידע על מנת לבסס את השערותינו ממש עד עכשיו”. נכון. זה ראש המחלקה ל*סטטיסטיקה*. “בכל מקרה, ביקשתי מאחד הגאוסטטיסטיקאיות שלנו להעמיק בבעיה–”

“גאוסטטיסטיקאיות…”

“–כן, והיא הפיקה מפה שמראה שהמרחק המרבי אליו אנחנו יכולים לשלוח הודעות דואר אלקטרוני, הוא ברדיוס של מעט יותר מ־850 קילומטרים מאיתנו. ישנם מספר יעדים ברדיוס הזה שאנחנו לא יכולים להגיע אליהם, או שאנחנו יכולים להגיע אליהם באופן לא סדיר, אבל לעולם לא נוכל לשלוח הודעה מעבר לרדיוס הזה.”

“אני מבין”, אמרתי בעודי מניח את הידיים על הראש. “זה התחיל לפני כמה ימים, אמרת, אבל האם שיניתם משהו במערכת שלכם בזמן הזה?”

“ובכן, היועץ בא, תיקן את השרתים ואתחל אותם מחדש. התקשרתי אליו, אבל הוא אמר שהוא לא נגע במערכת הדואר האלקטרוני.”

“בסדר, תן לי להעיף מבט ואני אחזור אליך מיד”, אמרתי, מתקשה להאמין שאני משתתף במשחק הזה. זה לא היה האחד באפריל. ניסיתי להיזכר אם מישהו היה חייב לי מתיחה.

התחברתי לשרת של המחלקה ושלחתי כמה הודעות בדיקה. זה היה במשולש המחקר של צפון קרוליינה, והודעת בדיקה הגיעה ונמסרה לחשבון שלי בלי בעיה. בדיוק אותו דבר קרה עבור הודעה שנשלחה לריצ’מונד, אטלנטה וושינגטון. הודעה נוספת שנשלחה לפרינסטון (640 ק"מ) הגיעה בהצלחה.

אבל אז ניסיתי לשלוח הודעת דואר אלקטרוני לממפיס (960 ק"מ). הניסיון כשל. בוסטון, כשל. דטרויט, כשל. הוצאתי את ספר הטלפונים שלי והתחלתי בניסיון לצמצם את האפשרויות. לניו יורק (670 ק"מ) עבד, אבל לפרובידנס כשל (930 ק"מ).

התחלתי לתהות אם איבדתי את השפיות שלי. ניסיתי לשלוח הודעה לחבר שגר בצפון קרוליינה, אבל ספקית האינטרנט שלו הייתה בסיאטל. למרבה המזל – הניסיון כשל. אם הבעיה הייתה לפי המיקום הגיאוגרפי של הבן-אדם ולא לפי המיקום הגיאוגרפי של שרת הדואר האלקטרוני שלו, אני חושב שהייתי מתחיל למרר בבכי.

לאחר שביססתי – לתדהמתי – שהבעיה שדווחה אמיתית, העפתי מבט בקובץ sendmail.cf. הוא נראה די בסדר. למעשה, הוא נראה מוכר.

בדקתי את השינויים בינו לבין הקובץ sendmail.cf שבתיקיית הבית שלי. לא היה שום דבר שונה – זה היה קובץ sendmail.cf שאני כתבתי. אני די בטוח שלא הגדרתי את “FAIL_MAIL_OVER_850_KILOMETERS”. מתוך ייאוש, עשיתי telnet לפורט של ה־SMTP. השרת הגיב לי בשמחה עם באנר של SunOS sendmail.

רגע… באנר של SunOS sendmail? באותו הזמן, Sun עדיין השתמשה ב־Sendmail 5 במערכת ההפעלה שלה, אפילו ש־Sendmail 8 הייתה די בשלה. כמנהל מערכת טוב, הטמעתי אצלנו את Sendmail 8. כמנהל מערכת טוב, גם כתבתי sendmail.cf שמשתמש באפשרויות ושמות משתנים עם שמות אינדיקטיביים, ארוכים ויפים שזמינים ב־Sendmail 8, ולא בסימנים המיוחדים שנראים כמו רצף פיסוק חסר פשר שב־Sendmail 5.

כל החלקים של הפאזל התחברו, במכה אחת, ושוב נחנקתי קצת משאריות הלאטה שהיה כבר קר. כשהיועץ “תיקן את השרת” הוא למעשה שדרג את מערכת ההפעלה של SunOS, וכשעשה את זה הוא למעשה *שנמך* את גרסת ה־Sendmail. השדרוג, הניח, בטוב ליבו, ל־sendmail.cf, אפילו שזו הייתה הגרסה הלא נכונה.

כך קרה ש־Sendmail 5 – לפחות הגרסה שבה השתמשה Sun וכללה כמה שיפורים – יכלה להתמודד עם קובץ ה־sendmail.cf של Sendmail 8, משום שרוב ההגדרות נותרו ללא שינוי. הבעיה הייתה במשתנים עם השמות הארוכים, אלו שהיא ראתה כזבל, שעליהם היא דילגה. מכיוון שלתוכנת sendmail לא היו ערכי ברירת מחדל עבור רוב ההגדרות הללו, והיא לא מצאה ערכים מתאימים בקובץ ה־sendmail.cf, הם הוגדרו ל־0.

אחת מהערכים שהוגדר להיות 0 היה הזמן המקסימלי לניסיון (timeout) להתחבר לשרת ה־SMTP המרוחק. מספר ניסויים הבהירו שעל המכונה הספציפית הזו עם העומס האופייני שלה, timeout של 0 יכשיל כל קריאה להתחברות תוך בערך 3 מילישניות.

אחד מהדברים המוזרים ברשת הקמפוס שלנו באותו זמן היה שהיא הייתה בנוייה מ-100% סוויצ’ים. חבילה שנשלחה לא תעוכב על ידי הנתב אלא אם היא תגיע ל־POP ותתקל בנתב מבחוץ. אז הזמן שייקח להתחבר למכונה לא עמוסה על מחשב מרוחק ברשת קרובה יושפע בעיקר מהמרחק ליעד וממהירות האור, ולא על ידי עיכובים ארעיים של נתבים.

תוך תחושת סחרור קלה, הקלדתי לשורת הפקודה:

> $ units

1311 units, 63 prefixes

You have: 3 millilightseconds
You want: kilometers
       * 899.37737
       / 0.0011118803

“850 קילומטרים, אולי קצת יותר.”

מקור: כאן.