Che cos’è l’SMTP? Definizione e nozioni di base
Se l'e-mail è la posta elettronica, l'SMTP è il postino. Senza il protocollo di rete standard del moderno Internet non sarebbe stato possibile inviare documenti di candidatura, eCards e divertenti video di gatti. Questo perché quando si invia un'e-mail, essa non va direttamente al destinatario, ma passa invece attraverso un complesso processo di comunicazione con numerose istanze prima di arrivare a destinazione.
Grazie a un credito iniziale, puoi provare gratuitamente il Server Cloud di IONOS per 1 mese (o fino all’esaurimento del credito) e beneficiare del giusto mix di prestazioni e sicurezza!
Cos’è il protocollo SMTP?
SMTP sta per “Simple Mail Transfer Protocol”, che può essere tradotto come “protocollo semplice di trasferimento di posta”. Si tratta di un protocollo di rete orientato alla connessione e basato su testo della famiglia di protocolli Internet e come tale si trova sul settimo livello del modello ISO/OSI, il livello di applicazione. Come qualsiasi altro protocollo di rete, contiene le regole per una corretta comunicazione tra computer in rete. L’SMTP è specificamente responsabile dell'invio e dell'inoltro di e-mail da un mittente a un destinatario.
Dal suo rilascio nel 1982 come successore del "Mail Box Protocol" in Arpanet, l'SMTP è diventato il protocollo standard per l'invio di e-mail. Tuttavia la procedura SMTP rimane in gran parte invisibile al normale consumatore, in quanto viene eseguita in background dal programma di posta elettronica utilizzato. Solo se il software, l'applicazione di webmail sul browser o l'applicazione di posta elettronica mobile non determina automaticamente il protocollo SMTP al momento della creazione di un account, è necessario impostarlo manualmente per garantire un traffico e-mail fluido.
Sendmail è stato uno dei primi Mail Transfer Agents (MTA) a supportare il protocollo SMTP.
Di seguito vi forniamo un riepilogo degli indirizzi dei server SMTP e delle porte SMTP per alcuni dei più popolari provider di posta elettronica:
Provider e-mail | Indirizzo di server SMTP | Porta SMTP |
---|---|---|
Yahoo | smtp.mail.yahoo.com | 587 |
Libero | smtp.libero.it | 465 (SSL) |
Virgilio | out.virgilio.it | 465 (SSL) |
Gmail | smtp.gmail.com | 587 (TLS/STARTTLS), 465 (SSL) |
Come funziona la procedura SMTP?
Comprendere la procedura SMTP significa comprendere l'e-mail. In pratica funziona così:
- Il client SMTP, ovvero il mittente, carica l’e-mail sul server SMTP, ovvero il server di posta in uscita del corrispettivo provider e-mail. Ciò avviene tramite un’applicazione web sul browser oppure tramite un programma di posta elettronica (tecnicamente chiamato “Mail User Agent”, abbreviato MUA) come Windows Live Mail o Mozilla Thunderbird.
- Successivamente il server SMTP contatta il server DNS, il quale ricerca l’indirizzo IP del server SMTP di destinazione (anche noto come “Mail Delivery Agent”, abbreviato in MDA) memorizzato con l’indirizzo e-mail del destinatario.
- Il server SMTP invia l’e-mail tramite uno o più “Mail Transfer Agents” (MTA) al server SMTP di destinazione. Ciascuno di questi processi di inoltro avviene secondo il protocollo SMTP.
- Il server di destinazione SMTP salva l’e-mail temporaneamente nell’archivio messaggi.
- Il destinatario MUA scarica l’e-mail tramite IMAP o POP3.
Come si svolge una sessione SMTP?
L'interazione tra il client SMTP e il server SMTP menzionata nel primo passo della procedura SMTP rappresenta l'effettiva sessione SMTP. Il resto della procedura SMTP, cioè l'inoltro dell'e-mail via SMTP dal server al destinatario viene trattato in un articolo separato della Digital Guide. Ciascuna sessione consiste in una sequenza di comandi SMTP del client e risposte sotto forma di codici di stato del server.
Panoramica dei comandi SMTP
Secondo le specifiche SMTP applicabili, ogni implementazione del protocollo di rete deve supportare almeno i seguenti otto comandi, costituiti da caratteri ASCII a 7 bit:
Comando SMTP | Significato |
---|---|
HELO | “Hello.”: il client si connette con il suo nome di computer dando così avvio alla sessione. |
MAIL FROM | Il client nomina il mittente dell’e-mail. |
RCPT TO | “Recipient”: il client nomina il destinatario dell’e-mail. |
DATA | Il client inizia l’inoltro dell’e-mail. |
RSET | Il client interrompe la trasmissione iniziata mantenendo la connessione tra client e server. |
VRFY/EXPN | “Verify”/“Expand”: il client controlla se una casella di posta è disponibile per la consegna del messaggio. |
NOOP | Il client richiede una risposta dal server per evitare la disconnessione a causa del time-out. |
QUIT | Il client termina la sessione. |
Panoramica dei codici di stato del server
Per ognuno di questi comandi SMTP del client il server risponde con un codice di stato a tre cifre incluso il messaggio di risposta. Per una migliore comprensione abbiamo tradotto le risposte in italiano:
Codice di stato | Messaggio di risposta (tradotto in italiano) |
---|---|
Codici di stato che segnalano che il server ha eseguito il comando con successo: | |
200 | (risposta di successo non standard) |
211 | Richiesta dello stato del sistema o di aiuto del sistema |
214 | Richiesta di aiuto relativamente all’esecuzione di un comando |
220 | Il server è pronto per la sessione SMTP |
221 | Il server termina la connessione |
250 | OK – Comando eseguito |
251 | OK – Nessun utente locale disponibile, la posta viene inoltrata |
252 | OK – L’indirizzo di destinazione non può essere verificato, si procede comunque con il tentativo di inoltro |
253 | OK – I messaggi sono impostati su “In attesa” |
Codici di stato che segnalano che il server ha capito il comando ma necessita di ulteriori informazioni per l’elaborazione: | |
354 | Il server avvia la ricezione di e-mail |
Codici di stato che segnalano che il server ha individuato un errore temporaneo, ciononostante il comando potrebbe comunque essere elaborato: | |
421 | Il server non è disponibile, la connessione viene interrotta |
450 | Il comando non è stato eseguito, la casella di posta non esiste |
451 | L’esecuzione del comando è interrotta a causa di un errore locale |
452 | Il comando non è stato eseguito per mancanza di spazio nella memoria di sistema |
Codici di stato che segnalano che il server ha individuato un errore fatale per cui il comando non può essere elaborato: | |
500 | Errore di sintassi, comando ignoto |
501 | Errore di sintassi in parametri o argomenti |
502 | Il comando non esiste |
503 | Sequenza di comando invalida |
504 | Il parametro del comando non esiste |
521 | Il server non accetta e-mail |
530 | Accesso negato |
550 | Comando non eseguito, la casella di posta non esiste |
551 | Utente locale non disponibile, tentativo di inoltro |
552 | Esecuzione del comando interrotta, errore di assegnazione della memoria |
553 | Comando non eseguito, nome di casella di posta invalido |
554 | Trasmissione fallita |
Esempio di sessione SMTP
Una sessione SMTP tra client e server può avvenire come segue:
Parte | Comando SMTP e codice di stato | Descrizione |
---|---|---|
Server: | 220 smtp.esempio.com ESMTP Postfix | Una volta stabilita la connessione, risponde il server SMTP. |
Client: | HELO relay.esempio.com | Il client SMTP si registra con il proprio nome di computer. |
Server: | 250 smtp.esempio.com, Buongiorno | Il server conferma la registrazione. |
Client: | MAIL FROM:<piera.bonora@ufficio.com> | Il client indica l’indirizzo del mittente del MUA. |
Server: | 250 OK | Il server conferma. |
Client: | RCPT TO:<margherita.giordano@ufficio.com> | Il client indica l’indirizzo del destinatario. |
Server: | 250 OK | Il server conferma. |
Client: | DATA | Il client avvia la trasmissione dell’e-mail. |
Server: | 354 End data with <CR><LF>.<CR><LF> | Il server avvia la ricezione e specifica che il testo dell’e-mail deve essere chiuso con un periodo (“.”). |
Client: | From: “Piera Bonora” <piera.bonora@ufficio.com>To: Capo Ufficio <margherita.giordano@ufficio.com>Date: Giovedì, 17 aprile 2019 16:20:00Subject: MalattiaGentile Dott.ssa Giordano,purtroppo oggi non potrò venire a lavoro perché sono malata. Farò avere il mio certificato al reparto di risorse umane via fax.Grazie per l’attenzione.CordialmentePiera Bonora | Il client trasmette il testo dell’e-mail, lo evidenzia con un’interruzione di riga dopo “Subject: Malattia” e lo conclude con il periodo desiderato. |
Server | 250 OK: queued as 15432 | Il server conferma la ricezione corretta dell’e-mail e la aggiunge alla coda. |
Client: | QUIT | Il client segnala la fine della sessione. |
Server: | 221 Arrivederci | Il server termina la connessione. |
Con l’hosting e-mail di IONOS comunicate in modo professionale, sicuro e conveniente. Utilizzate indirizzi e-mail personalizzati con il vostro dominio, ottenete un accesso flessibile alla posta elettronica, una funzione di archiviazione, calendario e soluzione per l’ufficio e molto altro ancora. Affidatevi ai più elevati standard di sicurezza nei data center IONOS certificati ISO.
Quali sono gli svantaggi del protocollo SMTP?
L'SMTP presenta due svantaggi inerenti al protocollo di rete. Il primo è che l'invio di un'e-mail tramite SMTP non restituisce una conferma di spedizione utilizzabile. Sebbene le specifiche del protocollo prevedano tale notifica, la sua formattazione non è definita di default, cosicché di solito viene restituito solo un messaggio di errore in inglese che include l'intestazione del messaggio non consegnato. Ciò rende difficile determinare la causa della mancata trasmissione (ad esempio un indirizzo errato o una casella di posta del destinatario troppo piena).
Il secondo svantaggio dell'SMTP è che gli utenti non sono autenticati quando viene stabilita una connessione e il mittente di una e-mail è quindi inaffidabile. Di conseguenza i relay SMTP aperti sono spesso utilizzati in modo improprio per l'invio in massa di spam. Gli autori usano indirizzi mittenti falsi arbitrari in modo che non possano essere rintracciati (mail spoofing).
Oggi sono in uso molte tecniche di sicurezza per prevenire l'uso improprio dei server SMTP. Ad esempio, le e-mail sospette vengono rifiutate o spostate in quarantena (cartella spam) grazie al protocollo di identificazione DomainKeys, il Sender Policy Framework (SPF) o greylisting. Inoltre è diventato più o meno standard ricevere e-mail non solo attraverso la porta tradizionale 25/TCP, ma anche attraverso la porta 587/TCP, per garantire la trasmissione esclusivamente agli utenti autenticati.
Cos’è l’ESMTP?
In risposta al dilagante problema dello spam su Internet, nel 1995 è stata rilasciata un'estensione all'SMTP: Extended SMTP (in breve ESMTP), il quale completa il protocollo con comandi aggiuntivi in codice ASCII a 8 bit, grazie al quale è stato possibile implementare molte nuove funzioni per risparmiare larghezza di banda e proteggere i server. Queste includono ad esempio:
- Autenticazione del mittente
- Crittografia SSL delle e-mail
- Possibilità di allegare file multimediali alle e-mail
- Restrizioni delle dimensioni delle e-mail in base alle impostazioni predefinite del server
- Invio simultaneo a più destinatari
- Messaggi di errore standardizzati in caso di mancata consegna
Infine alcuni esempi di comandi ESMTP:
Comando ESMTP | Significato |
---|---|
EHLO | Hello. alternativo del protocollo avanzato. Il client si connette con il suo nome di computer dando così inizio alla sessione. Se il server supporta ESMTP, la sessione viene avviata con successo. In caso contrario, il client deve utilizzare l'SMTP. |
8BITMIME | Il client richiede al server di consentire il set di caratteri ASCII a 8 bit nel corpo del messaggio. |
SIZE | Il client richiede al server di specificare la dimensione massima consentita delle e-mail in byte. |
STARTTLS | Il client chiede se il server supporta la crittografia TLS. |