Recherche de site Web

Comment configurer Postfix et Dovecot avec des utilisateurs de domaine virtuel sous Linux - Partie 2


Dans l'article précédent de cette série, nous avons expliqué comment configurer et gérer la base de données du serveur de messagerie en toute sécurité à l'aide de phpMyAdmin.

Exigence:

  1. Installer Postfix Mail Server et Dovecot avec MariaDB – Partie 1

Il est maintenant temps de configurer les programmes internes qui feront de l'envoi et de la réception d'e-mails une réalité : Postfix et Dovecot (pour gérer respectivement les e-mails sortants et entrants).

Configuration du serveur de messagerie Postfix

Avant de commencer à configurer Postfix, il serait utile de jeter un œil à ses pages de manuel ici, en mettant un accent particulier sur la section intitulée « Informations pour les nouveaux utilisateurs de Postfix ». . Si vous le faites, il vous sera plus facile de suivre ce didacticiel.

En quelques mots, sachez qu'il existe deux fichiers de configuration pour Postfix :

  1. /etc/postfix/main.cf (Paramètres de configuration de Postfix, reportez-vous à man 5 postconf pour plus de détails).
  2. /etc/postfix/master.cf (configuration du démon maître Postfix, voir man 5 master pour plus de détails).

Dans /etc/postfix/main.cf, localisez (ou ajoutez, si nécessaire) les lignes suivantes et assurez-vous qu'elles correspondent aux valeurs indiquées ci-dessous :


append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
dovecot_destination_recipient_limit = 1
message_size_limit = 4194304
readme_directory = no
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (CentOS)
smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
virtual_transport = dovecot
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

Les trois paramètres suivants revêtent une importance particulière. Dans les fichiers indiqués en jaune, nous allons configurer l'accès de Postfix aux tables Domains_tbl, Users_tbl et Alias_tbl :


virtual_mailbox_domains = mysql:/etc/postfix/mariadb-vdomains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mariadb-vusers.cf
virtual_alias_maps = mysql:/etc/postfix/mariadb-valias.cf

Notez que vous pouvez choisir différents noms de fichiers ci-dessus, à condition de vous assurer de les créer et d'y insérer le contenu suivant. Dans chaque cas, remplacez YourPassword par le mot de passe que vous avez choisi pour l'utilisateur dba dans la Partie 1, ou vous pouvez également utiliser MariaDB informations d'identification root pour l'utilisateur et le mot de passe ci-dessous.

Assurez-vous également d'utiliser exactement les mêmes noms de base de données et de tables du serveur de messagerie créés dans la Partie 1.

Dans /etc/postfix/mariadb-vdomains.cf :


user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT 1 FROM Domains_tbl WHERE DomainName='%s'

Dans /etc/postfix/mariadb-vusers.cf :


user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT 1 FROM Users_tbl WHERE Email='%s'

Dans /etc/postfix/mariadb-valias.cf :


user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT Destination FROM Alias_tbl WHERE Source='%s'

Enfin, n'oubliez pas de modifier les autorisations sur ces fichiers en 640 :


chmod 640 /etc/postfix/mariadb-vdomains.cf
chmod 640 /etc/postfix/mariadb-vusers.cf
chmod 640 /etc/postfix/mariadb-valias.cf

Et la propriété de l'utilisateur root et du groupe postfix :


chown root:postfix /etc/postfix/mariadb-vdomains.cf
chown root:postfix /etc/postfix/mariadb-vusers.cf
chown root:postfix /etc/postfix/mariadb-valias.cf

Ensuite, pour activer les connexions sécurisées, nous devons nous assurer que les paramètres suivants ne sont pas commentés (ou ajoutés, si nécessaire) dans /etc/postfix/master.cf :


submission inet n       -       n       -       -       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_recipient_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
pickup    unix  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp

showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
#virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache

Remarque : L'indentation dans les lignes commençant par l'option -o est critique ; sinon, la vérification postfix renverra une erreur :

Avant d'enregistrer les modifications, ajoutez les lignes suivantes au bas du fichier :


dovecot   unix  -       n       n       -       -       pipe
    flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}

À ce stade, il est essentiel de vérifier si Postfix a accès aux tables de la base de données et aux domaines, comptes et alias que nous avons créés dans la Partie 1.

