Post Office Protocol

Post Office Protocol version 3 (או בקיצור POP3) הוא פרוטוקול לשליפה של הודעות דואר אלקטרוני משרת דואר מרוחק. זהו פרוטוקול שרת–לקוח בשכבת היישום של רשתות TCP/IP. לפרוטוקול קדמו גרסאות POP ו-POP2, כאשר בשנים האחרונות כמעט כל ספקי שירותי הדואר האלקטרוני משתמשים בשרתי POP3, והמונח POP הפך שם נרדף ל-POP3. הפורט הסטנדרטי של פרוטוקול POP3 הוא 110. פרוטוקול POP3 וקודמיו תוכננו במטרה לאפשר למשתמשים שאין להם חיבור-קבוע לשרת הדואר, דוגמת משתמשי מודם חיוג או ADSL, גישה לדואר האלקטרוני שלהם. במרבית המקרים, צד הלקוח מתחבר אל השרת, מוריד ממנו את ההודעות במלואן בסדר שבו התקבלו, ושומר אותן על מחשבו. לאחר מכן ההודעות נמחקות מהשרת. הפרוטוקול תומך באפשרות (אם כי השימוש בה הוא לא-נפוץ) להשאיר עותק מן ההודעה המקורית על השרת. בצורה זו יכול המשתמש לקרוא את הדואר שלו מכמה מקומות וגם מכמה תוכנות לקוח שונות. אחת מחולשותיו של POP3 המקורי היא שהוא לא איפשר אימות מוצפן מול השרת, וכל ההזדהות של הלקוח בוצעה בטקסט גלוי. כיום קיימות מספר הרחבות לפרוטוקול, המאפשרות שיטות שונות של הצפנת הקשר בין הלקוח והשרת, דוגמת APOP המשתמשת בהצפנת פונקציה חד כיוונית על מנת להסתיר את שם המשתמש והסיסמה. קיימת גם אפשרות להצפין את כל תעבורת הנתונים על ידי שימוש ב-POP3 מעל שכבת SSL. מתכנני הפרוטוקול בנו אותו כך שיהיה דל יחסית בתכונות על מנת לפשט את המימוש שלו – וכך הם עודדו ליישם לוגיקה מורכבת בצד הלקוח ולא בצד השרת. ואכן, פונקציות מתקדמות, דוגמת ניהול תיקיות, חיפוש, ספרי כתובות וכו' ממומשות כולן על ידי תוכנת הדוא"ל ללא תמיכה מצד שרת ה-POP. פרוטוקול נוסף להעברת דואר הוא פרוטוקול IMAP. זהו פרוטוקול חדש יותר ובעל מגוון פונקציות נוספות, כגון אימות מוצפן, הפרדת הדואר לתיקיות-משנה, הפרדה בין כותרי ההודעה לגוף, ועוד. מאחר שזהו פרוטוקול מורכב הרבה יותר, הוא נפוץ פחות ורוב ספקיות האינטרנט אינן מאפשרות גישת IMAP ללקוחותיהן. בעוד שליחה של דואר אלקטרוני או העברת דואר בין שרתים מתבצעת באמצעות פרוטוקול SMTP והרחבותיו, קריאת דואר על ידי הלקוח תתבצע באמצעות פרוטוקול POP3 או IMAP. ישנן עשרות ואולי מאות תוכנות לקוח לקריאת דוא"ל בפרוטוקול POP3. דוגמאות נפוצות הן: Mozilla ו-Mozilla Thunderbird מבית מוזילה Outlook ו-Outlook Express של חברת מיקרוסופט Netscape Eudora Apple Mail של חברת אפל IncrediMail כאשר תוכנה או יישום מתחברים לשרת POP3 מצפה השרת לקבל שורת טקסט עם הביטוי USER ולאחריה את שם המשתמש של המנוי במערכת. USER myUserName לאחר מכן השרת ישלח הודעה, שתיפתח ב-OK+. הודעה כזו מציינת כי המידע שנקלט תקף. הודעה שונה תישלח אם שם המשתמש אינו קיים במערכת, או שמבנה שם המשתמש אינו תואם למבנה המקובל בשרת. לאחר מכן, השרת יצפה לקבל PASS בצירוף סיסמה תקפה. PASS myPassword במידה וישנו כשל בסיסמה, תישלח הודעה הנפתחת במילים ERR-. במידה והסיסמה נכונה, תצא הודעה הנפתחת במילים OK+. בשלב זה, מרבית תוכנות הדואר יבקשו לבדוק כמה הודעות יש על השרת. ניתן לעשות זאת על ידי שליחת הודעת STAT. STAT תגובה מקובלת של השרת תהיה מספר ההודעות והנפח שהן תופסות בתיבה. 2 959859 הצגת הודעה מבוצעת על ידי הוראה TOP, ולאחריה מספר ההודעה, ואיזה חלק מן ההודעה ברצוננו לראות. כיוון שלרוב רצוננו לראות את כל ההודעה, נמסרת בקשה לראות הודעה בגודל גבוה מכפי שההודעה יכולה להיות. TOP 1 9999999 עם קבלת הודעת הדואר, תוכנת הדואר תעתיק את תוכנה, תעבד אותה, ותציג אותה. לרוב היא תוסיף גם הוראת מחיקה לכל הודעת דואר שהתקבלה. DELE 1 סיום ההתחברות ייעשה על ידי שליחת הודעת QUIT לשרת. דוגמה ישירה לשימוש ב- APOP S: <wait for connection on TCP port 110> C: <open connection> S: +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us> C: APOP mrose c4c9334bac560ecc979e58001b3e22fb S: +OK mrose's maildrop has 2 messages (320 octets) C: STAT S: +OK 2 320 C: LIST S: +OK 2 messages (320 octets) S: 1 120 S: 2 200 S: . C: RETR 1 S: +OK 120 octets S: <the POP3 server sends message 1> S: . C: DELE 1 S: +OK message 1 deleted C: RETR 2 S: +OK 200 octets S: <the POP3 server sends message 2> S: . C: DELE 2 S: +OK message 2 deleted C: QUIT S: +OK dewey POP3 server signing off (maildrop empty) C: <close connection> S: <wait for next connection> שרת POP3 ללא אופציית APOP המאשר משתמש: C: USER mrose S: +OK User accepted C: PASS tanstaaf S: +OK Pass accepted דואר אלקטרוני SMTP IMAP מונחים ברשתות מחשבים RFC 918 - הגדרת Post Office Protocol בגרסתו הראשונה RFC 937 - הגדרת POP2 RFC 1939 - הגדרת POP3 תרשים זרימה של התקשרות POP3 ספריית קוד פתוח OpenPop.NET למימוש הפרוטוקול בשפת #C, באתר sourceforge M. Rose, J. Myers, Post Office Protocol - Version 3, tools.ietf.org (באנגלית)