M3204 Relais de Messagerie

 
CONTINUER À LIRE
M3204 Relais de Messagerie
M3204
Relais de Messagerie
Patrice Gommery – Novembre 2021

PRE-REQUIS
Pour réaliser ce TP vous devez avoir en votre possession :
- L'adresse IP de votre serveur VPS hébergé chez PulseHeberg
- Votre identifiant MMI (mmiXXxxx) et son mot de passe sur le VPS

Pour la partie Messagerie, vous devez aussi avoir :
Votre identifiant MMI et votre N° Etudiant URCA (présent sur votre carte d'étudiant)

Préambule :
L'objectif de ce TP est très simple, configure un relais de messagerie pour pouvoir envoyer des
mails à partir de votre VPS. Le serveur de relais sera celui du domaine mmi-troyes.fr sur lequel
une adresse mail au format : MMI@mmi-troyes.fr (Mot de passe : Votre N° Etudiant URCA)
a été créée pour vous.
Schéma opérationnel :

en VERT l'envoi d'un email à partir de votre VPS
en ROUGE la réception d'un email de réponse depuis Internet.

Nous n'avons qu'à installer postfix sur notre serveur et à le configurer pour qu'il utilise le serveur
mail.mmi-troyes.fr comme relais

SMTP
Pour commencer, nous allons mettre en place le MTA, ainsi que le relais de messagerie vers le serveur mail
du domaine mmi-troyes.fr . Commençons par le plus simple, l'installation de Postfix :

INSTALLATION :

apt update
apt install postfix
Valider les options par défaut : SITE INTERNET et MMI.mmi-troyes.fr

CONFIGURATION DE POSTFIX :
Afin de ne pas perdre trop de temps, vous avez à votre disposition une copie du fichier main.cf
préconfiguré pour la mise en place du relais. Pour la récupérer et l'adapter à votre configuration, suivez la
procédure suivante :
cd /etc/postfix
rm main.cf
wget demos3.mmi-troyes.fr/support/main.cf
sed -i 's/HOSTS/MMI/g' main.cf

Pour mieux comprendre le relais, voyons ensemble, le contenu de ce fichier :

#Identification du Serveur
myorigin = /etc/mailname
myhostname = MMI.mmi-troyes.fr
mydestination = $myhostname, mmi-troyes.fr
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
Cette partie identifie notre serveur . On y retrouve le nom de notre machine (myhostname), ainsi que les
destinations que nous accepterons en local: Notre machine (localhost) et notre domaine (mmi-troyes.fr)

#Boites aux Lettres
mailbox_size_limit = 0
home_mailbox = Maildir/
recipient_delimiter = +
Cette partie configure le format des boites aux lettres. Nous choisissons maildir, un format qui stocke
chaque message dans un fichier individuel et gère une arborescence complète de la boite aux lettres (Boite
de Réception, Eléments envoyés, etc.). Noté qu'ici Maildir/ avec une Majuscule est le nom du dossier qui
constituera la boite aux lettres des utilisateurs.

#Reseau
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
inet_interfaces = loopback-only
inet_protocols = all
Cette partie est une des plus importante en termes de sécurité. Elle configure les interfaces et les adresses
IP qui sont autorisées à soumettre des messages à notre serveur. On voit ici que seul l'interface de
loopback et ses adresses en ipv4(127.0.0.0/8) et ipv6 ([::1]/128) est déclarée

#Relais
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
Ce dernier point finalise la partie sécurité et n'autorise que les adresses IP déclarées dans mynetworks à
utiliser notre service.

AUTHENTIFICATION SASL :
A ce stade, notre serveur fonctionne, mais pour l'instant il ne pourrait envoyer que des messages à lui-
même et nous n'avons même pas de boites aux lettres pour tester. Nous allons donc continuer notre
configuration pour qu'il soit capable d'envoyer des mails à l'extérieur.
Pour cela nous allons utiliser le serveur mail de l'URCA comme relais.

Avant de continuer, vous avez besoin de :
   • Votre identifiant MMI pour construire l'adresse mail MMI@mmi-troyes.fr
   • Votre n° d'étudiant URCA qui servira de mot de passe pour l'adresse mail.

Pour utiliser le serveur mail.mmi-troyes.fr comme relais, nous aurons besoin de nous authentifier.
L'authentification sera réalisée avec SASL (Simple Authentification and Security Protocol).
Commencez par installer le paquet libsasl2-modules.
apt install libsasl2-modules

En fonction de votre version de Debian, il est possible que le module soit déjà installé. Dans ce cas rien à faire,
continuez le TP.

Ensuite, créez un fichier sasl_passwd dans le dossier /etc/postfix/sasl avec le contenu suivant :

[mail.mmi-troyes.fr]:587     MMI@mmi-troyes.fr:URCA
Remplacez URCA par votre code étudiant URCA, et MMI par votre identifiant MMI.

Placez-vous dans le dossier /etc/postfix/sasl et exécutez la commande postmap pour créer un fichier au
format demandé par postfix. Ensuite protégez les deux fichiers en ne laissant que des droits simples pour
root.

cd /etc/postfix/sasl
postmap sasl_passwd
chmod 600 sasl_passwd*

Il ne reste plus qu'à indiquer à postfix que nous avons un serveur de relais et qu'il utilisera une
authentification sasl. Vérifiez-le fichier /etc/postfix/main.cf , vous devriez voir les lignes suivantes :

# SASL AUTHENTIFICATION
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_tls_wrappermode = no
smtp_tls_security_level = may
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_always_send_ehlo = yes
smtp_helo_timeout = 15s
smtp_rcpt_timeout = 15s

# RELAIS MMI
relayhost = [mail.mmi-troyes.fr]:587
smtputf8_autodetect_classes = verify
smtputf8_enable = yes

Avant de continuer, faites une vérification du fichier main.cf . En cas d'erreur, corrigez-les.

postfix check

RE-ECRITURE DES ADRESSES :
Pourquoi réécrire les adresses ? Principalement pour cette raison :

    1.   Notre serveur est dans le domaine mmi-troyes.fr
    2.   L'adresse local de l'utilisateur root est donc : root@mmi-troyes.fr
    3.   L'adresse local du processus apache est donc : www-data@mmi-troyes.fr
    4.   Personne ne pourra répondre à ces adresses sur mmi-troyes.fr, il faut donc que l'adresse de
         réponse à vos mails soit remplacée par votre adresse MMI@mmi-troyes.fr.
Il en est de même pour toutes les adresses qui serait générées à partir de notre serveur :

L'adresse local de l'utilisateur root est : root@mmi-troyes.fr
L'adresse local du processus apache est : www-data@mmi-troyes.fr

La première est utilisée par le système et les commandes passées via le shell.
La seconde est celle qui est utilisée par PHP lorsque vous envoyez un mail via un formulaire.

Nous allons donc créer une table de correspondance entre les adresses potentiellement utilisées en local et
votre adresse dans le domaine mmi-troyes.fr, afin que le serveur MMI accepte de relayer vos mails et
surtout que vos correspondants puissent vous répondre.

Dans le dossier /etc/postfix , créez un fichier nommé rewrite_address avec le contenu suivant :

www-data@mmi-troyes.fr                    MMI@mmi-troyes.fr
root@mmi-troyes.fr                        MMI@mmi-troyes.fr
Remplacez MMI par votre identifiant personnel

Placez-vous dans le dossier /etc/postfix et exécutez la commande postmap pour créer un fichier au format
demandé par postfix. Ensuite protégez les deux fichiers en ne laissant que des droits simples pour root.

cd /etc/postfix
postmap rewrite_address
chmod 600 rewrite_address*

Pour terminer la configuration de postfix, Vérifiez de nouveau le fichier main.cf et vérifiez que la ligne
suivante existe bien.

#REWRITE DES EMAILS
smtp_generic_maps = hash:/etc/postfix/rewrite_address

Avant de continuer, faites une vérification du fichier main.cf . En cas d'erreur, corrigez-les.

postfix check

ATTENTION : Il y a 2 'd' à address !!!
Si tout est OK. Relancez le service postfix pour prendre en compte les modifications :

service postfix restart
TEST DE LA CONFIGURATION :
Voilà notre MTA (Postfix) est entièrement configuré, il ne nous reste plus qu'à tester notre configuration en
envoyant des mails vers l'extérieur.

TEST 1 : Le compte root avec une simple commande :
Votre système dispose d'une commande très simple pour envoyer des mails : sendmail
La syntaxe est simple :

saisissez la commande : sendmail MAIL_DESTINATION (vous pouvez mettre votre adresse personnelle)
et ensuite (Le système ne revient pas au prompt du shell, il faut saisir les lignes suivantes pour continuer)

Subject : LE SUJET DU MAIL
From: MMI@mmi-troyes.fr                  (Obligatoirement votre nouvel email MMI)
VOTRE MESSAGE
. [ENTER]                                (Faites . "point" puis validez avec entrée)

Votre message est alors expédié à l'adresse MAIL_DESTINATION.

EXERCICE VPSMAIL-01 :
Faites un test d'envoi vers une adresse email de votre choix et vérifiez que le mail est bien arrivé.
Ensuite, refaites la même chose en mettant comme destinataire : prof@h205.online
et comme sujet : VPSMAIL-01 by MMI . Le contenu n'a pas d'importance, mais respectez bien le Sujet sous
peine d'être pénalisé.

TEST 2 : Apache avec un formulaire en PHP :
Second test intéressant à faire, envoyer un mail à l'aide d'un formulaire PHP.

Téléchargez et renommez dans votre dossier /home/MMI/public_html la page vpsmail-02.txt à l'aide de
la commande suivante :

cd /home/MMI/public_html
wget demos3.mmi-troyes.fr/support/vpsmail-02.txt
mv vpsmail-02.txt vpsmail-02.php

Modifiez cette page en changeant les adresses de l'expéditeur et du destinataire.

..
$from = "EXPEDITEUR";
$to = "DESTINATAIRE";
…

EXPEDITEUR doit être votre adresse MMI@mmi-troyes.fr
DESTINATAIRE une adresse email de votre choix dont vous pouvez vérifier les mails.

Ensuite, ouvrez la page avec un navigateur : MMI.mmi-troyes.fr/vpsmail-02.php
et vérifiez que vous avez bien reçu le mail à l'adresse du DESTINATAIRE . Répondez au mail

EXERCICE VPSMAIL-02 :
Ensuite, refaites la même chose en mettant comme destinataire : prof@h205.online
Le contenu n'a pas d'importance, mais respectez bien le Sujet sous peine d'être pénalisé.
N'attendez pas de réponse, ayez confiance en vous ….
Partie 2 : LE WEBMAIL
Vous avez bien reçu vos deux mails. Félicitations, votre serveur relais est opérationnel.
Mais envoyé des mails en ligne de commande ou avec des formulaires php, ce n'est pas ce qu'il y a de plus
pratique. Nous allons donc installer un Webmail sur notre machine pour avoir une interface utilisateur plus
conviviale.

CONFIGURATION APACHE :
Il ne reste qu'à installer notre Webmail. Il en existe des dizaines de disponible sur Internet tel que
RoundCube, Squirrelmail , Horde ou Zimbra. La plupart sont écrit en PHP et sont donc de simples
applications qui exploitent les fonctions mail du langage. Vous pourriez donc très bien écrire votre propre
Webmail . Pour notre exercice, nous allons installer Rainloop qui offre une interface minimaliste, mais
assez moderne qui suffira largement à nos besoins.

Comme toute application web, notre Webmail sera appelé via un navigateur et nécessite donc d'être
configuré avec notre service web : Apache.

L'objectif est de pouvoir appeler notre Webmail par l'URL :
MMI.h205.online/webmail , MMI.mmi-troyes/webmail ou même VPS/webmail .
Pour résumé il faut que le /webmail renvoi sur notre application quelle que soit l'URL principale du site
(qui dépend elle d'une résolution DNS). Dans la configuration Apache c'est ce qu'on appelle un Alias.

Les fichiers de configuration pour les Alias se trouvent dans /etc/apache2/conf-available . Dans ce dossier
créez un fichier nommé rainloop.conf avec le contenu suivant :

# Rainloop Apache configuration – rainloop.conf
Alias /webmail /var/www/rainloop

Options SymLinksIfOwnerMatch
        Options -Indexes
DirectoryIndex index.php
AllowOverride All

        Deny from all

Comme vous pouvez le voir, le fichier indique que notre application se trouvera dans un dossier nommé
/var/www/rainloop. Il nous faut donc créer ce dossier avant d'activer la configuration.

mkdir /var/www/rainloop
a2enconf rainloop
systemctl reload apache2
Si vous avez des erreurs au rechargement d'Apache, relisez votre fichier rainloop.conf.

INSTALLATION DU WEBMAIL :
Passons maintenant à l'installation de Rainloop. Suivez simplement les instructions suivantes :
cd /var/www/rainloop
wget https://www.rainloop.net/repository/webmail/rainloop-community-latest.zip
apt install unzip
unzip rainloop-community-latest.zip
rm rainloop-community-latest.zip
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chown -R www-data.www-data .
ATTENTION aux points .

En résumé, nous avons téléchargé et décompressé l'application dans le dossier rainloop .Puis nous avons
modifié les droits d'accès pour autoriser apache (www-data) et donc php à manipuler les fichiers. Le code
est Open-Source vous pouvez donc le consulter et même le modifier (sous certaines conditions) si vous le
désirez.

Pour vérifier que tout est OK, ouvrez simplement votre navigateur à l'adresse : MMI.h205.online/webmail
pour vérifier que la page d'accueil de Rainloop s'affiche bien.
Dans le cas contraire, reprenez les étapes précédentes.

CONFIGURATION DU WEBMAIL :
Notre webmail est installé, dernière étape avant de pouvoir l'utiliser : la configuration.
Pour cela, ouvrez votre navigateur à l'adresse : MMI.h205.online/webmail/?admin

Le login est : admin
Le mot de passe : 12345

IMPORTANT :
La première chose à faire est de changer le mot de passe. (Sécurité dans le menu à gauche)
Mettez celui de votre choix, mais trop simple quand même. Vous êtes sur Internet !!

Ensuite, après avoir passé l'interface en Français et éventuellement changé le Thème, cliquez sur Domaine
pour continuer la configuration.

Ajouter le domaine mmi-troyes.fr et supprimer tous les autres.
Configurez votre domaine comme l'exemple ci-dessous et faites                pour valider votre
configuration :

LES POINTS IMPORTANTS :

   •   Le Nom du domaine est : mmi-troyes.fr
   •   Le Serveur IMAP est : mail.mmi-troyes.fr (c'est lui qui stocke vos mails) – Port 993 (SSL/TLS)
   •   Le Serveur SMTP est votre serveur : 127.0.0.1 – Port 25
   •   Aucune sécurité pour le SMTP (on reste en local)
   •   Décochez TOUTES les options pour SMTP, il n'y pas d'authentification SMTP en local.
UTILISATION ET VALIDATION DU WEBMAIL :
Pour tester votre Webmail. Ouvrez l'URL : MMI.h205.online/webmail
et connectez-vous avec votre adresse MMI@mmi-troyes.fr et votre code étudiant

Vous devriez voir votre réponse au mail du test2.
Pour tester envoyer vous un mail sur une de vos adresses et vérifier que vous l'avez bien reçue.

EXERCICE VPSMAIL-03 :
Ensuite, refaites la même chose en mettant comme destinataire : prof@h205.online
et comme sujet : VPSMAIL-03 by MMI . Le contenu n'a pas d'importance, mais respectez bien le Sujet sous
peine d'être pénalisé.

                                                                                   IMPORTANT
Le serveur mail.mmi-troyes est là uniquement pour servir de relais de messagerie dans la réalisation des
travaux pratiques ou des projets fait en MMI !! Tout autre usage des adresses mails est STRICTEMENT
INTERDIT !! Si des abus sont constatés (spoofing, trop d'envoi etc ..) votre adresse mail sera supprimée
du serveur et vous devrez vous débrouiller pour relayer vos mails par vous-même . Pour information
l'URCA n'accepte plus les relais de mails via ses serveurs .

Delivered-To: pgommery@gmail.com
Received: by 2002:a0c:aa05:0:0:0:0:0 with SMTP id d5csp797987qvb;
     Tue, 16 Nov 2021 09:28:00 -0800 (PST)
X-Google-Smtp-Source: ABdhPJxUtFj8F8muya/2X6SUisT4h7CxeCNhY59SaHmCMdn4O+vyrqGM0TQkOAzNw7LqP39Uoc07
X-Received: by 2002:a05:6402:430e:: with SMTP id m14mr12406094edc.93.1637083680331;
     Tue, 16 Nov 2021 09:28:00 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1637083680; cv=none;
     d=google.com; s=arc-20160816;
     …
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
    …
ARC-Authentication-Results: i=1; mx.google.com;
    spf=pass (google.com: best guess record for domain of prof@mmi-troyes.fr designates 154.49.211.178 as permitted sender) smtp.mailfrom=prof@mmi-troyes.fr
Return-Path: 
Received: from demoprof.mmi-troyes.fr (demoprof.mmi-troyes.fr. [154.49.211.178])
     by mx.google.com with ESMTPS id g14si50331208edz.101.2021.11.16.09.28.00
     for 
     (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
     Tue, 16 Nov 2021 09:28:00 -0800 (PST)
Received-SPF: pass (google.com: best guess record for domain of prof@mmi-troyes.fr designates 154.49.211.178 as permitted sender) client-ip=154.49.211.178;
Authentication-Results: mx.google.com;
    spf=pass (google.com: best guess record for domain of prof@mmi-troyes.fr designates 154.49.211.178 as permitted sender) smtp.mailfrom=prof@mmi-troyes.fr
Received: from demos3.mmi-troyes.fr (unknown [89.234.180.225]) by demoprof.mmi-troyes.fr (Postfix) with ESMTPSA id DAFEF14AF for ; Tue, 16 Nov 2021 18:27:59 +0100 (CET)
Received: from demos3.h205.online (localhost [127.0.0.1]) by demos3.mmi-troyes.fr (Postfix) with ESMTP id 6D3DF1A16 for ; Tue, 16 Nov 2021 18:27:56 +0100 (CET)
MIME-Version: 1.0
Date: Tue, 16 Nov 2021 17:27:56 +0000
Content-Type: multipart/alternative; boundary="--=_RainLoop_262_901982078.1637083676"
X-Mailer: RainLoop/1.16.0
From: prof@mmi-troyes.fr
Message-ID: 
Subject: test local sans auth
To: pgommery@gmail.com

----=_RainLoop_262_901982078.1637083676
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

ok
Exemple de Réception d'un mail sur Gmail. On voit très bien de quelle machine est partie le message !!!!

UN PEU DE NETTOYAGE :
Une fois que tout fonctionne, supprimez les fichiers suivants qui sont inutiles et pourraient être mal
exploités.

rm /home/MMI/public_html/vpsmail-02.php
rm /etc/postfix/rewrite_address
rm /etc/postfix/sasl/sasl_passwd
Vous pouvez aussi lire