לדלג לתוכן

Simple Mail Transfer Protocol

מתוך ויקיפדיה, האנציקלופדיה החופשית
Simple Mail Transfer Protocol
סוג פרוטוקול רשת מחשבים, פרוטוקול מבוסס טקסט עריכת הנתון בוויקינתונים
שכבה שכבת היישום של מודל ה-OSI עריכת הנתון בוויקינתונים
פורט 25 (TCP), 25 (UDP) עריכת הנתון בוויקינתונים
מחזור חיים 1982–הווה (כ־43 שנים) עריכת הנתון בוויקינתונים
מקור
  • RFC 2821: Simple Mail Transfer Protocol
  • RFC 2554: SMTP Service Extension for Authentication
  • RFC 4954: SMTP Service Extension for Authentication
  • RFC 5248: A Registry for SMTP Enhanced Mail System Status Codes
  • RFC 2852: Deliver By SMTP Service Extension
  • RFC 2505: Anti-Spam Recommendations for SMTP MTAs
  • RFC 2034: SMTP Service Extension for Returning Enhanced Error Codes
  • RFC 2442: The Batch SMTP Media Type
  • RFC 1090: SMTP on X.25
  • RFC 1985: SMTP Service Extension for Remote Message Queue Starting
  • RFC 3885: SMTP Service Extension for Message Tracking
  • RFC 3865: A No Soliciting Simple Mail Transfer Protocol (SMTP) Service Extension
  • RFC 4141: SMTP and MIME Extensions for Content Conversion
  • RFC 6647: Email Greylisting: An Applicability Statement for SMTP
  • RFC 6758: Tunneling of SMTP Message Transfer Priorities
  • RFC 7293: The Require-Recipient-Valid-Since Header Field and SMTP Service Extension
  • RFC 3974: SMTP Operational Experience in Mixed IPv4/v6 Environments
  • RFC 6531: SMTP Extension for Internationalized Email
  • RFC 4865: SMTP Submission Service Extension for Future Message Release
  • RFC 5336: SMTP Extension for Internationalized Email Addresses
  • RFC 4405: SMTP Service Extension for Indicating the Responsible Submitter of an E-Mail Message
  • RFC 7672: SMTP Security via Opportunistic DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS)
  • RFC 3461: Simple Mail Transfer Protocol (SMTP) Service Extension for Delivery Status Notifications (DSNs)
  • RFC 7504: SMTP 521 and 556 Reply Codes
  • RFC 1651: SMTP Service Extensions
  • RFC 1869: SMTP Service Extensions
  • RFC 1426: SMTP Service Extension for 8bit-MIMEtransport
  • RFC 1427: SMTP Service Extension for Message Size Declaration
  • RFC 1425: SMTP Service Extensions
  • RFC 5321: Simple Mail Transfer Protocol
  • RFC 1047: Duplicate messages and SMTP
  • RFC 821: Simple Mail Transfer Protocol
  • RFC 2920: SMTP Service Extension for Command Pipelining
  • RFC 1652: SMTP Service Extension for 8bit-MIMEtransport
  • RFC 1870: SMTP Service Extension for Message Size Declaration
  • RFC 1846: SMTP 521 Reply Code
  • RFC 1854: SMTP Service Extension for Command Pipelining
  • RFC 1891: SMTP Service Extension for Delivery Status Notifications
  • RFC 1653: SMTP Service Extension for Message Size Declaration
  • RFC 1845: SMTP Service Extension for Checkpoint/Restart
  • RFC 1830: SMTP Service Extensions for Transmission of Large and Binary MIME Messages
  • RFC 3030: SMTP Service Extensions for Transmission of Large and Binary MIME Messages
  • RFC 6152: SMTP Service Extension for 8-bit MIME Transport
  • RFC 876: Survey of SMTP implementations עריכת הנתון בוויקינתונים
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית

Simple Mail Transfer Protocolראשי תיבות: SMTP; בתרגום חופשי: פרוטוקול פשוט להעברת דואר) הוא הפרוטוקול הסטנדרטי לשליחת דואר אלקטרוני דרך האינטרנט.

תיאור הפרוטוקול

[עריכת קוד מקור | עריכה]

SMTP משמש למשלוח דואר אלקטרוני בין שרתים שונים, עד שיגיע לשרת היעד, אך אינו מאפשר למשתמש לשלוף את הודעות הדואר המיועדות אליו מן השרת. קיימים פרוטוקולים אחרים המיועדים לשליפה של הודעות דואר, כגון POP3 ו-IMAP.

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

SMTP עובר מעל TCP ומשתמש בדרך כלל בפורט 25. פורט לקבלת נתונים הוא פורט 587. SMTPS הוא חיבור SMTP מוצפן באמצעות SSL ומשתמש בדרך כלל בפורט 465.

שורשיו של פרוטוקול SMTP נעוצים ב-1982 (במסמך RFC 821). ימיו הראשונים של האינטרנט עוד בהיותו ARPANet, ומכאן פשטותו היחסית. הפשטות הזו מתבטאת בין השאר בהיעדר מנגנון אימות 'חזק' לגבי מספר שדות, בהם שדה "השולח" ("From"). חולשה זו מאפשרת לכל אדם בעולם להתחזות לכל כתובת אחרת, מה שהופך את הפרוטוקול למטרה קלה עבור ספאמרים. קיימות מספר יוזמות אשר מנסות להתמודד עם הבעיה, כגון שיטת ה-DomainKeys.

