Passa al contenuto principale

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àSezioneMUSTSHOULDMAYNota
Implementare SMTP5.1✓
Implementare RFC-8225.1✓
Accettare posta per destinatari locali5.3.1.2✓
Usare backoff esponenziale per ritentativi5.3.1.1✓
Gestire correttamente tutti i codici risposta5.3.1.3✓
Utilizzare timeout appropriati5.3.1.4✓
Generare messaggi conformi RFC-8225.3.2.1✓
Includere intestazione Date5.3.2.3✓