Garantire la ricezione delle e-mail


Nel precedente articolo abbiamo visto come creare un server di posta utilizzando lo script di Mail-in-a-Box, che permette la configurazione di un ambiente praticamente chiavi in mano.

Una volta creato un account di posta, come quello di rosa@pyroplastic.stream si possono ricevere messaggi di posta elettronica da tutti i provider: gmail.com, outlook/hotmail, yahoo… Tuttavia, non è detto che i nostri messaggi vengano recapitati con successo, questo perchè il nostro server di posta potrebbe non essere stato configurato secondo le specifiche anti-spam di gmail.com, Outlook/Hotmail, Yahoo.

Come possiamo vedere nello screenshot sotto, il messaggio di posta inviato da Rosa è finito nella cartella dello Spam di Yahoo Mail.

Stessa cosa per una mail inviata ad un account Hotmail.

In questo articolo vedremo con assicurarci che le mail spedite dal nostro server mail vengano effettivamente recapitate nella posta in arrivo.

Verifica blacklist

La prima cosa da verificare in generale è che l’ip del proprio mail server non sia in una blacklist ossia che la reputazione dell’IP o dell’host non sia invalidata da precedenti invii di spam. Questo capita se l’IP è dinamico o se il nostro server mail in passato è stato oggetto di spam. Per controllare se l’IP è stato bandito si può ricorrere a questo tool gratuito: https://mxtoolbox.com/blacklists.aspx

Se è in blacklist, si può richiedere la rimozione ai vari mantenitori delle liste e attendere 12-24 ore affinchè l’esclusione dalle lista sia effettiva per tutti.

Invece. se il nostro IP o host non è in una blacklist ma le mail non vengono recapitate con successo, tipicamente il secondo motivo per cui il messaggio finisce nella cartella SPAM, è la mancanza della configurazione SPF.

Attivazione reverse DNS (o record PTR)

Questa funzione permette di assegnare un nome univoco all’indirizzo IP del vostro mail server. Tuttavia non è strettamente necessario, ma è importante se si inviano mail a piccoli provider (tipo tiscali.it, libero.it,…). Il reverse DNS (chiamato anche record PTR o rDNS) solitamente va impostato da chi vi fornisce il server di posta e il suo indirizzo IP. Come valore va inserito il nome del server mail: nel nostro caso, posta.pyroplastic.stream.

La richiesta di creazione/attivazione del record può essere fatta solitamente tramite il pannello di controllo del provider oppure aprendo un ticket.

Record SPF

SPF, Sender Policy Framework, è un sistema di validazione delle email ideato per individuare tentativi di invio di email con indirizzo mittente contraffatto.

Verificando nelle intestazioni del messaggio, infatti appare spf=softfail

SPF è in pratica una sorta di record DNS di tipo TXT da aggiungere fra i record DNS del dominio di posta. Nel nostro caso aggiungeremo:

pyroplastic.stream.  IN TXT "v=spf1 mx a ip4:176.x.x.99 a:posta.pyroplastic.stream"

Dove 176.x.x.99 è l’indirizzo IP del nostro mail server e posta.pyroplastic.stream è il suo hostname.

Questo tipo di configurazione va bene solo nel caso non vi siano altri mail server autorizzati ad inviare mail per il dominio @pyroplastic.stream. Infatti con questo record SPF, dichiareremo che le uniche mail genuine provengono o da 176.x.x.99 o da posta.pyroplastic.stream.

Potete aiutarvi a generare il vostro record SPF, tramite il tool gratuito online: https://www.spfwizard.net/

Aggiunta dkim

Abbiamo provato a mandare un messaggio dall’account di Rosa verso Hotmail e Yahoo, ma ancora finisce nello spam. Tuttavia a questo punto mezza configurazione è ok in quanto SPF=pass. Rimane da sistemare dkim. DKIM non è obbligatorio, ma aumenta la probabilità di non avere problemi in caso in cui qualcuno inizi a utilizzare senza il nostro consenso i nostri account (Mail spoofing).

Per creare la configurazione dkim, basta andare sul pannello di controllo di Mail-in-a-Box, sezione System, voce Extenal DNS.