פרוטוקול SMTP עודכן בשנת 2008 באמצעות ESMTP (במסמך RFC 5321) הנותן מענה לבעיית האבטחה של הפרוטוקול ומעניק לו תכונות נוספות. פרוטוקול זה נמצא בשימוש נרחב כיום.

מציאת שרת SMTP ושימוש ב-DNS

[עריכת קוד מקור | עריכה]

איתור שרת ה-SMTP שאליו תנסה המערכת השולחת להעביר את ההודעה נעשה על ידי בקשת DNS מסוג MX (Mail eXchange). אם מוגדר יותר משרת MX אחד, המערכת תבחר את השרת בעל העדיפות הגבוהה ביותר (המספר הנמוך ביותר) אם מוגדרים מספר שרתים עם אותה עדיפות, יתבצע תהליך Round Robin בן השרתים.

כמו כן, שרתים רבים משתמשים בפרוטוקול ה-DNS על מנת לוודא שאכן קיים שם תחום בשם מתאים לזה שציין השולח. ברוב המקרים בקשת השליחה תידחה אם שם התחום לא קיים. מנגנון זה הוא חלק מההתמודדות של שרתי SMTP עם בעיית דואר הזבל האלקטרוני. בנוסף, עלתה לאחרונה הצעה להרחיב את רשומת TXT כך שתכיל את רשימת השרתים להם מאושר להעביר דואר אלקטרוני. צורת רישום זו מכונה "רשומת SPF".

בעיות אבטחה ב SMTP

[עריכת קוד מקור | עריכה]

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

  • פרטיות: הפרוטוקול מעביר מידע ללא כל הצפנה ואם קיימת האזנה בדרך ניתן לקרוא את כל ההודעה ללא כל מניעה.
  • שלמות: הפרוטוקול מעביר מידע ללא כל סוג של בדיקת שלמות כך שניתן לשנות את המידע מבלי שהמערכת תאתר את השנוי או תתריע עליו.
  • הזדהות: שליחת דואר מתבצעת ללא כל הזדהות (למעט מתן כתובת מייל) כך שניתן לבצע Spoofing בקלות יחסית.

שיטות אבטחה ב SMTP

[עריכת קוד מקור | עריכה]
  • Relay Control: שרתי דואר אמורים לוודא שכתובת המקור או כתובת היעד היא כתובת פנימית, אם שתי הכתובות חיצוניות או שתי הכתובות פנימיות תתבצע חסימה.
  • Harvesting Control: זיהוי של שליחת דברי דואר למשתמשים רבים ברצף וניתוח הודעות השגיאה על מנת ליצר רשימה של כתובות קיימות.
  • Reverse Lookup: הפיכת שם השרת השולח לכתובת IP של ה MX על ידי השרת המקבל וביצוע השוואה לכתובת השרת השולח, מכייון שארגונים רבים משתמשים בשרת שונה לקבלת ושליחת מייל, השיטה מייצרת False Positive גבוה ואינה אמינה.
  • TLS: יצירת הצפנה בין זוג שרתי דואר, ההצפנה יכולה להיות מבוססת תעודות מאושרות בין שרתים ש"מכירים" זה את זה או תעודות Self Signed בין שרתים שאינם "מכירים"
  • SPF: בניית רשומת DNS הכוללת את כתובות כל שרתי הדואר שיכולים לשלוח מייל ובכך לתת לשרת המקבל לוודא שהשרת השולח אכן מורשה לשלוח מיילים בשם הארגון.
  • DKIM: חתימה דיגיטלית בעזרת מפתח פרטי השמור בשרת השולח של חלקים חשובים במייל, החתימה תיבדק בעזרת מפתח ציבורי המפורסם בעזרת רשומת DNS.
  • DMARC: המלצה של הארגון השולח לארגון המקבל באיזה פעולות לנקוט כאשר מתקבל מייל שנכשל בבדיקת SPF ו/או DKIM.

הדגמת עבודה ב-SMTP

[עריכת קוד מקור | עריכה]

כאשר נתחבר למכונה מרוחקת, שבה מותקן שרת SMTP, היא תצפה לשורה המתחילה ב-HELO ולאחריה שם התחום של השרת שמבקש להתחבר אליה. למשל:

HELO mydomain.com

לאחר מכן, נשלח "MAIL FROM" וכתובת המקור של הדואר, על מנת לציין שמדובר בשליחת הודעת דואר. למשל:

MAIL FROM:<romeo@bogus.net>

בשלב הבא נשלח "RCPT TO" עם כתובת היעד. למשל:

RCPT TO:<juliet@fakenet.com>

הפקודה DATA מציינת את תחילת המידע שנשלח. שורה שתכיל נקודה בלבד תציין את סוף המידע. למשל:

DATA
I`m sorry to say that I want to leave you.
.

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

QUIT

קישורים חיצוניים

[עריכת קוד מקור | עריכה]
ויקישיתוף מדיה וקבצים בנושא Simple Mail Transfer Protocol בוויקישיתוף