Come configurare un server di posta elettronica personale
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.
Protocolli per la ricezione e l’invio di e-mail Copia link
SMTP (Simple Mail Transfer Protocol) Copia link
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 (Post Office Protocol) Copia link
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).
IMAP (Internet Message Access Protocol) Copia link
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).
Perché configurare un proprio server di posta? Copia link
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.
Configurare un server di posta Copia link
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.
Preparazione del server Copia link
Passa alla modalità superutente:
sudo suAggiorna i pacchetti:
apt update && apt upgradeVerifica che l’hostname del server corrisponda al dominio della tua e-mail:
hostnameSe 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-timezonesAbilita chrony:
systemctl enable chronyAprire le porte necessarie Copia link
Usa iptables per aprire le porte:
-
25, 465 — SMTP (invio)
-
110, 995 — POP3 (ricezione)
-
143, 993 — IMAP (ricezione)
- 80, 443 — HTTP/HTTPS (interfaccia web)
iptables -I INPUT 1 -p tcp --match multiport --dports 25,110,143,465,587,993,995,80,443 -j ACCEPTRendi le regole permanenti:
netfilter-persistent saveOra che il server è configurato correttamente, possiamo procedere all'installazione del software necessario per creare un server di posta completamente funzionante.
Installazione e configurazione di Postfix Copia link
Postfix è un MTA (Mail Transfer Agent) open source con architettura modulare.
Installa Postfix e il pacchetto per MySQL:
apt install postfix postfix-mysqlDurante 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 vmailSuccessivamente, crea l'utente vmail e assegna la directory home a /home/mail:
adduser --home /home/mail -gid 1080 -uid 1080 vmailControlla i permessi:
ll /homeConfigurazione di Postfix Copia link
Apri il file principale:
nano /etc/postfix/main.cfAggiungi 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
File di mapping MySQL Copia link
Alias:
nano /etc/postfix/mysql_virtual_alias_maps.cfAggiungere 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.cfAggiungere
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.cfAgguingere
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.cfAggiungi:
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}
Generazione dei certificati di sicurezza Copia link
Crea la directory per i certificati:
mkdir -p /etc/ssl/mailGenera 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 postfixInstallazione e configurazione di Dovecot Copia link
Dovecot è un server IMAP e POP3 open source. Installalo insieme ai moduli MySQL:
apt install dovecot-imapd dovecot-pop3d dovecot-mysqlApri il file:
nano /etc/dovecot/conf.d/10-mail.confImposta 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.confSostituisci 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.confIn 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.confAggiungere la seguente riga:
lda_mailbox_autocreate = yesOra, configura Dovecot per connettersi al database. Apri il file di configurazione SQL:
nano /etc/dovecot/dovecot-sql.conf.extConnessione 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.confIn questo file, aggiungi la seguente riga per ascoltare tutte le interfacce di rete disponibili:
listen = *Abilita Dovecot:
systemctl enable dovecot && systemctl restart dovecotInstallazione e configurazione di PostfixAdmin Copia link
Prerequisiti: web server, PHP e MySQL. Installa le estensioni PHP:
apt install php-mysql php-mbstring php-imapScarica PostfixAdmin:
wget https://sourceforge.net/projects/postfixadmin/files/latest/download -O postfixadmin.tar.gzCreare 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 1Quindi, crea una directory per archiviare le cache dei modelli:
mkdir /var/www/html/postfixadmin/templates_cImpostare le autorizzazioni corrette affinché il server web possa accedere alla directory PostfixAdmin:
chown -R www-data:www-data /var/www/html/postfixadminCrea 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.phpIl 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.phpAggiorna 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.
Creare una casella di posta Copia link
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.
Conclusione Copia link
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.