דואר בינלאומי: IDN, EAI ו־SMTPUTF8 — סקירה טכנית

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

איך הודעה בכלל מגיעה ליעד?

לפני שנצלול למונחים, כדאי להבין מה קורה מאחורי הקלעים כששולחים הודעה. נניח שמישהו כותב אל דניאל-לוי@מייל.קום. הכתובת מורכבת משני חלקים: מה שאחרי ה־@ (הדומיין, ״מייל.קום״) מזהה את הארגון שמנהל את הדואר, ומה שלפניו (החלק המקומי, ״דניאל-לוי״) מזהה את התיבה בתוך אותו ארגון. שרת הדואר קורא אותם בסדר הזה — קודם לאן, ואז למי.

  1. מוצאים את השרת האחראי. שרת הדואר של השולח (או הקפיצה האחרונה לפני היעד, כשיש כאלה) לוקח את הדומיין ופונה ל־DNS בשאלה: מי מקבל דואר עבור ״מייל.קום״? זו שאילתת MX (Mail Exchange), ו־DNS מחזיר את שם השרת שאחראי לקבל את הדואר של הדומיין.
  2. מתחברים ומוסרים. השולח פותח בחיבור SMTP אל אותו שרת, אומר לו מיהו השולח ומיהו הנמען, ומעביר את גוף ההודעה. זהו פרוטוקול המסירה של הדואר ברשת.
  3. מפרשים את החלק המקומי. השרת המקבל מסתכל על ״דניאל-לוי״ ומחליט מה לעשות: להעביר את ההודעה לתיבה אמיתית של המשתמש, לאחסן אותה בתיבה מקומית, או לדחות אם הנמען לא קיים. אצלנו זה בדיוק הרגע שבו מאתרים את כתובת ההעברה של המשתמש ומעבירים את ההודעה לשם.

שני החלקים האלה עוברים בעולם בינלאומי בדרכים שונות: זיהוי הדומיין ב־DNS נשען על IDN ו־Punycode, ואילו העברת חלק מקומי בעברית לאורך מסלול המסירה נשענת על EAI ו־SMTPUTF8. שאר המדריך מפרק כל אחד מהם.

המסלול כולו בתרשים אחד

שלושת השלבים למעלה הם התקציר. התרשים עוקב אחרי אותה הודעה אל דניאל-לוי@מייל.קום עם כל החוליות שבדרך: לשולח יש לקוח דואר (דפדפן או תוכנה), בין השרתים יכולות להיות כמה קפיצות, ובקצה השני הנמען מושך את ההודעה בעצמו. שימו לב לשאלות שבקווים המקווקווים — ל־DNS מגיע הדומיין בצורת ה־Punycode שלו, ואילו מסד הנתונים שלנו נשאל על החלק המקומי בעברית כפי שהוא. הקווים המודגשים הם הקפיצות שבהן כתובת עברית תלויה בתמיכת SMTPUTF8.

השולח
דפדפן · תוכנה
שרת יוצא
Gmail · Outlook · ארגוני
DNS
קפיצות ביניים (לא תמיד)
ריליי · שער סינון
כותב אל
דניאל-לוי@מייל.קום
SMTP :587 · JMAP · API
מי מקבל דואר עבור
xn--eebajf.xn--9dbq2a?
רשומת MX
SMTP :25
SMTP :25
ה־MX שלנו
מסד הנתונים שלנו
ספק היעד
Gmail · Outlook · ארגוני
ספריית המשתמשים
התיבה של הנמען
הנמען
דפדפן · תוכנה
מי זה דניאל-לוי?
כתובת ההעברה
העברה
SMTP :25
החלק המקומי
התיבה
מסירה
IMAP · POP3
JMAP · API
קפיצה שדורשת SMTPUTF8

אותה כתובת, שתי בעיות שונות

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

אחרי ה־@
IDN ו־Punycode מייצגים את שם הדומיין במערכת ה־DNS.
לפני ה־@
EAI ו־SMTPUTF8 מאפשרים תווים כמו עברית בפרוטוקול הדואר.

ההבחנה חשובה: Punycode מטפל בדומיין בלבד. הוא אינו דרך להמיר את החלק המקומי, ולכן כתובת עברית מלאה אינה הופכת לכתובת ASCII רגילה באמצעות Punycode.

IDN ו־Punycode: הדומיין

IDN הוא שם דומיין בינלאומי שנכתב ב־Unicode. כדי שמערכות DNS ותיקות יוכלו לטפל בו, כל תווית שאינה ASCII מקודדת לצורה תואמת ASCII שמתחילה ב־xn--. הקידוד הזה נקרא Punycode, והוא חלק מכללי IDNA.

שתי הצורות מתארות אותו דומיין

