Un server di posta (mail server) è un sistema che gestisce l’invio e la ricezione corretta delle e-mail tra mittente e destinatario. Ad esempio, quando invii un’e-mail tramite Gmail, stai utilizzando il server di posta di Google.
Un client di posta, invece, è un programma che serve per leggere, inviare e archiviare le e-mail. Esempi comuni sono Microsoft Outlook, Thunderbird e altri.
Il server di posta in uscita utilizza il protocollo SMTP, acronimo di Simple Mail Transfer Protocol.
Le sue funzioni principali sono:
Verificare la configurazione del mittente e consentire al dispositivo di inviare l’e-mail.
Trasmettere il messaggio e ricevere il codice di risposta.
I server SMTP utilizzano le porte 25 (non crittografata) e 465 (crittografata).
POP3 è un protocollo per ricevere le e-mail. Permette al client di posta di connettersi al server e scaricare i messaggi sul dispositivo locale, rendendoli disponibili anche offline. Di default, i messaggi vengono rimossi dal server remoto (ma è possibile mantenere una copia).
POP3 utilizza le porte 110 (non crittografata) e 995 (SSL/TLS crittografata).
Come POP3, IMAP viene utilizzato per ricevere e gestire le e-mail, ma consente di farlo direttamente sul server, senza scaricarle. È ideale per chi accede alla posta da più dispositivi.
IMAP usa le porte 143 (non crittografata) e 993 (SSL/TLS crittografata).
La risposta più comune è:
“Per usare il mio dominio personale nell’indirizzo e-mail.”
È vero, ma non è tutto. Puoi usare un dominio personalizzato anche senza creare un server dedicato. Molti servizi permettono di collegare il dominio ai loro server e gestiscono tutto automaticamente. Il vantaggio principale è che forniscono già un server SMTP configurato, evitando di impostare manualmente inoltri, filtri antispam o opzioni avanzate. Devi solo impostare correttamente i record NS (Name Server) — molto più semplice che costruire un mail server da zero.
Tuttavia, i servizi di terze parti hanno dei limiti:
Controllo ridotto: non hai il pieno controllo del sistema di posta.
Limiti di invio: ogni provider impone un limite al numero di messaggi inviabili.
Se invii molte e-mail (ad esempio per uso aziendale o newsletter), questi limiti possono diventare restrittivi.
Creando un server di posta personale, invece, puoi gestire:
Quote di posta e limiti di invio
Backup regolari per evitare la perdita di dati
Blacklist antispam
Permessi di accesso per più utenti
Un server di posta personale offre controllo totale, ma richiede competenze tecniche e manutenzione costante.
In questa guida vedremo come creare un server e-mail personale. Utilizzeremo un server cloud Hostman con Ubuntu 20.04 come sistema operativo.
Il server sarà configurato con crittografia, protezione antispam e un pannello di amministrazione web per gestire gli account.
Passa alla modalità superutente:
sudo su
Aggiorna i pacchetti:
apt update && apt upgrade
Verifica che l’hostname del server corrisponda al dominio della tua e-mail:
hostname
Se non corrisponde:
hostnamectl set-hostname mail.hostname.com
(Sostituisci mail.hostname.com con il tuo hostname effettivo.)
Configura il fuso orario installando chrony per la sincronizzazione:
apt install chrony
timedatectl set-timezone Europe/Athens
Puoi visualizzare tutti i fusi orari con:
timedatectl list-timezones
Abilita chrony:
systemctl enable chrony
Usa iptables per aprire le porte:
25, 465 — SMTP (invio)
110, 995 — POP3 (ricezione)
143, 993 — IMAP (ricezione)
iptables -I INPUT 1 -p tcp --match multiport --dports 25,110,143,465,587,993,995,80,443 -j ACCEPT
Rendi le regole permanenti:
netfilter-persistent save
Ora che il server è configurato correttamente, possiamo procedere all'installazione del software necessario per creare un server di posta completamente funzionante.
Postfix è un MTA (Mail Transfer Agent) open source con architettura modulare.
Installa Postfix e il pacchetto per MySQL:
apt install postfix postfix-mysql
Durante l’installazione:
Seleziona Internet Site.
Specifica il nome di dominio completo (FQDN).
Crea un utente dedicato per la gestione delle e-mail:
addgroup -gid 1080 vmail
Successivamente, crea l'utente vmail e assegna la directory home a /home/mail:
adduser --home /home/mail -gid 1080 -uid 1080 vmail
Controlla i permessi:
ll /home
Apri il file principale:
nano /etc/postfix/main.cf
Aggiungi o modifica le seguenti righe:
# Domains we accept mail for
mydestination = localhost.$mydomain, localhost, localhost.localdomain
# Postfix protocol
inet_protocols = ipv4
# Path to the public certificate
smtpd_tls_cert_file = /etc/ssl/mail/public.pem
# Path to the private certificate
smtpd_tls_key_file = /etc/ssl/mail/private.key
Then, add additional options required for Postfix to function correctly:
# Mail storage location
virtual_mailbox_base = /home/mail
# Path to alias maps
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
# Domain storage format
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
# Mailbox storage format
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
# Minimum virtual user ID
virtual_minimum_uid = 1080
# UID for the main user handling mail
virtual_uid_maps = static:1080
# GID for the group handling mail
virtual_gid_maps = static:1080
# Register Dovecot as the mail delivery agent
virtual_transport = dovecot
# Enable secure authentication
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
# Enable TLS encryption for outgoing SMTP connections
smtp_use_tls = yes
# Enable TLS support for incoming connections
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_helo_required = yes
Alias:
nano /etc/postfix/mysql_virtual_alias_maps.cf
Aggiungere il seguente contenuto:
user = postfix
password = postfixPa$$w0rd
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
Domini:
nano /etc/postfix/mysql_virtual_domains_maps.cf
Aggiungere
user = postfix
password = postfixPa$$w0rd
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%u'
Mailbox:
nano /etc/postfix/mysql_virtual_mailbox_maps.cf
Agguingere
user = postfix
password = postfixPa$$w0rd
hosts = localhost
dbname = postfix
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
Modifica di master.cf
nano /etc/postfix/master.cf
Aggiungi:
submission inet n - n - - smtpd
-o smtpd_tls_security_level=may
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=/var/spool/postfix/private/auth
-o smtpd_sasl_security_options=noanonymous
-o smtpd_sasl_local_domain=$myhostname
smtps inet n - n - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
Crea la directory per i certificati:
mkdir -p /etc/ssl/mail
Genera i certificati:
openssl req -new -x509 -days 1000 -nodes -out /etc/ssl/mail/public.pem -keyout /etc/ssl/mail/private.key -subj "/C=CY/ST=Limassol/L=Limassol/O=Global Security/OU=IT Department/CN=mail.devnullhost.com"
Abilita e riavvia Postfix:
systemctl enable postfix && systemctl restart postfix
Dovecot è un server IMAP e POP3 open source. Installalo insieme ai moduli MySQL:
apt install dovecot-imapd dovecot-pop3d dovecot-mysql
Apri il file:
nano /etc/dovecot/conf.d/10-mail.conf
Imposta la posizione della posta:
mail_location = maildir:/home/mail/%d/%u/
Abilita SSL:
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
group = vmail
}
}
service stats {
unix_listener stats-reader {
user = vmail
group = vmail
mode = 0660
}
unix_listener stats-writer {
user = vmail
group = vmail
mode = 0660
}
}
Modifica il file di configurazione dell'autenticazione Dovecot:
nano /etc/dovecot/conf.d/10-auth.conf
Sostituisci la riga !include auth-system.conf.ext con !include auth-sql.conf.ext, indicando che deve essere utilizzata l'autenticazione basata su SQL.
Successivamente, configura la crittografia SSL in Dovecot:
nano /etc/dovecot/conf.d/10-ssl.conf
In questo file, aggiungi quanto segue:
ssl = required
ssl_cert = </etc/ssl/mail/public.pem
ssl_key = </etc/ssl/mail/private.key
Creazione automatica delle mailbox:
nano /etc/dovecot/conf.d/15-lda.conf
Aggiungere la seguente riga:
lda_mailbox_autocreate = yes
Ora, configura Dovecot per connettersi al database. Apri il file di configurazione SQL:
nano /etc/dovecot/dovecot-sql.conf.ext
Connessione MySQL:
driver = mysql
connect = host=localhost dbname=postfix user=postfix password=postfixPa$$w0rd
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 1080 AS uid, 1080 AS gid FROM mailbox WHERE username = '%u'
user_query = SELECT CONCAT('/home/mail/',LCASE(`domain`),'/',LCASE(`maildir`)), 1080 AS uid, 1080 AS gid FROM mailbox WHERE username = '%u'
Aprire il file di configurazione principale di Dovecot per impostare l'interfaccia del server:
nano /etc/dovecot/dovecot.conf
In questo file, aggiungi la seguente riga per ascoltare tutte le interfacce di rete disponibili:
listen = *
Abilita Dovecot:
systemctl enable dovecot && systemctl restart dovecot
Prerequisiti: web server, PHP e MySQL. Installa le estensioni PHP:
apt install php-mysql php-mbstring php-imap
Scarica PostfixAdmin:
wget https://sourceforge.net/projects/postfixadmin/files/latest/download -O postfixadmin.tar.gz
Creare una directory per PostfixAdmin ed estrarre il contenuto dell'archivio:
mkdir -p /var/www/html/postfixadmin && tar -C /var/www/html/postfixadmin -xvf postfixadmin.tar.gz --strip-components 1
Quindi, crea una directory per archiviare le cache dei modelli:
mkdir /var/www/html/postfixadmin/templates_c
Impostare le autorizzazioni corrette affinché il server web possa accedere alla directory PostfixAdmin:
chown -R www-data:www-data /var/www/html/postfixadmin
Crea il database:
mysql -u root
CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'postfixPa$$w0rd';
exit;
Configura PostfixAdmin:
nano /var/www/html/postfixadmin/config.local.php
Il contenuto del file dovrebbe essere:
<?php
$CONF['configured'] = true;
$CONF['default_language'] = 'en';
$CONF['database_password'] = 'postfixPa$$w0rd';
$CONF['emailcheck_resolve_domain']='NO';
?>
Apri la pagina di configurazione di PostfixAdmin nel tuo browser andando su /postfixadmin/public/setup.php. Ti verrà richiesto di generare un hash della password per l'autenticazione.
Inserisci la password e clicca sul pulsante. Un messaggio contenente l'hash apparirà sotto il modulo. Copia questo hash e inseriscilo nel file config.local.php:
nano /var/www/html/postfixadmin/config.local.php
Aggiorna la pagina /postfixadmin/public/setup.php e accedi con la password utilizzata per generare l'hash. Se tutto è configurato correttamente, dovresti visualizzare una pagina di controllo della configurazione.
In fondo a questa pagina, è presente un modulo per creare un account amministratore. Dopo aver creato correttamente l'account amministratore, vai su /postfixadmin/public/login.php e accedi con le credenziali appena impostate.
Verrai reindirizzato al pannello di amministrazione di PostfixAdmin.
Nel pannello web:
Vai su Domain List → New Domain
Poi su Overview → Create Mailbox
Imposta i parametri di connessione nel client e-mail:
|
Tipo |
Porta |
Sicurezza |
|
IMAP |
143 |
STARTTLS |
|
POP3 |
110 |
STARTTLS |
|
SMTP |
25 |
STARTTLS |
Login e password: le credenziali create in PostfixAdmin.
In questa guida abbiamo visto come creare un server e-mail autogestito e configurarlo completamente. Con un server personale hai controllo totale: puoi creare caselle illimitate, definire alias e gestire gli utenti.
Tutto questo può essere realizzato facilmente su un server cloud Hostman, seguendo passo dopo passo le istruzioni di questa guida.