Scorrendo verso il fondo della pagina troveremo i nostri valori da inserire nuovamente nel DNS.

Quindi dobbiamo creare un record mail._domainkey di tipo TXT contenente il valore v=DMIK1; h=sha….

Aggiunta record _dmarc

L’altro record che si può inserire è DMARC, che è l’acronimo di Domain-based Message Authentication, Reporting & Conformance.

Per usare questa tecnologia, va creato un record di tipo TXT chiamato _dmarc, il cui valore contiene questi valori:

v=DMARC1; p=none; rua=mailto:dmarcreport@pyroplastic.stream

Dove dmarcreport@pyroplastic.stream è un indirizzo di posta al quale recapitare eventuali report in cui sono elencate le statistiche di chi ha inviato mail con il proprio dominio. E’ un campo necessario quindi, inseriamo un indirizzo mail creato ad-hoc.

Esempio di report/statistiche inviato da gmail.

Invece il valore p=none serve per dire di non fare nulla in caso arrivino messaggi che non corrispondano alle direttive imposte con dkim o spf.

Epilogo

Dopo aver fatto tutte queste modifiche e aspettato circa 24 ore, abbiamo provato nuovamente ad inviare un messaggio di posta. Questa volta l’email è stata recapitata correttamente nell’inbox (posta in arrivo) dell’utente destinatario.

Facciamo un breve riassunto dei controlli da fare quando le mail non vengono recapitate nella casella di posta in arrivo:

  • Verificare la non presenza nelle blacklist dell’IP o host del mail server (estremamente importate)
  • Creare il record SPF (mediamente consigliato)
  • Creare il “record” DKIM (opzionale)
  • Creare il record _dmarc (opzionale)
  • Aggiungere il reverse DNS (altamente consigliato)
  • Attendere 24 ore dopo aver modificato i DNS.

Creare un proprio server di posta elettronica

Google con GMAIL, Microsoft con Hotmail/Outlook forniscono account di posta elettronica gratuita ma le mail vengono analizzate e utilizzate a fini di marketing.
Se desiderassimo mantenere le nostre mail fuori da questi giri, come è possibile fare?
Potremmo optare per una soluzione casalinga o privata.

Non è una cosa comune costruirsi un mail server, ma con un po’ di conoscenze è possibile predisporre un ambiente funzionale per gestire il flusso mail di qualche utente ad un costo contenuto.

Se si disporre di un indirizzo IP fisso per la propria linea Internet, si può ospitare il server di posta a casa, altrimenti con una decina di euro al mese (o anche meno) si possono acquistare dei VPS (virtual private server) sui quali predisporre il nostro server di posta.
Nel nostro caso optiamo per un VPS con Ubuntu 18.04, che offre aggiornamenti di sicurezza per parecchi anni.

Come risorse disponibili è sufficiente 1 GB di RAM e 1 CPU, anche un Raspberry Pi va bene. Invece per lo spazio disco, beh…Questo dipende dalle vostre necessità: calcolando che circa 5 GB di spazio disco sono necessari per il sistema operativo, altri 10 GB sono sufficienti se si usa una politica di svecchiamento delle vecchie mail e degli allegati, in un ambiente con 7-8 account mail attivi.

E’ possibile acquistare una VPS a 11,80 euro l’anno con 1536 MB di RAM e 10 GB di disco su AlexHost.com, scegliendo il piano PROMO KVM VDS 0.99/mo con pagamento annuale. In alternativa con circa 44 euro l’anno, si può avere una VPS su OVH VPS 2018 SSD 1 da 2 GB di RAM e 20 GB di disco.

Acquistata il VPS oppure predisposto il nostro server casalingo, si può installare l’ecosistema posta elettronica con uno script predisposto di mailinabox.email che fa uso di certificati TLS Let’s Encrypt, gratuiti.

Lo script prevede che sul server che andremmo ad usare non ci siano altri software (es. Apache) o servizi installati se non quelli previsti dall’installazione mimimal di Ubuntu 18.04, perchè mailinabox andrà ad installare Nginx e altri componenti come Postfix, Dovecot e Nextcloud.

