[UBUNTU] - #69 Installare e configurare il server di posta elettronica Postfix e Dovecot
Sommario:
Questo è il secondo post della nostra installazione e configurazione di una serie di server di posta. In questo post ti mostreremo come installare e configurare Postfix e Dovecot, i due componenti principali del nostro sistema di posta.
Postfix è un agente di trasferimento di posta (MTA) open source, un servizio utilizzato per inviare e ricevere e-mail. Dovecot è un server IMAP / POP3 e nella nostra configurazione gestirà anche la consegna locale e l'autenticazione dell'utente.
Questo tutorial è stato scritto per Ubuntu 16.04, tuttavia gli stessi passaggi con piccole modifiche dovrebbero funzionare su qualsiasi versione più recente di Ubuntu.
Prerequisiti
Prima di continuare con questo tutorial, assicurati di aver effettuato l'accesso come utente con privilegi sudo.
Installa Postfix e Dovecot
I pacchetti Dovecot nei repository predefiniti di Ubuntu sono obsoleti. Per sfruttare il modulo
imap_sieve
installeremo Dovecot dal repository della comunità Dovecot.
Aggiungi la chiave GPG del repository al tuo portachiavi di sorgenti apt con il seguente comando wget:
wget -O- https://repo.dovecot.org/DOVECOT-REPO-GPG | sudo apt-key add -
Abilitare il repository della comunità Dovecot usando il comando seguente:
echo "deb https://repo.dovecot.org/ce-2.3-latest/ubuntu/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/dovecot.list
sudo apt update
sudo debconf-set-selections <<< "postfix postfix/mailname string $(hostname -f)"
sudo debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Internet Site'"
sudo apt install postfix postfix-mysql dovecot-imapd dovecot-lmtpd dovecot-pop3d dovecot-mysql
Configurazione Postfix
Installeremo Postfix per usare caselle e domini virtuali.
Inizia creando i file di configurazione
sql
che indicheranno a postfix come accedere al database MySQL, creato nella prima parte di questa serie.
sudo mkdir -p /etc/postfix/sql
Apri il tuo editor di testo e crea i seguenti file:
/etc/postfix/sql/mysql_virtual_domains_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias, alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias, alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
/etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT maildir FROM mailbox, alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
Una volta creati i file di configurazione SQL, aggiorna il file di configurazione postfix principale per includere informazioni su domini, utenti e alias virtuali archiviati nel database MySQL.
sudo postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf"
sudo postconf -e "virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf"
sudo postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf"
sudo postconf -e "virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf"
sudo postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf"
sudo postconf -e "virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf"
sudo postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf"
sudo postconf -e "virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf"
sudo postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf"
Il comando postconf visualizza i valori effettivi dei parametri di configurazione, modifica i valori dei parametri di configurazione o visualizza altre informazioni di configurazione sul sistema di posta Postfix.
L'agente di consegna locale consegnerà le e-mail in arrivo alle caselle di posta degli utenti. Eseguire il comando seguente per impostare il servizio LMTP di Dovecot come trasporto di consegna della posta predefinito:
sudo postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"
Impostare i parametri TL utilizzando il certificato SSL crittografato precedentemente generato:
sudo postconf -e 'smtp_tls_security_level = may'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_cert_file = /etc/letsencrypt/live/mail.linuxize.com/fullchain.pem'
sudo postconf -e 'smtpd_tls_key_file = /etc/letsencrypt/live/mail.linuxize.com/privkey.pem'
Configurare le impostazioni SMTP autenticate e consegnare l'autenticazione a Dovecot:
sudo postconf -e 'smtpd_sasl_type = dovecot'
sudo postconf -e 'smtpd_sasl_path = private/auth'
sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination'
Dovremo anche modificare il file di configurazione master Postfix
master.cf
e abilitare la porta di invio (
587
) e la porta smtps (
465
).
Apri il file con il tuo editor di testo e decommenta / modifica le seguenti righe:
/etc/postfix/master.cf
submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated, reject # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated, reject -o milter_macro_daemon_name=ORIGINATING smtps inet n - y - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated, reject # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated, reject -o milter_macro_daemon_name=ORIGINATING
Riavvia il servizio postfix per rendere effettive le modifiche.
sudo systemctl restart postfix
A questo punto hai configurato correttamente il servizio Postfix.
Configura Dovecot
In questa sezione configureremo Dovecot in modo che corrisponda alla nostra configurazione. Assicurati di modificare le linee evidenziate in giallo.
Inizia configurando il file
dovecot-sql.conf.ext
che indica a Dovecot come accedere al database e come trovare le informazioni sugli account di posta elettronica.
driver = mysql connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=P4ssvv0rD default_pass_scheme = MD5-CRYPT iterate_query = SELECT username AS user FROM mailbox user_query = SELECT CONCAT('/var/mail/vmail/', maildir) AS home, \ CONCAT('maildir:/var/mail/vmail/', maildir) AS mail, \ 5000 AS uid, 5000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule \ FROM mailbox WHERE username = '%u' AND active = 1 password_query = SELECT username AS user, password FROM mailbox \ WHERE username = '%u' AND active='1'
Non dimenticare di utilizzare le credenziali MySQL corrette (dbname, utente e password).
Quindi, modifica il
conf.d/10-mail.conf
e modifica le seguenti variabili:
… mail_location = maildir:/var/mail/vmail/%d/%n… mail_uid = vmail mail_gid = vmail… first_valid_uid = 5000 last_valid_uid = 5000… mail_privileged_group = vmail… mail_plugins = quota…
Per far funzionare l'autenticazione, aprire
conf.d/10-auth.conf
, modificare le seguenti righe e includere il file
auth-sql.conf.ext
:
… disable_plaintext_auth = yes… auth_mechanisms = plain login… #!include auth-system.conf.ext !include auth-sql.conf.ext…
Aprire il
conf.d/10-master.conf
e modificarlo come segue:
… service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix }… }… service auth {… unix_listener auth-userdb { mode = 0600 user = vmail group = vmail }… unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix }… }… service auth-worker { user = vmail }… service dict { unix_listener dict { mode = 0660 user = vmail group = vmail } }…
Aprire
conf.d/10-ssl.conf
e abilitare SSL / TLS.
… ssl = yes… ssl_cert = Make sure you use the correct path to the SSL certificate files.
If you have followed this series from the beginning, you should already have the
fullchain.pem
,
privkey.pem
,
dhparam.pem
files created on your server. For more information about how to create a free Let's encrypt SSL certificate and Diffie–Hellman key check this tutorial.
Thanks to Nevyn for noticing the problem and providing a solution.
… ssl = yes… ssl_cert = Make sure you use the correct path to the SSL certificate files.
If you have followed this series from the beginning, you should already have the
fullchain.pem
,
privkey.pem
,
dhparam.pem
files created on your server. For more information about how to create a free Let's encrypt SSL certificate and Diffie–Hellman key check this tutorial.
Thanks to Nevyn for noticing the problem and providing a solution.
Apri il
conf.d/20-imap.conf
e attiva il plugin
imap_quota
:
… protocol imap {… mail_plugins = $mail_plugins imap_quota… }…
Aprire il
conf.d/20-lmtp.conf
e modificarlo come segue:
… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins }…
Definire le cassette postali predefinite nel
conf.d/20-lmtp.conf
:
… mailbox Drafts { special_use = \Drafts } mailbox Spam { special_use = \Junk auto = subscribe } mailbox Junk { special_use = \Junk }…
Esistono due diversi tipi di dimensioni delle quote, una è impostata per l'intero dominio e l'altra per la cassetta postale dell'utente. Nella parte precedente di questa serie abbiamo già abilitato il supporto delle quote in PostfixAdmin, il che significa che le informazioni sulle quote verranno archiviate nel database PostfixAdmin.
Ora dobbiamo configurare Dovecot per connettersi al database, gestire i limiti di quota ed eseguire uno script che invii una mail all'utente quando la quota dell'utente supera un limite specificato. Per fare ciò, apri il
conf.d/90-quota.conf
e modificalo come segue:
plugin { quota = dict:User quota::proxy::sqlquota quota_rule = *:storage=5GB quota_rule2 = Trash:storage=+100M quota_grace = 10%% quota_exceeded_message = Quota exceeded, please contact your system administrator. quota_warning = storage=100%% quota-warning 100 %u quota_warning2 = storage=95%% quota-warning 95 %u quota_warning3 = storage=90%% quota-warning 90 %u quota_warning4 = storage=85%% quota-warning 85 %u } service quota-warning { executable = script /usr/local/bin/quota-warning.sh user = vmail unix_listener quota-warning { group = vmail mode = 0660 user = vmail } } dict { sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext }
Dobbiamo anche dire a dovecot come accedere al dizionario SQL delle quote. Apri il file
dovecot-dict-sql.conf.ext
e modifica le seguenti righe:
… connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=P4ssvv0rD… map { pattern = priv/quota/storage table = quota2 username_field = username value_field = bytes } map { pattern = priv/quota/messages table = quota2 username_field = username value_field = messages }… # map { # pattern = shared/expire/$user/$mailbox # table = expires # value_field = expire_stamp # # fields { # username = $user # mailbox = $mailbox # } # }…
Assicurati di utilizzare le credenziali MySQL corrette (dbname, user e password).
Crea il seguente script shell che invierà un'email all'utente se la sua quota supera un limite specificato:
/usr/local/bin/quota-warning.sh
#!/bin/sh PERCENT=$1 USER=$2 cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=dict:User quota::noenforcing:proxy::sqlquota" From: [email protected] Subject: Quota warning Your mailbox is now $PERCENT% full. EOF
Rendi eseguibile lo script eseguendo il seguente comando
chmod
:
sudo chmod +x /usr/local/bin/quota-warning.sh
Infine, riavvia il servizio dovecot per rendere effettive le modifiche.
sudo systemctl restart dovecot
Conclusione
Ormai dovresti avere un sistema di posta perfettamente funzionante. Nella prossima parte di questa serie, ti mostreremo come installare e integrare Rspamd.
mail server postfix dovecotQuesto post fa parte dell'installazione e della configurazione di una serie di server di posta.
Altri post di questa serie:
• Installa un server di posta con PostfixAdmin • Installa e configura Postfix e Dovecot • Installa e integra Rspamd • Installa e configura Roundcube WebmailConfigura e configura AVG Antivirus gratuito per attività aggiuntive

AVG Antivirus Free per Windows 10 / 8.1 può essere utilizzato per configurare varie attività aggiuntive e
Configura e configura Outlook in modo che funzioni con un account email in lingua indiana

Scopri come configurare e configurare Outlook in modo che lavora con le lingue indiane. I passaggi riguardano la configurazione del tuo account di posta elettronica usando la consueta configurazione IMAP.
Installa e configura la webmail roundcube

Roundcube è un client di posta elettronica IMAP basato sul web con un'interfaccia utente molto intuitiva e moderna scritta in PHP. Questa esercitazione illustra i passaggi necessari per installare e configurare Roundcube Webmail.