# Posta Elettronica

Nel sistema della posta elettronica, ci sono diverse entità che svolgono ruoli fondamentali nel processo di invio e ricezione delle email.

- Il `MUA` (`Mail User Agent`) è l'applicazione utilizzata dagli utenti per inviare e ricevere email. Può essere accessibile tramite un browser web, come nel caso di servizi come Gmail o Tutanota, oppure tramite applicazioni installate localmente, come Thunderbird. Il MUA fornisce un'interfaccia utente per gestire la corrispondenza elettronica, consentendo agli utenti di comporre, inviare, ricevere e organizzare le email
- L'`MTA` (`Mail Transfer Agent`) è il server responsabile dello smistamento delle email inviate dai client verso i corretti relay di mezzo e, infine, al destinatario finale, che è rappresentato dal server di posta del destinatario
- L'`MDA` (`Mail Delivery Agent`) si trova solitamente sui server MTA di destinazione e ha il compito di prendere le email e depositarle nella casella di posta dell'utente finale

## Flusso di Posta Elettronica

Immaginiamo un scenario in cui abbiamo due host: **A** e **B**. Sull'host A è configurata l'email `mario@email.com`, mentre sull'host B è configurata l'email `luigi@server.com`. Dopo il simbolo `@`, troviamo il nome di dominio, e attraverso la risoluzione DNS dei record MX possiamo identificare i mail server di riferimento per ciascun dominio.

1. Mario decide di inviare un'email a Luigi
2. Il MUA di Mario utilizza il protocollo `SMTP` (`Simple Mail Transfer Protocol`) per inviare l'email al primo MTA responsabile per il dominio **email.com**
3. Per determinare a quale server inviare la mail, l'MTA effettua una risoluzione DNS per ottenere il record MX associato al dominio **server.com**. Questi record indicano quali server sono responsabili per la ricezione delle email per quel dominio.
4. La mail viene quindi trasferita attraverso la rete fino a raggiungere l'MTA del destinatario
5. All'arrivo presso l'MTA del destinatario, la mail viene passata all'MDA, che si occupa di depositare il messaggio nella casella di posta dell'utente finale, in questo caso, Luigi
6. Luigi, utilizzando il suo MUA, si interfaccia con l'MDA per scaricare la mail. Questo avviene tramite protocolli come `POP3` o `IMAP4`.

![email-flow](asset/img/email-flow.png)
