Essais divers
 27/04/2007
 Christian CALECA 
Liste des cours

Accueil ] [ Daemontools et ucspi-tcp ] [ Qmail & co. ] [ Vpopmail ] [ Essais divers ] [ courier-imap ] [ POP3 ] [ outils admin ] [ Ezmlm-idx ] [ qmailadmin ] [ Filtrage des mails ] [ Livraison locale ] [ Conclusions ]


Le tour du propriétaire

Voir toutes les subtilités de Qmail serait long, fastidieux et peut-être même inutile, du moins dans un premier temps. Voyons tout de même quelques points importants, qui aideront à une meilleure compréhension de notre installation, avant de passer aux autres accessoires, comme ezmlm, courier-imap etc.

Utilisation purement locale

Notre messagerie est opérationnelle. Vérifions ceci en envoyant un message au postmaster de maison.mrs :

mail postmaster@maison.mrs
Subject: test qmail-vpopmail
Ca marche !
.
Cc:

Et allons voir dans /home/vpopmail/domains/maison.mrs/postmaster/Maildir/new :

ls /home/vpopmail/domains/maison.mrs/postmaster/Maildir/new/
1140885428.12364.janus,S=329

cat /home/vpopmail/domains/maison.mrs/postmaster/Maildir/new/1140885428.12364.janus\,S\=329
Return-Path: <root@janus.maison.mrs>
Delivered-To: postmaster@maison.mrs
Received: (qmail 12362 invoked by uid 0); 25 Feb 2006 16:37:08 -0000
Date: 25 Feb 2006 16:37:08 -0000
Message-ID: <20060225163708.12361.qmail@janus.maison.mrs>
From: root@janus.maison.mrs
To: postmaster@maison.mrs
Subject: test qmail-vpopmail

Ca marche !

Et voilà le travail. Bien sûr, le message est parti de janus pour arriver à janus. Pour que les messages puissent arriver de l'extérieur, il faudra que janus soit enregistré comme MX sur les DNS qui gèrent le domaine maison.mrs.

Ne pas oublier les alias

Il est très fortement conseillé de prévoir que "root", "postmaster" et "mailer-daemon" puissent recevoir localement des messages. Beaucoup d'applications utilisent la messagerie pour notifier l'administrateur de tel ou tel événement, et ces trois comptes de messagerie doivent être fonctionnels, pour éviter d'avoir des messages qui se perdent ("bounce").

Il est d'usage, pour résoudre ce problème, d'utiliser un unique compte, appartenant à un utilisateur référencé sur la machine, qui recevra les messages à destination de ces trois (parfois plus) utilisateurs particuliers. Le principe est de rediriger plusieurs adresses sur une seule. C'est le rôle du mécanisme des alias de réaliser cette opération.

Pour éviter de vilains "bounce", nous dirons que c'est "prof@maison.mrs" qui sera l'administrateur de tout ce système, que c'est donc lui qui devra recevoir les messages adressés à "root", "postmaster" et "mailer-daemon". Nous allons créer quelques alias en conséquence.

Les alias se définissent en créant dans /var/qmail/alias des fichiers dont le nom est de la forme :

.qmail-<nom du compte à rediriger>

et qui contienne le nom du compte réel. Il suffira par exemple de faire ceci :

echo prof@maison.mrs > /var/qmail/alias/.qmail-root
echo prof@maison.mrs > /var/qmail/alias/.qmail-mailer-daemon
echo prof@maison.mrs > /var/qmail/alias/.qmail-postmaster

Enfin, attribuons des droits corrects à ces fichiers :

chmod 644 /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon

Maintenant, tout message envoyé à l'un de ces trois personnages se retrouvera dans la boîte aux lettres de prof. Démonstration :

# mail root
Subject: test des alias
ça marche !
.
Cc: mailer-daemon postmaster

Voyons dans la boîte de "prof" :

cd /home/vpopmail/domains/maison.mrs/prof/Maildir/new/
ls
1140969372.6724.janus,S=490 1140969372.6726.janus,S=484 1140969372.6728.janus,S=493

3 nouveaux messages :

cat 1140969372.6724.janus\,S\=490

