Το πρωτόκολλο ηλεκτρονικού ταχυδρομείου - SMTP

Το ηλεκτρονικό ταχυδρομείο (e-mail) είναι μια από τις πιο διαδομένες σε χρήση εφαρμογές του διαδικτύου όπου επιτρέπει σε χρήστες να στέλνουν ηλεκτρονικά μηνύματα μέσα από το διαδίκτυο (internet). Προς το παρών, το πρωτόκολλο επικοινωνίας που χρησιμοποιεί το ηλεκτρονικό ταχυδρομείο (e-mail) για την αποστολή και την λήψη των μηνυμάτων είναι το πρωτόκολλο μεταφοράς απλού ταχυδρομείου (Simple Mail Transfer Protocol - SMTP). Το πρωτόκολλο SMTP στηρίζεται κι αυτό στο μοντέλο πελάτη - εξυπηρετητή (client - server) χρησιμοποιώντας επίσης για μεταφορά δεδομένων το TCP. Χρησιμοποιεί τρείς θύρες επικοινωνίας ανάλογα με τον τύπο SMTP επικοινωνίας που θέλουμε. Αυτές οι θύρες είναι οι εξής:

  • TCP Θύρα 25 - Χρησιμοποιείται για απλή μη κρυπτογραφημένη SMTP επικοινωνία

  • TCP θύρα 2525 - Χρησιμοποιείται σε περίπτωση που η θύρα επικοινωνίας 25 είναι για κάποιο λόγω δεσμευμένη (π.χ. από τον ISP).

  • TCP θύρα 465 - Χρησιμοποιείται για ανταλλαγή ασφαλών SMTP κρυπτογραφημένων μηνυμάτων

Παράδειγμα λειτουργίας του MTA και του MUA σε μία αποστολή email


Η ανταλλαγή των ηλεκτρονικών μηνυμάτων πραγματοποιείται από έναν μηχανισμό που ονομάζεται πράκτορας μεταφοράς μηνυμάτων (Message Transfer Agent - MTA). Αντίστοιχα οι τερματικοί χρήστες (end users) ονομάζονται Mail User Agent (MUA). Ο μηχανισμός MTA ορίζεται από τους διαχειριστές του συστήματος. Η επικοινωνία ανάμεσα σε έναν SMTP πελάτη (SMTP client) και έναν SMTP εξυπηρετητή (SMTP server) πραγματοποιείται μέσω απλού κειμένου ASCII. Το SMTP βασίζεται στην απ' άκρο σε άκρο επικοινωνία. Για παράδειγμα ένας SMTP πελάτης επικοινωνεί με τον SMTP εξυπηρετητή προορισμού μέσω της TCP θύρας 25 για να παραδώσει το ηλεκτρονικό μήνυμα (e-mail). Σε αυτό το σημείο ο SMTP πελάτης αναμένει να λάβει από τον SMTP εξυπηρετητή ένα μήνυμα με κωδικό 220 "READY FOR MAIL" που σημαίνει ότι είναι έτοιμος για ανταλλαγή μηνυμάτων. Όταν λάβει αυτό το μήνυμα ο SMTP πελάτης θα στείλει με την σειρά του την εντολή HELLO. Ο SMTP εξυπηρετητής ανταποκρίνεται στον SMTP πελάτη με ένα μήνυμα που έχει τον κωδικό 250 "Requested mail action okay" για να επιβεβαιώσει ότι είναι έτοιμος για συναλλαγή ηλεκτρονικού μηνύματος.

Μετά από αυτό θα ξεκινήσει μια συναλλαγή μηνυμάτων που θα περιέχει την εντολή MAIL που δίνει τις πληροφορίες του αποστολέα όπως και το πεδίο FROM που περιέχει την ηλεκτρονική διεύθυνση ώστε να εντοπιστούν τυχόν σφάλματα. Αφού εκτελεστεί επιτυχώς η εντολή MAIL ο αποστολέας θα εκδώσει μια σειρά από εντολές RCPT για να εντοπίσει τους παραλήπτες του ηλεκτρονικού μηνύματος. Ο παραλήπτης θα στείλει μια επιβεβαίωση για κάθε εντολή RCPT στέλνοντας ένα μήνυμα με κωδικό "250 ΟΚ" σε διαφορετική περίπτωση θα στείλει ένα μήνυμα σφάλματος (error message) με κωδικό "550 Νο such user here". Αφού επιβεβαιωθούν όλες οι εντολές RCPT, ο αποστολέας θα εκδώσει την εντολή DATA για να ενημερώσει τον παραλήπτη ότι είναι έτοιμος για να στείλει ένα ολοκληρωμένο ηλεκτρονικό μήνυμα (mail message). Ο παραλήπτης ανταποκρίνεται με ένα μήνυμα που έχει τον κωδικό "354 Start mail input" με μια τελική ακολουθία που θα πρέπει να χρησιμοποιήσει ο αποστολέας, προκειμένου να τερματίσει τα δεδομένα που θα περιέχει το μήνυμα. Η τερματική αυτή ακολουθία αποτελείται από 5 χαρακτήρες .

