2. Il modello SMTP (The SMTP Model)
2.1. Il modello base (The Basic Model)
SMTP è un protocollo push: il sistema mittente inizia la transazione e spinge la posta verso il sistema ricevente. Il modello base funziona come segue:
- Un client SMTP (mittente) stabilisce una connessione bidirezionale a un server SMTP (ricevente)
- Il server invia un messaggio di saluto
- Il client invia comandi SMTP al server
- Il server risponde con codici di risposta numerici e messaggi di testo
- Il client trasferisce la posta se accettata
- La connessione viene chiusa
Componenti del modello
[User Agent] → [Mail Submission Agent (MSA)]
↓
[Message Transfer Agent (MTA)]
↓ SMTP
[Message Transfer Agent (MTA)]
↓
[Mail Delivery Agent (MDA)]
↓
[Mailbox]
↓
[Mail Access Agent (MAA)]
↓
[User Agent]
2.2. Il sistema di estensione (The Extension System)
2.2.1. Contesto (Background)
L'SMTP originale (RFC 821) aveva capacità limitate. Il meccanismo di estensione SMTP (ESMTP), introdotto in RFC 1869, permette l'estensione del protocollo con nuove funzionalità mantenendo la compatibilità con le versioni precedenti.
2.2.2. Definizione e registrazione delle estensioni (Definition and Registration of Extensions)
Le estensioni SMTP sono annunciate dal server in risposta al comando EHLO (Extended HELLO, HELLO Esteso). Ogni estensione ha:
- Una parola chiave (es. "SIZE", "STARTTLS", "8BITMIME")
- Parametri opzionali
- Una specifica RFC che definisce il suo comportamento
Esempio di risposta EHLO:
C: EHLO client.example.com
S: 250-smtp.example.com
S: 250-SIZE 52428800
S: 250-8BITMIME
S: 250-STARTTLS
S: 250-AUTH PLAIN LOGIN
S: 250 HELP
Questo significa che il server supporta:
- SIZE: Dimensione massima del messaggio di 52.428.800 byte
- 8BITMIME: Contenuto MIME a 8 bit
- STARTTLS: Crittografia TLS
- AUTH: Autenticazione (metodi PLAIN e LOGIN)
2.2.3. Estensioni ad uso privato (spazio dei nomi X) (Private-Use Extensions (X-namespace))
Le parole chiave di estensione che iniziano con "X" sono riservate per uso sperimentale e privato. Queste estensioni:
- NON DEVONO (MUST NOT) essere registrate presso l'IANA
- NON DEVONO (MUST NOT) essere utilizzate su Internet pubblico
- DEVONO (MUST) essere utilizzate solo per test o deployment privati
Esempio:
S: 250-XEXAMPLEEXT
S: 250 XPRIVATE-FEATURE
2.3. Terminologia SMTP (SMTP Terminology)
2.3.1. Oggetti posta (Mail Objects, MO)
Un oggetto posta contiene:
- Busta (Envelope): Informazioni di routing (MAIL FROM, RCPT TO)
- Contenuto: Gli header e il corpo del messaggio
Importante: La busta e gli header possono contenere indirizzi diversi!
2.3.2. Utenti e mailbox (Users and Mailboxes)
- Utente: Un destinatario di posta umano o processo
- Mailbox: Una posizione di archiviazione concettuale per la posta
- Indirizzo mailbox: Formato
local-part@domainlocal-part: Identifica la mailbox (max 64 caratteri)domain: Identifica il sistema host (nome di dominio o letterale IP)
Esempi:
[email protected]- indirizzo standard[email protected]- con punto nella parte localeuser@[192.0.2.1]- letterale di indirizzo IPv4user@[IPv6:2001:db8::1]- letterale di indirizzo IPv6
2.3.3. Host (Hosts)
Un host è un sistema informatico che esegue software server o client SMTP. Gli host sono identificati da:
- Nomi di dominio:
mail.example.com - Indirizzi IP:
192.0.2.1o2001:db8::1
2.3.4. Server e client (Servers and Clients)
- Server SMTP: Ascolta connessioni in arrivo, riceve posta
- Client SMTP: Inizia connessioni, invia posta
Un sistema può agire sia come client che come server:
- Server quando riceve posta
- Client quando inoltra posta
2.3.5. Comandi e risposte (Commands and Replies)
Comandi: Righe di testo ASCII inviate dal client al server
- Formato:
COMMAND [arguments]<CRLF> - Esempi:
EHLO,MAIL FROM,RCPT TO,DATA,QUIT
Risposte: Codici numerici a tre cifre più messaggi di testo
- Formato:
code message<CRLF> - Esempi:
250 Ok,550 User unknown
2.3.6. Percorso in avanti, percorso inverso e buste (Forward-path, Reverse-path, and Envelopes)
- Percorso inverso (Reverse-path): Indirizzo del mittente (MAIL FROM)
- Percorso in avanti (Forward-path): Indirizzo del destinatario (RCPT TO)
- Busta (Envelope): Combina il percorso inverso e il/i percorso/i in avanti
Esempio:
MAIL FROM:<[email protected]> (percorso inverso)
RCPT TO:<[email protected]> (percorso in avanti)
RCPT TO:<[email protected]> (percorso in avanti)
2.3.7. Agenti di sottomissione e agenti di trasferimento messaggi (Submission Agents and Message Transfer Agents)
-
Mail Submission Agent (MSA): Accetta posta dagli user agent
- Porta 587 (RFC 4409)
- Generalmente richiede autenticazione
- Applica politiche di sottomissione
-
Message Transfer Agent (MTA): Trasferisce posta tra sistemi
- Porta 25
- Gestisce routing e consegna
- Gestisce code e tentativi
2.3.8. Agenti di accesso ai messaggi (Message Access Agents)
I MAA permettono agli utenti di recuperare posta:
- POP3 (Post Office Protocol): Scarica ed elimina
- IMAP (Internet Message Access Protocol): Accesso remoto alle mailbox
Questi protocolli sono separati da SMTP e non sono trattati in questo documento.
2.3.9. Originatori e destinazioni della posta (Mail Originators and Targets)
- Originatore (Originator): Sistema o utente che crea la posta
- Destinazione (Target): Destinatario finale della posta
2.3.10. Agenti di elaborazione messaggi e mailing list (Message Processing Agents and Mailing Lists)
Gli agenti di elaborazione messaggi possono:
- Espandere mailing list
- Applicare filtri
- Modificare contenuti (es. aggiungere footer della lista)
- Archiviare messaggi
2.3.11. Gateway (Gateways)
I gateway collegano SMTP ad altri sistemi di posta:
- X.400
- UUCP
- Sistemi proprietari
I gateway traducono tra protocolli, formati e indirizzi.
2.4. Consegna generale della posta (General Mail Delivery)
Il processo di consegna della posta coinvolge tipicamente più passaggi:
- Composizione: L'utente compone la posta con un UA
- Sottomissione: UA sottomette a MSA (porta 587)
- Routing: MSA inoltra all'MTA appropriato
- Trasferimento: La posta può attraversare più MTA
- Consegna: L'MTA finale consegna a MDA
- Archiviazione: MDA archivia nella mailbox
- Recupero: L'utente recupera tramite MAA (POP3/IMAP)
Ogni hop usa SMTP tra MTA, mentre altri protocolli gestiscono sottomissione e recupero.