Return-Path: <root@janus.maison.mrs>
Delivered-To: prof@maison.mrs
Received: (qmail 6721 invoked by alias); 26 Feb 2006 15:56:12 -0000
Delivered-To: postmaster@janus.maison.mrs
Received: (qmail 6713 invoked by uid 0); 26 Feb 2006 15:56:12 -0000
Date: 26 Feb 2006 15:56:12 -0000
Message-ID: <20060226155612.6712.qmail@janus.maison.mrs>
From: root@janus.maison.mrs
To: root@janus.maison.mrs
Subject: test des alias
Cc: mailer-daemon@janus.maison.mrs, postmaster@janus.maison.mrs

ça marche !
cat 1140969372.6726.janus,S=484

Return-Path: <root@janus.maison.mrs>
Delivered-To: prof@maison.mrs
Received: (qmail 6722 invoked by alias); 26 Feb 2006 15:56:12 -0000
Delivered-To: root@janus.maison.mrs
Received: (qmail 6713 invoked by uid 0); 26 Feb 2006 15:56:12 -0000
Date: 26 Feb 2006 15:56:12 -0000
Message-ID: <20060226155612.6712.qmail@janus.maison.mrs>
From: root@janus.maison.mrs
To: root@janus.maison.mrs
Subject: test des alias
Cc: mailer-daemon@janus.maison.mrs, postmaster@janus.maison.mrs

ça marche !
cat 1140969372.6728.janus,S=493

Return-Path: <root@janus.maison.mrs>
Delivered-To: prof@maison.mrs
Received: (qmail 6720 invoked by alias); 26 Feb 2006 15:56:12 -0000
Delivered-To: mailer-daemon@janus.maison.mrs
Received: (qmail 6713 invoked by uid 0); 26 Feb 2006 15:56:12 -0000
Date: 26 Feb 2006 15:56:12 -0000
Message-ID: <20060226155612.6712.qmail@janus.maison.mrs>
From: root@janus.maison.mrs
To: root@janus.maison.mrs
Subject: test des alias
Cc: mailer-daemon@janus.maison.mrs, postmaster@janus.maison.mrs

ça marche !

Nous le retrouvons trois fois. Normal, à cause des "Cc:".

Remarque à propos des alias

Ce qui vient d'être fait peut paraître ambigu. En effet, nous avons manipulé des alias "système". Entendez par là que :

Nous avons redirigé ces comptes sur des comptes du domaine "virtuel" maison.mrs. Nous aurions pu créer tout aussi bien un domaine virtuel "test.com" et rediriger les comptes système @janus.maison.mrs vers des comptes @test.com, ça aurait fonctionné de la même manière.

Il ne faut pas confondre avec les alias (ou redirections) que l'on pourra créer, par exemple avec qmailadmin, ou avec la commande valias de Vpopmail. Ces alias se présentent eux aussi sous la forme d'un fichier .qmail-<alias>, mais ceux-ci seront situés dans /home/vpopmail/domains/<domaine_concerné>

Et les logs ?

Voyons ce que donnent les logs à la mode multilog.

Envoi d'un message quelconque à "prof", puis lecture de /service/qmail-send/log/main/current :