Ο SMTP πελάτης στέλνει γραμμή προς γραμμή τα δεδομένα με τους 5 αυτούς χαρακτήρες στο τέλος της κάθε σειράς στην οποία ο παραλήπτης είτε θα στείλει ένα επιβεβαιωτικό μήνυμα με κωδικό "250 ΟΚ" είτε με ένα μήνυμα σφάλματος αν κάτι πήγε στραβά. Μετά απ' όλη αυτή την συνδιαλλαγή μηνυμάτων, ο πελάτης μπορεί να εκτελέσει τις παρακάτω ενέργειες.


  • Τερματισμός συνόδου (Terminate Session): Αν ο SMTP πελάτης για κάποιο λόγο δεν έχει να στείλει άλλα μηνύματα η σύνδεση μπορεί να τερματιστεί με την εντολή QUIT με την οποία θα λάβει απάντηση μηνύματος από τον SMTP εξυπηρετητή με κωδικό "221 Service closing transmission channel reply".

  • Ανταλλαγή ρόλων (Exchange Roles): Αν ο SMTP πελάτης δεν έχει άλλα μηνύματα για να στείλει αλλά είναι σε θέση να δεκτή οποιοδήποτε μήνυμα από τον SMTP εξυπηρετητή τότε εκδίδει την εντολή TURN. Με αυτήν την εντολή ο SMTP πελάτης και ο SMTP εξυπηρετητής θα μπορούν να ανταλλάξουν ρόλους.

  • Αποστολή επιπλέων μηνύματος (Send Another Mail): Αν ο SMTP πελάτης έχει να στείλει κι άλλα μηνύματα τότε μπορεί να εκδώσει μια νέα εντολή MAIL.


Παράδειγμα επικοινωνίας SMTP μεταξύ ενός client κι ενός server



Παράδειγμα επικοινωνίας SMTP μεταξύ ενός client κι ενός server


Κώδικες
Κατάστασης

Περιγραφή
211 Help reply - system status
214 Help message
220 Service ready
221 Closing connection
250 Requested action okay
251 User not local; will forward to <forward-path>
354 Start mail input
421 Service not available
450 Action not taken - mailbox busy
451 Action aborted - local error
452 Action not taken - insufficient storage
500 Command unrecognized or syntax error
501 Syntax error in parameters or arguments
502 Command not supported
503 Bad sequence of commands (given out of order)
504 Command parameter not supported
550 Action not taken - mailbox unavailable
551 Not a local user
552 Aborted: Exceeded storage allocation
553 Action not taken - mailbox name not allowed
554 Transaction failed

Πιθανοί κώδικες κατάστασης (ή εντολές) ανάμεσα σε έναν SMTP εξυπηρετητή και έναν SMTP πελάτη


Post Office Protocol version 3 - POP3

Το POP3 είναι ένα πρωτόκολλο ηλεκτρονικού ταχυδρομείου που χρησιμοποιείται από έναν πελάτη ηλεκτρονικού ταχυδρομείου (e-mail client) για την λήψη ηλεκτρονικών μηνυμάτων (e-mails) που βρίσκονται σε απομακρυσμένους εξυπηρετητές (servers). Το POP3 επιτρέπει την λήψη ηλεκτρονικών μηνυμάτων σε έναν τοπικό υπολογιστή επιτρέποντας παράλληλα και την ανάγνωση τους ακόμα κι αν δεν υπάρχει σύνδεση με το διαδίκτυο. Όταν ένας τοπικός υπολογιστής που χρησιμοποιεί το POP3 λάβει όλα τα ηλεκτρονικά μηνύματα θα διαγραφθούν από τους εξυπηρετητές (servers). Αυτό βέβαια δεν αποτελεί την καλύτερη λύση αν θέλουμε να βλέπουμε τα μηνύματα μας από διαφορετικές τοποθεσίες. Οι προκαθορισμένες θύρες επικοινωνίας που χρησιμοποιεί το POP3 είναι οι εξής:

  • TCP θύρα 110 - χρησιμοποιείται όταν θέλουμε να χρησιμοποιήσουμε απλή επικοινωνία

  • TCP θύρα 995 - χρησιμοποιείται όταν θέλουμε να χρησιμοποιήσουμε ασφαλή κρυπτογραφημένη επικοινωνία

