Photo

Blog de Justin COUTAREL

développeur

Mai
19
2014

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS Administration système, GNU/Linux

Aujourd’hui, je vais présenter l’installation d’un serveur d’e-mails. Ainsi, j’utiliserai le logiciel Postfix comme agent de transfert de courrier (MTA), aussi appelé serveur SMTP. Il assurera l’envoi de messages depuis le serveur et la réception de courriers en provenance d’autres serveurs d’e-mails via leurs MTA. Ainsi, les clients de messagerie (comme Microsoft Outlook ou Mozilla Thunderbird) communiqueront directement avec le MTA pour envoyer un e-mail, via le protocole SMTP. Pour la récupération des courriers reçus sur le serveur par les clients de messagerie, je mettrai en place le logiciel Dovecot. Celui-ci permet de récupérer les e-mails via les protocoles POP et IMAP. Afin d’avoir un serveur d’e-mails complet, je détaillerai la mise en place de l’antivirus ClamAv et du filtre anti-spam Spamassassin. Ces deux logiciels seront exploités par le filtre de contenu Amavis qui analysera directement les courriers stockés sur le serveur. Afin de faciliter la gestion des différents comptes e-mails sur le serveur, j’installerai l’application Web Postfix Admin. Ainsi, il sera possible de gérer plusieurs comptes e-mails mais également plusieurs noms de domaines. Pour terminer, j’aborderai l’installation du Webmail Roundcube afin que les utilisateurs puissent accéder à leurs e-mails depuis n’importe quel navigateur Web.

 

  • Installation des paquets de base

 

Pour commencer, connectez vous à votre serveur via SSH et basculez sous le compte root, avec la commande suivante:

Ensuite, il est nécessaire d’installer un ensemble de paquets. Pour cela, tapez la commande suivante:

L’outil de configuration des paquets va vous poser un ensemble de questions. Ainsi, à la première question, il vous demande s’il est nécessaire de générer un certificat SSL auto-signé pour Dovecot. Nous en générerons un plus tard, en renseignant correctement toutes les informations nécessaires. Répondez donc par Non, comme ici:

 

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS - Configuration du paquet dovecot-core

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet dovecot-core


 

Ensuite, il vous présente les différentes configurations possibles de Postfix. Validez en actionnant le bouton OK, comme ici:

 

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS - Configuration du paquet postfix - Partie 1

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfix – Partie 1


 
À la question Configuration type du serveur de messagerie, sélectionnez Site Internet et validez par OK, comme le montre la prise d’écran suivante:
 
Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS - Configuration du paquet postfix - Partie 2

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfix – Partie 2


 

Ensuite, il nous donne des informations sur le nom de courrier que nous allons devoir choisir. Validez en actionnant OK, comme le montre la capture d’écran ci-dessous:

 

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS - Configuration du paquet postfix - Partie 3

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfix – Partie 3


 

Ici, nous comprenons que le nom de courrier doit correspondre au nom de domaine principal du serveur. Les adresses des e-mails envoyés depuis le serveur, qui n’ont pas de nom de domaine prendront ce nom comme nom de domaine. Ainsi, les e-mails envoyés par le serveur lui même, pour par exemple vous informer de l’état d’un service particulier seront envoyés depuis une adresse de ce nom de domaine. Renseignez le nom de courrier que vous avez choisi, comme ici:

 

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS - Configuration du paquet postfix - Partie 4

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfix – Partie 4


 

L’outil de configuration des paquets nous demande ensuite quel serveur Web est installé sur le serveur. Celui-ci sera configuré automatiquement pour que Postfix Admin puisse fonctionner correctement. Nous avons installé le serveur Web Apache dans un précédent article. Sélectionnez donc apache2 et validez  par OK, comme l’illustre l’image suivante:

 

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS - Configuration du paquet postfixadmin - Partie 1

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfixadmin – Partie 1


 

Ensuite, il vous est demandé si la base de données de Postfix Admin doit être configurée par dbconfig-common. Répondez par Oui, comme ici:

 

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS - Configuration du paquet postfixadmin - Partie 2

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfixadmin – Partie 2


 

L’outil de configuration demande quel type de serveur de bases de données nous souhaitons utiliser. Nous avons installé le SGBDR MySQL dans le précédent article. Sélectionnez donc mysql, puis actionnez le bouton OK pour confirmer, comme le montre la capture d’écran ci-dessous:

 

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS - Configuration du paquet postfixadmin - Partie 3

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfixadmin – Partie 3


 

Pour pouvoir créer la base de données nécessaire au fonctionnement de Postfix Admin, l’outil de configuration a besoin du mot de passe Administrateur (root) de MySQL. Nous l’avons choisi dans la première section de l’article précédent. Renseignez le et validez par OK, comme l’illustre l’image suivante:

 

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS - Configuration du paquet postfixadmin - Partie 4

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfixadmin – Partie 4


 

