5. ELECTRONIC MAIL -- SMTP AND RFC-822 (Posta elettronica -- SMTP e RFC-822)
5.1 INTRODUCTION (Introduzione)
La posta elettronica è una delle applicazioni più importanti su Internet. Utilizza due protocolli principali:
- RFC-822: Definisce il formato dei messaggi di posta
- SMTP: Simple Mail Transfer Protocol per l'invio di posta
Ogni host Internet DOVREBBE implementare SMTP e RFC-822 per l'invio e la ricezione di posta elettronica (SHOULD).
5.2 PROTOCOL WALK-THROUGH (Percorso del protocollo)
5.2.1 RFC-822
RFC-822 definisce la sintassi dei messaggi di posta. Un messaggio di posta consiste di:
- Intestazione: Contiene campi come From, To, Subject, Date
- Corpo: Il contenuto effettivo del messaggio
Campi di intestazione comuni
- From: Il mittente del messaggio (obbligatorio)
- To: Il/i destinatario/i principale/i (obbligatorio quando si invia)
- Cc: Destinatari in copia carbone
- Bcc: Destinatari in copia carbone cieca
- Subject: Riga dell'oggetto
- Date: Data e ora di invio del messaggio
- Message-ID: Identificatore univoco del messaggio
- Received: Informazioni di tracciamento
5.2.2 SMTP
SMTP è un protocollo per l'invio di messaggi di posta tra host. SMTP utilizza la porta TCP 25.
Comandi SMTP
- HELO: Identificazione del client al server
- EHLO: HELO esteso (ESMTP)
- MAIL FROM: Specifica del mittente
- RCPT TO: Specifica del destinatario
- DATA: Inizio del contenuto del messaggio
- RSET: Ripristino della transazione
- VRFY: Verifica del destinatario
- EXPN: Espansione della mailing list
- HELP: Informazioni di aiuto
- NOOP: Nessuna operazione
- QUIT: Chiusura della connessione
Codici di risposta SMTP
SMTP utilizza codici di risposta a tre cifre:
- 2xx: Completamento positivo
- 3xx: Intermedio positivo
- 4xx: Completamento negativo transitorio
- 5xx: Completamento negativo permanente
5.3 SPECIFIC ISSUES (Problemi specifici)
5.3.1 SMTP
5.3.1.1 Sending Strategy (Strategia di invio)
Un client SMTP DOVREBBE implementare una strategia configurabile per mettere in coda e ritentare invii di posta falliti (SHOULD). La strategia di ritentativo DOVREBBE utilizzare un backoff esponenziale (SHOULD).
5.3.1.2 Receiving Strategy (Strategia di ricezione)
Un server SMTP DEVE accettare posta per destinatari locali validi (MUST). Un server SMTP DOVREBBE verificare la validità del destinatario prima di accettare posta (SHOULD).
5.3.1.3 Error Handling (Gestione degli errori)
Un'implementazione SMTP DEVE gestire correttamente tutti i codici di risposta SMTP (MUST). I fallimenti transitori (4xx) dovrebbero portare a ritentativi e i fallimenti permanenti (5xx) dovrebbero portare a notifiche di mancata consegna.
5.3.1.4 Timeouts (Timeout)
Un'implementazione SMTP DEVE utilizzare timeout appropriati (MUST):
- Messaggio 220 iniziale: 5 minuti
- Comando MAIL: 5 minuti
- Comando RCPT: 5 minuti
- Iniziazione DATA: 2 minuti
- Blocco DATA: 3 minuti
- Terminazione DATA: 10 minuti
5.3.2 RFC-822
5.3.2.1 Message Format (Formato messaggio)
Le implementazioni DEVONO generare messaggi conformi alla sintassi RFC-822 (MUST). Tuttavia, le implementazioni DOVREBBERO essere liberali nell'accettare messaggi con deviazioni minori (SHOULD).
5.3.2.2 Address Formats (Formati indirizzo)
RFC-822 definisce diversi formati di indirizzo. Le implementazioni DEVONO supportare indirizzi mailbox (MUST) e DOVREBBERO supportare indirizzi di gruppo (SHOULD).
5.3.2.3 Date and Time (Data e ora)
Ogni messaggio di posta DEVE includere un campo di intestazione Date (MUST). La data DEVE utilizzare il formato data e ora RFC-822 (MUST).
5.4 SMTP REQUIREMENTS SUMMARY (Riepilogo requisiti SMTP)
| Funzionalità | Sezione | MUST | SHOULD | MAY | Nota |
|---|---|---|---|---|---|
| Implementare SMTP | 5.1 | ✓ | |||
| Implementare RFC-822 | 5.1 | ✓ | |||
| Accettare posta per destinatari locali | 5.3.1.2 | ✓ | |||
| Usare backoff esponenziale per ritentativi | 5.3.1.1 | ✓ | |||
| Gestire correttamente tutti i codici risposta | 5.3.1.3 | ✓ | |||
| Utilizzare timeout appropriati | 5.3.1.4 | ✓ | |||
| Generare messaggi conformi RFC-822 | 5.3.2.1 | ✓ | |||
| Includere intestazione Date | 5.3.2.3 | ✓ |