Παράδειγμα λειτουργίας του MDA και του MUA σε μία λήψη email


  • Ο εξυπηρετητής εκκινεί την υπηρεσία POP χρησιμοποιώντας την θύρα επικοινωνίας TCP 110 για τις αιτήσεις σύνδεσης του πελάτη. Όταν ένας POP πελάτης θέλει να κάνει χρήση της υπηρεσίας POP, στέλνει ένα αίτημα δημιουργίας TCP σύνδεσης με τον POP εξυπηρετητή.

  • Όταν η σύνδεση αυτή πραγματοποιηθεί, ο εξυπηρετητή POP στέλνει ένα μήνυμα «hello».

  • Ο πελάτης POP ανταλλάσσει εντολές με τον εξυπηρετητή POP και λαμβάνει απαντήσεις από τον δεύτερο μέχρι τον τερματισμό της σύνδεσης ή τυχόν ακύρωσής της.

  • Επειδή τα ηλεκτρονικά μηνύματα (e-mails) αφαιρούνται από τον POP εξυπηρετητή όταν αυτά ληφθούν στο τοπικό υπολογιστή του POP πελάτη, δεν υπάρχει μια κεντρική τοποθεσία πέραν αυτού του τοπικού υπολογιστή γι αυτά τα ηλεκτρονικά μηνύματα.

  • Για τον παραπάνω λόγο το POP δεν αποτελεί μια αποτελεσματική λύση για μια μικρή επιχείρηση που χρειάζεται έναν κεντρικό τόπο αποθήκευσης μηνυμάτων για λόγους εφεδρείας - ασφάλειας.

  • Αντιθέτως, το POP είναι κατάλληλο για έναν πάροχο υπηρεσιών διαδικτύου διότι μειώνει τον όγκο των μηνυμάτων που αποθηκεύονται στους εξυπηρετητές του ηλεκτρονικού ταχυδρομείου τους


Internet Message Access Protocol - IMAP

Το πρωτόκολλο αυτό δίνει την δυνατότητα πρόσβασης ενός τοπικού υπολογιστή (local client) σε ηλεκτρονικά μηνύματα (e-mails) που βρίσκονται σε κάποιον απομακρυσμένο web server. Γενικά το IMAP αλλά και το POP3 που αναφέραμε προηγουμένως είναι τα πιο διαδεδομένα πρωτόκολλα ηλεκτρονικού ταχυδρομείου και χρησιμοποιούνται μόνο για την λήψη ηλεκτρονικών μηνυμάτων. Τα δύο αυτά πρωτόκολλα υποστηρίζονται από όλους τους email clients και e-mail servers.Ενώ το POP3 υποθέτει ότι τα ηλεκτρονικά μηνύματα (e-mails) είναι προσβάσιμα μόνο από μια εφαρμογή, το IMAP επιτρέπει την ταυτόχρονη πρόσβαση σε πολλαπλούς πελάτες (clients). Γι’ αυτόν τον λόγο αποτελεί το κατάλληλο πρωτόκολλο σε περίπτωση που επιθυμούμε πρόσβαση από διαφορετικές τοποθεσίες ή ακόμα κι αν τα μηνύματα διαχειρίζονται από πολλαπλούς χρήστες. Οι προκαθορισμένες θύρες επικοινωνίας που χρησιμοποιεί το IMAP είναι οι εξής:


  • TCP Θύρα 143 - Χρησιμοποιείται για απλή επικοινωνία

  • TCP Θύρα 993 - Χρησιμοποιείται για ασφαλή επικοινωνία


Σημαντική παρατήρηση


Ενώ το POP3 είναι ακαταστασιακό (stateless) από σύνοδο (session) σε σύνοδο, το IMAP διατηρεί την κατάσταση του χρήστη μεταξύ των συνόδων. Ο λόγος οφείλεται διότι το IMAP διατηρεί όλα τα μηνύματα στον εξυπηρετητή (server) και επιτρέπει στον χρήστη την οργάνωση των μηνυμάτων σε φακέλους.


Τελευταία ενημέρωση: 24/05/2018






Follow us

 ☰