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 ==
ישנן עשרות ואולי מאות תוכנות לקוח לקריאת דוא"ל בפרוטוקול POP3. דוגמאות נפוצות הן:
* Mozilla ו-Mozilla Thunderbird מבית מוזילה
* Outlook ו-Outlook Express של חברת מיקרוסופט
* Netscape
* Eudora
* Apple Mail של חברת אפל
* IncrediMail

== הדגמת עבודה ב־POP3 ==
כאשר תוכנה או יישום מתחברים לשרת POP3 מצפה השרת לקבל שורת טקסט עם הביטוי USER ולאחריה את שם המשתמש של המנוי במערכת. 
<div style="text-align: left; direction: ltr; margin-left: 1em;">
USER myUserName
</div>
לאחר מכן השרת ישלח הודעה, שתיפתח ב-OK+. הודעה כזו מציינת כי המידע שנקלט תקף. הודעה שונה תישלח אם שם המשתמש אינו קיים במערכת, או שמבנה שם המשתמש אינו תואם למבנה המקובל בשרת. לאחר מכן, השרת יצפה לקבל PASS בצירוף סיסמה תקפה.
<div style="text-align: left; direction: ltr; margin-left: 1em;">
PASS myPassword
</div>
במידה וישנו כשל בסיסמה, תישלח הודעה הנפתחת במילים ERR-. במידה והסיסמה נכונה, תצא הודעה הנפתחת במילים OK+. בשלב זה, מרבית תוכנות הדואר יבקשו לבדוק כמה הודעות יש על השרת. ניתן לעשות זאת על ידי שליחת הודעת STAT.
<div style="text-align: left; direction: ltr; margin-left: 1em;">
STAT
</div>
תגובה מקובלת של השרת תהיה מספר ההודעות והנפח שהן תופסות בתיבה.
<div style="text-align: left; direction: ltr; margin-left: 1em;">
2 959859
</div>
הצגת הודעה מבוצעת על ידי הוראה TOP, ולאחריה מספר ההודעה, ואיזה חלק מן ההודעה ברצוננו לראות. כיוון שלרוב רצוננו לראות את כל ההודעה, נמסרת בקשה לראות הודעה בגודל גבוה מכפי שההודעה יכולה להיות.
<div style="text-align: left; direction: ltr; margin-left: 1em;">
TOP 1 9999999
</div>
עם קבלת הודעת הדואר, תוכנת הדואר תעתיק את תוכנה, תעבד אותה, ותציג אותה. לרוב היא תוסיף גם הוראת מחיקה לכל הודעת דואר שהתקבלה.
<div style="text-align: left; direction: ltr; margin-left: 1em;">
DELE 1
</div>
סיום ההתחברות ייעשה על ידי שליחת הודעת QUIT לשרת.

== דוגמה לשיחה ==
דוגמה ישירה לשימוש ב- APOP

<div style="direction: ltr;">
 <span style="color: red;">S: <wait for connection on TCP port 110></span>
 C: <open connection>
 <span style="color: blue;">S: +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us></span>
 C: APOP mrose c4c9334bac560ecc979e58001b3e22fb
 <span style="color: blue;">S: +OK mrose's maildrop has 2 messages (320 octets)</span>
 C: STAT
 <span style="color: blue;">S: +OK 2 320</span>
 C: LIST
 <span style="color: blue;">S: +OK 2 messages (320 octets)</span>
 <span style="color: blue;">S: 1 120</span>
 <span style="color: blue;">S: 2 200</span>
 <span style="color: blue;">S: .</span>
 C: RETR 1
 <span style="color: blue;">S: +OK 120 octets</span>
 <span style="color: blue;">S: <the POP3 server sends message 1></span>
 <span style="color: blue;">S: .</span>
 C: DELE 1
 <span style="color: blue;">S: +OK message 1 deleted</span>
 C: RETR 2
 <span style="color: blue;">S: +OK 200 octets</span>
 <span style="color: blue;">S: <the POP3 server sends message 2></span>
 <span style="color: blue;">S: .</span>
 C: DELE 2
 <span style="color: blue;">S: +OK message 2 deleted</span>
 C: QUIT
 <span style="color: blue;">S: +OK dewey POP3 server signing off (maildrop empty)</span>
 C: <close connection>
 <span style="color: red;">S: <wait for next connection></span>
</div>

שרת POP3 ללא אופציית APOP המאשר משתמש:

<div style="text-align: left; direction: ltr; margin-left: 1em;">
 C: USER mrose
 <span style="color: blue;">S: +OK User accepted</span>
 C: PASS tanstaaf
 <span style="color: blue;">S: +OK Pass accepted</span>
</div>

== ראו גם ==
* דואר אלקטרוני
* SMTP
* IMAP
* מונחים ברשתות מחשבים

== לקריאה נוספת ==
* - הגדרת Post Office Protocol בגרסתו הראשונה
* - הגדרת POP2
* - הגדרת POP3

== קישורים חיצוניים ==
*[http://www.eventhelix.com/RealtimeMantra/Networking/POP3.pdf תרשים זרימה של התקשרות POP3]
*[https://sourceforge.net/projects/hpop/ ספריית קוד פתוח OpenPop.NET למימוש הפרוטוקול בשפת #C], באתר sourceforge
==הערות שוליים==

קטגוריה:תקנים בתקשורת מחשבים
קטגוריה:דואר אלקטרוני