Internet Message Access Protocol

מתוך ויקיפדיה, האנציקלופדיה החופשית

Internet Message Access Protocolראשי תיבות: IMAP) הוא פרוטוקול אינטרנט לגישה לדואר אלקטרוני שנמצא על שרת מרוחק ממחשב מקומי.

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

מצד שני הרבה מהשרתים והלקוחות מממשים אותו בצורה מאוד חלקית ולכן הוא עד היום לא הפך להיות פופולרי כמו POP3 , למרות שהמומחים מעדיפים אותו

תוכן עניינים

[עריכה] תיבות דואר ב־IMAP

הפרוטוקול מניח שהתיבות מסודרות במבנה היררכי ושישנה תיבת דואר אחת ראשית. לתיבת הדואר הראשית קוראים INBOX. בנוסף לה יכולות להיות עוד תיבות דואר (mail boxes). תיבת דואר יכולה להכיל גם הודעות וגם תיבות דואר אחרות (אם כי לא כל השרתים תומכים באפשרות האחרונה).

[עריכה] מספר שרתי IMAP חופשיים

[עריכה] תמיכה בלקוחות

רוב לקוחות הדואר הטובים תומכים בעבודה מול שרתי IMAP. בפרט:

  • מיקרוסופט Outlook: עובד בצורה סבירה. יש לו נטייה להוריד את כל תיבת הדואר ללא צורך
  • Microsoft Outlook Express: כנ"ל
  • מוזילה: (מוזילה ‎1.x ו־ThunderBird) : תמיכה טובה
  • pine: תמיכה טובה

הרשימה חלקית. אתם מוזמנים להוסיף.

[עריכה] הדגמת עבודה ב־IMAP

כמו POP3 ו־SMTP גם IMAP הוא פרוטוקול טקסטואלי פשוט. אולם בניגוד להם, הלקוח צריך לכתוב תווית יחודית כלשהי לכל פקודה. זה מאפשר לזהות בקלות רבה יותר קצרים בתקשורת. בדוגמה שכאן השתמשתי פשוט במספרים סידוריים.


נתחבר לשרת. דבר ראשון צריך להזדהות:

‎1 login myusername mypassword
1 OK Logged in.‎

יופי, הצלחתי להתחבר. עכשיו נבדוק אילו תיבות דואר יש לי על השרת:

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

‎2 ‎list "" "*"
* LIST (\HasNoChildren) "." INBOX
* LIST (\HasNoChildren) "." "Drafts"
* LIST (\HasNoChildren) "." "Trash"
* LIST (\HasNoChildren) "." "Sent"
* LIST (\HasNoChildren) "." "spam"
* LIST (\HasChildren) "." "info"
2 OK List completed.
3 list "INBOX" "*"
* LIST (\HasNoChildren) "." "info.Drafts"
* LIST (\HasNoChildren) "." "info.Trash"
* LIST (\HasNoChildren) "." "info.Sent"
3 OK List completed.‎

הפקודה select בוחרת תיבת דואר ופותחת אותה.

‎4 select INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft $MDNSent)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft $MDNSent \*)] Flags permitted.
* 165 EXISTS
* 0 RECENT
* OK [UNSEEN 56] First unseen.
* OK [UIDVALIDITY 1098339532] UIDs valid
* OK [UIDNEXT 676] Predicted next UID
4 OK [READ-WRITE] Select completed.‎

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

‎5 FETCH 5:6 (FLAGS BODY[HEADER.FIELDS (DATE FROM)])
* 5 FETCH (FLAGS (\Seen) BODY[HEADER.FIELDS (DATE FROM)] {89}
From: Holger Wansing <h.wansing@onlinehome.de>
Date: Tue, 30 Nov 2004 23:07:15 +0100

)
* 6 FETCH (FLAGS (\Seen) BODY[HEADER.FIELDS (DATE FROM)] {77}
Date: Tue, 30 Nov 2004 21:19:15 -0500
From: Joey Hess <joeyh@debian.org>

)
5 OK Fetch completed.‎

לסיום נסגור את תיבת הדואר ונתנתק:

‎6 close
6 OK Close completed.
7 logout
* BYE Logging out
7 OK Logout completed.‎

דבר דומה מול שרת ה־IMAP של Microsoft Exchange

[עריכה] קישורים חיצוניים