cd /var/log/qmail
cat current
@400000004401b6a637424f14 new msg 4198711
@400000004401b6a637426e54 info msg 4198711: bytes 341 from <root@janus.maison.mrs> qp 6619 uid 1005
@400000004401b6a63794cc44 starting delivery 2: msg 4198711 to local maison.mrs-prof@maison.mrs
@400000004401b6a63794ef6c status: local 2/10 remote 0/20
@400000004401b6a63794fb24 delivery 1: success: did_0+1+0/qp_6619/
@400000004401b6a637c9d664 status: local 1/10 remote 0/20
@400000004401b6a637c9f1bc end msg 4198710
@400000004401b6a63aafa0d4 delivery 2: success: did_0+0+1/
@400000004401b6a63aafc3fc status: local 0/10 remote 0/20
@400000004401b6a63aafd39c end msg 4198711
@400000004401cfa6053ae3dc new msg 4198710
@400000004401cfa6053b031c info msg 4198710: bytes 313 from <root@janus.maison.mrs> qp 6713 uid 0
@400000004401cfa605c2c11c starting delivery 3: msg 4198710 to local mailer-daemon@janus.maison.mrs
@400000004401cfa605c5709c status: local 1/10 remote 0/20
@400000004401cfa605d6cdec starting delivery 4: msg 4198710 to local postmaster@janus.maison.mrs
@400000004401cfa605d965fc status: local 2/10 remote 0/20
@400000004401cfa605e9a624 starting delivery 5: msg 4198710 to local root@janus.maison.mrs
@400000004401cfa605ec421c status: local 3/10 remote 0/20
@400000004401cfa607d07724 new msg 4198711
@400000004401cfa607d09a4c info msg 4198711: bytes 423 from <root@janus.maison.mrs> qp 6721 uid 1005
@400000004401cfa608a9ef04 starting delivery 6: msg 4198711 to local maison.mrs-prof@maison.mrs
@400000004401cfa608aa122c status: local 4/10 remote 0/20
@400000004401cfa608aa21cc delivery 4: success: did_0+1+0/qp_6721/
@400000004401cfa608aa316c status: local 3/10 remote 0/20
@400000004401cfa608aa410c delivery 5: success: did_0+1+0/qp_6722/
@400000004401cfa608aa4cc4 status: local 2/10 remote 0/20
@400000004401cfa608aa5c64 delivery 3: success: did_0+1+0/qp_6720/
@400000004401cfa608aa6c04 status: local 1/10 remote 0/20
@400000004401cfa608aad194 end msg 4198710
@400000004401cfa608c06504 new msg 4198712
@400000004401cfa608c0788c info msg 4198712: bytes 417 from <root@janus.maison.mrs> qp 6722 uid 1005
@400000004401cfa60928fa74 starting delivery 7: msg 4198712 to local maison.mrs-prof@maison.mrs
@400000004401cfa60929256c status: local 2/10 remote 0/20
@400000004401cfa60929350c new msg 4198713
@400000004401cfa6092940c4 info msg 4198713: bytes 426 from <root@janus.maison.mrs> qp 6720 uid 1005
@400000004401cfa6097a9514 starting delivery 8: msg 4198713 to local maison.mrs-prof@maison.mrs
@400000004401cfa6097ab83c status: local 3/10 remote 0/20
@400000004401cfa60baab79c delivery 6: success: did_0+0+1/
@400000004401cfa60bb4b634 status: local 2/10 remote 0/20
@400000004401cfa60bba673c end msg 4198711
@400000004401cfa60bc7675c delivery 7: success: did_0+0+1/
@400000004401cfa60bcea2ec status: local 1/10 remote 0/20
@400000004401cfa60bd5617c end msg 4198712
@400000004401cfa60c25851c delivery 8: success: did_0+0+1/
@400000004401cfa60c2d8fb4 status: local 0/10 remote 0/20
@400000004401cfa60c332d34 end msg 4198713

Ce sont des logs bien détaillés, mais que représentent ces choses, dans la première colonne ?

Ce sont des "timestamp" donnés dans le format TAI (Temps Atomique International). Si vous voulez absolument savoir ce que cela représente exactement, consultez la page :http://cr.yp.to/libtai/tai64.html.

On aurait espéré pouvoir lire la date de façon compréhensible... Heureusement tout de même qu'il y a dans les daemontools l'utilitaire tai64nlocal qui va nous aider :

