En cours, on nous a demandé de créer un serveur de mail basique sans authentification. J’ai utilisé PostFix sous Debian Jessie pour ce que je vais vous montrer après. Je vous déconseille fortement de laisser un serveur de mail par défaut sans authentification sur un serveur connecté à internet, des bots tournent sur le net pour repérer les serveurs SMTP sans auth pour envoyer du spam.
Pour ce cours tutoriel, nous allons juste voir comment mettre en place un serveur de mail en local, comment consulter ses e-mails et comment se connecter à un serveur de mail en telnet.
Installation du serveur mail Postfix
J’ai donc installé le paquet postfix directement depuis les dépôts officiels.
aptitude install postfix
Connexion au serveur de mail Postfix via telnet
A noter que j’ai simplement virtualisé une station Debian avec Virtualbox. Un pont sur la carte réseau m’a permis de faire communiquer le pc hôte et la station virtuelle.
Récupérer l’adresse ip du serveur Postfix
ifconfig
Connaître le nom du domaine de la station Debian
cat /etc/hostname
Connexion Telnet
Voici le résultat de mon interraction avec le serveur de mail :
sacha@debian:~$ telnet 192.168.1.82 25
Trying 192.168.1.82...
Connected to 192.168.1.82.
Escape character is '^]'.
220 debian ESMTP Postfix (Debian/GNU)
helo debian
250 debian
mail from: <contact@security-helpzone.com>
250 2.1.0 Ok
rcpt to: <sacha@mail.fr>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
From: SHZ <contact@security-helpzone.com>
To: Sacha <sacha@mail.fr>
Subject: Testing message from anonymous mail server
#SHZ
.
250 2.0.0 Ok: queued as E8A4C521
quit
221 2.0.0 Bye
Connection closed by foreign host.
Pour de nombreuses raisons, ce mail atteri dans mes spams. Par exemple si j’essaye d’envoyer un e-mail avec ce serveur sur l’adresse de contact du site :
Oct 21 13:42:57 debian postfix/smtp[581]: E8A4C521:
to=<contact@security-helpzone.com>,
relay=plesk.cubis-helios.com[91.121.49.59]:25,
delay=0.46, delays=0/0/0.33/0.13, dsn=4.0.0,
status=deferred (host plesk.cubis-helios.com[91.121.49.59] said:
451 http://www.spamhaus.org/query/bl?ip=109.12.169.90
(in reply to RCPT TO command))
Le serveur mail de Cubis-Helios joue bien son rôle et détecte le courriel en tant que spam. Ce peut être la même chose avec Hotmail, Gmail… Car si vous êtes chez vous, vous avez de forte chance d’avoir une adresse IP dynamique.
Envoyer un mail à un utilisateur sur le domaine
Il ne vous reste plus qu’à envoyer un email à un utilisateur du domaine (pour créer un utilisateur : man adduser).
sacha@debian:~$ telnet 192.168.1.82 25
Trying 192.168.1.82...
Connected to 192.168.1.82.
Escape character is '^]'.
220 debian ESMTP Postfix (Debian/GNU)
mail from: <sacha@debian>
250 2.1.0 Ok
rcpt to: <root@debian>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
test
.
250 2.0.0 Ok: queued as 0549D26F
Dans les logs, on voit que si on essaye d’envoyer un message sur le domaine.
Oct 21 13:50:47 debian postfix/cleanup[1405]: 0549D26F: message-id=<20151021125047.0549D26F@debian>
Oct 21 13:50:47 debian postfix/qmgr[554]: 0549D26F: from=<root@debian>, size=2498, nrcpt=1 (queue active)
Oct 21 13:50:47 debian postfix/local[1411]: 0549D26F: to=<sacha@debian>, relay=local, delay=0.02, delays=0/0.01/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
Oct 21 13:50:47 debian postfix/qmgr[554]: 0549D26F: removed
Pour rappel les logs e-mails se trouvent dans :
tail /var/log/mail.log
Récupérer ses e-mails en ligne de commande
On récupère ses e-mails avec la commande suivante :
cat /var/mail/${USER}
On peut voir que l’e-mail a été reçu :
From sacha@debian Wed Oct 21 13:56:46 2015
Return-Path: <sacha@debian>
X-Original-To: root@debian
Delivered-To: root@debian
Received: from unknown (unknown [192.168.1.89])
by debian (Postfix) with SMTP id 71EDE26A
for <root@debian>; Wed, 21 Oct 2015 13:56:26 +0100 (BST)
test
Changer les informations de l’email
Vous pouvez changer les informations affichées dans le corps de l’e-mail (c’est ainsi que les spammeurs procèdent). Ainsi avec le code suivant :
sacha@debian:~$ telnet 192.168.1.82 25
Trying 192.168.1.82...
Connected to 192.168.1.82.
Escape character is '^]'.
220 debian ESMTP Postfix (Debian/GNU)
mail from: <sacha@debian>
250 2.1.0 Ok
rcpt to: <root@debian>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
From: Sacha <sacha@mail.fr>
To: You <you@mail.fr>
Subject: Test
test
.
250 2.0.0 Ok: queued as D84EA26F
quit
221 2.0.0 Bye
Connection closed by foreign host.
On reçoit ce message :
From sacha@debian Wed Oct 21 14:15:13 2015
Return-Path: <sacha@debian>
X-Original-To: root@debian
Delivered-To: root@debian
Received: from unknown (unknown [192.168.1.89])
by debian (Postfix) with SMTP id D84EA26F
for <root@debian>; Wed, 21 Oct 2015 14:14:20 +0100 (BST)
From: Sacha <sacha@mail.fr>
To: You <you@mail.fr>
Subject: Test
test
Liste des commandes telnet
On utilise la commande telnet sur le port 25 de la machine cible pour accéder à son serveur de mail.
sacha@debian:~$ telnet 192.168.1.82 25
Les commandes suivantes se tapent dans le terminal telnet.
mail from: <sacha@debian>
Permet de savoir d’où vient le mail (ce champs peut être falsifié).
rcpt to: <root@debian>
L’adresse e-mail de notre destinataire.
data
Permet de taper le corps du message.
From: Sacha <sacha@mail.fr>
De qui vient le message.
To: You <you@mail.fr>
A qui va le message.
Notez que ces informations peuvent ne pas être valides, tout ce qui est dans le corps du message peut être faux.
Subject: Test
Le sujet de l’e-mail.
test
Le corps de l’e-mail
.
Le point sert pour sortir de la saisie du corps et envoyer le mail.