Configurer le serveur SMTP Postfix sur Ubuntu/Debian
Vous avez votre propre nom de domaine et votre propre serveur vps/dédié et souhaitez utiliser le nom de domaine pour les e-mails. Vous devez donc configurer un serveur de messagerie en utilisant un serveur smtp et un serveur imap/pop.
Ce tutoriel vous montre comment configurer Postfix (serveur smtp) et Dovecot (serveur imap/pop). La tâche du serveur smtp est d'accepter les e-mails entrants et de relayer les e-mails sortants des utilisateurs autorisés sur le système.
Alors que Dovecot permet aux utilisateurs autorisés d'accéder à leur boîte de réception et de lire tous les e-mails qui s'y trouvent.
La configuration simple - Nous ne faisons pas cela
Dans le type de configuration le plus simple pour Postfix, spécifiez simplement votre nom de domaine "xyz.com" dans le paramètre de configuration "mydestination", vous pourrez alors recevoir des e-mails par [email protected] s'il existe un utilisateur (linux) nommé silver sur le système.
Cette technique est simple mais avec de lourds inconvénients. Tout d'abord, vous devez créer un nouveau compte utilisateur Unix pour chaque nouvelle adresse e-mail dont nous avons besoin.
Deuxièmement, les utilisateurs doivent se connecter avec leurs mots de passe système. Ce n'est donc pas une stratégie très flexible pour configurer des comptes de messagerie.
Séparément, vous pouvez configurer Dovecot pour lire les mails entrants depuis le répertoire où Postfix les stocke (/var/mail par défaut). Il y a un article sur DigitalOcean qui montre comment configurer postfix avec dovecot comme ça.
Nous allons configurer les choses de manière à ce que vous puissiez créer rapidement des adresses e-mail simplement en les écrivant dans un fichier avec le mot de passe.
Nous ajouterons autant de domaines que nous le voudrons et créerons autant d'e-mails et tout sera crypté et authentifié.
Since the email accounts we shall be creating are not related to any system users or system domains, they are called "virtual users" and "virtual domains". Virtual means, that not related to any system specific thing.
Comment cela fonctionnera-t-il ? - Le jargon technique
1. Tous les e-mails entrants destinés à votre serveur seront reçus par Postfix (SMTP) puis remis à Dovecot (LMTP) pour être stockés dans la boîte de réception.
C'est mieux car le service lmtp intégré de dovecot offre plus de fonctionnalités telles que les quotas, les autorisations, les structures de répertoires flexibles pour les boîtes aux lettres, etc.
Incoming mail (From somewhere) -> Postfix (SMTP) -> Dovecot (LMTP) -> MailBox/Inbox
And due to this Postfix is reduced to just a "tranmission agent" that just moves mails in and out, and nothing else.
2. Tous les courriers sortants seront envoyés par Postfix. Mais uniquement à partir de comptes authentifiés.
Outgoing mail (Thunderbird) -> Postfix (SMTP) -> Destination (SMTP) like gmail
3. Dovecot fournira des services IMAP/POP pour permettre aux clients de messagerie de lire la boîte de réception.
Thunderbird <==> Dovecot (IMAP) <==> Inbox
4. Dovecot fournira exclusivement un mécanisme d'authentification à Postfix via SASL.
Les comptes de messagerie - nom d'utilisateur + mots de passe seront stockés dans un fichier.
Si vous souhaitez configurer des domaines et des comptes de messagerie dans une base de données (au lieu d'un fichier), suivez ce tutoriel sur linode.com
Configurer les enregistrements MX pour le domaine
Avant d'aller plus loin, assurez-vous que les enregistrements MX de vos domaines que vous allez utiliser avec votre serveur de messagerie sont correctement définis. La plupart des fournisseurs de serveurs comme Linode fournissent une interface simple pour configurer les entrées de zone pour les enregistrements mx.
Si votre domaine est example.com, votre mx pourrait être mail.example.com par exemple. Utilisez la commande dig pour vérifier -
# Find the MX (mail exchange) server $ dig MX amazon.com +short 5 amazon-smtp.amazon.com. # Find the ip address of the mx server $ dig amazon-smtp.amazon.com +short 207.171.184.25
Assurez-vous que l'adresse IP de votre MX (serveur de messagerie) est celle du serveur sur lequel vous allez configurer postfix et dovecot.
Configuration du serveur de messagerie Postfix dans Ubuntu étape par étape
La première chose à configurer est Postfix. N'oubliez pas que dans notre configuration, Postfix va transmettre tous les e-mails sortants, mais pour tous les e-mails entrants, il les transmettra à Dovecot pour stockage et accès ultérieur par les clients de messagerie.
Ce qu'il faut savoir en premier
1. Postfix journalise toutes ses actions dans un fichier nommé /var/log/mail.log. Consultez-le pour obtenir des informations utiles et gagner du temps en diagnostiquant les problèmes.
2. La commande postconf est l'outil pour jeter un coup d'œil à l'intérieur des configurations de Postfix. Il répertorie tout dans un format nom=valeur ligne par ligne. Utilisez donc la commande grep pour trouver tout ce dont vous avez besoin.
3. Tous les paramètres de configuration de Postfix se trouvent dans le fichier /etc/postfix/main.cf
Les paramètres sont expliqués dans les pages de manuel trouvées à - "man 5 postconf"
Installer et configurer Postfix
D'accord, donc si vous ne l'avez pas déjà fait, installez Postfix. C'est juste là dans les dépôts donc vous ne devriez pas chercher ailleurs à moins que vous ne vouliez quelque chose de plus récent.
$ sudo aptitude install postfix
Ne vous inquiétez pas, le reste ne sera pas si facile. Après avoir installé Postfix, vous voudrez peut-être vérifier la version. Voici la commande pour le faire.
$ postconf mail_version mail_version = 2.10.2 $ postconf | grep mail_version mail_version = 2.10.2
Configurer main.cf
Dans cette section, nous configurerons plusieurs éléments dans le fichier de configuration principal de Postfix situé dans /etc/postfix/main.cf .
Ceux-ci incluent les noms d'hôte, les paramètres d'authentification SASL, les sockets unix pour le service d'authentification dovecot lmtp et dovecot sasl et la liste de nos virtual_mailbox_domains pour lesquels Postfix sera responsable de la réception des e-mails entrants.
Les paramètres délicats !!!
Les paramètres suivants sont les 3 paramètres super déroutants que vous devez comprendre et configurer correctement pour éviter les problèmes inattendus.
myhostname mydomain myorigin
Vous pouvez héberger plusieurs domaines sur votre serveur, par exemple abc.com + efg.com + xyz.com. Vous devez utiliser l'un d'eux comme domaine principal et l'utiliser pour "myorigin". Le champ myorigin est celui qui est configuré automatiquement lors de l'installation de postfix et vous demande le domaine du serveur.
Par défaut, myorigin est configuré pour pointer vers /etc/mailname afin que vous puissiez soit renseigner votre domaine par défaut dans /etc/mailname, soit le spécifier directement dans le fichier de configuration.
The domain specified with myorigin is used for mails generated by Postfix. For example when it fails to deliver a mail, it would reply with a from address of "Mail Delivery System<[email protected]>".
Le paramètre myhostname est censé contenir le "nom du serveur de messagerie" tel qu'indiqué par votre enregistrement mx. C'est le nom que Postfix utilise dans la communication smtp pour s'identifier. Par exemple "HELO myhostname".
If you set myhostname to a certain domain, then you should be able to setup the SPF records for that domain later. This is dictated by the SPF specifications.
Vous pourriez aussi bien laisser myhostname à "localhost" et les choses fonctionneraient toujours très bien. Cependant, dans ce cas, votre serveur utiliserait un message comme "HELO localhost" lors de la connexion à d'autres serveurs de messagerie comme gmail, et gmail rejetterait avec colère le courrier l'appelant non sollicité.
Par conséquent, il est recommandé de configurer myhostname sur un nom de domaine approprié avec des enregistrements A et TXT (SPF) valides. Assurez-vous également de définir myorigin.
Exemple de configuration -
myhostname = mail.yoursite.com myorigin = yoursite.com
Techniquement, sur un seul serveur, vous pouvez utiliser la même valeur de myorigin pour myhostname. Cependant, dans diverses configurations impliquant plusieurs serveurs distincts, les valeurs de ces champs doivent être configurées avec plus de soin.
Pour en savoir plus, lisez le guide de configuration de base de Postfix.
Le paramètre virtual_transport indique à postfix de transférer/transporter les e-mails vers dovecot pour les domaines répertoriés dans "virtual_mailbox_domains".
Le chemin "private/dovecot-lmtp" est relatif à "/var/spool/postfix/". Le socket unix réel doit être configuré plus tard dans la section de configuration de Dovecot.
Ici, nous définissons les paramètres pour configurer l'authentification basée sur SASL pour Postfix. Postfix est capable de communiquer en interne avec le "service SASL de Dovecot" via un socket unix.
Pour vérifier les différents plugins smtpd_sasl_type pris en charge par votre installation de Postfix, exécutez la commande suivante.
Ici, nous spécifions les domaines pour lesquels Postfix doit "accepter" les mails entrants. Alors spécifiez tous vos domaines internes ici. Nous allons mettre les domaines dans un fichier nommé virtual_mailbox_domains.
Entrez les domaines, un sur une ligne
Ensuite, exécutez postmap sur le fichier. Cela créera un fichier nommé virtual_mailbox_domains.db qui sera utilisé par Postfix
La table virtual_mailbox_maps peut être utilisée pour spécifier des adresses e-mail valides pour les domaines répertoriés dans virtual_mailbox_domains.
En plus du service smtp sur le port 25, nous devons activer plus de services. SMTPS fonctionnera sur le port 465 et MSA (Mail Submission Agent) fonctionnera sur le port 587. SMTP utilise le type d'authentification SSL/TLS et MSA utilise STARTTLS.
Trouvez la section "submission" et "smtps" dans le fichier nommé /etc/postfix/master.cf et décommentez les premières lignes. OUI UNIQUEMENT LA PREMIÈRE LIGNE
La ligne "submission" active le service MSA sur le port 587 et "smtps" démarre le service SMTP compatible SSL sur le port 465.
Vous pouvez activer uniquement le service de soumission, car SMTPS est désormais obsolète et maintenu uniquement pour la compatibilité avec les applications Microsoft qui ne prennent pas en charge STARTTLS.
Port 25 - est pour MTA (Mail transmission Agent). Le service MTA permet à d'autres MTA et MSA de se connecter et de livrer des e-mails.
Port 465/587 - est pour MSA (agent de soumission de courrier). Le service MSA est destiné aux MUA (agents utilisateurs de messagerie tels que Thunderbird) pour se connecter et déposer des e-mails en vue de leur livraison.
Nous avons fini de configurer Postfix. Maintenant, redémarrez simplement.
Nous avons terminé l'installation et la configuration de Postfix. Ce qui reste est Dovecot, le serveur IMAP/POP. Mais Dovecot fait bien plus que cela, comme nous allons le voir maintenant.
1. Dovecot disposera d'un emplacement pour stocker les courriers entrants remis par Postfix.
2. Un compte d'utilisateur système distinct doit être créé et attribué à dovecot afin que dovecot puisse lire/écrire dans le répertoire de stockage du courrier. Dans notre exemple l'utilisateur s'appelle "vmail".
3. Dovecot doit héberger des services IMAP et POP sécurisés pour permettre aux clients de messagerie de lire la boîte de réception.
4. Dovecot fournira le service d'authentification SASL à Postfix via un socket unix. Le même nom d'utilisateur/mot de passe doit fonctionner avec Postfix (serveur SMTP) et Dovecot (serveur IMAP/POP)
5. Nous utiliserons l'adresse e-mail complète ([email protected]) comme nom d'utilisateur et définirons également un mot de passe crypté.
Installez d'abord dovecot et quelques packages nécessaires. Installez le package principal de dovecot et les packages pour la prise en charge d'imap, pop et lmtp.
Vérifier la version
Il est maintenant temps de configurer Dovecot pour configurer les comptes d'utilisateurs et également les sockets SASL pour permettre à Postfix de faire des authentifications. Tous les fichiers de configuration se trouvent dans /etc/dovecot/conf.d/ répertoire.
Vérifiez le /etc/dovecot/dovecot.conf fichier et assurez-vous que le fichier de protocoles est inclus. Il inclut les fichiers de configuration des différents protocoles qui les activent.
Les protocoles installés peuvent être listés comme ceci
Nous disons à dovecot de stocker les e-mails dans le répertoire /var/mail/vhosts et de les mettre en outre dans des sous-répertoires pour chaque domaine et l'utilisateur sous ce domaine.
Editez le fichier 10-mail.conf
Créez le répertoire /var/mail/vhosts
Créez maintenant à l'intérieur de ce répertoire, créez un répertoire pour chaque domaine sur lequel vous souhaitez recevoir du courrier sur ce serveur.
Créez maintenant un utilisateur avec le nom et le groupe de vmail et l'uid et le gid de 5000. Bien que l'uid puisse être n'importe quel nombre, nous choisissons 5000 pour indiquer qu'il ne s'agit pas d'un utilisateur ordinaire. L'option "-r" précise en outre que cet utilisateur est un utilisateur de niveau système et n'a pas de connexion.
Donnez à vmail tous les privilèges pour lire/écrire sur /var/mail/vhosts
Dites maintenant à dovecot de démarrer les services imaps et pops. Modifiez le fichier 10-master.conf et activez les ports pour les services et spécifiez ssl sur yes.
Laissez les ports pour imap et pop commentés car nous ne voulons pas héberger de services non sécurisés.
Pour IMAPS - IMAP sécurisé
Pour POP3S - POP3 sécurisé
La page wiki dovecot sur LMTP montre un exemple simple de configuration du socket lmtp dans /etc/dovecot/conf.d/10-master.conf fichier.
Trouvez la section nommée "service lmtp" et renseignez le chemin d'accès au fichier où le socket unix serait créé. Ce même chemin est utilisé par postfix pour le paramètre "virtual_transport".
Le socket doit avoir les privilèges de user:group postfix pour que le processus Postfix puisse l'utiliser.
Trouvez la section "service auth" et à l'intérieur, ajoutez ce qui suit. S'il est déjà là, modifiez-le simplement.
Ouvrez le fichier conf.d/10-auth.conf et décommentez la ligne disable_plaintext_auth en vous assurant qu'elle est définie sur yes. Cela garantit que le chiffrement TLS/SSL est toujours utilisé à des fins d'authentification.
Recherchez le paramètre nommé auth_mechanism et décommentez-le. Ce paramètre spécifie le format dans lequel le mot de passe serait fourni à dovecot.
Spécifier les fichiers d'authentification
La dernière chose à configurer dans le fichier 10-auth.conf est la base de données de mots de passe. Par défaut, dovecot est configuré pour s'authentifier à l'aide des "utilisateurs du système" (utilisateurs Linux de /etc/passwd).
Nous allons lui dire de s'authentifier à l'aide d'un fichier séparé contenant les noms d'utilisateur et les mots de passe
Recherchez et commentez la ligne auth-system.conf.ext et décommentez la ligne auth-passwdfile. Cela devrait ressembler à ceci
Modifiez ensuite le fichier auth-passwdfile.conf.ext
Faites en sorte qu'il ressemble à ceci.
La section passdb indique à dovecot où chercher le nom d'utilisateur et les mots de passe pour s'authentifier. Le fichier est /etc/dovecot/dovecot-users.
Le username_format "%u" indique que l'intégralité de l'adresse e-mail sera utilisée comme nom d'utilisateur. Cela signifie que lorsque vous vous connectez à partir d'un client de messagerie, vous utiliserez l'adresse e-mail comme nom d'utilisateur pour smtp et imap/pop.
Le nom d'utilisateur et les mots de passe sont stockés dans un fichier nommé /etc/dovecot/dovecot-users que nous créerons à l'étape suivante
La section userdb indique à dovecot où lire/écrire les mails pour un utilisateur donné. Nous utilisons une structure de répertoire fixe /var/mail/vhosts/%d/%n
Ainsi, les e-mails pour l'utilisateur [email protected] seraient lus à partir du répertoire suivant -
Créez un fichier texte simple dans /etc/dovecot/ et remplissez-le avec le nom d'utilisateur et les mots de passe au format utilisateur :mot de passe. Voici un exemple
Générez des mots de passe à l'aide de la commande doveadm comme celle-ci. Le hachage du mot de passe renvoyé par la commande ci-dessus doit être copié tel quel dans le fichier dovecot-users.
Le fichier de mots de passe peut également contenir des informations sur le répertoire et les autorisations de la boîte aux lettres d'un utilisateur individuel. Consultez l'article du wiki sur le format passwdfile.
Ouvrez le fichier /etc/dovecot/conf.d/10-ssl.conf et décommentez la ligne ssl et définissez-la sur required
Assurez-vous également que ssl_cert et ssl_key pointent vers les fichiers appropriés (c'est par défaut)
Configurer la rotation du journal
Si nous modifions les fichiers journaux de Dovecot, il est nécessaire de configurer logrotate pour garantir que les fichiers journaux sont créés en plusieurs parties au lieu d'un seul gros fichier.
Et remplissez ce qui suit
Pour plus d'informations, consultez la page wiki de dovecot sur la journalisation.
Bon travail. Toutes les configurations effectuées. Maintenant, redémarrez le pigeonnier
Maintenant que vous avez fini de tout configurer, il est temps de tester. Utilisez un client de messagerie comme Thunderbird et configurez les connexions SMTP et IMAP.
Ensuite, essayez d'envoyer un e-mail à un autre compte comme un gmail. Si vous recevez le courrier sur gmail, essayez de répondre. Si le courrier apparaît dans votre client de messagerie, vous avez terminé. Félicitations !
Vérification des ports ouverts avec netstat
Utilisez la commande netstat pour vérifier que les services sont opérationnels
Dans la sortie ci-dessus, nous pouvons voir que dovecot contient les ports 993, 995, 110 et 143
1. mail.log vide
Sur les serveurs Ubuntu, le fichier /var/log/mail.log peut être totalement vide. Cela se produit en raison de problèmes d'autorisation et peut être résolu avec les commandes suivantes
Le propriétaire correct du fichier doit être syslog. Définissez l'autorisation de propriété correcte avec les commandes suivantes -
Maintenant, le fichier mail.log devrait être rempli avec les messages corrects pour suivre ce qui se passe avec le serveur Postfix.
2. Accès relais refusé
Lors de l'envoi de mails, si le journal postfix (/var/log/mail.log) affiche un tel message d'erreur -
Assurez-vous que le champ smtpd_relay_restrictions (/etc/postfix/main.cf) contient "permit_sasl_authenticated" afin que les utilisateurs authentifiés via SASL soient autorisés à envoyer des e-mails en utilisant postfix comme serveur smtp.
3. Erreur lors de la réception du courrier
Si les journaux du colombier affichent un tel message d'erreur lors de la réception des e-mails -
Modifiez simplement /etc/dovecot/conf.d/15-lda.conf et ajoutez une valeur pour postmaster_address
Essayez d'envoyer un e-mail à une adresse gmail via un client de messagerie comme Thunderbird et via le serveur smtp postfix, et le courrier atterrirait dans le dossier spam de gmail, ou pourrait être entièrement rejeté.
Pour résoudre ce problème, les enregistrements SPF du domaine de l'expéditeur doivent être configurés. Si le serveur postfix envoie des e-mails avec "l'adresse de l'expéditeur" de [email protected], alors les enregistrements DNS TXT de example.com doivent contenir les informations de validation SPF pour indiquer que ceci le serveur est autorisé à envoyer des e-mails au nom de example.com
Tout ce qui doit être fait est de modifier les entrées de zone de votre serveur de noms et d'ajouter un enregistrement TXT contenant les éléments suivants
La plupart des fournisseurs de vps comme Linode fournissent une interface soignée pour modifier les paramètres DNS comme ceux-ci. Consultez le site Web du projet OpenSPF pour en savoir plus.
Vérifiez les enregistrements SPF de votre domaine avec cette simple commande -
L'exemple ci-dessus utilise un fichier pour stocker les comptes de messagerie et les mots de passe. Cela est pratique lorsque vous avez besoin de quelques comptes de messagerie sur votre serveur personnel et que vous ne les modifiez pas trop souvent.
Cependant, à grande échelle, lorsque vous fournissez des e-mails à un grand nombre d'utilisateurs et que vous créez/supprimez souvent des comptes, la méthode recommandée consiste à stocker virtual_mailbox_domains et virtual_mailbox_maps dans une base de données, puis à utiliser un client de base de données pour modifier les enregistrements rapidement et facilement.
Postfix et Dovecot supportent Mysql/MariaDB.
Consultez les ressources en bas pour des liens vers des articles utiles sur la façon de configurer Postfix et Dovecot d'autres manières à l'aide d'une base de données.
1. Vous pouvez installer un client de messagerie Web tel que Roundcube pour pouvoir vous connecter à votre serveur à partir du navigateur et lire/envoyer des e-mails.
2. Certains utilisateurs (comme moi bien sûr) préfèrent utiliser le gmail de Google comme client de messagerie en ajoutant des informations de compte smtp et pop. Google vous permettrait rapidement d'envoyer des e-mails en utilisant cette toute nouvelle configuration de serveur smtp ci-dessus.
Mais gmail ne lira pas les mails du serveur IMAP/POP créé ci-dessus, jusqu'à ce que nous utilisions un vrai certificat d'une autorité de certification (CA) dans Dovecot.
Les certificats SSL des autorités de certification coûtent de l'argent, mais vous pouvez obtenir un certificat gratuit de StartCom StartSSL PKI et l'utiliser avec Dovecot, puis gmail vous permettra de lire les e-mails de ce serveur.
3. En outre, vous devez également configurer DKIM (Domainkeys Identified Mail) pour votre domaine, afin de garantir l'authenticité des e-mails et d'être traités comme légitimes par les principaux services de messagerie tels que gmail.
Voici quelques ressources plus utiles sur la façon d'installer et de configurer Postfix et Dovecot de différentes manières pour obtenir le type exact de serveur de messagerie que vous souhaitez.
Tutoriel Linode sur la configuration de Postfix et Dovecot avec Mysql
Documentation des paramètres de configuration de Postfix à utiliser dans main.cf
Explication des différents types de domaines pris en charge et utilisés par Postfix
Détails sur la manière dont Postfix gère les différents types de domaines virtuels
Documentation complète de Postfix# Handing off local delivery to Dovecot's LMTP
virtual_transport = lmtp:unix:private/dovecot-lmtp
Configurer SASL dans main.cf
#Enabling SMTP for authenticated users, and handing off authentication to Dovecot
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_tls_auth_only = yes
# postconf -a
cyrus
dovecot
Ajouter des domaines de boîte aux lettres dans main.cf
#Virtual domains, users, and aliases
virtual_mailbox_domains = /etc/postfix/virtual_mailbox_domains
# virtual_mailbox_maps = /etc/postfix/virtual_mailbox_maps
# nano /etc/postfix/virtual_mailbox_domains
example.com OK
mysite.com OK
# postmap /etc/postfix/virtual_mailbox_domains
However this is not necessary, since the SASL authentication via Dovecot would be doing the verification.
Activer SMTPS et MSA - master.cf
...
submission inet 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_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - - - - 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=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
...
Due to historic specifications, technically port 25, 465, 587 do almost the same thing. However as things are evolving they are being redefined.
Thunderbird (MUA) -> your server smtp(MSA/MTA) -> gmail (MTA) -> Inbox
Redémarrer Postfix
$ sudo service postfix restart
Installer et configurer Dovecot
Ce qu'il faut savoir
Installer Pigeonnier
# sudo apt-get install dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd
# dovecot --version
2.1.7
Configurer Pigeonnier
# Enable installed protocols
!include_try /usr/share/dovecot/protocols.d/*.protocol
# ls -l /usr/share/dovecot/protocols.d
total 12
-rw-r--r-- 1 root root 28 Nov 30 15:44 imapd.protocol
-rw-r--r-- 1 root root 28 Nov 30 15:44 lmtpd.protocol
-rw-r--r-- 1 root root 28 Nov 30 15:44 pop3d.protocol
#
Configurer l'emplacement de la boîte de réception - 10-mail.conf
Mails for [email protected] would be stored in /var/mail/vhosts/example.com/someone/
#mail_location = mbox:~/mail:INBOX=/var/mail/%u
mail_location = maildir:/var/mail/vhosts/%d/%n
# mkdir /var/mail/vhosts/
# mkdir /var/mail/vhosts/example.com
Créer un utilisateur pour lire les mails
$ groupadd -g 5000 vmail
$ useradd -r -g vmail -u 5000 vmail -d /var/mail/vhosts -c "virtual mail user"
$ chown -R vmail:vmail /var/mail/vhosts/
Activer les services IMAPS et POP3S - 10-master.conf
service imap-login {
inet_listener imap {
#port = 143
}
inet_listener imaps {
port = 993
ssl = yes
}
service pop3-login {
inet_listener pop3 {
#port = 110
}
inet_listener pop3s {
port = 995
ssl = yes
}
}
Configurer le socket lmtp - 10-master.conf
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
.....
Configurer le socket d'authentification SASL
service auth {
.....
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user=postfix
group=postfix
}
.....
Configurer l'authentification
disable_plaintext_auth = yes
auth_mechanisms = plain login
#!include auth-system.conf.ext
#!include auth-sql.conf.ext
#!include auth-ldap.conf.ext
!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext
/etc/dovecot/conf.d# nano auth-passwdfile.conf.ext
passdb {
driver = passwd-file
args = scheme=PLAIN username_format=%u /etc/dovecot/dovecot-users
}
userdb {
driver = static
# args = username_format=%u /etc/dovecot/dovecot-users
args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
# Default fields that can be overridden by passwd-file
#default_fields = quota_rule=*:storage=1G
# Override fields from passwd-file
#override_fields = home=/home/virtual/%u
}
/var/mail/vhosts/example.com/someone/
Créer une boîte aux lettres ou des comptes utilisateur
# cat dovecot-users
[email protected]:{plain}abc123
[email protected]:{MD5-CRYPT}$1$JdyRMcO6$qUwKZT40EVp/oIpVfAEXF1
# doveadm pw -s MD5-CRYPT
Enter new password:
Retype new password:
{MD5-CRYPT}$1$JdyRMcO6$qUwKZT40EVp/oIpVfAEXF1
#
Activer SSL dans dovecot - 10-ssl.conf
# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
ssl = required
ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem
[/pre]
If you have your own certificates from a certificate authority then use them here.
<h3>Setup dovecot log files</h3>
Dovecot by default logs to /var/log/syslog which is already a giant warehouse of logs and would make it difficult to search in there. A neater way is to make dovecot log to a separate file that is easier to track. The configuration lies in the file /etc/dovecot/conf.d/10-logging.conf
Open the file and edit the log_path variable and set it to /var/log/dovecot.log
Also note that info_log_path and debug_log_path would use the same to log information and debugging messages respectively. If you want to separate them further then set a log file for each.
[pre]
# Log file to use for error messages. "syslog" logs to syslog,
# /dev/stderr logs to stderr.
log_path = /var/log/dovecot.log
# Log file to use for informational messages. Defaults to log_path.
#info_log_path =
# Log file to use for debug messages. Defaults to info_log_path.
#debug_log_path =
$ nano /etc/logrotate.d/dovecot
/var/log/dovecot*.log {
missingok
notifempty
delaycompress
sharedscripts
postrotate
doveadm log reopen
endscript
}
Redémarrer Pigeonnier
$ sudo service dovecot restart
Tester
# netstat -ltnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 28791/dovecot
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN 28791/dovecot
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 3315/mysqld
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 16218/master
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 28791/dovecot
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 28791/dovecot
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3337/nginx
tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 16218/master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3252/sshd
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 16218/master
Alors que Postfix (maître) contient les ports 587, 465 et 25Dépannage
# ls -l /var/log/mail.log
-rw-r----- 1 messagebus adm 0 Apr 26 2013 /var/log/mail.log
$ sudo chown syslog.adm /var/log/mail.log
$ sudo chmod 640 /var/log/mail.log
Dec 1 09:57:12 li240-5 postfix/smtpd[25795]: NOQUEUE: reject: RCPT from unknown[122.163.8.12]: 454 4.7.1 <...>: Relay access denied; from=<...> to=<...> proto=ESMTP helo=<[192.168.1.2]>
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
Dec 02 18:32:12 lmtp(4412): Fatal: Error reading configuration: Invalid settings: postmaster_address setting not given
# Address to use when sending rejection mails.
# Default is [email protected]<your domain>. %d expands to recipient domain.
postmaster_address = [email protected]
Créez des enregistrements DNS SPF pour activer la validation et éviter les spams
"v=spf1 mx a -all"
$ dig -t TXT example.com
Remarques
Et ensuite
Ressources
https://www.linode.com/docs/email/postfix/email-with-postfix-dovecot-and-mysql
http://www.postfix.org/postconf.5.html
https://workaround.org/ispmail/squeeze/postfix-domain-types
http://www.postfix.org/VIRTUAL_README.html
http://www.postfix.org/documentation.html