cat current | tai64nlocal
2006-02-26 16:56:12.087745500 new msg 4198710
2006-02-26 16:56:12.087753500 info msg 4198710: bytes 313 from <root@janus.maison.mrs> qp 6713 uid 0
2006-02-26 16:56:12.096649500 starting delivery 3: msg 4198710 to local mailer-daemon@janus.maison.mrs
2006-02-26 16:56:12.096825500 status: local 1/10 remote 0/20
2006-02-26 16:56:12.097963500 starting delivery 4: msg 4198710 to local postmaster@janus.maison.mrs
2006-02-26 16:56:12.098133500 status: local 2/10 remote 0/20
2006-02-26 16:56:12.099198500 starting delivery 5: msg 4198710 to local root@janus.maison.mrs
2006-02-26 16:56:12.099369500 status: local 3/10 remote 0/20
2006-02-26 16:56:12.131102500 new msg 4198711
2006-02-26 16:56:12.131111500 info msg 4198711: bytes 423 from <root@janus.maison.mrs> qp 6721 uid 1005
2006-02-26 16:56:12.145354500 starting delivery 6: msg 4198711 to local maison.mrs-prof@maison.mrs
2006-02-26 16:56:12.145363500 status: local 4/10 remote 0/20
2006-02-26 16:56:12.145367500 delivery 4: success: did_0+1+0/qp_6721/
2006-02-26 16:56:12.145371500 status: local 3/10 remote 0/20
2006-02-26 16:56:12.145375500 delivery 5: success: did_0+1+0/qp_6722/
2006-02-26 16:56:12.145378500 status: local 2/10 remote 0/20
2006-02-26 16:56:12.145382500 delivery 3: success: did_0+1+0/qp_6720/
2006-02-26 16:56:12.145386500 status: local 1/10 remote 0/20
2006-02-26 16:56:12.145412500 end msg 4198710
2006-02-26 16:56:12.146826500 new msg 4198712
2006-02-26 16:56:12.146831500 info msg 4198712: bytes 417 from <root@janus.maison.mrs> qp 6722 uid 1005
2006-02-26 16:56:12.153680500 starting delivery 7: msg 4198712 to local maison.mrs-prof@maison.mrs
2006-02-26 16:56:12.153691500 status: local 2/10 remote 0/20
2006-02-26 16:56:12.153695500 new msg 4198713
2006-02-26 16:56:12.153698500 info msg 4198713: bytes 426 from <root@janus.maison.mrs> qp 6720 uid 1005
2006-02-26 16:56:12.159028500 starting delivery 8: msg 4198713 to local maison.mrs-prof@maison.mrs
2006-02-26 16:56:12.159037500 status: local 3/10 remote 0/20
2006-02-26 16:56:12.195737500 delivery 6: success: did_0+0+1/
2006-02-26 16:56:12.196392500 status: local 2/10 remote 0/20
2006-02-26 16:56:12.196765500 end msg 4198711
2006-02-26 16:56:12.197617500 delivery 7: success: did_0+0+1/
2006-02-26 16:56:12.198091500 status: local 1/10 remote 0/20
2006-02-26 16:56:12.198533500 end msg 4198712
2006-02-26 16:56:12.203785500 delivery 8: success: did_0+0+1/
2006-02-26 16:56:12.204312500 status: local 0/10 remote 0/20
2006-02-26 16:56:12.204680500 end msg 4198713

Bien qu'au format US, c'est tout de même bien plus lisible. Notez la précision mais ne riez pas, Qmail travaille très vite et une grande précision dans le "timestamp" peut s'avérer utile pour le dépouillement des logs.

Tester qmail-smtpd

Pour ceci, il faut s'adresser au serveur par le biais, par exemple, d'un client de messagerie (MUA) traditionnel, un Thunderbird, par exemple.

Nous n'avons pas ceci sur janus (c'est une machine sans interface graphique), mais nous avons cela sur d'autres machines du réseau local. Il suffit, sur l'une d'entre elles, de configurer notre oiseau du tonnerre pour qu'il envoie les messages par janus.maison.mrs.

Premier test : envoi d'un message à prof@maison.mrs.

Résultat :

erreur

Indisponible ? Non, nous avons vu avec netstat que le port smtp est à l'écoute.

Il refuse les connexions ? Oui. N'oublions pas que qmail-smtpd passe par tcpserver, qui lui-même n'accorde le passage qu'en fonction de ce qui est écrit dans /etc/tcp.smtp. Hors :

cat /home/vpopmail/etc/tcp.smtp
127.0.0.1:allow,RELAYCLIENT=""
:deny

En toute logique, il n'y a que localhost qui passe. Il faut donc modifier les règles de la façon suivante :

127.0.0.1:allow,RELAYCLIENT=""
192.168.0.:allow
:deny

La seconde ligne veut dire que n'importe qui du réseau local (192.168.0.0/24 dans l'exemple) peut entrer sur le serveur SMTP, mais sans le flag "RELAYCLIENT". Les hôtes du réseau local ne peuvent donc pas faire relayer leurs messages vers l'extérieur.

N'oublions pas qu'il faut mettre à jour le fichier /home/vpopmail/etc/tcp.smtp.cdb. Comme nous avons installé le script qmailctl, autant l'utiliser :

qmailctl cdb

Second test : renvoi du même message. Il passe et on le retrouve bien dans la boîte du destinataire :