מייל.קוםxn--eebajf.xn--9dbq2a

בדרך כלל האפליקציה מציגה את הצורה הקריאה ומבצעת את ההמרה בעצמה. הצורה המקודדת עשויה להופיע בהגדרות DNS, ביומני שרת, בקישורים או באפליקציה שאינה מציגה IDN.

EAI ו־SMTPUTF8: הכתובת וההעברה

EAI — קיצור של Email Address Internationalization — הוא שם כולל להרחבות שמאפשרות כתובות וכותרות דואר ב־Unicode. הרחבת SMTPUTF8 היא החלק בפרוטוקול SMTP שמאפשר להעביר מעטפה וכותרות הכוללות UTF-8.

  1. השרת המקבל מפרסם את היכולת SMTPUTF8 בתשובת EHLO.
  2. אם ההודעה זקוקה לה, השרת השולח מציין SMTPUTF8 בפקודת MAIL FROM.
  3. שרת שלא מפרסם את היכולת אינו מבטיח שיוכל לקבל כתובת עם תווים שאינם ASCII.

לכן כתובת שרק הדומיין שלה בעברית מסתדרת עם IDN בלבד — המעטפה יכולה לשאת את צורת ה־Punycode. אבל כתובת שהחלק המקומי שלה בעברית זקוקה לתמיכת EAI/SMTPUTF8 לאורך מסלול המסירה הרלוונטי.

איפה MIME נכנס לתמונה?

MIME מתאר את תוכן ההודעה: סוגי גוף וקבצים מצורפים, קידודי העברה וייצוג של טקסט בכותרות מסוימות. הוא מאפשר, למשל, נושא ושם תצוגה בעברית גם בעולם הדואר הוותיק.

אבל MIME אינו הופך כתובת מקומית עברית לכתובת ASCII ואינו מחליף SMTPUTF8. אפשר לשלוח הודעה עם נושא עברי לכתובת ASCII בלי EAI; כתובת כמו דניאל-לוי@מייל.קום עדיין זקוקה לתמיכה המתאימה עבור ״דניאל-לוי״.

תאימות בעולם האמיתי

  • דפדפנים, DNS ורוב האפליקציות המודרניות תומכים היטב בדומיינים בינלאומיים.
  • תמיכה בכתובת מקומית שאינה ASCII אינה אחידה בכל ספק, טופס הרשמה או מערכת ישנה.
  • טופס שמסרב לכתובת עברית אינו בהכרח מעיד שהכתובת אינה תקינה; ייתכן שהאימות שלו מיושן.
  • אין המרה כללית ובטוחה של חלק מקומי עברי ל־ASCII. לפעמים ספק מציע כתובת חלופית, אבל זו מדיניות של הספק ולא Punycode.
  • כשכתובת משמשת להתחברות או לשחזור חשבון חשוב לוודא מראש שהשירות מקבל אותה ושולח אליה בהצלחה.

למה כל כך הרבה טפסים באתרים דוחים כתובת עברית?

זה לא באג נקודתי אלא פער בתקן עצמו. ההגדרה של ״כתובת אימייל תקינה״ בתקן ה־HTML — זו ש־<input type="email"> ורוב האתרים מסתמכים עליה — מתירה בחלק המקומי תווי ASCII בלבד (הכלל atext מ־RFC 5322), בלי שום מקום לעברית, כך שכתובת עברית נחשבת אצלה לא־תקינה עוד לפני שהיא מגיעה לשרת. התקן אמנם מגדיר את הפורמט הזה במפורש כ״הפרה מכוונת״ של RFC 5322, אבל מנימוק של פשטות מעשית — לא כדי לחסום כתובות בינלאומיות — והתוצאה היא שכתובות EAI פשוט לא נלקחו בחשבון. הפער פתוח ומתועד ב־GitHub של התקן אך טרם תוקן.

מילון קצר

Unicode / UTF-8
מערכת התווים והקידוד שמייצגים עברית ושפות אחרות.
IDN / IDNA
שמות דומיין בינלאומיים והכללים למיפוי שלהם לצורה שה־DNS מכיר.
Punycode
הקידוד שמייצג תווית דומיין בינלאומית באמצעות תווי ASCII.
EAI
משפחת התקנים לדואר ולכתובות בינלאומיים.
SMTPUTF8
הרחבת SMTP שמעבירה כתובות וכותרות UTF-8.
MIME
המסגרת לסוגי תוכן, קידודים, קבצים מצורפים וטקסט בכותרות הודעה.

לעיון טכני: IDNA, מבוא ל־EAI ו־ SMTPUTF8.

משהו לא ברור או לא מדויק? כתבו לנו ל־תמיכה@מייל.קום או צרו קשר.