Vai al contenuto

Impostazioni cookie

Scelga per ogni tipo quali cookie consente. Può modificare la sua scelta in qualsiasi momento tramite Impostazioni cookie in fondo a ogni pagina. Informativa sulla privacy

Necessari

Sempre attivi

Servono per accedere, conservare il carrello e ricordare le sue scelte. Sono sempre attivi.

Quali cookie?
  • weboke_sessie, weboke_klant, weboke_remember: la sua sessione e la permanenza dell'accesso
  • weboke_basket: il suo carrello
  • wkBtwIncl: visualizzazione dei prezzi con o senza IVA
  • wok_cookies: la sua scelta sui cookie, 12 mesi

Misurano quale annuncio porta a una visita o a un ordine, così non paghiamo annunci che non funzionano.

Quali cookie?
  • Google Ads tramite Google Tag Manager (_gcl_au, _gcl_aw), fino a 90 giorni
  • OpenAI Ads, annunci in ChatGPT
  • wok_aff: tramite quale partner è arrivato da noi (programma di affiliazione), 60 giorni

4,6

Paese e lingua

Ogni paese ha il suo sito, con i prezzi e l'IVA di quel paese.

Vedi

Modulo 1 · 1.2

SMTP: la conversazione tra server di posta

Modulo 1: Come funziona la posta elettronica · Tempo di lettura: 10 minuti

Obiettivo della lezione: Dopo questa lezione sarà in grado di leggere una conversazione SMTP, spiegare cosa fanno EHLO, MAIL FROM, RCPT TO e DATA, e riconoscere da un codice di risposta se un errore è temporaneo o definitivo.

Concetti chiave: SMTP (RFC 5321), sessione, EHLO/HELO, MAIL FROM, RCPT TO, DATA, QUIT, codice di risposta (2xx, 3xx, 4xx, 5xx), codice di stato esteso, estensioni (STARTTLS, AUTH, SIZE), null MX

Una conversazione in testo semplice

SMTP è un protocollo molto antico (la prima versione risale al 1982) e per questo molto leggibile. Due server si scambiano righe di testo. Il mittente (il client) invia un comando, il destinatario (il server) risponde con un numero di tre cifre e una breve spiegazione. Una conversazione di questo tipo può essere riletta letteralmente in un messaggio di errore o in un registro (log), ed è proprio per questo che vale la pena comprenderla.

Di seguito una conversazione completa. S: è il server ricevente, C: il server mittente. Il messaggio va da anna@example.com a jan@example.net.

S: 220 mx1.mailprovider.example ESMTP ready
C: EHLO out.hosting.example
S: 250-mx1.mailprovider.example Hello out.hosting.example [192.0.2.25]
S: 250-SIZE 52428800
S: 250-8BITMIME
S: 250-STARTTLS
S: 250 SMTPUTF8
C: STARTTLS
S: 220 2.0.0 Ready to start TLS
   (da qui in poi la connessione è cifrata; il client invia di nuovo EHLO)
C: EHLO out.hosting.example
S: 250 ...
C: MAIL FROM:<anna@example.com> SIZE=24310
S: 250 2.1.0 Ok
C: RCPT TO:<jan@example.net>
S: 250 2.1.5 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: Anna <anna@example.com>
C: To: Jan <jan@example.net>
C: Subject: Offerte
C: Date: Sun, 8 Nov 2026 10:15:00 +0100
C: Message-ID: <a1b2c3@example.com>
C:
C: Hoi Jan, hierbij de offerte.
C: .
S: 250 2.0.0 Ok: queued as 4F2A1B
C: QUIT
S: 221 2.0.0 Bye

I comandi uno per uno

