דואר בינלאומי: IDN, EAI ו־SMTPUTF8

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

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

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

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

שני החלקים האלה עוברים בעולם בינלאומי בדרכים שונות: זיהוי הדומיין ב־DNS נשען על IDN ו־Punycode, ואילו העברת חלק מקומי בעברית לאורך מסלול המסירה נשענת על EAI ו־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, אבל כתובת שהחלק המקומי שלה בעברית זקוקה לתמיכת 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.

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