L’outil de configuration va également créer un compte utilisateur pour que Postfix Admin puisse se connecter à sa base de données. Pour le cela, le compte doit être protégé par un mot de passe.  Vous pouvez en générer un nouveau et le fournir ou alors laisser le champ vide pour que l’outil de configuration en génère un automatiquement. Personnellement, je préfère en générer un à l’aide de mon script de génération de mots de passe, comme ici:

 

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS - Configuration du paquet postfixadmin - Partie 5

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfixadmin – Partie 5


 
Si vous avez fourni un mot de passe, vous devez alors le confirmer, comme le montre la capture d’écran suivante:
 
Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS - Configuration du paquet postfixadmin - Partie 6

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration du paquet postfixadmin – Partie 6


 

Tous les paquets sont maintenant correctement installés. Nous pouvons désormais passer à la configuration de chaque élément de notre serveur d’e-mails.

 

  • Configuration de Postfix Admin

 

Le paquet postfixadmin n’installe pas le fichier /etc/apache2/conf.d/postfixadmin au bon endroit. Celui-ci doit se trouver dans le dossier /etc/apache2/conf-available. Il faut donc le déplacer et lui ajouter l’extension .conf, avec la commande suivante:

Puis, il faut activer la configuration postfixadmin du serveur Web Apache avec la commande ci-dessous:

Il faut également activer le module imap pour PHP avec la commande suivante pour satisfaire toutes les dépendances de Postfix Admin:

Puis, pour tenir compte de ces modifications, nous devons redémarrer le serveur Web Apache, avec cette commande:

Rendez-vous maintenant dans votre navigateur Web et entrez y l’adresse suivante:

Vous devriez arriver sur la page d’installation de Postfix Admin. Celle-ci nous informe si toutes les dépendances sont bien installées et configurées. En bas de la page, il vous est demandé de fournir un mot de passe. Celui-ci sera utile uniquement pour l’installation de Postfix Admin. Renseignez un mot de passe suffisamment solide. Vous pouvez vous servir de mon script de génération de mots de passe. Vous devez également le confirmer. Cliquez ensuite sur le bouton Generate password hash, comme le montre la prise d’écran suivante:

 

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Postfix Admin – Partie 1

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Postfix Admin – Partie 1


 

La page se rafraîchit. Celle-ci nous indique qu’il est nécessaire de modifier une variable dans le fichier de configuration de Postfix Admin, comme ici:

 

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Postfix Admin – Partie 2

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Postfix Admin – Partie 2


 

Ouvrez et éditez alors le fichier /etc/postfixadmin/config.inc.php, avec par exemple la commande ci-dessous:

Cherchez et modifiez la valeur de la variable $CONF[‘setup_password’] avec celle fournie dans la page d’installation de Postfix Admin.

 

Cherchez et modifiez également les variables suivantes:

En:

Vous pouvez enregistrer et quitter l’éditeur. Ces deux modifications indiquent que les e-mails devront être stockés dans des dossiers sous la forme NOM_DOMAINE/NOM_UTILISATEUR.

 

Ouvrez et éditez le fichier /etc/postfixadmin/dbconfig.inc.php, avec la commande ci-dessous par exemple:

Cherchez et modifiez la variable suivante:

En:

Enregistrez et quittez l’éditeur.

 

Retournez ensuite dans votre navigateur, sur la page d’installation de Postfix Admin. Afin, de pouvoir se connecter sur Postfix Admin, nous devons créer un compte administrateur. Ainsi, renseignez une adresse e-mail dans le champ Admin et un mot de passe, que vous aurez choisi suffisamment solide, dans le champ Password et répétez le dans le champ Password (again). Retapez à nouveau le mot de passe d’installation de Postfix Admin, que vous avez choisi plus haut, dans le champ Setup password et validez en cliquant sur le bouton Add Admin, comme l’illustre l’image suivante:

 

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Postfix Admin – Partie 3

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Postfix Admin – Partie 3


 

La configuration de Postfix Admin est maintenant terminée.

 

Afin d’éviter qu’une personne mal intentionnée ne se connecte à la page d’installation de Postfix Admin et crée un compte Administrateur dans Postfix Admin, nous allons interdire l’accès à la page. Pour cela, ouvrez et éditez le fichier /etc/apache2/conf-available/postfixadmin.conf, avec la commande suivante par exemple:

Ajoutez le contenu suivant à la fin du fichier:

Pour plus de sécurité, il est possible de modifier l’adresse d’accès (l’URL) à Postfix Admin, de la même façon que je l’ai évoqué avec PHPMyAdmin dans l’article précédent. Ainsi, au lieu de taper:

