Internet Message Access Protocol
| יש לשכתב ערך זה. הסיבה לכך היא: הערך כתוב כמדריך ולא כערך אנציקלופדי. | ||
| אתם מוזמנים לסייע ולתקן את הבעיות, אך אנא אל תורידו את ההודעה כל עוד לא תוקן הדף. אם אתם סבורים כי אין בדף בעיה, ניתן לציין זאת בדף השיחה. | ||
| פרוטוקולים במודל TCP/IP |
|---|
| שכבת יישום |
| HTTP, SMTP, FTP, DNS, DHCP, SSH, RTP, RTSP, IRC, SNMP, SIP, IMAP4, MIME, TELNET, RPC, SOAP ... |
| שכבת תעבורה |
| TCP, UDP, SCTP, DCCP ... |
| שכבת רשת |
| IP, IPv4, IPv6, ICMP, ARP, IPX, IGMP ... |
| שכבה פיזית |
| Ethernet, 10BASE-T, 802.11 WiFi, Token ring, FDDI ... |
Internet Message Access Protocol (בראשי תיבות: IMAP) הוא פרוטוקול אינטרנט לגישה לדואר אלקטרוני שנמצא על שרת מרוחק ממחשב מקומי.
IMAP הינו אלטרנטיבה מתקדמת לפרוטוקול POP3. בעוד פרוטוקול POP3 מאפשר למשתמש לעבוד עם תיבת דואר אחת בלבד, פרוטוקול IMAP מאפשר עבודה עם מספר תיבות דואר. הוא מאפשר עבודה יעילה יותר על ידי קריאת כותרות ההודעה בנפרד, חיפוש בצד השרת, ועוד.
מצד שני, הרבה מהשרתים והלקוחות מממשים אותו בצורה חלקית מאוד, ולכן עד היום הוא לא הפך לפופולרי כמו POP3[1], למרות שהמומחים מעדיפים אותו.
תוכן עניינים |
[עריכה] תיבות דואר ב־IMAP
הפרוטוקול מניח שהתיבות מסודרות במבנה היררכי ושישנה תיבת דואר אחת ראשית. לתיבת הדואר הראשית קוראים INBOX. בנוסף לה יכולות להיות עוד תיבות דואר (mail boxes). תיבת דואר יכולה להכיל גם הודעות וגם תיבות דואר אחרות (אם כי לא כל השרתים תומכים באפשרות האחרונה). עובד בפרוטוקול TCP ובפורט 143.
[עריכה] תמיכה בלקוחות
רוב לקוחות הדואר הטובים תומכים בעבודה מול שרתי IMAP. בפרט:
- Microsoft Outlook ו-Microsoft Outlook Express: עובד בצורה סבירה. יש לו נטייה להוריד את כל תיבת הדואר ללא צורך
- מוזילה: (מוזילה 1.x ו־ThunderBird) : תמיכה טובה.
- pine: תמיכה טובה
- Mail: (התוכנה, של אפל) : תמיכה טובה.
זוהי רשימה חלקית בלבד.
[עריכה] הדגמת עבודה ב־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 "INFO" "*" * 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