Se l'e-mail è la posta elet­tro­ni­ca, l'SMTP è il postino. Senza il pro­to­col­lo di rete standard del moderno Internet non sarebbe stato possibile inviare documenti di can­di­da­tu­ra, eCards e di­ver­ten­ti video di gatti. Questo perché quando si invia un'e-mail, essa non va di­ret­ta­men­te al de­sti­na­ta­rio, ma passa invece at­tra­ver­so un complesso processo di co­mu­ni­ca­zio­ne con numerose istanze prima di arrivare a de­sti­na­zio­ne.

Free Cloud Server Trial
Server virtuali pro­fes­sio­na­li di livello en­ter­pri­se
  • vServer basato su KVM per gli svi­lup­pa­to­ri
  • Integrato con IONOS Compute Engine
  • Scalabile fino al cloud aziendale Incl. € 200 di credito iniziale nel 1° mese

Cos’è il pro­to­col­lo SMTP?

SMTP sta per “Simple Mail Transfer Protocol”, che può essere tradotto come “pro­to­col­lo semplice di tra­sfe­ri­men­to di posta”. Si tratta di un pro­to­col­lo di rete orientato alla con­nes­sio­ne e basato su testo della famiglia di pro­to­col­li Internet e come tale si trova sul settimo livello del modello ISO/OSI, il livello di ap­pli­ca­zio­ne. Come qualsiasi altro pro­to­col­lo di rete, contiene le regole per una corretta co­mu­ni­ca­zio­ne tra computer in rete. L’SMTP è spe­ci­fi­ca­men­te re­spon­sa­bi­le del­l'in­vio e del­l'i­nol­tro di e-mail da un mittente a un de­sti­na­ta­rio.

Dal suo rilascio nel 1982 come suc­ces­so­re del "Mail Box Protocol" in Arpanet, l'SMTP è diventato il pro­to­col­lo standard per l'invio di e-mail. Tuttavia la procedura SMTP rimane in gran parte in­vi­si­bi­le al normale con­su­ma­to­re, in quanto viene eseguita in back­ground dal programma di posta elet­tro­ni­ca uti­liz­za­to. Solo se il software, l'ap­pli­ca­zio­ne di webmail sul browser o l'ap­pli­ca­zio­ne di posta elet­tro­ni­ca mobile non determina au­to­ma­ti­ca­men­te il pro­to­col­lo SMTP al momento della creazione di un account, è ne­ces­sa­rio im­po­star­lo ma­nual­men­te per garantire un traffico e-mail fluido.

Fatto

Sendmail è stato uno dei primi Mail Transfer Agents (MTA) a sup­por­ta­re il pro­to­col­lo SMTP.

Di seguito vi forniamo un riepilogo degli indirizzi dei server SMTP e delle porte SMTP per alcuni dei più popolari provider di posta elet­tro­ni­ca:

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?

Com­pren­de­re la procedura SMTP significa com­pren­de­re l'e-mail. In pratica funziona così:

  1. Il client SMTP, ovvero il mittente, carica l’e-mail sul server SMTP, ovvero il server di posta in uscita del cor­ri­spet­ti­vo provider e-mail. Ciò avviene tramite un’ap­pli­ca­zio­ne web sul browser oppure tramite un programma di posta elet­tro­ni­ca (tec­ni­ca­men­te chiamato “Mail User Agent”, ab­bre­via­to MUA) come Windows Live Mail o Mozilla Thun­der­bird.
  2. Suc­ces­si­va­men­te il server SMTP contatta il server DNS, il quale ricerca l’indirizzo IP del server SMTP di de­sti­na­zio­ne (anche noto come “Mail Delivery Agent”, ab­bre­via­to in MDA) me­mo­riz­za­to con l’indirizzo e-mail del de­sti­na­ta­rio.
  3. Il server SMTP invia l’e-mail tramite uno o più “Mail Transfer Agents” (MTA) al server SMTP di de­sti­na­zio­ne. Ciascuno di questi processi di inoltro avviene secondo il pro­to­col­lo SMTP.
  4. Il server di de­sti­na­zio­ne SMTP salva l’e-mail tem­po­ra­nea­men­te nell’archivio messaggi.
  5. Il de­sti­na­ta­rio MUA scarica l’e-mail tramite IMAP o POP3.