ComandoSignificatoAttenzione
(connessione)Il server saluta con 220 e il proprio nome.Questo si chiama banner. Se il server risponde subito 554, significa che non vuole proprio dialogare con il Suo IP (spesso a causa di una blocklist).
EHLO nome"Salve, sono out.hosting.example." Il server risponde con le estensioni che conosce.Il nome dovrebbe essere il vero nome del server mittente, idealmente uguale al relativo record PTR (lezione 5.1). HELO è la variante più vecchia, senza estensioni.
STARTTLS"Da ora in poi cifriamo la comunicazione."Solo se il server lo offre. Tra server questo è generalmente facoltativo (lezione 5.4).
MAIL FROM:<indirizzo>Il mittente di busta (envelope sender): qui arrivano i messaggi di errore.Diventa in seguito l'intestazione Return-Path. L'SPF controlla questo indirizzo. Un mittente vuoto <> viene usato dai server per i propri messaggi di errore, in modo che un bounce non generi mai a sua volta un bounce.
RCPT TO:<indirizzo>Il destinatario. Può comparire più volte, uno per destinatario.Qui il server dovrebbe già dire se l'indirizzo esiste. Un 550 5.1.1 in questo momento è un errore pulito e immediatamente riconoscibile.
DATA"Ora arriva il messaggio vero e proprio." Il server risponde 354.Seguono poi le intestazioni, una riga vuota e il testo. Una riga contenente solo un punto conclude l'invio.
QUITFine della conversazione.

Il concetto più importante: tutto ciò che precede DATA è busta (envelope), tutto ciò che segue DATA è il contenuto. Ciò che compare in MAIL FROM e ciò che compare nell'intestazione From: vengono forniti separatamente e non devono necessariamente coincidere. Il server effettua la consegna in base a RCPT TO; la riga To: nel contenuto non gioca alcun ruolo ai fini della consegna.

I codici di risposta

La prima cifra del codice è la più importante:

