Sei sulla pagina 1di 1

Cerca su Noviello.

it Scrivi Per Noi Contatti Tags Script ACCEDI ISCRIVITI

UBUNTU18 UBUNTU POSTFIX EMAIL 9 MIN READ


ARTICOLI CORRELATI CONTENUTI
Pubblicato -  19 MAG 2018 | Aggiornato - 16 OTT 2019
Come installare Introduzione
Zoom su Ubuntu
18.04 LTS
Come installare Postfix Dovecot MySQL Prerequisiti

Come installare SpamAssassin su Ubuntu 18.04 LTS Configurare e


identificare il
Postman su
tuo FQDN (Fully
Ubuntu 20.04 LTS Qualified
Domain Name)
Come aggiornare
Ubuntu 18.04 a Installare Postfix
Ubuntu 20.04 LTS e Dovecot
Focal Fossa
Configurazione
Come installare MySQL
Kvm su Ubuntu
Configurare
18.04 LTS Postfix
Come installare e Configurare
configurare Dovecot
WireGuard VPN su
Configurare
Ubuntu 18.04
Introduzione SpamAssassin

In questo tutorial installeremo e configureremo un server di posta (Mail Server) utilizzando Postfix, Dovecot, MySQL
e SpamAssassin su Ubuntu 18.04 LTS.

report this

Prerequisiti
Prima di configurare il server di posta, è necessario rispettare i seguenti prerequisiti:

Il dominio che utilizzi punta correttamente al tuo server.


