﻿

## 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.

    apt install postfix

On supprime complètement exim4 (fichiers de configuration):

    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.

    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: <root@atom.yojik.net>
        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: <ericadmin@atom.yojik.net>
        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

        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: <ericadmin@atom.yojik.net>
        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: <root@atom.yojik.net>
        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:

    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 ...):

    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:

    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: <eric@aldebaran.yojik.net>
    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 <ericadmin@atom.yojik.net>; 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: <ericadmin@atom.yojik.net>
    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

    # /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.

    root@adara:~# newaliases
    oot@adara:~# service postfix reload
    root@adara:~#

### Test de l'envoi à root pour vérifier la redirection

    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:

    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).

    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.