Return-Path: <prof@maison.mrs>
Delivered-To: postmaster@maison.mrs
Received: (qmail 2289 invoked from network); 19 Apr 2007 10:56:32 +0200
Received: from pchris2.maison.mrs (HELO ?192.168.0.15?) (192.168.0.15)
  by qmail.maison.mrs with SMTP; 19 Apr 2007 10:56:32 +0200
Received-SPF: fail (qmail.maison.mrs: SPF record at maison.mrs does not designate 192.168.0.15 as permitted sender)
Message-ID: <46272EBF.9060005@maison.mrs>
Date: Thu, 19 Apr 2007 10:56:31 +0200
From: christian Caleca <prof@maison.mrs>
User-Agent: Thunderbird 1.5.0.10 (X11/20070306)
MIME-Version: 1.0
To:  postmaster <postmaster@maison.mrs>
Subject: test smtp
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

ça passe ?

Observons l'en-tête SPF. Dans ce premier exemple, c'est un échec. Tout simplement parce que le DNS qui fait autorité pour le domaine maison.mrs ne fournit pas l'information attendue.

Si nous ajoutons dans le fichier de la zone maison.mrs la ligne suivante :

maison.mrs. IN TXT "v=spf1 ip4:192.168.0.0/24 ~all"

A l'essai suivant, nous obtenons ceci :

Return-Path: <prof@maison.mrs>
Delivered-To: postmaster@maison.mrs
Received: (qmail 2352 invoked from network); 19 Apr 2007 11:44:28 +0200
Received: from pchris2.maison.mrs (HELO ?192.168.0.15?) (192.168.0.15)
  by qmail.maison.mrs with SMTP; 19 Apr 2007 11:44:28 +0200
Received-SPF: pass (qmail.maison.mrs: SPF record at maison.mrs designates 192.168.0.15 as permitted sender)
Message-ID: <462739FD.4050700@maison.mrs>
Date: Thu, 19 Apr 2007 11:44:29 +0200
From: christian Caleca <prof@maison.mrs>
User-Agent: Thunderbird 1.5.0.10 (X11/20070306)
MIME-Version: 1.0
To: postmaster <postmaster@maison.mrs>
Subject: retest smtp
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

ça passe.

Cette fois-ci c'est un succès. Mais comme cette manipulation le démontre, il faut agir sur le DNS qui gère le domaine de l'émetteur.

Pour aller encore plus loin, observons avec un sniffeur ce qu'il se passe lorsque le MUA contacte notre qmail pour envoyer un message :

