Files
learning/networking/030-smtp.md
2025-06-23 20:56:39 +02:00

4.0 KiB

Simple Mail Transfer Protocol

SMTP è un protocollo utilizzato per l'invio di email. Basato sul protocollo di trasmissione TCP, garantisce una comunicazione affidabile.

SMTP può operare su diverse porte:

  • 25: questa è la porta standard per SMTP. È utilizzata per l'invio di email senza crittografia, il che significa che le informazioni vengono trasmesse in chiaro. Per questo motivo, l'uso della porta 25 è spesso limitato o bloccato dai provider di servizi Internet per prevenire abusi e spam
  • 465: questa porta è utilizzata per SMTPS (SMTP Secure), che implementa la crittografia tramite TLS (Transport Layer Security)
  • 587: questa porta è utilizzata per SMTP con il comando STARTTLS, che consente di avviare una connessione sicura utilizzando TLS. Inizialmente, la connessione avviene in chiaro, ma può essere successivamente crittografata

Comandi SMTP

SMTP è un protocollo basato su comandi e codici di risposta, similmente a HTTP. Utilizza vari comandi per gestire l'invio delle email e fornisce codici di stato come feedback per indicare il risultato delle operazioni.

  • HELP: quando un client invia questo comando, il server risponde fornendo un elenco dei comandi supportati
  • HELO: inviato dal client per l'autoidentificazione. Questo comando è solitamente accompagnato da un indirizzo email o nome di dominio che identifica il mittente
  • MAIL FROM: seguito da un indirizzo email, questo comando identifica l'effettivo mittente del messaggio
  • RCPT TO: utilizzato per specificare uno o più indirizzi email che rappresentano i destinatari del messaggio
  • DATA: questo comando indica al server che il client è pronto a inviare il corpo del messaggio. Il server risponde con il codice 354, Enter message, ending with '.' on a line by itself. Questo significa che il client può inviare il messaggio e che il server considererà la trasmissione terminata quando riceverà un punto su una riga da solo
  • QUIT: inviato dal client per terminare la comunicazione con il server. Il server risponde con il codice 221, confermando la chiusura della connessione
  • AUTH LOGIN: comando utilizzato dal client per l'autenticazione sul server SMTP. Se l'autenticazione ha successo, il server risponde con il codice 235, indicando Authentication successful

smtp-commands

Codici di risposta SMTP

I codici di risposta SMTP sono suddivisi in cinque categorie principali:

  • 1XX: risposte informative. Sono molto rari e non vengono utilizzati frequentemente
  • 2XX: comando eseguito con successo. Alcuni esempi comuni includono:
    • 250: comando eseguito con successo
    • 235: autenticazione riuscita
    • 221: il server sta chiudendo la connessione
  • 3XX: questi codici indicano che il server richiede ulteriori informazioni al client per completare la richiesta. Ad esempio:
    • 334: il server chiede le credenziali per l'autenticazione
    • 354: il server è pronto a ricevere i dati della mail (comando DATA)
  • 4XX: errori temporanei, che possono essere risolti con un nuovo tentativo. Alcuni esempi includono:
    • 421: il server chiude la connessione per sovraccarico o manutenzione
    • 450: la casella di posta del destinatario non è disponibile
    • 451: errore del server
    • 452: troppe mail inviate in poco tempo
  • 5XX: errori permanenti.
    • 500: errore di sintassi di un comando smtp
    • 501: parametri errati
    • 503: sequenza di comandi errata
    • 504: comando non supportato dal server
    • 550: indirizzo email del destinatario inesistente
    • 552: casella del destinatario piena
    • 554: il server rifiuta il messaggio, classificandolo come spam o phishing

MIME

MIME, acronimo di Multipurpose Internet Mail Extensions, è uno standard che amplia le funzionalità del protocollo SMTP, permettendo l'invio di contenuti più complessi via email. Supporta caratteri non ASCII, inclusi caratteri accentati e simboli di diverse lingue. Inoltre, consente di allegare file di vari tipi, come immagini, audio, video e documenti, e di inviare email in formato HTML.