androide

Installa e configura Postfix e Dovecot

[UBUNTU] - #69 Installare e configurare il server di posta elettronica Postfix e Dovecot

[UBUNTU] - #69 Installare e configurare il server di posta elettronica Postfix e Dovecot

Sommario:

Anonim

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.

/etc/dovecot/dovecot-sql.conf.ext

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:

/etc/dovecot/conf.d/10-mail.conf

… 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 :

/etc/dovecot/conf.d/10-auth.conf

… 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:

/etc/dovecot/conf.d/10-master.conf

… 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.

/etc/dovecot/conf.d/10-ssl.conf

… 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 :

/etc/dovecot/conf.d/20-imap.conf

… protocol imap {… mail_plugins = $mail_plugins imap_quota… }…

Aprire il conf.d/20-lmtp.conf e modificarlo come segue:

/etc/dovecot/conf.d/20-lmtp.conf

… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins }…

Definire le cassette postali predefinite nel conf.d/20-lmtp.conf :

/etc/dovecot/conf.d/15-mailboxes.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:

/etc/dovecot/conf.d/90-quota.conf

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:

/etc/dovecot/dovecot-dict-sql.conf.ext

… 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 dovecot

Questo 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 Webmail