Simple Mail Transfer Protocol
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
ראו גם
[עריכת קוד מקור | עריכה]קישורים חיצוניים
[עריכת קוד מקור | עריכה]
סיווג פרוטוקולים על פי מודל ה־OSI | ||
---|---|---|
שכבת היישום | HTTP • SMTP • FTP • RTP • IRC • SNMP • SIP • DNS • DHCP | |
שכבת הייצוג | MIME • ASCII • Unicode • TLS | |
שכבת השיחה | ASP • PPTP • SSH • NFS • RPC • SOCKS | |
שכבת התעבורה | TCP • UDP • SCTP • DCCP | |
שכבת הרשת | IP (IPv4 • IPv6) • ICMP • IPX • ניתוב | |
שכבת הקו | אתרנט • Token ring • FDDI | |
השכבה הפיזית | E1 • 10Base-T • RS-232 • DSL • SONET |
פרוטוקולים במודל TCP/IP | ||
---|---|---|
שכבת יישום | HTTP • SMTP • FTP • DNS • DHCP • SSH • RTP • RTSP • IRC • SNMP • SIP • IMAP4 • MIME • Telnet • RPC • SOAP • LDAP | |
שכבת תעבורה | TCP • UDP • SCTP • DCCP | |
שכבת רשת | IP • IPv4 • IPv6 • ICMP • IPX • IGMP | |
שכבת קשר | אתרנט • 10BASE-T • 802.11 WiFi • Token ring • FDDI • ARP |