MySQL installato e configurato (Se MySQL non è installato, consiglio di seguire questa semplice guida.)
Utente con privilegi di root (In questa guida utilizzeremo l'utente root)

Facoltativo: Certificati SSL. In questa guida utilizzerò i certificati ottenuti con Let's Encrypt. È possibile utilizzare i
certificati SSL generati per i Web Server, come Apache o Nginx.

Per generare i certificati SSL con Let's Encrypt, segui queste guide:
Generare Certificati SSL Per Nginx
Generare Certificati SSL Per Apache

Configurare e identificare il tuo FQDN (Fully Qualified


Domain Name)
Un hostname è un'etichetta assegnata a un computer connesso ad Internet e utilizzato per identificare la macchina
all'interno di una rete interna. Gli hostname sono importanti anche perché fanno parte del Fully Qualified Domain
Name (FQDN) di un computer. Assegnare un FQDN a un computer lo rende raggiungibile tramite il Domain Name
System (DNS) pubblico, ovvero Internet.

L'hostname è il nome da associare al server, potete usare quello che volete.

Impostare o modificare l' hostname da terminale, dare questo comando:

# | hostnamectl set-hostname tuohostname

Semrpe da terminale aprire il file hosts:

# | nano /etc/hosts

Modificare il file hosts in modo che assomigli al seguente. Sostituire tuohostname, dominio, tld e TuoIP con i tuoi
dati.

9-layered Linux Protection

OPEN
Ann.

127.0.0.1 localhost
127.0.1.1 tuohostname.esempio.it tuohostname
TuoIP tuohostname.esempio.it tuohostname

Salvare e chiudere il file.

Per controllare l'hostname, da terminale scrivere:

# | hostname

Per controllare il dominio, da terminale:

# | hostname -d

Per controllare l'FQDN, da terminale:

# | hostname -f

Risultato:

Output:
tuohostname.esempio.it

Potrebbe essere necessario riavviare il server.

Installare Postfix e Dovecot


Da terminale:

# | sudo apt install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql

Durante l'installazione Postfix ci chiederà il tipo di configurazione della posta. Selezionare Internet Site

Successivamente dovremo inserire, se non è già presente, il nostro FQDN

System mail name:


tuohostname.esempio.it

Configurazione MySQL

Creare un database MySQL per configurare tre diverse tabelle: una per i domini, una per gli utenti e l'ultima per gli
alias.

Chiameremo il nostro database maildb. Puoi usare qualunque nome tu voglia.

Creare il database maildb:

# | mysqladmin -p create maildb

Effettuare il login in MySQL come root:

# | mysql -u root -p

Creare un nuovo utente per il database maildb:

mysql> GRANT SELECT ON maildb.* TO 'usermail'@'127.0.0.1' IDENTIFIED BY 'password';

Effettuare un refresh dei privilegi MySQL per applicare correttamente i permessi:

mysql> FLUSH PRIVILEGES;

Selezionare il nostro database:

mysql> USE maildb;

Creare una tabella per i domini riconosciuti come domini autorizzati:

mysql> CREATE TABLE `virtual_domains` (


`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Creare una tabella per gli utenti aggiungendo l'indirizzo email e le password e associare ciascun utente ad un
dominio:

mysql> CREATE TABLE `virtual_users` (


`id` INT NOT NULL AUTO_INCREMENT,
`domain_id` INT NOT NULL,
`password` VARCHAR(106) NOT NULL,
`email` VARCHAR(120) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Creare una terza tabella per gli alias virtuali per specificare le email da inoltrare all'altra email:

mysql> CREATE TABLE `virtual_aliases` (


`id` INT NOT NULL AUTO_INCREMENT,
`domain_id` INT NOT NULL,
`source` varchar(100) NOT NULL,
`destination` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Domini Virtuali
Aggiungere i domini nella tabella virtual_domains. Puoi aggiungere tutti i domini che desideri, ma in questo tutorial
introdurremo solo il dominio principale (esempio.it) e l'FQDN (tuohostname.esempio.it).

mysql> INSERT INTO `maildb`.`virtual_domains`


(`id` ,`name`)
VALUES
('1', 'esempio.it'),
('2', 'tuohostname.esempio.it');

Email Virtuali
Aggiungere l'indirizzo email e le password associate per ciascun dominio. Assicurati di cambiare tutte le
informazioni con le tue informazioni specifiche.

mysql> INSERT INTO `maildb`.`virtual_users`


(`id`, `domain_id`, `password` , `email`)
VALUES
('1', '1', ENCRYPT('password1', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'user1@esempio.it'),
('2', '1', ENCRYPT('password2', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'user2@esempio.it');

Alias Virtuali

Aggiungere l'indirizzo email (fonte) che stiamo per inoltrare all'altro indirizzo email (destinazione).

mysql> INSERT INTO `maildb`.`virtual_aliases`


(`id`, `domain_id`, `source`, `destination`)
VALUES
('1', '1', 'alias@esempio.it', 'user1@esempio.it');

Usire da MySQL:

mysql> exit

Configurare Postfix
Configureremo Postfix per gestire le connessioni SMTP e inviare i messaggi per ogni utente introdotto nel database
MySQL.

Creare una copia del file predefinito nel caso si desideri ripristinare le configurazioni di default:

# | cp /etc/postfix/main.cf /etc/postfix/main.cf.orig

Apriamo il file da modificare:

# | nano /etc/postfix/main.cf

Commentiamo o aggiungiamo i parametri TLS necessari:

# TLS parameters
#smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
#smtpd_use_tls=yes
#smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
#smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_cert_file=/etc/letsencrypt/live/esempio.it/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/esempio.it/privkey.pem
smtpd_use_tls=yes
smtpd_tls_auth_only = yes

Successivamente aggiungere le seguenti righe, dopo i parametri TLS:

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destinat

Commentare mydestination di default e aggiungere il nostro:

#mydestination = $myhostname, tuohostname.esempio.it, localhost.esempio.it, localhost


mydestination = localhost

Verificare il parametro myhostname, deve essere impostato con l'FQDN:

myhostname = tuohostname.esempio.it

Aggiungere le seguenti righe per il recapito della posta locale e per far interagire Postfix con i domini virtuali, utenti
e alias:

virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf

Salvare e chiudere il file.

Creare tre file che assoceremo al file main.cf per permettere a Postfix di connettersi a MySQL:

# | nano /etc/postfix/mysql-virtual-mailbox-domains.cf

Aggiungere i vostri parametri:

user = usermail
password = password
hosts = 127.0.0.1
dbname = maildb
query = SELECT 1 FROM virtual_domains WHERE name='%s'

Salvare e chiudere il file.

Riavviare Postfix:

# | service postfix restart

Verificare se Postfix trova il dominio corretto, questo comando dovrebbe ritornare il valore 1:

# | postmap -q esempio.it mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf

Creare il secondo file:

# | nano /etc/postfix/mysql-virtual-mailbox-maps.cf

Aggiungere i vostri parametri:

user = usermail
password = password
hosts = 127.0.0.1
dbname = maildb
query = SELECT 1 FROM virtual_users WHERE email='%s'

Salvare e chiudere il file.

Riavviare Postfix:

# | service postfix restart

Verificare che Postfix trovi il primo indirizzo email, questo comando dovrebbe ritornare il valore 1:

# | postmap -q user1@esempio.it mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf

Creare il terzo file:

# | nano /etc/postfix/mysql-virtual-alias-maps.cf

Aggiungere i vostri parametri:

user = usermail
password = password
hosts = 127.0.0.1
dbname = maildb
query = SELECT destination FROM virtual_aliases WHERE source='%s'

Salvare e chiudere il file.

Riavviare Postfix:

# | service postfix restart

Verificare che Postfix trovi gli alias, questo comando dovrebbe ritornare il valore 1:

# | postmap -q alias@esempio.it mysql:/etc/postfix/mysql-virtual-alias-maps.cf

Se si vuole abilitare la porta 587 per connettersi in modo sicuro con i client email è necessario modificare il file
master.cf:

# | nano /etc/postfix/master.cf

Commentare le seguenti righe e aggiungere quelle mancanti:

submission inet n - - - - smtpd


-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject

ATTENZIONE agli spazi, se le righe non sono formattate nel modo corretto Postfix potrebbe non funzionare
correttamente.

Riavviare Postfix:

# | service postfix restart

Configurare Dovecot
Creare una copia dei successivi 7 file per poter ripristinare i valori di default nel caso fosse necessario.
Inserire i seguenti comandi uno alla volta:

cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig
cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.orig
cp /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.orig
cp /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext.orig
cp /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.orig
cp /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.orig

Aprire il seguente file:

# | nano /etc/dovecot/dovecot.conf

Verificare che la seguente riga non sia commentata:

!include conf.d/*.conf

Abilitare i protocolli imap e lmtp (se necessario è possibile aggiungere anche pop3) sotto !include_try
/usr/share/dovecot/protocols.d/*.protocol line:

!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap lmtp

Salvare e chiudere il file.

Aprire il prossimo file:

# | nano /etc/dovecot/conf.d/10-mail.conf

Trovare il parametro mail_location, decommentarlo e cambiare il valore in questo modo:

mail_location = maildir:/var/mail/vhosts/%d/%n

Trovare il parametro mail_privileged_group, decommentarlo e cambiare il valore in questo modo:

mail_privileged_group = mail

Salvare e chiudere il file.

Cambiare i permessi
Creare una cartella per ogni dominio che aggiungiamo nella tabella di MySQL:

# | mkdir -p /var/mail/vhosts/esempio.it

Creare l'utente e il gruppo vmail con id 5000:

# | groupadd -g 5000 vmail

# | useradd -g vmail -u 5000 vmail -d /var/mail

Cambiamo il proprietario della cartella /var/mail:

# | chown -R vmail:vmail /var/mail

Modifichiamo il seguente file:

# | nano /etc/dovecot/conf.d/10-auth.conf

Decommentare e modificare la seguente riga in questo modo:

disable_plaintext_auth = yes

Modificare il seguente parametro auth_mechanisms:

auth_mechanisms = plain login

Commentare questa riga:

#!include auth-system.conf.ext

Decommentare questa riga per abilitare l'autorizzazione di MySQL:

!include auth-sql.conf.ext

Salvare e chiudere il file.

Creare un nuovo file dove inserire le informazione di autenticazione:

# | nano /etc/dovecot/conf.d/auth-sql.conf.ext

Modificare o aggiungere le seguenti righe:

passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
}

Salvare e chiudere il file.

Aprire il seguente file:

# | nano /etc/dovecot/dovecot-sql.conf.ext

Decommentare il parametro driver e aggiungere il valore mysql:

driver = mysql

Decommentare il parametro connect ed inserire i propri parametri:

connect = host=127.0.0.1 dbname=maildb user=usermail password=password

Decommentare il parametro default_pass_scheme e cambiare il valore:

default_pass_scheme = SHA512-CRYPT

Decommentare il parametro password_query e cambiare il valore:

password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';

Cambiare il proprietario e il gruppo della cartella dovecot all'user vmail:

# | chown -R vmail:dovecot /etc/dovecot

# | chmod -R o-rwx /etc/dovecot

Aprire il seguente file (attenzione alle modifiche, controllare riga per riga):

# | nano /etc/dovecot/conf.d/10-master.conf

Modificare o aggiungere le seguenti righe:

##Uncomment inet_listener_imap and modify to port 0


service imap-login {
inet_listener imap {
port = 0
}

#Create LMTP socket and this configurations


service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
#inet_listener lmtp {
# Avoid making LMTP visible for the entire internet
#address =
#port =
#}
}

Modificare il parametro service auth:

service auth {

unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}

unix_listener auth-userdb {
mode = 0600
user = vmail
#group =
}

#unix_listener /var/spool/postfix/private/auth {
# mode = 0666
#}

user = dovecot
}

Modificare il parametro service auth-worker:

service auth-worker {
# Auth worker process is run as root by default, so that it can access
# /etc/shadow. If this isn't necessary, the user should be changed to
# $default_internal_user.
user = vmail
}

Salvare e chiudere il file.

Apriamo e modifichiamo le configurazioni SSL di Dovecot:

# | nano /etc/dovecot/conf.d/10-ssl.conf

Cambiare il seguente parametro:

ssl = required

Modificare il percorso dei certificati SSL:

ssl_cert = </etc/letsencrypt/live/esempio.it/fullchain.pem
ssl_key = </etc/letsencrypt/live/esempio.it/privkey.pem

Salvare e chiudere il file.

Riavviare Dovecot:

# | service dovecot restart

Verificare lo stato di Dovecot e Postfix.

# | service dovecot status

# | service postfix status

Verificare se la porta 993 è aperta e funzionante (se avete abilitato pop3, verificare anche la porta 995:

# | telnet esempio.it 993

Configurare SpamAssassin
Per installare SpamAssassin da terminale:

# | apt install spamassassin spamc

Creare un utente per SpamAssassin:

# | adduser spamd --disabled-login

Apriamo il seguente file:

# | nano /etc/default/spamassassin

Modificare il il parametro ENABLE:

ENABLED=1

Modificare il parametro home:

SPAMD_HOME="/home/spamd/"
OPTIONS="--create-prefs --max-children 5 --username spamd --helper-home-dir ${SPAMD_HOME} -s ${SPAM

Modificare il parametro PID_File:

PIDFILE="${SPAMD_HOME}spamd.pid"

Modificare il parametro CRON per fare in modo che SpamAssassin si aggiorni da solo:

CRON=1

Salvare e chiudere il file.

Aprire il seguente file per impostare le regole anti-spam:

# | nano /etc/spamassassin/local.cf

SpamAssassin per ogni mail determina se è superiore a 5.0 nel controllo spam, in tal caso, verrà automaticamente
considerata spam:

Modificare o aggiungere i seguenti parametri:

rewrite_header Subject ***** SPAM *****


report_safe 0
required_score 5.0
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
skip_rbl_checks 0
use_razor2 0
use_dcc 0
use_pyzor 0

Salvare e chiudere il file.

Modifichiamo il file principale di Postfix per farlo interagire con SpamAssassin:

# | nano /etc/postfix/master.cf

Sotto la riga:

smtp inet n - - - - smtpd

Aggiungere:

-o content_filter=spamassassin

Quindi:

smtp inet n - - - - smtpd


-o content_filter=spamassassin

Alla fine del file aggiungere queste righe:

spamassassin unix - n n - - pipe


user=spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}

ATTENZIONE agli spazi, se le righe non sono formattate nel modo corretto Postfix potrebbe non funzionare
correttamente.

Salvare e chiudere il file.

Avviamo SpamAssassin e riavviamo Postfix:

# | service spamassassin start

# | service postfix restart

Controllare lo stato di SpamAssassin e di Postfix:

# | service spamassassin status

# | service postfix status

L'installazione e la configurazione di Postfix, Dovecot, MySQL e SpamAssasin è terminata.

Se ti piacciono i nostri contenuti, supportaci! grazie.

Buy me a coffee

0 Commenti

Inserisci la tua email per effettuare l'accesso. Se non sei ancora registrato, inserisci la tua e-mail per sottoscriverti
automaticamente al piano gratuito.

Indirizzo email Accedi

Facendo clic su "Accedi", accetti i nostri Termini e Condizioni e Privacy Policy.

Powered by Cove

UBUNTU18

Come installare Zoom su Ubuntu 18.04 LTS


Ubuntu 18.04 - Questo tutorial spiega come installare Zoom su Ubuntu 18.04 LTS. Zoom
unifica la videoconferenza cloud, la messaggistica in tempo reale e ...
20 OTT 2020 • 1 MIN READ

Come installare Postman su Ubuntu 20.04 LTS


Ubuntu 20.04 - Questo tutorial spiega come installare Postman su Ubuntu 20.04 LTS. Per
installare Postman utilizzare il gestore dei pacchetti snappy ...
29 AGO 2020 • 2 MIN READ

Come aggiornare Ubuntu 18.04 a Ubuntu 20.04 LTS Focal Fossa


Ubuntu 20.04 - Questo tutorial spiega come fare l'upgrade all'ultima versione di Ubuntu.
Aggiornamento di Ubuntu da 18.04 a 20.04. L'Upgrade di Ubuntu è ...
24 APR 2020 • 3 MIN READ

Vedi 234 articoli in ubuntu18 →

SECURITY

Come configurare Hostname e Hosts su Ubuntu 18.04 LTS


Ubntu 18.04 - Come cambiare l'hostname. Un hostname è un'etichetta assegnata a un 19 MAG 2018 • 2 MIN READ
computer connesso ad Internet e utilizzato per identificare la macchina...

LET'S ENCRYPT

Come installare Let's Encrypt per Apache su Ubuntu 18.04 LTS


Ubuntu 18.04 LTS - Apache - Certbot HTTPS - SSL con Let's Encrypt è una certification 18 MAG 2018 • 2 MIN READ
authority (CA) che automatizza gratuitamente la creazione, la v...

Sostienici con una donazione.

NOVIELLO © 2017 - 2020 • Termini e Condizioni • Privacy Policy • Cookie Policy • Contatti • Scrivi Per Noi • Facebook • Twitter