Come si svolge una sessione SMTP?

L'in­te­ra­zio­ne tra il client SMTP e il server SMTP men­zio­na­ta nel primo passo della procedura SMTP rap­pre­sen­ta l'ef­fet­ti­va sessione SMTP. Il resto della procedura SMTP, cioè l'inoltro dell'e-mail via SMTP dal server al de­sti­na­ta­rio 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.

Pa­no­ra­mi­ca dei comandi SMTP

Secondo le spe­ci­fi­che SMTP ap­pli­ca­bi­li, ogni im­ple­men­ta­zio­ne del pro­to­col­lo di rete deve sup­por­ta­re almeno i seguenti otto comandi, co­sti­tui­ti da caratteri ASCII a 7 bit:

Comando SMTP Si­gni­fi­ca­to
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 de­sti­na­ta­rio dell’e-mail.
DATA Il client inizia l’inoltro dell’e-mail.
RSET Il client in­ter­rom­pe la tra­smis­sio­ne iniziata man­te­nen­do la con­nes­sio­ne tra client e server.
VRFY/EXPN “Verify”/“Expand”: il client controlla se una casella di posta è di­spo­ni­bi­le per la consegna del messaggio.
NOOP Il client richiede una risposta dal server per evitare la di­scon­nes­sio­ne a causa del time-out.
QUIT Il client termina la sessione.

Pa­no­ra­mi­ca 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 com­pren­sio­ne 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 re­la­ti­va­men­te all’ese­cu­zio­ne di un comando
220 Il server è pronto per la sessione SMTP
221 Il server termina la con­nes­sio­ne
250 OK – Comando eseguito
251 OK – Nessun utente locale di­spo­ni­bi­le, la posta viene inoltrata
252 OK – L’indirizzo di de­sti­na­zio­ne non può essere ve­ri­fi­ca­to, 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 in­for­ma­zio­ni per l’ela­bo­ra­zio­ne:
354 Il server avvia la ricezione di e-mail
  Codici di stato che segnalano che il server ha in­di­vi­dua­to un errore tem­po­ra­neo, cio­no­no­stan­te il comando potrebbe comunque essere elaborato:
421 Il server non è di­spo­ni­bi­le, la con­nes­sio­ne viene in­ter­rot­ta
450 Il comando non è stato eseguito, la casella di posta non esiste
451 L’ese­cu­zio­ne del comando è in­ter­rot­ta 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 in­di­vi­dua­to 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 di­spo­ni­bi­le, tentativo di inoltro
552 Ese­cu­zio­ne del comando in­ter­rot­ta, errore di as­se­gna­zio­ne della memoria
553 Comando non eseguito, nome di casella di posta invalido
554 Tra­smis­sio­ne fallita

Esempio di sessione SMTP

Una sessione SMTP tra client e server può avvenire come segue:

Parte Comando SMTP e codice di stato De­scri­zio­ne
Server: 220 smtp.esempio.com ESMTP Postfix Una volta stabilita la con­nes­sio­ne, 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, Buon­gior­no Il server conferma la re­gi­stra­zio­ne.
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:<mar­ghe­ri­ta.giordano@ufficio.com> Il client indica l’indirizzo del de­sti­na­ta­rio.
Server: 250 OK Il server conferma.
Client: DATA Il client avvia la tra­smis­sio­ne 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 <mar­ghe­ri­ta.giordano@ufficio.com>Date: Giovedì, 17 aprile 2019 16:20:00Subject: Ma­lat­tia­Gen­ti­le Dott.ssa Giordano,purtroppo oggi non potrò venire a lavoro perché sono malata. Farò avere il mio cer­ti­fi­ca­to al reparto di risorse umane via fax.Grazie per l’at­ten­zio­ne.Cor­dial­men­te­Pie­ra Bonora Il client trasmette il testo dell’e-mail, lo evidenzia con un’in­ter­ru­zio­ne di riga dopo “Subject: Malattia” e lo conclude con il periodo de­si­de­ra­to.
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 Ar­ri­ve­der­ci Il server termina la con­nes­sio­ne.
Consiglio