Inizia conSignificatoCosa fa il mittente?
2Riuscito.Si prosegue al passo successivo. Un 250 dopo DATA significa: il server ha accettato il messaggio e ne è ora responsabile.
3Proceda, sto aspettando altro.Solo con 354 dopo DATA (e durante l'autenticazione).
4Errore temporaneo: non ora, riprovi più tardi.Il messaggio resta in coda e viene riproposto successivamente.
5Errore definitivo: questo non andrà a buon fine.Il mittente rinuncia e invia un messaggio di errore (bounce) al mittente di busta.

Dopo le tre cifre, i server moderni riportano un codice di stato esteso nella forma class.subject.detail (RFC 3463), per esempio 5.1.1. La prima cifra è di nuovo 2, 4 o 5. La seconda cifra indica l'argomento: 1 = indirizzo, 2 = mailbox, 3 = sistema di posta, 4 = rete e instradamento, 5 = protocollo, 6 = contenuto, 7 = sicurezza e policy. Alcuni esempi frequenti:

550 5.1.1  The email account that you tried to reach does not exist
452 4.2.2  Mailbox full (tijdelijk)
552 5.3.4  Message size exceeds fixed limit
451 4.7.1  Greylisted, please try again later
550 5.7.1  Message rejected (beleid: spam, blocklist, DMARC)

Nel modulo 6 imparerà a leggere un bounce completo e troverà una tabella con i codici più frequenti.

Perché la differenza tra temporaneo e definitivo è così importante

Un server che ha dei dubbi risponde spesso con un 4xx. Un esempio noto è il greylisting: un server che non conosce ancora un mittente, la prima volta dice "riprovi più tardi". Un vero server di posta torna dopo qualche minuto, molti programmi di spam no. Anche i grandi destinatari usano i 4xx per rallentare il ritmo quando non si fidano ancora di un indirizzo IP. Per Lei, come mittente, questo significa: un ritardo, ma non una perdita. Il sistema di solito risolve da solo.

Un 5xx è diverso. In quel caso il mittente non riproverà. Se riceve un 5xx, qualcuno deve cambiare qualcosa: l'indirizzo, il contenuto o le impostazioni del dominio mittente.

Un'insidia: alcuni server restituiscono un 5xx anche quando il problema è temporaneo (per esempio in caso di mailbox piena, 552 5.2.2), e altri restituiscono un 4xx per qualcosa che non andrà mai a buon fine. Legga quindi sempre il testo dopo il codice, non solo il numero.

Chi è responsabile?

Dopo il 250 sul punto finale di DATA, la responsabilità passa al server ricevente. Se successivamente non riesce a depositare il messaggio nella mailbox, deve inviare da sé un messaggio di errore. Questa è l'origine di un fenomeno fastidioso: il backscatter. Un server che prima accetta tutto e solo in seguito si accorge che l'indirizzo non esiste, invia un bounce al mittente di busta. Se quel mittente era stato falsificato da uno spammer, un terzo innocente riceve il bounce. Per questo i server dovrebbero rifiutare già al momento di RCPT TO ciò che non può funzionare (si veda anche il catch-all nella lezione 3.3).

Nella pratica: vedere l'SMTP nel proprio ambiente

Un utente comune vede raramente la conversazione SMTP per intero, ma ne vede dei frammenti:

  • in un bounce compare l'ultima riga della conversazione, per esempio Remote-MTA: mx1.mailprovider.example e Diagnostic-Code: smtp; 550 5.1.1 ...;
  • nelle intestazioni di un messaggio ricevuto compare, per ciascun server, una riga Received: con il nome EHLO e l'indirizzo IP (lezione 1.5);
  • in un pannello con registro della posta, come Tracciamento Email in DirectAdmin presso WebOké, può vedere per ogni messaggio la risposta del server ricevente. Presso altri fornitori questo strumento si chiama per esempio tracciamento messaggi o mail log, e il contenuto è analogo.

Non è quindi necessario connettersi direttamente a un server di posta per poter leggere queste informazioni. Chi volesse comunque provare: con openssl s_client -starttls smtp -connect server:25 è possibile condurre la conversazione manualmente, ma molti provider domestici bloccano il traffico in uscita sulla porta 25 (lezione 1.4).

Riepilogo

  • SMTP è una conversazione leggibile: EHLO, (STARTTLS), MAIL FROM, RCPT TO, DATA, QUIT.
  • Tutto ciò che precede DATA è busta (envelope, consegna e messaggi di errore), tutto ciò che segue è il contenuto con le intestazioni che vede.
  • 2xx = riuscito, 4xx = temporaneo (si riprova più tardi), 5xx = definitivo (bounce).
  • Il codice esteso X.Y.Z indica l'argomento; X.1 indirizzo, X.2 mailbox, X.7 policy e sicurezza.
  • Legga sempre il testo dopo il codice; i server non sono sempre coerenti.

Quiz

1. Quale comando contiene l'indirizzo a cui viene inviato un messaggio di errore?



2. Un server risponde 451 4.7.1 Greylisted, please try again later. Cosa fa un buon server mittente?



3. In quale parte della conversazione compare l'intestazione Subject:?



4. Cosa indica la seconda cifra in 550 5.1.1?



5. Perché è meglio che un server rifiuti un indirizzo inesistente già a RCPT TO, invece di accettare prima il messaggio?



Esercizio

Esercizio Z1.2: Un dominio che non riceve posta. Cerchi i record MX di example.com. Indichi cosa trova e scelga cosa fa un server mittente con un messaggio per info@example.com: (a) consegnarlo al server con priorità 0, (b) provare il record A, (c) rinunciare subito, oppure (d) riprovare più tardi. Il programma interroga il record MX in tempo reale e verifica la risposta.

Esercizio Z1.2: Un dominio che non riceve posta

Cerchi i record MX di example.com e scelga cosa fa un server di invio con la posta per info@example.com.



Quello che inserisce e quello che rileviamo non vengono salvati. Il Suo browser ricorda le Sue risposte e se ha superato l'esercizio. Se ha effettuato l'accesso, conserviamo in I miei corsi solo il fatto che l'esercizio era (quasi) corretto; anche lì può eliminarlo.

Per approfondire

I passaggi descritti in questi articoli valgono per i pannelli di WebOké; presso altri fornitori il funzionamento è analogo.

Un momento…

Configuri i suoi domini

Per ogni dominio imposti i nameserver, il collegamento al suo hosting e chi ne diventa l'intestatario.

Caricamento dei suoi domini…