Vous taperez par exemple:

Ceci permet d’éviter que certains attaquants aient accès à l’interface de gestion de Postfix Admin. En effet, comme il est courant d’accéder à Postfix Admin via l’adresse http://IP_SERVEUR/postfixadmin ou http://NOM_DOMAINE/postfixadmin, certaines personnes mal intentionnées attaquent Postfix Admin par brute force ou par dictionnaire. Ainsi, elles pourraient modifier les mots de passes des comptes e-mails pour accéder à leur contenu ou encore créer ou supprimer des comptes e-mails.
 
Pour ce faire, toujours dans le fichier /etc/apache2/conf-available/postfixadmin.conf, cherchez et modifiez la ligne suivante:

En:

Bien entendu, modifiez le nom d’accès par un de votre choix.

 

Pour prendre en compte ces modifications, il est nécessaire de redémarrer le serveur Web Apache, avec la commande ci-dessous:

J’expliquerai dans un prochain article, comment créer des comptes e-mails ainsi que des noms de domaines dans Postfix Admin.

 

  • Création et configuration de l’espace de stockage des boîtes aux lettres

 

Il est nécessaire de créer un espace dédié au stockage des boîtes aux lettres, là où seront stockés les e-mails des différents comptes e-mails. Pour les mêmes raisons qu’évoquées dans les précédents articles, nous allons stocker les boîtes aux lettres sur la partition montée sur /srv. Ceci permet de conserver les données des différents services du serveur en cas de réinstallation. Pour y arriver, il suffira de ne pas formater la partition /srv lors de la réinstallation. Ainsi, les boîtes aux lettre seront stockées dans le dossier /srv/mail. Pour ce faire, nous allons créer le dossier /srv/mail, modifier ses droits d’accès, son propriétaire et son groupe, avec les commandes suivantes:

Pour continuer la suite de la configuration du serveur d’e-mails, nous devons récupérer l’UID et le GID de l’utilisateur mail, propriétaire du dossier /srv/mail.  L’UID correspond à l’identifiant unique de l’utilisateur et le GID correspond à celui du groupe du dossier. Pour ce faire, entrez la commande suivante:

La commande affiche plusieurs lignes. Celle qui nous intéresse est la suivante:

L’UID correspond au nombre indiqué après le 2ème deux-points (:), soit ici 8 et le GID correspond au nombre indiqué après le 3ème deux-points (:), soit ici 8.
 

  • Configuration de Postfix

 

Les noms de domaines et les comptes e-mails sont gérés par Postfix Admin. Celui-ci les stockent dans une base de données MySQL. Ainsi, nous allons devoir configurer Postfix pour qu’il utilise cette base de données et lui indiquer comment lire les informations dont il aura besoin. Pour cela, il est nécessaire de créer un ensemble de fichiers qui seront stockés dans le dossier /etc/postfix. Commencez par créer et éditer le fichier /etc/postfix/mysql_virtual_alias_domainaliases_maps.cf, avec la commande suivante par exemple:

Ajoutez y le contenu suivant, en remplaçant la valeur de la variable password par le mot de passe du compte utilisateur de postfixadmin sur le serveur MySQL, défini lors de la configuration du paquet postfixadmin:

Créez et éditez le fichier /etc/postfix/mysql_virtual_alias_maps.cf, avec la commande ci-dessous par exemple:

Ajoutez y le contenu suivant, en remplaçant la valeur de la variable password par le mot de passe du compte utilisateur de postfixadmin sur le serveur MySQL, défini lors de la configuration du paquet postfixadmin:

Ensuite, créez et éditez le fichier /etc/postfix/mysql_virtual_domains_maps.cf, par exemple avec la commande suivante:

Ajoutez y le contenu suivant, en remplaçant la valeur de la variable password par le mot de passe du compte utilisateur de postfixadmin sur le serveur MySQL, défini lors de la configuration du paquet postfixadmin:

Créez et éditez ensuite le fichier /etc/postfix/mysql_virtual_mailbox_domainaliases_maps.cf, avec la commande ci-dessous par exemple:

Ajoutez y le contenu suivant, en remplaçant la valeur de la variable password par le mot de passe du compte utilisateur de postfixadmin sur le serveur MySQL, défini lors de la configuration du paquet postfixadmin:

Puis, créez et éditez le fichier /etc/postfix/mysql_virtual_mailbox_maps.cf, avec la commande ci-dessous par exemple:

Ajoutez y le contenu suivant, en remplaçant la valeur de la variable password par le mot de passe du compte utilisateur de postfixadmin sur le serveur MySQL, défini lors de la configuration du paquet postfixadmin:

