Android

Installer et configurer postfix et pigeonnier

Installation et configuration de DNS DHCP DOVECOT POSTFIX ET ROUNDCUBE webmail

Installation et configuration de DNS DHCP DOVECOT POSTFIX ET ROUNDCUBE webmail

Table des matières:

Anonim

Ceci est le deuxième article de notre série Installer et configurer une série de serveurs de messagerie. Dans cet article, nous vous montrerons comment installer et configurer Postfix et Dovecot, les deux principaux composants de notre système de messagerie.

Postfix est un agent de transfert de courrier (MTA) open source, un service utilisé pour envoyer et recevoir des e-mails. Dovecot est un serveur IMAP / POP3 et dans notre configuration, il gérera également la livraison locale et l'authentification des utilisateurs.

Ce tutoriel a été écrit pour Ubuntu 16.04, cependant les mêmes étapes avec de petites modifications devraient fonctionner sur toute version plus récente d'Ubuntu.

Conditions préalables

Avant de poursuivre ce didacticiel, assurez-vous que vous êtes connecté en tant qu'utilisateur avec les privilèges sudo.

Installer Postfix et Dovecot

Les packages Dovecot dans les référentiels par défaut d'Ubuntu sont obsolètes. Afin de tirer parti du module imap_sieve nous installerons Dovecot à partir du référentiel communautaire Dovecot.

Ajoutez la clé GPG du référentiel à votre trousseau de clés sources apt avec la commande wget suivante:

wget -O- https://repo.dovecot.org/DOVECOT-REPO-GPG | sudo apt-key add -

Activez le référentiel de communauté Dovecot à l'aide de la commande suivante:

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

Configuration de Postfix

Nous allons configurer Postfix pour utiliser des boîtes aux lettres et des domaines virtuels.

Commencez par créer les fichiers de configuration sql qui indiqueront à postfix comment accéder à la base de données MySQL, créée dans la première partie de cette série.

sudo mkdir -p /etc/postfix/sql

Ouvrez votre éditeur de texte et créez les fichiers suivants:

/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'

Une fois les fichiers de configuration SQL créés, mettez à jour le fichier de configuration principal de postfix pour inclure des informations sur les domaines virtuels, les utilisateurs et les alias qui sont stockés dans la base de données 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_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf" La commande postconf affiche les valeurs réelles des paramètres de configuration, modifie les valeurs des paramètres de configuration ou affiche d'autres informations de configuration sur le système de messagerie Postfix.

L'agent de livraison local remettra les e-mails entrants dans les boîtes aux lettres des utilisateurs. Exécutez la commande suivante pour définir le service LMTP de Dovecot comme transport de remise de courrier par défaut:

sudo postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"

Définissez les paramètres TL à l'aide du certificat SSL Let's encrypt précédemment généré:

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'

Configurez les paramètres SMTP authentifiés et transférez l'authentification à 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'

Nous devrons également éditer le fichier de configuration maître Postfix master.cf et activer le port de soumission ( 587 ) et le port smtps ( 465 ).

Ouvrez le fichier avec votre éditeur de texte et décommentez / modifiez les lignes suivantes:

/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

Redémarrez le service postfix pour que les modifications prennent effet.

sudo systemctl restart postfix

À ce stade, vous avez correctement configuré le service Postfix.

Configurer Dovecot

Dans cette section, nous allons configurer Dovecot pour correspondre à notre configuration. Assurez-vous de modifier les lignes surlignées en jaune.

Commencez par configurer le fichier dovecot-sql.conf.ext qui indique à Dovecot comment accéder à la base de données et comment trouver les informations sur les comptes de messagerie.

/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'

N'oubliez pas d'utiliser les informations d'identification MySQL correctes (dbname, utilisateur et mot de passe).

Ensuite, modifiez le conf.d/10-mail.conf et modifiez les variables suivantes:

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

Pour que l'authentification fonctionne, ouvrez le conf.d/10-auth.conf , modifiez les lignes suivantes et incluez le fichier 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…

Ouvrez le conf.d/10-master.conf et modifiez-le comme suit:

/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 } }…

Ouvrez le conf.d/10-ssl.conf et activez 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.

Ouvrez le conf.d/20-imap.conf et activez le plugin imap_quota :

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

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

Ouvrez le conf.d/20-lmtp.conf et modifiez-le comme suit:

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

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

Définissez les boîtes aux lettres par défaut dans le 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 }…

Il existe deux types différents de tailles de quota, l'un est défini pour l'ensemble du domaine et l'autre par boîte aux lettres d'utilisateur. Dans la partie précédente de cette série, nous avons déjà activé la prise en charge des quotas dans PostfixAdmin, ce qui signifie que les informations sur les quotas seront stockées dans la base de données PostfixAdmin.

Nous devons maintenant configurer Dovecot pour se connecter à la base de données, pour gérer les limites de quota et pour exécuter un script qui envoie un courrier à l'utilisateur lorsque le quota de l'utilisateur dépasse une limite spécifiée. Pour ce faire, ouvrez le conf.d/90-quota.conf et modifiez-le comme suit:

/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 }

Nous devons également indiquer à dovecot comment accéder au dictionnaire SQL des quotas. Ouvrez le fichier dovecot-dict-sql.conf.ext et modifiez les lignes suivantes:

/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 # } # }… Assurez-vous d'utiliser les informations d'identification MySQL correctes (nom de base de données, utilisateur et mot de passe).

Créez le script shell suivant qui enverra un e-mail à l'utilisateur si son quota dépasse une limite spécifiée:

/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

Rendez le script exécutable en exécutant la commande chmod suivante:

sudo chmod +x /usr/local/bin/quota-warning.sh

Enfin, redémarrez le service pigeonnier pour que les modifications prennent effet.

sudo systemctl restart dovecot

Conclusion

Vous devriez maintenant avoir un système de messagerie entièrement fonctionnel. Dans la prochaine partie de cette série, nous vous montrerons comment installer et intégrer Rspamd.

serveur de messagerie postfix pigeonnier

Ce message fait partie de la série Installation et configuration d'une serveur de messagerie.

Autres articles de cette série:

• Configurer un serveur de messagerie avec PostfixAdmin • Installer et configurer Postfix et Dovecot • Installer et intégrer Rspamd • Installer et configurer Roundcube Webmail