La prima cosa da fare è assegnare un hostname appropriato al server. Se andremmo a creare un account di posta come @pyroplastic.stream, potremmo decidere di chiamare il nostro server posta.pyroplastic.stream.

Il nome del mail server deve essere risolvibile dai nostri DNS e da quelli su Internet; per assegnare un hostname definitivo e permanente occorre inserire tale nome nel file /etc/HOSTNAME

sudo echo posta.pyroplastic.stream > /etc/hostname

Verifichiamo tramite il comando hostname che il nome del server sia corretto.

hostname
hostname --fqdn

Aggiorniamo il server con gli ultimi pacchetti disponibili:

sudo apt update && sudo apt upgrade

Poi riavviamo il server, in modo che il kernel e altri software possano girare all’ultima versione.

Successivamente si può lanciare lo scaricamento dello script e la conseguente installazione:

wget https://mailinabox.email/setup.sh
sudo bash setup.sh

Lo script ad un certo punto inizierà a mostrare delle schermate in cui vengono chieste alcune informazioni:

Ora è possibile aggiungere il primo account di posta da attivare sul nuovo mail server. Questo account sarà necessario per accedere anche alla console di gestione.

Nella successiva schermata, viene chiesto di inserire l’hostname del proprio server:

Se si è presa una VPS su Internet, può essere che venga chiesto quale è l’indirizzo IP pubblico del server, solitamente il campo è precompilato già in maniera corretta.

Viene chiesto di impostare il fuso orario (time zone), basta scegliere Europe e poi Rome.

Durante l’installazione, è possibile vedere quale indirizzo IP viene assegnato al server. In questo caso, il server è posto in una rete privata (casalinga) con un indirizzo pubblico associato (indirizzo di NAT).

Invece se il server ha già un suo indirizzo pubblico, viene mostrato solo questo:

Viene chiesto di fornire una password per il proprio account, da usare anche per fare login sul pannello di controllo.

Una volta terminata la configurazione è possibile collegarsi alla console di gestione tramite la pagina web https://posta.pyroplastic.stream/admin, dove posta.pyroplastic.stream è il nome del nostro mail server.

Colleghiamaoci al pannello di gestione di Mail-in-a-Box:

Per aggiungere un nuovo account di posta, basta andare nella sezione mail poi users

Aggiungiamo un account, es. rosa:

Aggiunto l’utente, possiamo entrare nella sua webmail (roundcube) su https://posta.pyroplastic.stream/mail/

Oltre alla webmail è possibile configurare l’account anche su un mail client come Thunderbird.

I valori da usare sono questi (ovviamente posta.pyroplastic.stream va cambiato col vostro hostname):

OpzioneValore
ProtocoloIMAP
Mail serverposta.pyroplastic.stream
IMAP Port993
IMAP SecuritySSL or TLS
SMTP Port587
SMTP Security STARTTLS (“always” or “required”, se richiesto)
Username:L’intero indirizzo mail es. rosa@pyroplastic.stream
Password:La password dell’utente

Configurare un certificato TLS

Per configurare un certificato TLS (SSL) si può usare Let’s Encrypt. Basta andare nel meù System, TLS (SSL) Certificates.

Cliccando sul pulsante Provision, sarà possibile attivare il certificato.

Dopo pochi secondi compare una schermata che segnala che il certificato è ok. Il certificato ha una durata di 89 giorni, ma sarà rinnovato automaticamente in futuro.

Accedere a Nextcloud

Mail-in-a-Box, oltre a predisporre un server di posta elettronica, installa anche NextCloud uno software che consente di tenere aggiornati i propri contatti oppure di caricare i file personali sul server come se fosse Dropbox o Owncloud.

Per accedere al proprio NextCloud basta puntare all’indirizzo: https://posta.pyroplastic.stream/cloud/ e fare login con le stesse credenziali dell’account di posta: es. rosa@pyroplastic.stream

Questo server mail è ospitato su AlexHost.com, in particolare abbiamo scelto il PROMO KVM VDS 0.99/mo, che consente di avere una VPS con 1536MB RAM e 10 GB di spazio disco ad un prezzo contenuto.