## Installation d'un serveur de courrier basique Debian installe par défaut **exim4**. Nous allons le remplacer par postix (que nous étendrons ensuite pour avoir un serveur de courrier complet. Pensez à ouvrir les ports **25** (IPV4 et IPV6) du firewall. ```shell apt install postfix ``` On supprime complètement **exim4** (fichiers de configuration): ```shell apt remove --purge exim4* ``` On teste l'envoi de messages **entrants et sortants** après avoir chargé les programmes de mail utilitaires (sur le serveur et sur un autre poste): Chargement des utilitaires sur un poste extérieur. Exécutez la même commande sur le poste serveur en cours de configuration. ```shell root@adara:~# apt install mailutils Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait The following additional packages will be installed: guile-2.0-libs libfribidi0 libgc1c2 libgsasl7 libkyotocabinet16v5 libltdl7 libmailutils5 libmariadbclient18 libntlm0 libpython2.7 libpython2.7-minimal libpython2.7-stdlib mailutils-common mysql-common Paquets suggérés : mailutils-mh mailutils-doc Les NOUVEAUX paquets suivants seront installés : guile-2.0-libs libfribidi0 libgc1c2 libgsasl7 libkyotocabinet16v5 libltdl7 libmailutils5 libmariadbclient18 libntlm0 libpython2.7 libpython2.7-minimal libpython2.7-stdlib mailutils mailutils-common mysql-common 0 mis à jour, 15 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de prendre 9 575 ko dans les archives. Après cette opération, 39,0 Mo d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer ? [O/n] o Réception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 libgc1c2 amd64 1:7.4.2-8 [208 kB] Réception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 libltdl7 amd64 2.4.6-2 [389 kB] Réception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 guile-2.0-libs amd64 2.0.13+1-4 [2 232 kB] Réception de:4 http://debian.mirrors.ovh.net/debian stretch/main amd64 libfribidi0 amd64 0.19.7-1+b1 [45,7 kB] Réception de:5 http://debian.mirrors.ovh.net/debian stretch/main amd64 libntlm0 amd64 1.4-8 [20,9 kB] Réception de:6 http://debian.mirrors.ovh.net/debian stretch/main amd64 libgsasl7 amd64 1.8.0-8+b2 [207 kB] Réception de:7 http://debian.mirrors.ovh.net/debian stretch/main amd64 libkyotocabinet16v5 amd64 1.2.76-4.2+b1 [298 kB] Réception de:8 http://debian.mirrors.ovh.net/debian stretch/main amd64 mailutils-common all 1:3.1.1-1 [642 kB] Réception de:9 http://debian.mirrors.ovh.net/debian stretch/main amd64 mysql-common all 5.8+1.0.2 [5 608 B] Réception de:10 http://debian.mirrors.ovh.net/debian stretch/main amd64 libmariadbclient18 amd64 10.1.26-0+deb9u1 [779 kB] Réception de:11 http://debian.mirrors.ovh.net/debian stretch/main amd64 libpython2.7-minimal amd64 2.7.13-2+deb9u2 [389 kB] Réception de:12 http://debian.mirrors.ovh.net/debian stretch/main amd64 libpython2.7-stdlib amd64 2.7.13-2+deb9u2 [1 896 kB] Réception de:13 http://debian.mirrors.ovh.net/debian stretch/main amd64 libpython2.7 amd64 2.7.13-2+deb9u2 [1 072 kB] Réception de:14 http://debian.mirrors.ovh.net/debian stretch/main amd64 libmailutils5 amd64 1:3.1.1-1 [817 kB] Réception de:15 http://debian.mirrors.ovh.net/debian stretch/main amd64 mailutils amd64 1:3.1.1-1 [573 kB] 9 575 ko réceptionnés en 0s (11,2 Mo/s) Sélection du paquet libgc1c2:amd64 précédemment désélectionné. (Lecture de la base de données... 22737 fichiers et répertoires déjà installés.) Préparation du dépaquetage de .../00-libgc1c2_1%3a7.4.2-8_amd64.deb ... Dépaquetage de libgc1c2:amd64 (1:7.4.2-8) ... Sélection du paquet libltdl7:amd64 précédemment désélectionné. Préparation du dépaquetage de .../01-libltdl7_2.4.6-2_amd64.deb ... Dépaquetage de libltdl7:amd64 (2.4.6-2) ... Sélection du paquet guile-2.0-libs:amd64 précédemment désélectionné. Préparation du dépaquetage de .../02-guile-2.0-libs_2.0.13+1-4_amd64.deb ... Dépaquetage de guile-2.0-libs:amd64 (2.0.13+1-4) ... Sélection du paquet libfribidi0:amd64 précédemment désélectionné. Préparation du dépaquetage de .../03-libfribidi0_0.19.7-1+b1_amd64.deb ... Dépaquetage de libfribidi0:amd64 (0.19.7-1+b1) ... Sélection du paquet libntlm0:amd64 précédemment désélectionné. Préparation du dépaquetage de .../04-libntlm0_1.4-8_amd64.deb ... Dépaquetage de libntlm0:amd64 (1.4-8) ... Sélection du paquet libgsasl7 précédemment désélectionné. Préparation du dépaquetage de .../05-libgsasl7_1.8.0-8+b2_amd64.deb ... Dépaquetage de libgsasl7 (1.8.0-8+b2) ... Sélection du paquet libkyotocabinet16v5:amd64 précédemment désélectionné. Préparation du dépaquetage de .../06-libkyotocabinet16v5_1.2.76-4.2+b1_amd64.deb ... Dépaquetage de libkyotocabinet16v5:amd64 (1.2.76-4.2+b1) ... Sélection du paquet mailutils-common précédemment désélectionné. Préparation du dépaquetage de .../07-mailutils-common_1%3a3.1.1-1_all.deb ... Dépaquetage de mailutils-common (1:3.1.1-1) ... Sélection du paquet mysql-common précédemment désélectionné. Préparation du dépaquetage de .../08-mysql-common_5.8+1.0.2_all.deb ... Dépaquetage de mysql-common (5.8+1.0.2) ... Sélection du paquet libmariadbclient18:amd64 précédemment désélectionné. Préparation du dépaquetage de .../09-libmariadbclient18_10.1.26-0+deb9u1_amd64.deb ... Dépaquetage de libmariadbclient18:amd64 (10.1.26-0+deb9u1) ... Sélection du paquet libpython2.7-minimal:amd64 précédemment désélectionné. Préparation du dépaquetage de .../10-libpython2.7-minimal_2.7.13-2+deb9u2_amd64.deb ... Dépaquetage de libpython2.7-minimal:amd64 (2.7.13-2+deb9u2) ... Sélection du paquet libpython2.7-stdlib:amd64 précédemment désélectionné. Préparation du dépaquetage de .../11-libpython2.7-stdlib_2.7.13-2+deb9u2_amd64.deb ... Dépaquetage de libpython2.7-stdlib:amd64 (2.7.13-2+deb9u2) ... Sélection du paquet libpython2.7:amd64 précédemment désélectionné. Préparation du dépaquetage de .../12-libpython2.7_2.7.13-2+deb9u2_amd64.deb ... Dépaquetage de libpython2.7:amd64 (2.7.13-2+deb9u2) ... Sélection du paquet libmailutils5:amd64 précédemment désélectionné. Préparation du dépaquetage de .../13-libmailutils5_1%3a3.1.1-1_amd64.deb ... Dépaquetage de libmailutils5:amd64 (1:3.1.1-1) ... Sélection du paquet mailutils précédemment désélectionné. Préparation du dépaquetage de .../14-mailutils_1%3a3.1.1-1_amd64.deb ... Dépaquetage de mailutils (1:3.1.1-1) ... Paramétrage de mysql-common (5.8+1.0.2) ... update-alternatives: utilisation de « /etc/mysql/my.cnf.fallback » pour fournir « /etc/mysql/my.cnf » (my.cnf) en mode automatique Paramétrage de libgc1c2:amd64 (1:7.4.2-8) ... Paramétrage de libmariadbclient18:amd64 (10.1.26-0+deb9u1) ... Paramétrage de libntlm0:amd64 (1.4-8) ... Traitement des actions différées (« triggers ») pour libc-bin (2.24-11+deb9u3) ... Paramétrage de libltdl7:amd64 (2.4.6-2) ... Paramétrage de libfribidi0:amd64 (0.19.7-1+b1) ... Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ... Paramétrage de libpython2.7-minimal:amd64 (2.7.13-2+deb9u2) ... Paramétrage de libkyotocabinet16v5:amd64 (1.2.76-4.2+b1) ... Paramétrage de libpython2.7-stdlib:amd64 (2.7.13-2+deb9u2) ... Paramétrage de mailutils-common (1:3.1.1-1) ... Paramétrage de libgsasl7 (1.8.0-8+b2) ... Paramétrage de guile-2.0-libs:amd64 (2.0.13+1-4) ... Paramétrage de libpython2.7:amd64 (2.7.13-2+deb9u2) ... Paramétrage de libmailutils5:amd64 (1:3.1.1-1) ... Paramétrage de mailutils (1:3.1.1-1) ... update-alternatives: utilisation de « /usr/bin/frm.mailutils » pour fournir « /usr/bin/frm » (frm) en mode automatique update-alternatives: utilisation de « /usr/bin/from.mailutils » pour fournir « /usr/bin/from » (from) en mode automatique update-alternatives: utilisation de « /usr/bin/messages.mailutils » pour fournir « /usr/bin/messages » (messages) en mode automatique update-alternatives: utilisation de « /usr/bin/movemail.mailutils » pour fournir « /usr/bin/movemail » (movemail) en mode automatique update-alternatives: utilisation de « /usr/bin/readmsg.mailutils » pour fournir « /usr/bin/readmsg » (readmsg) en mode automatique update-alternatives: utilisation de « /usr/bin/dotlock.mailutils » pour fournir « /usr/bin/dotlock » (dotlock) en mode automatique update-alternatives: utilisation de « /usr/bin/mail.mailutils » pour fournir « /usr/bin/mailx » (mailx) en mode automatique Traitement des actions différées (« triggers ») pour libc-bin (2.24-11+deb9u3) ... root@adara:~# ``` ### Test d'envoi d'un utilisateur du serveur à l'autre * root -> ericadmin ``` root@atom:/etc/fail2ban# mail ericadmin Cc: Subject: Essai 1 Essai 1 . ericadmin@atom:~/bin$ mailx "/var/mail/ericadmin": 1 message 1 nouveau >N 1 root lun. nov. 26 09: 14/451 Essai 1 ? 1 Return-Path: X-Original-To: ericadmin@atom.yojik.net Delivered-To: ericadmin@atom.yojik.net Received: by atom.yojik.net (Postfix, from userid 0) id 3AE0F460033; Mon, 26 Nov 2018 09:26:26 +0100 (CET) To: Subject: Essai 1 X-Mailer: mail (GNU Mailutils 3.1.1) Message-Id: <20181126082626.3AE0F460033@atom.yojik.net> Date: Mon, 26 Nov 2018 09:26:26 +0100 (CET) From: root@atom.yojik.net (root) Essai 1 . ? q 1 message sauvegardé dans /home/ericadmin/mbox 0 message conservé dans /var/mail/ericadmin ``` * ericadmin -> root ```shell ericadmin@atom:~/bin$ mail root Cc: Subject: Essai 2 Essai 2 . root@atom:/etc/fail2ban# mailx "/var/mail/root": 1 message 1 nouveau >N 1 Eric Streit lun. nov. 26 09: 14/456 Essai 2 ? 1 Return-Path: X-Original-To: root@atom.yojik.net Delivered-To: root@atom.yojik.net Received: by atom.yojik.net (Postfix, from userid 1000) id 46220460036; Mon, 26 Nov 2018 09:27:04 +0100 (CET) To: Subject: Essai 2 X-Mailer: mail (GNU Mailutils 3.1.1) Message-Id: <20181126082704.46220460036@atom.yojik.net> Date: Mon, 26 Nov 2018 09:27:04 +0100 (CET) From: ericadmin@atom.yojik.net (Eric Streit) Essai 2 . ``` L'envoi des messages entre utilisateurs du serveur serveur marche comme il faut. ### Première étape de configuration de postfix Modifiez la ligne suivante dans /etc/postfix/main.cf: > mydestination = $myhostname, yojik.net, atom.yojik.net, localhost.yojik.net, localhost et relancez postfix avec: > service postfix restart ### Test d'envoi de messages à partir de ce serveur sur mon serveur principal Envoi d'un message sur mon compte de messagerie en .eu: ```shell ericadmin@atom:~$ echo "Et voilà un petit message" | mail -s "test du courrier sortant" ericadmin@yojik.eu ``` Le message est bien reçu. Vérifiez dans le dossier **spam**: comme il n'y a aucune sécurisation du serveur de courrier (pour l'instant), gmail ou autre, soit refuse de courrier, soit le met dans les spams. ### Test d'envoi de messages à partir d'un poste extérieur Envoi d'un message à partir du poste extérieur **aldebaran** (n'oubliez pas d'ouvrir le port 25 dans les règles iptables ...): ```shell eric@aldebaran:~$ echo "Et voilà un petit message" | mail -s "test du courrier 1" ericadmin@atom.yojik.net ``` Test de réception sur le serveur: ```shell ericadmin@atom:~$ mailx "/var/mail/ericadmin": 1 message 1 nouveau >N 1 Eric Streit dim. nov. 11 13: 16/724 test du courrier 1 ? 1 Return-Path: X-Original-To: ericadmin@atom.yojik.net Delivered-To: ericadmin@atom.yojik.net Received: from aldebaran.yojik.net (unknown [IPv6:2a01:e0a:54:c220:e5c4:aee0:d068:64f6]) by atom.yojik.net (Postfix) with ESMTP id 0B3CF12085A for ; Sun, 11 Nov 2018 13:09:08 +0100 (CET) Received: by aldebaran.yojik.net (Postfix, from userid 1000) id 40DF310CAC3; Sun, 11 Nov 2018 13:09:07 +0100 (CET) Subject: test du courrier 1 To: X-Mailer: mail (GNU Mailutils 3.1.1) Message-Id: <20181111120907.40DF310CAC3@aldebaran.yojik.net> Date: Sun, 11 Nov 2018 13:09:07 +0100 (CET) From: eric@aldebaran.yojik.net (Eric Streit) Et voilà un petit message ? q 1 message sauvegardé dans /home/ericadmin/mbox 0 message conservé dans /var/mail/ericadmin ``` Le message est bien reçu par le serveur de mail de yojik.net. Vous pouvez essayer aussi sur une adresse gmail par exemple. ## Mise à jour du fichier /etc/aliases Ce fichier sert à rediriger toutes les adresses émail comme **abuse**, **webmaster**, **root** vers un utilisateur **administrateur** de la machine, root puis vers moi **ericadmin** ```shell # /etc/aliases mailer-daemon: postmaster postmaster: root nobody: root hostmaster: root usenet: root news: root webmaster: root www: root ftp: root abuse: root noc: root security: root root: ericadmin ``` Il faut lancer la commande **newaliases** pour générer le fichier.db utile à Postfix et on demande à Postfix de recharger ses fichiers. ```shell root@adara:~# newaliases oot@adara:~# service postfix reload root@adara:~# ``` ### Test de l'envoi à root pour vérifier la redirection ```shell ericadmin@atom:~/bin$ mail root Cc: Subject: Essai 5 Essai 5 . ericadmin@atom:~/bin$ mailx "/var/mail/ericadmin": 4 messages 1 nouveau 3 non lus U 1 Eric Streit lun. nov. 26 09: 19/768 test du courrier 1 U 2 Eric Streit lun. nov. 26 09: 18/743 test du courrier 4 U 3 Eric Streit lun. nov. 26 09: 18/743 test du courrier 4 >N 4 Eric Streit lun. nov. 26 09: 14/456 Essai 5 ? ``` Tout fonctionne: le message a bien été redirigé vers ericadmin comme spécifié dans /etc/aliases. ## Le fichier /etc/mailname Il contient le nom du serveur de courrier pour la machine, ici, c'est elle-même: ```shell root@aijan:/home/ericadmin# cat /etc/mailname aijan.yojik.net ``` Le serveur de courrier n'autorise que les utilisateurs (users) de la machine, ici, ericadmin et root (ainsi que les alias enregistrés précédemment). ```shell ericadmin@aijan:~$ mailx "/var/mail/ericadmin": 2 messages 2 nouveaux >N 1 Eric Streit dim. mai 20 08:4 17/698 essai d'envoi à root N 2 Eric Streit dim. mai 20 08:5 17/717 un autre essai ? ``` Pour l'envoi à partir d'un poste extérieur, pensez à utiliser l'adresse mail qui contient le nom complet de votre machine: > toto@atom.yojik.net **et non** > toto.yojik.net Les domaines ne sont pas encore configurés dans postfix. L'envoi à **root** et à **ericadmin** à partir d'un autre poste du réseau fonctionne parfaitement: le mail à destination de **root** est redirigé vers ericadmin comme stipulé dans **/etc/aliases**. Les messages sortants sont parfaitement gérés et reçus par les serveurs de courrier extérieurs.