מפענח MIME

הדביקו את המקור המלא של אימייל - כותרות וגוף - וראו אותו מפורק: כל כותרת, מבנה ה-MIME, קידוד ההעברה וה-charset של כל חלק, גוף ה-text/HTML המפוענח, וכל מצורף. הכול פועל בדפדפן שלכם; שום דבר לא מועלה.

תוצאה:
הדביקו אימייל גולמי למעלה ולחצו על “פענוח הודעה”. טיפ: ברוב לקוחות הדואר השתמשו ב“הצג מקור” / “הצג את המקור”, או שמרו את ההודעה כקובץ .eml, כדי לקבל את הטקסט הגולמי.

מהו מפענח MIME, ומה משמעותן של כל הכותרות האלה?

כל אימייל שאתם מקבלים הוא, בבסיסו, מסמך טקסט פשוט שמצייַת למבנה קפדני המוגדר על ידי MIME (Multipurpose Internet Mail Extensions) ופורמט ההודעה הישן יותר RFC 5322. כשאתם פותחים את “המקור הגולמי” או קובץ .eml שמור, המבנה הזה נעשה גלוי: מקבץ כותרות, שורה ריקה, ואז הגוף. מפענח זה מפצל כל הודעה שתדביקו לחלקים האלה — כותרות, עץ ה-MIME, קידוד ההעברה וה-charset של כל חלק, ה-text/HTML המפוענח וכל מצורף — כולו בדפדפן שלכם. שום דבר אינו מועלה לשום שרת; הניתוח רץ על המחשב שלכם עצמו.

1. הצורה הכללית של הודעה

להודעה שני חלקים המופרדים על ידי השורה הריקה הראשונה:

Header-Name: header value Another-Header: another value (a folded continuation line) <blank line> The body starts here…
  • כותרות מתארות את ההודעה: מי שלח אותה, מתי, מה הנושא, ו— באופן מכריע עבור MIME — כיצד הגוף מקודד ומובנה.
  • השורה הריקה היא הגבול בין הכותרות לגוף. השורה הריקה הראשונה בכלל מסיימת את מקבץ הכותרות.
  • הגוף הוא כל מה שאחריה. בהודעה מודרנית הגוף בדרך כלל אינו טקסט פשוט אלא מבנה MIME עם כמה חלקים.

2. כיצד נכתבות כותרות

שני כללים מבלבלים אנשים בעת קריאת המקור הגולמי:

  • קיפול (folding). כותרת ארוכה יכולה להתפצל על פני כמה שורות; כל שורת המשך מתחילה ברווח או בטאב. בעת הקריאה, שורות אלו מחוברות בחזרה לערך אחד (“נפרסות”).
  • Encoded-words‏ (RFC 2047). כותרות מתירות רשמית רק ASCII, ולכן טקסט שאינו אנגלי ואמוג׳י נעטפים כ-=?charset?B?…?= (Base64) או =?charset?Q?…?= (וריאנט של quoted-printable). לדוגמה =?UTF-8?Q?caf=C3=A9?= מפוענח ל-café. המפענח שלמעלה מציג את הערך הקריא; הערך הגולמי הוא מה שבאמת עובר על הקו.

3. שדות הכותרת בהסבר

אלו המשתנים שתראו בראש כמעט כל הודעה. לא כולם תמיד נוכחים.

מיעון וזהות

כותרתמה משמעותה
Fromהכותב המוצג לקורא — שם תצוגה וכתובת, למשל Anna <anna@example.com>. זה מה שלקוח הדואר שלכם מציג; זו אינה הוכחה למי שבאמת שלח את הדואר (ראו SPF/DKIM למטה).
To, Ccנמענים ראשיים ונמעני עותק. כותרות אינפורמטיביות בלבד — המסירה בפועל מונעת על ידי מעטפת ה-SMTP, לא על ידיהן.
Bccעותק מוסתר. בדרך כלל מוסר לפני המסירה, ולכן אתם רואים אותו לעיתים רחוקות בדואר שהתקבל.
Reply-Toלאן צריכות ללכת התשובות אם זה שונה מ-From (למשל שולח “no-reply” שמפנה תשובות לתמיכה).
Return-Pathשולח המעטפה (כתובת ה-“MAIL FROM”) שאליה נשלחות הודעות אי-מסירה (bounce). מתווסף על ידי השרת המקבל ולעיתים קרובות שונה מ-From.
Senderהסוכן בפועל שהגיש את ההודעה כאשר אינו הכותב (רשימות תפוצה, “בשם”).
Message-IDמזהה ייחודי גלובלי להודעה זו, כמו <a1b2c3@example.com>. משמש לשרשור ולסינון כפילויות.

שרשור, תאריכים ונושא

כותרתמה משמעותה
Subjectשורת הנושא. לעיתים קרובות encoded-word כשהיא מכילה תווים שאינם ASCII.
Dateמתי הכותב שלח את ההודעה, עם היסט אזור זמן, למשל Wed, 9 Jul 2026 10:15:00 +0000.
In-Reply-Toה-Message-ID שאליו הודעה זו משיבה — מאפשר ללקוחות לבנות שרשורי שיחה.
Referencesשרשרת ה-Message-ID הקודמים בשרשור.

ניתוב ואימות