Con l’hosting e-mail di IONOS co­mu­ni­ca­te in modo pro­fes­sio­na­le, sicuro e con­ve­nien­te. Uti­liz­za­te indirizzi e-mail per­so­na­liz­za­ti con il vostro dominio, ottenete un accesso fles­si­bi­le alla posta elet­tro­ni­ca, una funzione di ar­chi­via­zio­ne, ca­len­da­rio e soluzione per l’ufficio e molto altro ancora. Af­fi­da­te­vi ai più elevati standard di sicurezza nei data center IONOS cer­ti­fi­ca­ti ISO.

Quali sono gli svantaggi del pro­to­col­lo SMTP?

L'SMTP presenta due svantaggi inerenti al pro­to­col­lo di rete. Il primo è che l'invio di un'e-mail tramite SMTP non re­sti­tui­sce una conferma di spe­di­zio­ne uti­liz­za­bi­le. Sebbene le spe­ci­fi­che del pro­to­col­lo prevedano tale notifica, la sua for­mat­ta­zio­ne non è definita di default, cosicché di solito viene re­sti­tui­to solo un messaggio di errore in inglese che include l'in­te­sta­zio­ne del messaggio non con­se­gna­to. Ciò rende difficile de­ter­mi­na­re la causa della mancata tra­smis­sio­ne (ad esempio un indirizzo errato o una casella di posta del de­sti­na­ta­rio troppo piena).

Il secondo svan­tag­gio dell'SMTP è che gli utenti non sono au­ten­ti­ca­ti quando viene stabilita una con­nes­sio­ne e il mittente di una e-mail è quindi inaf­fi­da­bi­le. Di con­se­guen­za i relay SMTP aperti sono spesso uti­liz­za­ti in modo improprio per l'invio in massa di spam. Gli autori usano indirizzi mittenti falsi arbitrari in modo che non possano essere rin­trac­cia­ti (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 qua­ran­te­na (cartella spam) grazie al pro­to­col­lo di iden­ti­fi­ca­zio­ne Do­main­Keys, il Sender Policy Framework (SPF) o grey­li­sting. Inoltre è diventato più o meno standard ricevere e-mail non solo at­tra­ver­so la porta tra­di­zio­na­le 25/TCP, ma anche at­tra­ver­so la porta 587/TCP, per garantire la tra­smis­sio­ne esclu­si­va­men­te agli utenti au­ten­ti­ca­ti.

Cos’è l’ESMTP?

In risposta al dilagante problema dello spam su Internet, nel 1995 è stata ri­la­scia­ta un'e­sten­sio­ne all'SMTP: Extended SMTP (in breve ESMTP), il quale completa il pro­to­col­lo con comandi ag­giun­ti­vi in codice ASCII a 8 bit, grazie al quale è stato possibile im­ple­men­ta­re molte nuove funzioni per ri­spar­mia­re larghezza di banda e pro­teg­ge­re i server. Queste includono ad esempio:

  • Au­ten­ti­ca­zio­ne del mittente
  • Crit­to­gra­fia SSL delle e-mail
  • Pos­si­bi­li­tà di allegare file mul­ti­me­dia­li alle e-mail
  • Re­stri­zio­ni delle di­men­sio­ni delle e-mail in base alle im­po­sta­zio­ni pre­de­fi­ni­te del server
  • Invio si­mul­ta­neo a più de­sti­na­ta­ri
  • Messaggi di errore stan­dar­diz­za­ti in caso di mancata consegna

Infine alcuni esempi di comandi ESMTP:

Comando ESMTP Si­gni­fi­ca­to
EHLO Hello. al­ter­na­ti­vo del pro­to­col­lo 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 uti­liz­za­re l'SMTP.
8BITMIME Il client richiede al server di con­sen­ti­re il set di caratteri ASCII a 8 bit nel corpo del messaggio.
SIZE Il client richiede al server di spe­ci­fi­ca­re la di­men­sio­ne massima con­sen­ti­ta delle e-mail in byte.
STARTTLS Il client chiede se il server supporta la crit­to­gra­fia TLS.
Vai al menu prin­ci­pa­le