Pour ce faire, nous utiliserons la commande postmap, un utilitaire permettant de tester la communication avec les tables que Postfix recherchera pendant le fonctionnement, mais avant tout, nous devrons redémarrer Postfix :


systemctl postfix restart
postmap -q linuxnewz.com mysql:/etc/postfix/mariadb-vdomains.cf
postmap -q someotherdomain.com mysql:/etc/postfix/mariadb-vdomains.cf
postmap -q [email  mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email  mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email  mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email  mysql:/etc/postfix/mariadb-valias.cf

Dans l'image ci-dessous, nous pouvons voir que pour les enregistrements existants dans la base de données, un 1 est renvoyé. Sinon, rien ne s'affiche à l'écran. Dans le cas de la vérification de l'alias, notez que le compte de messagerie réel auquel l'alias est mappé est renvoyé :

Notez que nous ne nous authentifions PAS par rapport aux informations d'identification définies pour chaque compte de messagerie, nous testons uniquement la capacité de Postfix à détecter ces enregistrements dans la base de données.

Ainsi, si vous obtenez un résultat différent de celui ci-dessus, assurez-vous que vous utilisez une paire utilisateur/mot de passe valide dans mariadb-vdomains.cf, mariadb-vusers.cf et mariadb-valias.cf (ou quel que soit le nom que vous avez choisi pour appeler ces fichiers).

Configuration du pigeonnier

En tant que serveur IMAP/POP3, Dovecot offre aux utilisateurs un moyen via un agent utilisateur de messagerie (MUA ou également appelé client), comme Thunderbird ou Outlook, pour ne citer que quelques exemples, pour accéder à leur courrier.

Pour commencer, créons un utilisateur et un groupe pour gérer les e-mails (nous en aurons besoin car nos comptes de messagerie ne sont pas associés à un utilisateur système). Vous pouvez utiliser un autre UID et un autre GID (autre que 5 000 comme nous le faisons ci-dessous) tant qu'ils ne sont pas utilisés et qu'il s'agit d'un nombre élevé :


groupadd -g 5000 vmail 
useradd -g vmail -u 5000 vmail -d /home/vmail -m

Les paramètres de Dovecot sont répartis sur plusieurs fichiers de configuration (assurez-vous que les lignes suivantes ne sont pas commentées et/ou modifiez-les pour qu'elles correspondent aux paramètres indiqués ci-dessous).

Dans /etc/dovecot/dovecot.conf :


!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap pop3 lmtp
!include conf.d/*.conf
!include_try local.conf

Dans /etc/dovecot/conf.d/10-auth.conf (activez uniquement l'authentification via SQL et laissez les autres méthodes d'authentification commentées) :


disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-sql.conf.ext

Dans /etc/dovecot/conf.d/auth-sql.conf.ext (notez que nous stockerons les e-mails dans un répertoire nommé votredomaine.com à l'intérieur de / home/vmail, que vous devez créer s'il n'existe pas. Dans notre cas, nous avons fait mkdir /home/vmail/linuxnewz.com pour gérer les e-mails de ce domaine) :


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

Des boîtes de réception individuelles pour les comptes d'utilisateurs seront créées lors de la première réception des e-mails pour ces comptes.

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


mail_location = maildir:/home/vmail/%d/%n/Maildir
namespace inbox {
  inbox = yes
}
mail_privileged_group = mail
mbox_write_locks = fcntl

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


service imap-login {
  inet_listener imap {
    port = 143
  }
  inet_listener imaps {
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 110
  }
  inet_listener pop3s {
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
   mode = 0600
   user = postfix
   group = postfix
  }
}
service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
  unix_listener auth-userdb {
   mode = 0600
   user = vmail
  }
  user = dovecot
}
service auth-worker {
  user = vmail
}
service dict {
  unix_listener dict {
  }
}

Dans /etc/dovecot/conf.d/10-ssl.conf (remplacez le certificat et les chemins de clé si vous prévoyez d'utiliser un certificat signé par une autorité de certification) :


ssl = required
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem

Dans /etc/dovecot/dovecot-sql.conf.ext, entrez les informations de votre base de données et les informations d'identification de l'utilisateur administratif créé dans la Partie 1.

Important : si votre mot de passe contient un astérisque (#), vous devrez entourer la chaîne de connexion comme indiqué dans l'exemple ci-dessous :


driver = mysql
connect = "host=127.0.0.1 dbname=EmailServer_db user=dba password=PassWith#Here"
default_pass_scheme = SHA512-CRYPT
password_query = SELECT Email as User, password FROM Users_tbl WHERE Email='%u';

De plus, vous pouvez configurer la journalisation pour Dovecot pour qu'elle soit distincte de Postfix dans /etc/dovecot/conf.d/10-logging.conf :


log_path = /var/log/dovecot.log

Enfin, assurez-vous que le journal Dovecot est accessible à l'utilisateur dovecot :


chown vmail:dovecot /var/log/dovecot.log
chmod 660 /var/log/dovecot.log

Vérifiez et corrigez la configuration de Postifix et activez SMTP, POP3 et IMAP dans le pare-feu

Si vous rencontrez des problèmes lors de la configuration de Postfix et/ou Dovecot, au lieu de soumettre tous les fichiers de configuration pour demander de l'aide, vous pouvez obtenir un résumé de la configuration (lignes non commentées uniquement) avec :


postconf –n # Summary for /etc/postfix/main.cf
postconf –M # Summary for /etc/postfix/master.cf
doveconf –n # Summary of all configuration files for Dovecot

De plus, assurez-vous que les boîtes de réception des e-mails sont lisibles uniquement par vmail :


chown –R vmail:vmail /home/vmail

Les fichiers de configuration doivent également être lisibles par les utilisateurs vmail et dovecot :


chown -R vmail:dovecot /etc/dovecot 
chmod -R o-rwx /etc/dovecot 

Enfin, assurez-vous d'activer SMTP, POP3 et IMAP via le pare-feu :


firewall-cmd --add-port=143/tcp
firewall-cmd --add-port=143/tcp --permanent
firewall-cmd --add-port=110/tcp
firewall-cmd --add-port=110/tcp --permanent
firewall-cmd --add-port=587/tcp
firewall-cmd --add-port=587/tcp --permanent

Configurer Thunderbird comme client de messagerie pour Postfix

Après avoir sécurisé l’accès via le pare-feu aux ports utilisés dans les communications par courrier électronique, il est temps de configurer un client de messagerie. En utilisant [email  et son mot de passe correspondant, ainsi que mail.linuxnewz.com comme serveur IMAP (ou POP3) et SMTP, nous sommes prêts à commencer à envoyer et à recevoir des e-mails. et à partir de ce compte :

Vous pouvez ignorer en toute sécurité le message d'avertissement qui s'affiche, car vous utilisez un certificat qui n'est pas signé par une autorité de certification tierce de confiance :

Composons un bref e-mail de test et cliquez sur Envoyer :

Lorsque vous êtes invité à accepter le certificat auto-signé pour le serveur sortant, confirmez-le comme auparavant :

Enfin, accédez à l'e-mail de destination pour voir si vous avez reçu l'e-mail qui vient d'être envoyé. Si tel est le cas, répondez-y et voyez s'il est renvoyé dans la boîte de réception source (sinon, reportez-vous au journal Postfix à l'adresse /var/log/maillog ou au journal Dovecot à l'adresse /var /log/dovecot.log pour les informations de dépannage) :

Vous disposez désormais d'un serveur de messagerie Postfix et Dovecot fonctionnel et pouvez commencer à envoyer et à recevoir des e-mails.

Résumé

Dans cet article, nous avons expliqué comment configurer Postfix et Dovecot pour gérer le trafic de messagerie sur votre serveur Linux. Si quelque chose ne fonctionne pas comme indiqué dans cet article, assurez-vous de prendre le temps de consulter la documentation de Postfix et Dovecot.

Veuillez noter que même si la configuration d'un serveur de messagerie Postfix n'est pas une tâche facile, c'est une expérience enrichissante pour tout administrateur système.

Si après avoir parcouru la documentation, vous avez toujours des difficultés avec Postfix et/ou Dovecot, n'hésitez pas à nous envoyer une note en utilisant le formulaire de commentaires ci-dessous et nous serons heureux de vous répondre. vous aider (n'oubliez pas de télécharger sur un service de stockage en ligne la configuration de Postfix et Dovecot telle que récupérée à l'aide de postconf et doveconf comme indiqué dans cet article).