כותרתמה משמעותה
Receivedשורת מעקב שמוסיף כל שרת דואר שההודעה עברה דרכו, החדשה ביותר בראש. קריאתן מלמטה למעלה מראה את נתיב המסירה ואת חותמות הזמן.
DKIM-Signatureחתימה קריפטוגרפית שמאפשרת למקבל לאשר שההודעה אכן נשלחה על ידי הדומיין ולא שוּנתה במעבר.
Authentication-Resultsפסק הדין של השרת המקבל לגבי בדיקות SPF, DKIM ו-DMARC‏ (pass/fail). דרך מהירה לשפוט אם ניתן לסמוך על “From”.
Received-SPFהאם ה-IP השולח מורשה לשלוח עבור דומיין המעטפה.
List-Unsubscribeלדואר בכמות גדולה/ניוזלטרים: הכתובת או ה-URL שלקוח משתמש בו לביטול מנוי בלחיצה אחת.

4. משתני ה-MIME — כיצד נבנה הגוף

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

משתנהמה הוא עושה
MIME-Version: 1.0מכריז שההודעה משתמשת ב-MIME. כמעט תמיד 1.0.
Content-Typeהמשתנה החשוב ביותר: סוג המדיה של חלק (text/plain, text/html, image/png, application/pdf, multipart/*…). הוא נושא פרמטרים לאחר נקודה-פסיק.
charsetפרמטר של Content-Type טקסטואלי: קידוד התווים של הטקסט, למשל charset="UTF-8". נחוץ כדי להפוך את הבתים בחזרה לאותיות הנכונות.
boundaryפרמטר של סוג multipart: מחרוזת סימון ייחודית. כל חלק מתחיל ב---boundary והאחרון מסתיים ב---boundary--.
Content-Transfer-Encodingכיצד הבתים של החלק נארזו כדי שישרדו כטקסט 7-ביט על הקו (ראו הטבלה למטה).
Content-Dispositioninline (הצגתו בתוך ההודעה) או attachment (הצעתו כקובץ). בדרך כלל נושא פרמטר filename.
name / filenameשם הקובץ המוצע של מצורף, ב-Content-Type וב-Content-Disposition בהתאמה.
Content-IDמזהה לחלק inline (למשל תמונה) כדי שגוף ה-HTML יוכל להפנות אליו באמצעות cid:.

סוגי ה-multipart הנפוצים

  • multipart/alternativeאותה הודעה בשתי צורות: חלופת נפילה text/plain וגרסת text/html. הלקוח מציג את העשירה ביותר שהוא יכול.
  • multipart/mixed — גוף בתוספת מצורפים חבורים יחד.
  • multipart/related — חלק HTML יחד עם התמונות ה-inline שהוא מפנה אליהן באמצעות Content-ID.

אלו מקוננים זה בזה: הודעה אמיתית היא לעיתים קרובות multipart/mixed שמכיל multipart/alternative (טקסט + HTML) לצד מצורף PDF. המפענח מציג זאת כעץ ממוספר (1, 1.1, 1.2…).

5. ערכי Content-Transfer-Encoding

ערךמשמעות
7bitASCII פשוט, שום דבר לא השתנה. ברירת המחדל כשלא ניתן קידוד.
8bitבתים גולמיים מעל 127 בשימוש ישיר (דורש נתיב 8-bit-clean).
binaryבתים שרירותיים, ללא הגבלות אורך שורה — נדיר בדואר רגיל.
quoted-printableטקסט קריא לרוב שבו בתים שאינם ASCII הופכים ל-=XX בהקסדצימלי (ו-= בסוף שורה הוא מעבר רך). טוב לטקסט שהוא בעיקר אנגלי עם מעט תווים מודגשים.
base64בתים כלשהם מקודדים מחדש לאלפבית בטוח בן 64 תווים, גדול ב-~33%. משמש לתמונות, PDF ומצורפים בינאריים אחרים.

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

6. דוגמה מעשית

לחצו על “טעינת דוגמה” למעלה כדי לטעון הודעה קטנה ולראות אותה מפוענחת. השלד שלה נראה כך:

Subject: =?UTF-8?Q?Meeting_notes_=E2=80=93_caf=C3=A9?= ← encoded-word MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="OUTER" --OUTER Content-Type: multipart/alternative; boundary="INNER" --INNER Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable ← חלק טקסט ... --INNER Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 ← חלופת HTML ... --INNER-- --OUTER Content-Type: text/plain; name="notes.txt" Content-Disposition: attachment; filename="notes.txt" Content-Transfer-Encoding: base64 ← מצורף ... --OUTER--

כיצד לקרוא זאת: הסוג החיצוני הוא multipart/mixed, ולכן הגוף הוא “תוכן + מצורף”. הצאצא הראשון שלו הוא multipart/alternative המכיל את גרסאות הטקסט וה-HTML של אותה הערה; הצאצא השני שלו הוא המצורף notes.txt. ה-Subject הוא encoded-word שמפוענח ל-“Meeting notes – café”.

7. פרטיות

הכול נשאר במכשיר שלכם. כלי זה מנתח את ההודעה באמצעות JavaScript בדפדפן שלכם — האימייל הגולמי לעולם אינו נשלח אלינו או לאף אחד אחר, ושום דבר אינו נשמר. תוכלו לבחון בבטחה הודעות פרטיות או רגישות.

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