Ensuite, nous pouvons configurer Postfix lui même. Pour ce faire, ouvrez et éditez le fichier /etc/postfix/main.cf, par exemple avec la commande suivante:

Cherchez et modifiez les variables suivantes:

En:

Commentez les variables suivantes, en mettant un dièse (#) en début de ligne:

Ensuite, modifiez la ligne suivante:

En:

Ici, nous supprimons, de la variable mydestination, le nom de courrier choisi. Kimsufi correspond au nom du serveur choisi lors de l’installation d’Ubuntu Server 14.04 LTS.

Ajoutez maintenant le contenu suivant à la fin du fichier en modifiant l’UID et le GID par ceux trouvés dans la section précédente:

Ensuite, ouvrez et éditez le fichier /etc/postfix/master.cf, avec la commande suivante par exemple:

 Décommentez les lignes suivantes, en enlevant le dièse (#) en début de ligne:

Sous la ligne suivante:

 Ajoutez les deux lignes ci-dessous:

Modifiez la ligne suivante:

En:

Puis, ajoutez les lignes suivantes à la fin du fichier:

Pour éviter que certaines en-têtes ne sont analysées inutilement, nous allons créer et éditer le fichier /etc/postfix/header_checks, avec la commande ci-dessous par exemple:

Ajoutez y les lignes suivantes:

Pour activer les accusés de réception, il faut créer le fichier /etc/postfix/esmtp_access et l’éditer, avec par exemple cette commande:

Ajoutez y le contenu suivant:

 

  • Configuration de Dovecot

 

De la même façon que pour Postfix, nous allons devoir lier Dovecot à la base de données de Postfix Admin, pour que celui-ci puisse authentifier les utilisateurs qui tentent de se connecter via les protocoles POP et IMAP, afin de récupérer les courriers stockés sur le serveur.

 

Pour commencer, créez et éditez le fichier /etc/dovecot/dovecot-sql.conf.ext, par exemple avec la commande ci-dessous:

Puis, ajoutez les lignes suivantes à la fin du fichier, en modifiant l’UID et le GID par ceux trouvés plus haut dans cet article et MOT_DE_PASSE_POSTFIXADMIN par le mot de passe du compte utilisateur de postfixadmin sur le serveur MySQL, défini lors de la configuration du paquet postfixadmin:

Ouvrez et éditez ensuite le fichier /etc/dovecot/conf.d/10-auth.conf, avec la commande ci-dessous par exemple:

Modifiez la ligne suivante:

En:

Commentez la ligne suivante, en ajoutant un dièse en début de ligne:

Et décommentez les lignes ci-dessous, en enlevant le dièse (#) en début de ligne:

Vous pouvez enregistrer et quitter l’éditeur.
 
Il est maintenant nécessaire d’ouvrir et d’éditer le fichier /etc/dovecot/conf.d/10-mail.conf, par exemple avec cette commande:

Cherchez et modifiez la ligne suivante:

En:

Décommentez et modifiez également les variables suivantes:

En:

Bien entendu, remplacez UID_TROUVE par celui trouvé plus haut dans cet article.

Ouvrez et éditez maintenant le fichier /etc/dovecot/conf.d/10-ssl.conf, grâce à la commande ci-dessous par exemple:

Décommentez la ligne suivante en retirant le dièse (#) en début de ligne:

Puis, modifiez les deux lignes suivantes:

En:

Ouvrez et éditez ensuite le fichier /etc/dovecot/conf.d/10-master.conf, avec la commande suivante par exemple:

Décommentez et modifiez les lignes suivantes:

En:

Ouvrez et éditez ensuite le fichier /etc/dovecot/conf.d/15-lda.conf, avec la commande suivante par exemple:

Décommentez et modifiez les variables suivantes:

En:

Modifiez ADRESSE_ADMINISTRATEUR par l’adresse de l’administrateur du serveur et NOM_COURRIER par le nom de courrier, c’est à dire le nom de domaine principal du serveur, choisi lors de l’installation des paquets.

 

Ici, nous avons activé le plugin sieve pour Dovecot. Celui-ci va nous permettre de déplacer automatiquement  les spams dans le dossier IMAP Spam de la boîte aux lettres. Ainsi, ouvrez et éditez le fichier /etc/dovecot/conf.d/90-sieve.conf, par exemple, avec la commande suivante:

Décommentez et modifiez les lignes suivantes:

En:

Puis, créez et éditez le fichier /srv/mail/sieve.default, par exemple avec la commande ci-dessous:

Placez y le contenu suivant:

Afin de profiter de la création automatique de certains dossiers IMAP (Envoyés, Brouillons, Spams…), nous allons modifier le fichier /etc/dovecot/conf.d/15-mailboxes.conf, avec la commande ci-dessous par exemple:

Commentez les lignes suivantes en ajoutant un dièse (#) en début de chaque ligne:

Puis, modifiez la ligne suivante:

En:

Ajoutez la ligne suivante:

Sous chaque ligne commençant par mailbox.

 

Pour terminer la configuration de Dovecot, nous allons modifier les droits d’accès à son répertoire de configuration afin que personne ne puisse y accéder. Pour cela, entrez les commandes suivantes:

 

  • Configuration du filtre anti-spam Spamassassin et de l’antivirus ClamAv

 

Pour commencer la configuration du filtre anti-spam Spamassassin et de l’antivirus ClamAv, nous devons ajouter l’utilisateur amavis au groupe clamav, avec la commande suivante:

Ensuite ouvrez et éditez le fichier /etc/amavis/conf.d/05-node_id, par exemple avec la commande suivante:

Décommentez et modifiez la ligne suivante:

En:

Remplacez NOM_COURRIER par votre nom de courrier défini plus haut, lors de l’installation des paquets.

Ensuite, ouvrez et éditez le fichier /etc/amavis/conf.d/15-content_filter_mode, grâce à la commande ci-dessous par exemple:

Décommentez les lignes suivantes en enlevant le dièse (#) en début de chaque ligne:

Ouvrez et éditez le fichier /etc/amavis/conf.d/21-ubuntu_defaults, par exemple avec la commande suivante:

Modifiez la variable suivante:

En:

Ceci permet aux spams d’arriver dans la boîte aux lettres et d’être marqués comme spam au lieu d’être purement et simplement détruits.

Ensuite, ouvrez et éditez le fichier /etc/default/spamassassin, avec la commande ci-dessous par exemple:

Cherchez et modifiez les lignes suivantes:

En:

Ceci permet d’activer le filtre anti-spam Spamassassin et la mise à jour automatique de ses règles.

Par défaut, lorsqu’un courrier est détecté comme spam, le sujet de l’e-mail se voit précédé de la notion ***SPAM***. Si vous souhaitez désactiver ce comportement, ouvrez et éditez le fichier /etc/amavis/conf.d/20-debian_defaults, avec la commande suivante par exemple:

Et commentez la ligne suivante en ajoutant un dièse (#) en début de ligne:

Pour terminer l’installation de l’antivirus ClamAv, il nous reste encore à mettre à jour sa base de données virales. Pour cela, entrez la commande ci-dessous:

 

  • Génération du certification SSL

 

Afin de profiter du chiffrement SSL lors de la communication entre le client de messagerie et le serveur d’e-mails ainsi que le serveur et les autres serveurs d’e-mails, il nous faut un certificat SSL. Celui-ci garantit l’authentification du serveur et le chiffrement des communications. Il existe des certificats SSL payants. Ceux-ci sont signés par des autorités reconnues qui garantissent, en termes financiers, la validité du certificat. Cependant, ceux-ci sont relativement chers. Il est possible de générer des certificats nous mêmes. Pour cela, il est nécessaire de créer dans un premier temps une autorité de certification. Celle-ci nous permettra de signer les certificats que créeront par la suite. Elle se compose d’une paire clé privée/certificat. Son certificat sera auto-signé par le serveur. Il sera, par contre, nécessaire d’installer ce certificat sur chaque poste utilisateur, qui relèvera le courrier via un client de messagerie, pour que le serveur soit reconnu.  Pour ce faire, nous allons devoir créer un ensemble de fichiers. Pour cela, créez un dossier quelque part sur le serveur et placez-vous dedans, par exemple le dossier /root/certificats comme ici:

Ensuite, il est nécessaire de créer le fichier index.txt qui sera vide et le fichier serial qui aura pour contenu la valeur 1000, avec les commandes suivantes par exemple:

Il faut ensuite copier le fichier /etc/ssl/openssl.cnf dans le dossier, par exemple avec la commande ci-dessous:

Ouvrez et éditez le fichier openssl.cnf, avec la commande suivante par exemple:

Décommentez et modifiez les variables suivantes:

En:

Bien entendu, renseignez les bonnes informations  afin que nous puissions générer un certificat correct.

Ajoutez les lignes suivantes à la fin de la section [ req_distinguished_name ], normalement avant la ligne [ req_attributes ]:

Bien entendu, fournissez les bonnes informations.

Enregistrez et quittez l’éditeur.

 

Ensuite, il convient de générer le couple clé privée/certificat de l’autorité de certification. Pour cela, tapez la commande suivante:

Le paramètre -days précise la durée de validité du certificat en nombre de jours, ici environ 5 ans.
La commande openssl va vous demander certaines informations afin de générer un certificat en bonne et due forme. Celles-ci sont automatiquement pré-remplies à partir du fichier openssl.cnf. Normalement, vous n’aurez qu’à valider l’ensemble des réponses en appuyant sur la touche Entrée, comme ici:

Nous pouvons maintenant générer la clé privée du serveur d’e-mails qui nous permettra de crypter toutes les communications avec le client de messagerie et avec les autres serveurs d’e-mails. En plus de cette clé, nous allons générer une demande de signature. Celle-ci nous permettra de générer le certificat du serveur d’e-mails. Pour cela, entrez la commande suivante:

De la même façon que pour la génération du certificat de l’autorité de certification, la commande openssl va vous demander certaines informations afin de générer un certificat en bonne et due forme. Celles-ci sont automatiquement pré-remplies à partir du fichier openssl.cnf. Seule la variable Common Name est à modifier. Celle-ci prendra la valeur *.NOM_DOMAINE. Ceci nous permet de pouvoir identifier le serveur sous les sous-domaines imap.NOM_DOMAINE, pop.NOM_DOMAINE et smtp.NOM_DOMAINE. Ainsi, si vos besoins évoluent et qu’il vous faut un serveur SMTP différent d’un serveur IMAP et POP, vous n’aurez qu’à modifier votre nom de domaine. Normalement, pour les autres variables, vous n’aurez qu’à valider l’ensemble des réponses en appuyant sur la touche Entrée, comme ici:

Les champs A challenge password et An optional company name sont optionnels. Il n’est donc pas nécessaire de les remplir.

Ensuite, nous allons générer le certificat du serveur d’e-mails signé par l’autorité de certification en utilisant son certificat. Pour ce faire, tapez la commande ci-dessous:

Le certificat et la clé du serveur d’e-mails sont maintenant correctement générés. Il ne nous reste plus qu’à les déplacer dans le dossier /etc/ssl/private, avec la commande suivante:

Nous pouvons supprimer le fichier mail.csr qui ne nous est plus utile, par exemple avec la commande ci-dessous:

Nous pouvons, par contre, garder le dossier /root/certificats afin de pouvoir générer de la même manière d’autres certificats SSL en gardant la même autorité de certification. Pour cela, il suffira de relancer les deux dernières commandes openssl ci-dessus en les ajustant.

 

  • Redémarrage des services

 

Pour terminer, il ne nous reste plus qu’à redémarrer les différents services qui composent notre serveur d’e-mails avec les commandes ci-dessous:

 

  • Installation et configuration de Roundcube

 

Afin de permettre aux utilisateurs du serveur d’e-mails d’accéder à leurs e-mails depuis leur navigateur Web, nous allons installer et configurer le Webmail Roundcube. Pour cela, il est nécessaire d’installer les paquets roundcube et roundcube-mysql, avec la commande suivante:

L’outil de configuration des paquets va vous poser un ensemble de questions. Ainsi, à la première question, il vous demande s’il faut configurer la base de données de Roundcube avec db-config. Répondez par Oui, comme le montre la capture d’écran suivante:

 

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Roundcube – Partie 1

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Roundcube – Partie 1


 

Ensuite, il demande quel est le type de base de données à utiliser pour stocker les données de Roundcube. Nous avons installé MySQL dans le précédent article. Sélectionnez donc mysql puis validez en actionnant le bouton OK, comme l’illustre l’image suivante:

 

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Roundcube – Partie 2

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Roundcube – Partie 2


 

Pour pouvoir créer la base de données nécessaire au fonctionnement de Roundcube, l’outil de configuration a besoin du mot de passe Administrateur (root) de MySQL. Nous l’avons choisi dans la première section de l’article précédent. Renseignez le et validez par OK, comme le montre la prise d’écran ci-dessous:

 

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Roundcube – Partie 3

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Roundcube – Partie 3


 

L’outil de configuration va également créer un compte utilisateur pour que Roundcube puisse se connecter à sa base de données. Pour cela, le compte doit être protégé par un mot de passe.  Vous pouvez en générer un nouveau et le fournir ou alors laisser le champ vide pour que l’outil de configuration en génère un automatiquement. Personnellement, je préfère en générer un à l’aide de mon script de génération de mots de passe, comme ici:

 

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Roundcube – Partie 4

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Roundcube – Partie 4


 

Si vous avez fourni un mot de passe, vous devez alors le confirmer, comme le montre la capture d’écran suivante:

 

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Roundcube – Partie 5

Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS – Configuration de Roundcube – Partie 5


 

Ensuite, pour éviter que Roundcube ne demande sur quel serveur IMAP il doit se connecter, quand l’utilisateur se connecte au Webmail, ouvrez et éditez le fichier /etc/roundcube/main.inc.php, avec la commande ci-dessous par exemple:

Cherchez et modifiez la ligne suivante:

En:

Pour plus de sécurité, il est possible de modifier l’adresse d’accès (l’URL) à Roundcube, de la même façon que je l’ai évoqué avec Postfix Admin plus haut dans cet article. Ainsi, au lieu de taper:

Vous taperez par exemple:

Ceci permet d’éviter que certains attaquants aient accès à Roundcube. En effet, comme il est courant d’accéder à Roundcube via l’adresse http://IP_SERVEUR/roundcube ou http://NOM_DOMAINE/roundcube, certaines personnes mal intentionnées attaquent Roundcube par brute force ou par dictionnaire. Ainsi, elles pourraient se connecter à la place des utilisateurs pour accéder au contenu des boîtes aux lettres ou envoyer des e-mails.
 
Pour ce faire, ouvrez et éditez fichier /etc/apache2/conf-available/roundcube.conf, par exemple avec cette commande:

Puis, décommentez et modifiez les lignes suivantes:

En:

Bien entendu, modifiez le nom d’accès par un de votre choix.

Pour prendre en compte ces modifications, il est nécessaire de redémarrer le serveur Web Apache, avec la commande ci-dessous:

Vous pouvez dès à présent, vous connecter au Webmail Roundcube en entrant l’adresse suivante dans votre navigateur, en modifiant le nom d’accès par celui choisi:

 

  • Débogage et configuration exemple

 

La configuration est maintenant terminée. Étant donné qu’elle est longue et compliquée, il est possible que votre serveur d’e-mails ne fonctionne pas du premier coup. Ainsi, pour vous aider à trouver le problème, vous pouvez consulter les fichiers journaux du serveur d’e-mails /var/log/mail.log et /var/log/mail.err. Pour cela, utilisez au choix une des commandes suivantes:

Je vous mets également à disposition l’ensemble des fichiers de configuration que nous avons modifié: Configuration exemple d’un serveur d’e-mails sous Ubuntu Server 14.04 LTS. La structure des fichiers de configuration, évolue au fil du temps, ils peuvent ne pas être à jour; il s’agit seulement d’une aide afin de comparer les fichiers de configuration. Ils ne doivent pas être utilisés directement comme fichiers de configuration du serveur d’e-mails.

Notre serveur d’e-mails est maintenant opérationnel. Avant de pouvoir envoyer votre premier e-mail, nous devons encore configurer le nom de domaine du serveur et créer les comptes e-mails. Ces deux étapes seront le sujet de mes deux prochains articles.

 

EDIT du 16/08/2104: j’ai apporté quelques modifications à cet article. Ainsi, pour créer le certificat SSL et la clé du serveur d’e-mails, nous créons en premier une autorité de certification. Le certificat et la clé du serveur d’e-mails sont renommés respectivement en /etc/ssl/private/mail.crt et en /etc/ssl/private/mail.key. Les fichiers de configuration de Postfix et Dovecot sont modifiés en conséquence. Une autre modification a été faite sur le fichier /etc/postfix/master.cf. Trois lignes de plus ont été décommentées afin d’ajouter le support du cryptage SSL en plus du support du cryptage TLS lors de l’utilisation du protocole SMTP.

3 réponses à ”Installation d’un serveur d’e-mails avec Postfix et Dovecot sur un serveur dédié Kimsufi sous Ubuntu Server 14.04 LTS” :

  1. Bonjour,

    J’ai suivi de près tous vos tutos pour mettre en place un serveur de mail sur mon kimsufi fraîchement acquis !

    Tout s’est plutôt bien passé jusqu’à la connexion à mon mail depuis roundcube.
    Lorsque je tente de me connecter avec roundcube, ça mouline pas mal et puis plus rien.

    Lorsque je regarde les erreurs dans mail.log j’ai :
    Error: mysql(localhost): Connect failed to database (postfixadmin): Access denied for user ‘postfixadmin’@’localhost’ (using password: YES) – waiting for 125 seconds before retry

    Je ne pense pas m’etre trompé dans mes mots de passe …

    Vous auriez une idée du soucis ?

    En tout cas félicitation pour tous vos tuto. Merci encore.

  2. Bonjour,

    Je me permet de commenter à nouveau. Depuis hier je tente de comprendre ce qui ne fonctionne pas dans ma réception de mail. Les envoie fonctionnent cette fois-ci. En revanche ce sont les réception qui ne se font pas. Lorsque je tente d’envoyer un mail à l’un de mes comptes courrier (francois-g@jhiki.com) j’obient une réponse de type Recipient address rejected: User unknown in local recipient table.

    J’avoue ne plus trop savoir ou chercher depuis hier. Mon main.cf ressemble à ceci :

    # See /usr/share/postfix/main.cf.dist for a commented, more complete version

    # Debian specific: Specifying a file name will cause the first
    # line of that file to be used as the name. The Debian default
    # is /etc/mailname.
    #myorigin = /etc/mailname

    smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
    biff = no

    # appending .domain is the MUA’s job.
    append_dot_mydomain = no

    # Uncomment the next line to generate « delayed mail » warnings
    #delay_warning_time = 4h

    readme_directory = no

    # TLS parameters
    smtpd_tls_cert_file=/etc/ssl/private/mail.crt
    smtpd_tls_key_file=/etc/ssl/private/mail.key
    smtpd_use_tls=yes
    #smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
    #smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

    # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
    # information on enabling SSL in the smtp client.

    smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_un$
    myhostname = jhiki.com
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases
    myorigin = /etc/mailname
    mydestination = ns346448.ip-91-121-143.eu, localhost.localdomain, localhost
    relayhost =

    mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
    mailbox_size_limit = 0
    recipient_delimiter = +
    inet_interfaces = all
    inet_protocols = all
    # SASL parameters
    smtpd_sasl_type = dovecot
    smtpd_sasl_path = private/auth
    smtpd_sasl_auth_enable = yes
    broken_sasl_auth_clients = yes
    smtpd_sasl_security_options = noanonymous
    smtpd_sasl_local_domain =
    smtpd_sasl_authenticated_header = yes

    # TLS parameters
    smtp_tls_security_level = may
    smtpd_tls_security_level = may
    #smtpd_tls_auth_only = no
    smtp_tls_note_starttls_offer = yes
    smtpd_tls_loglevel = 1
    smtpd_tls_received_header = yes
    smtpd_tls_session_cache_timeout = 3600s
    tls_random_source = dev:/dev/urandom

    # SMTPD parameters
    unknown_local_recipient_reject_code = 450
    maximal_queue_lifetime = 7d
    minimal_backoff_time = 1000s
    maximal_backoff_time = 8000s
    smtp_helo_timeout = 60s
    smtpd_recipient_limit = 50
    smtpd_soft_error_limit = 3
    smtpd_hard_error_limit = 12
    smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, permit
    smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, rejec$
    smtpd_client_restrictions = reject_rbl_client blackholes.easynet.nl
    smtpd_recipient_restrictions = reject_unauth_pipelining, permit_mynetworks, per$
    smtpd_data_restrictions = reject_unauth_pipelining
    smtpd_discard_ehlo_keyword_address_maps = cidr:/etc/postfix/esmtp_access
    smtpd_helo_required = yes
    smtpd_delay_reject = yes
    disable_vrfy_command = yes

    # General host and delivery info
    mynetworks_style = host
    virtual_mailbox_base = /home/mail
    virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf, mysql:$
    virtual_uid_maps = static:8
    virtual_gid_maps = static:8
    virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf, mysql:/etc$
    virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
    # Integration with other packages
    virtual_transport = dovecot
    dovecot_destination_recipient_limit = 1

    # Use amavis for virus and spam scanning
    content_filter = amavis:[127.0.0.1]:10024

    # Header manipulation
    header_checks = regexp:/etc/postfix/header_checks
    enable_original_recipient = no

    Peut-etre que tu y trouveras l’erreur …

    Merci !

    1. Bonjour François,

      j’ai comparé ton fichier avec le mien et il me paraît correct. Certains paramètres sont différents, tel que virtual_mailbox_base qui a pour valeur /home/mail alors que dans mon exemple, j’ai mis /srv/mail. L’emplacement du dossier qui contiendra les e-mails du serveur est une question de préférence (comme je l’indique dans cet article). Certaines lignes ne sont pas complètes comme les paramètres smtpd_relay_restrictions et smtpd_sender_restrictions mais je pense que c’est le système de commentaires de ce blog qui les a tronquées.

      Ton utilisateur existe bien en base de données ? Lorsqu’un e-mail est envoyé à destination de ton domaine, le serveur MTA d’expédition lit l’enregistrement MX de ton domaine. Celui-ci doit pointer vers ton serveur (voir mon article sur la configuration des noms de domaines). Si tu l’as déjà correctement configuré, il est nécessaire d’attendre 24h pour que les modifications soient prises en compte. Ensuite, le serveur MTA d’expédition se connecte sur ton serveur Postfix et lui transmet l’e-mail. Pour t’aider à trouver l’origine du problème, je te conseille de consulter les fichiers /var/log/mail.log et /var/log/mail.err (avec la commande tail -f par exemple). Si tu ne peux pas te connecter avec un client de messagerie (Microsoft Outlook ou Mozilla Thunderbird), vérifies également les fichiers de configuration de Dovecot. Il s’agit du serveur Imap et du serveur Pop et il est lié au serveur Postfix.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Rubriques