No.   Source            Destination       Proto Info
  1   192.168.0.15      192.168.0.128     TCP   1774 > smtp [SYN] Seq=0 Len=0 MSS=1460 
  2   AlliedTe_3a:8c:cd Broadcast         ARP   Who has 192.168.0.15?  Tell 192.168.0.128
  3   D-Link_48:2b:84   AlliedTe_3a:8c:cd ARP   192.168.0.15 is at 00:05:5d:48:2b:84
  4   192.168.0.128     192.168.0.15      TCP   smtp > 1774 [SYN, ACK] Seq=0 Ack=1 Win=46336 Len=0 MSS=1460 
  5   192.168.0.15      192.168.0.128     TCP   1774 > smtp [ACK] Seq=1 Ack=1 Win=5840 Len=0 
  6   192.168.0.128     192.168.0.250     DNS   Standard query PTR 15.0.168.192.in-addr.arpa
  7   192.168.0.250     192.168.0.128     DNS   Standard query response PTR pchris2.maison.mrs
  8   192.168.0.128     192.168.0.15      SMTP  Response: 220 qmail.maison.mrs ESMTP
  9   192.168.0.15      192.168.0.128     TCP   1774 > smtp [ACK] Seq=1 Ack=29 Win=5840 Len=0 
 10   192.168.0.15      192.168.0.128     SMTP  Command: EHLO [192.168.0.15]
 11   192.168.0.128     192.168.0.15      TCP   smtp > 1774 [ACK] Seq=29 Ack=22 Win=5792 Len=0 
 12   192.168.0.128     192.168.0.15      SMTP  Response: 250-qmail.maison.mrs
 13   192.168.0.15      192.168.0.128     SMTP  Command: MAIL FROM:<prof@maison.mrs> SIZE=384
 14   192.168.0.128     192.168.0.250     DNS   Standard query MX maison.mrs
 15   192.168.0.250     192.168.0.128     DNS   Standard query response MX 10 qmail.maison.mrs
 16   192.168.0.128     192.168.0.250     DNS   Standard query A qmail.maison.mrs
 17   192.168.0.250     192.168.0.128     DNS   Standard query response A 192.168.0.128
 18   192.168.0.128     192.168.0.250     DNS   Standard query TXT maison.mrs
 19   192.168.0.250     192.168.0.128     DNS   Standard query response TXT
 20   192.168.0.128     192.168.0.15      SMTP  Response: 250 ok
 21   192.168.0.15      192.168.0.128     SMTP  Command: RCPT TO:<postmaster@maison.mrs>
 22   192.168.0.128     192.168.0.15      SMTP  Response: 250 ok
 23   192.168.0.15      192.168.0.128     SMTP  Command: DATA
 24   192.168.0.128     192.168.0.15      SMTP  Response: 354 go ahead
 25   192.168.0.15      192.168.0.128     SMTP  Message Body
 26   192.168.0.128     192.168.0.15      SMTP  Response: 250 ok 1176984401 qp 2591
 27   192.168.0.15      192.168.0.128     SMTP  Message Body
 28   192.168.0.128     192.168.0.15      SMTP  Response: 221 qmail.maison.mrs
 29   192.168.0.128     192.168.0.15      TCP   smtp > 1774 [FIN, ACK] Seq=186 Ack=492 Win=6864 Len=0 
 30   192.168.0.15      192.168.0.128     TCP   1774 > smtp [ACK] Seq=492 Ack=187 Win=5840 Len=0 
 31   192.168.0.15      192.168.0.128     TCP   1774 > smtp [FIN, ACK] Seq=492 Ack=187 Win=5840 Len=0 
 32   192.168.0.128     192.168.0.15      TCP   smtp > 1774 [ACK] Seq=187 Ack=493 Win=6864 Len=0 

Les lignes 14 et 15 concernent le contrôle de l'existence d'un MX pour le domaine de l'émetteur (voir note 5), tandis que les lignes 18 et 19 sont relatives à SPF (voir note 6).

Voici les détails intéressants de ces trames :

Frame 14 (70 bytes on wire, 70 bytes captured)
...
Domain Name System (query)
...
    Queries
        maison.mrs: type MX, class IN
            Name: maison.mrs
            Type: MX (Mail exchange)
            Class: IN (0x0001)

Frame 15 (149 bytes on wire, 149 bytes captured)
...
Domain Name System (response)
...
    Answers
        maison.mrs: type MX, class IN, preference 10, mx janus.maison.mrs
            Name: maison.mrs
            Type: MX (Mail exchange)
            Class: IN (0x0001)
            Time to live: 10 hours, 40 minutes
            Data length: 10
            Preference: 10
            Mail exchange: janus.maison.mrs
...

Il y a bien un MX enregistré dans notre domaine.

Frame 18 (70 bytes on wire, 70 bytes captured)
...
Domain Name System (query)
...
    Queries
        maison.mrs: type TXT, class IN
            Name: maison.mrs
            Type: TXT (Text strings)
            Class: IN (0x0001)

Frame 19 (154 bytes on wire, 154 bytes captured)
...
Domain Name System (response)
...
    Answers
        maison.mrs: type TXT, class IN
            Name: maison.mrs
            Type: TXT (Text strings)
            Class: IN (0x0001)
            Time to live: 10 hours, 40 minutes
            Data length: 31
            Text: v=spf1 ip4:192.168.0.0/24 ~all
...

Il y a bien dans le DNS de notre domaine un champ TEXT qui indique quelles adresses IP sont autorisées à envoyer des messages dans notre réseau.

Oui, mais sommes-nous bien certains que les hôtes du réseau local ne peuvent pas faire relayer leurs messages vers l'extérieur ? Oui, parce que le drapeau RELAYCLIENT n'est pas mis ! Pour nous en convaincre, essayons d'envoyer un message, mais cette fois-ci à l'extérieur, par exemple à prof@grenouille.com :

alerte

Ici, le message a été accepté en entrée par ucspi-tcp, mais Qmail a rejeté le message car il ne satisfait pas l'une ou l'autre des conditions suivantes :

