דואר שנשלח דרך VPN: לאן התשובה באמת מגיעה
תשובה ממוענת לתיבת דואר, לא לכתובת ה-VPN שממנה שלחתם. הפרידו בין ההגשה, המסירה והחיבור המאוחר שקורא את התשובה.
אתם שולחים הודעה דרך המנהרה, מתנתקים, והתשובה מגיעה למחרת בבוקר. שום דבר בזה לא צריך את כתובת ה-VPN הישנה, ושום דבר בזה לא נשבר. הדואר אינו מנתב תשובות לכתובת שממנה נשלחה הודעה; הוא מנתב אותן לתיבת דואר. שלושה נתיבים מתאחדים כאן לשאלה אחת, והפרדתם עונה על רוב החשש.
שלושה נתיבים שאנשים מאחדים לאחד
הגשה, מסירה וקריאה הם שלושה חיבורים נפרדים, ורק שניים מהם נוגעים במכשיר שלכם.
Submission: your mail app -> your mail service
Delivery: other mail service -> your mailbox service
Reading: your app now -> your mailbox serviceה-VPN יכול להשפיע על הראשון ועל השלישי, מפני שאלה חיבורים שהמכשיר שלכם יוצר. הוא אינו יכול להשפיע על השני, מפני שהנתיב הזה עובר בין שני שרתי דואר שאינכם שולטים בהם. תשובה אינה מנות שמנותבת חזרה לכתובת שממנה שלחתם. היא הודעה חדשה ששירות הדואר של הצד השני מוסר לשירות תיבת הדואר שלכם.
ברגע שתחזיקו את השלושה בנפרד, השאלה אם התשובה תמצא אתכם מפסיקה להיות מסתורית.
שדה Reply-To הוא כתובת, לא נתיב
RFC 5322 מגדיר את Reply-To כתיבת הדואר או תיבות הדואר שאליהן יש לשלוח תשובות. בלעדיו, ברירת המחדל הרגילה היא תיבת From, אלא אם האדם שמשיב מקליד משהו אחר. שתיהן כתובות דואר בתוך כותרת. אף אחת מהן אינה הוראה לפתוח מחדש את חיבור הרשת שהגיש את ההודעה המקורית.
זו הסיבה שכתובת יציאה של VPN אינה מופיעה לעולם בנתיב התשובה. גם כששרת ההגשה תיעד את כתובת היציאה הזו במקום כלשהו, התשובה ממוענת לתיבת דואר, ושרת השולח מחפש את מחליף הדואר של התחום ולא את הסוקט הישן שלכם.
אם תשובה הולכת למקום לא צפוי, קראו את Reply-To ואת הגדרות הלקוח של השולח עצמו לפני שאתם חושדים במנהרה.
מה כותרות המעקב באמת רושמות
כל קפיצת SMTP מוסיפה לפנים כותרת Received שמתארת את החיבור שטיפלה בו, והעליונה היא הקפיצה האחרונה לפני המסירה. הודעה שנשלחה עשויה אפוא לשאת פרטי רשת שכדאי לעבור עליהם, ופרטים אלה נכתבים בידי שרתים ולא נבחרים בידכם. מה שהם מכילים תלוי בארכיטקטורת ההגשה של הספק ובאופן הטיפול שלו בכותרות.
קראו אותם במקום לנחש, מהודעה שמורה:
grep -E '^(Received|Return-Path|Reply-To|From):' message.emlהמשמעת השימושית היא לזהות איזה שירות מהימן הוסיף כל שדה. טקסט שרירותי מוקדם יותר בבלוק הכותרות אינו ראיה מהימנה, ושם מוצר אינו הבטחה קבועה שכתובת הבית שלכם תמיד נוכחת או תמיד נעדרת.
קריאת דואר מאוחר יותר היא חיבור חדש
כשאתם פותחים את התשובה, הלקוח שלכם מתחבר לשירות תיבת הדואר שלכם דרך הרשת שבה אתם נמצאים כעת. זהו חיבור חדש עם כתובת מקור משלו, לא המשך של סוקט ההגשה של אתמול. הוא פועל לפי המדיניות הנוכחית של הרשת שבה אתם משתמשים באותו רגע.
תוכן מרוחק הוא עוד דבר שלישי. לקוח דואר שטוען תמונה מרוחקת או עוקב אחר קישור מבצע בקשה נפרדת לפי הגדרותיו הנוכחיות, ובקשה זו עשויה לשאת כל מזהה שההודעה הטמיעה. זו אינה תשובת ה-SMTP שמגיעה לכתובת ישנה, והתייחסות אליה ככזו מסתירה את החשיפה האמיתית.
כבו תוכן מרוחק אם אתם רוצים לקרוא הודעה בלי להודיע שפתחתם אותה.
מה לבדוק לפני שאתם קוראים לזה דליפה
התחילו בתצוגת ההודעה המקורית ובשדה Reply-To. לאחר מכן זהו איזה שירות הוסיף את רשומות ה-Received שמדאיגות אתכם, והשוו זאת לתיעוד הנוכחי של הספק ולא לתשובה ישנה בפורום.
לבסוף, הפרידו את השאלות: מה הבחין שרת ההגשה, מה הוסיפה שרשרת המסירה, ומה ביקש הלקוח שלכם כשפתחתם את ההודעה?
לענות על שלושתן בנפרד זו עבודה רבה יותר מאשר לבדוק עמוד IP, וזו הגרסה היחידה שמפיקה מסקנה שאפשר להגן עליה. מענה לכתובת דואר אינו חושף את כתובת הבית שלכם ואינו דורש שהמנהרה הישנה תישאר פתוחה.