Il protocollo SMTP (Simple Mail Transfer Protocol) funziona facilitando il trasferimento di messaggi e-mail tra server. Quando viene inviata un’e-mail, il client SMTP dal lato del mittente stabilisce una connessione al server SMTP, in genere utilizzando TCP. Il client e il server comunicano quindi tramite una serie di comandi e risposte per trasferire l’e-mail. Il processo prevede che il client si identifichi, specifichi gli indirizzi del mittente e del destinatario e trasmetta il contenuto del messaggio. Il server inoltra quindi l’e-mail al server di posta elettronica del destinatario o la archivia finché il destinatario non la recupera.
Il protocollo SMTP opera attraverso una serie di fasi definite: creazione della connessione, transazione della posta e terminazione della connessione. Inizialmente, il client stabilisce una connessione TCP con il server, solitamente sulla porta 25. Il client invia un comando HELO o EHLO al server, che risponde con un saluto. Il client quindi emette un comando MAIL FROM per specificare l’indirizzo e-mail del mittente, seguito dai comandi RCPT TO per specificare i destinatari. Dopo che il server ha riconosciuto questi comandi, il client invia un comando DATA per avviare la trasmissione del contenuto dell’e-mail. Il messaggio viene inviato e termina con un singolo punto su una nuova riga. Il server conferma la ricezione del messaggio e il client invia un comando QUIT per chiudere la connessione.
SMTP in genere utilizza la porta 25 per la comunicazione tra i server di posta. Per la trasmissione crittografata tramite SSL/TLS, viene spesso utilizzata la porta 465. Un’altra porta comune per SMTP con crittografia STARTTLS è la porta 587, consigliata per l’invio di e-mail da client a server per garantire una trasmissione sicura.
Il Simple Mail Transfer Protocol include diversi comandi utilizzati durante il processo di trasmissione della posta elettronica. I comandi chiave includono HELO o EHLO per identificare il client sul server, MAIL FROM per specificare l’indirizzo del mittente, RCPT TO per specificare l’indirizzo del destinatario, DATA per iniziare il trasferimento del contenuto dell’e-mail, RSET per ripristinare la transazione di posta corrente, VRFY per verificare un indirizzo email, EXPN per espandere una mailing list e QUIT per terminare la sessione. Ogni comando è seguito da una risposta del server che indica il successo o il fallimento dell’operazione.