Pour l'instant, ce fichier ne contient que deux entrées :

cat /var/qmail/control/rcpthosts
janus.maison.mrs
maison.mrs

Ces entrées ont été mises en place lorsque nous avons utilisé le script "config-fast", au moment de l'installation de Qmail (janus.maison.mrs), puis lorsque nous avons créé notre domaine virtuel (vadddomain maison.mrs).

Si nous ajoutons l'entrée "grenouille.com" à ce fichier, alors le message passera. Mais un autre message à destination d'un autre domaine ne passera toujours pas. Nous voudrions que notre SMTP relaye tous les messages sortants, mais seulement pour les hôtes de notre réseau local.

Mais avant de modifier notre /etc/tcp/smtp, expérimentons les bienfaits du "patch" qui permet d'implémenter TLS/SSL dans Qmail. Ce patch implémente la fonctionnalité "starttls". Cette fonctionnalité permet l'identification et le chiffrement des données :

Lorsqu'un client arrive à réaliser une authentification avec un serveur SMTP, il est alors considéré comme étant local (au sens localhost). Ici, nous allons donc pouvoir tester cette fonctionnalité.

Les clients (MUA) modernes savent faire. Par exemple, avec thunderbird :

serveur

Et réessayons d'envoyer le message. Dans les logs, nous voyons :

2006-02-26 18:39:59.549659500 CHKUSER relaying rcpt: from <postmaster@maison.mrs:postmaster@maison.mrs:> 
                                      remote <[192.168.0.15]:unknown:192.168.0.15> 
                                      rcpt <prof@grenouille.com> : client allowed to relay

Récupérons ce message :

Received: (qmail 4709 invoked by uid 7797); 26 Feb 2006 17:35:14 -0000
Received: by simscan 1.1.0 ppid: 4684, pid: 4706, t: 0.1856s
         scanners: clamav: 0.87.1/m:34/d:1162 spam: 3.1.0
X-Spam-Checker-Version: SpamAssassin 3.1.0 (2005-09-13) on ns2023.ovh.net
X-Spam-Level: 
X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00 autolearn=ham 
	version=3.1.0
Received: from unknown (HELO janus.maison.mrs) (85.68.119.205)
  by ns4223.ovh.net with (DHE-RSA-AES256-SHA encrypted) SMTP; 26 Feb 2006 17:35:13 -0000
Received: (qmail 6911 invoked by uid 89); 26 Feb 2006 17:39:59 -0000
Received: from unknown (HELO ?192.168.0.15?) (postmaster@maison.mrs@192.168.0.15)
  by 0 with ESMTPA; 26 Feb 2006 17:39:59 -0000
Message-ID: <4401E6CF.6010602@maison.mrs>
Date: Sun, 26 Feb 2006 18:35:11 +0100
From: Postmaster <postmaster@maison.mrs>
User-Agent: Mozilla Thunderbird 1.0.7 (X11/20051013)
X-Accept-Language: fr, en
MIME-Version: 1.0
To:  prof@grenouille.com
Subject: test starttls
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

ça marche !

Non seulement le message est passé, mais il est passé chiffré, puisque le Qmail destinataire sait aussi utiliser TLS/SSL.

Cette méthode, très élégante, remplace avantageusement le système "pop before smtp" pour résoudre le problème des utilisateurs ne disposant pas d'une adresse IP fixe, mais qui ont besoin d'un SMTP pour relayer leurs messages sortants.

Pour en revenir à notre réseau local, dont les messages vers l'extérieur devraient pouvoir être relayés, sans forcément nécessiter une authentification TLS, il faut agir sur /etc/tcp/smtp comme suit :

cat /etc/tcp/smtp
127.0.0.1:allow,RELAYCLIENT=""
192.168.0.:allow,RELAYCLIENT=""
:allow

Et effectuer la mise à jour du cdb.

Conclusion

Nous avons un système SMTP en état de fonctionner. Il manque encore quelques aménagements concernant par exemple le filtrage des spams et des virus, nous verrons ceci plus loin. Nous n'avons pas encore de gestion des listes de diffusion, et nous n'avons pas non plus de moyens pour récupérer les messages reçus.

La prochaine étape consistera en l'installation de serveurs imap et pop3.


Précédente ] [ Accueil ] [ Suivante ]