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.

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.

Fatto

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ì:

  1. Il clientSMTP, 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.
  2. 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.
  3. 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.
  4. Il server di destinazione SMTP salva l’e-mail temporaneamente nell’archivio messaggi.
  5. 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.

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.

Un momento! Prima di lasciarci scopri
la nostra offerta per il rientro dalle ferie:
dominio .it a 1 € per il primo anno!

Primo anno a 1 € IVA escl.,
poi 10 €/anno IVA escl.

Inserisci il dominio desiderato nella barra di ricerca per verificarne la disponibilità.