Département RESEAUX & Télécommunications 2007/2008 Messagerie INTRODUCTION Nous allons dans ce TP étudier la mise en place et l utilisation courante d outils de messagerie. Les opérations sont les suivantes : 1. Repérer les machines utilisées dans ce TP, vérifier le nom des machines, et testez le réseau. 2. Vérifier le bon fonctionnement de votre DNS, en particulier ajouter les CNAME pop et smtp pour votre poste de gauche. 3. Installer un serveur de messagerie sur ce poste de gauche. Configurer postfix. 4. Installer un client de messagerie sur le poste de droite. Tester le fonctionnement de la messagerie. 5. Faire le lien entre les serveurs de messagerie et les DNS et permettre l envoi de messages entre domaines. 6. Formater les adresses de messagerie à l envoi et à la réception. Le plan de la plate-forme de manipulation est le suivant : vers Internet pc univers firewall DNS de gtr.iut gw.gtr.iut 172.16.6.100 gtr.iut 172.16.6.0/24 hpgtr.gtr.iut 172.16.6.254 eth0 : gtry.gtr.iut 172.16.6.Y eth1 : gw.by.gtr.iut 192.168.Y.1 pc de gauche routeur DNS de by.gtr.iut Serveur de messagerie de by.gtr.iut gtrx.gtr.iut 172.16.6.X gw.by.gtr.iut 192.168.X.1 pc de gauche routeur DNS de bx.gtr.iut Serveur de messagerie de bx.gtr.iut by.gtr.iut 192.168.Y.0/24 pc1.by.gtr.iut 192.168.Y.2 pc de droite Thunderbird ou Kmail bx.gtr.iut 192.168.X.0/24 pc1.bx.gtr.iut 192.168.X.2 pc de droite Thunderbird ou Kmail binôme Y binôme X Configuration de l ordinateur de gauche Création des comptes Vérifiez la configuration réseau (et le nommage des machines). Le routeur par défaut est 172.16.6.100 pour le poste de gauche. Pour joindre les autres binômes, il faut disposer des routes vers leur réseau interne. Voici pour rappel le script que vous devez avoir placé dans le fichier rc.local vous permettant de joindre les autres binômes. echo "fixe les routes statiques" for i in 1 2 3 4 5 6 7 8 9 10 11 12 13; do # supprimez votre n de la liste! route add net 192.168.$i.0/24 gw 172.16.6.$i done Créez deux comptes utilisateurs (sur les deux postes) en utilisant vos logins d étudiants (1 lettre du prénom puis le nom, le tout limité à 8 caractères). Vou disposez de l outil graphique d administration des utilisateurs pour faire cela. Pour la suite de ce TP, ces deux comptes seront appelés login1 et login2. Module M3 : Messagerie SMTP+POP3 1/7
Le TP précèdent nous a permis de réinstaller un DNS. Vérifiez les fichiers de configuration de votre DNS. En particulier, le fichier /etc/named.conf (et la redirection vers 172.16.6.100), et les fichiers dans /var/named. La machine se nomme gw. Les alias smtp et pop seront ajoutés dans le DNS. SERVEUR DE MESSAGERIE Le système de gestion de messagerie le plus utilisé et le plus connu est sendmail. Mais cet outil est extrêmement compliqué et les fichiers de configurations très ardus. Nous utiliserons un autre outil tout aussi performant : postfix. Installation de postfix. Installez postfix en utilisant yum. La version à la date de rédaction est 2.3.3-2. L installation a créé un utilisateur postfix, un répertoire /var/spool/postfix, des exécutables, et un répertoire de configuration : /etc/postfix. Pour ce TP, l environnement graphique n est pas utile sur le poste de gauche. Nous allons travailler de la façon suivante : Sous le Terminal 2 (CTRL, ALT, F1), être connecté en root sous le répertoire /etc/postfix Sous le Terminal 3, en root, lancer la commande tail f /var/log/maillog Sous le Terminal 4, se connecter en compte login1. Sous le Terminal 6, se connecter en login2. Sous Terminal 2 : Éditez le fichier main.cf. C'est le fichier de configuration principal de postfix. Les paramètres clefs sont : myhostname=gw.bx.gtr.iut ; par défaut mydomain sera alors bx.gtr.iut myorigin=$myhostname (pour le moment!) mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain inet_interfaces=all mynetworks_style=subnet : les clients autorisés à envoyer du courrier devront faire partie du domaine interne. C est un paramètre très important!! Il faut indiquer à postfix ou lire les alias de messagerie : les lignes alias_maps=hash:/etc/aliases et alias_database = hash:/etc/aliases doivent être décommentées. Comme vous pouvez le constater en parcourant ce fichier, il y a énormément de possibilités. En effet, la messagerie est un sujet sensible, et un serveur de messagerie mal sécurisé est une source de problèmes importants pour une société. Il faut absolument contrôler qui envoie des messages en utilisant le serveur SMTP. Sauvez cette config suffisante pour le départ. Lancez le programme : service postfix start. Pour visualiser les paramètres pris en compte : postconf n. L'installation de postfix a créé un répertoire /var/spool/postfix. Sous ce répertoire, il y a de nombreux sous-répertoires. Ils vont servir pour stocker les messages en attente, et suivant le type d'envoi, la destination, l'origine, la réussite, les messages transiteront pas l'un de ces répertoires. Le spool des messages des utilisateurs est /var/spool/mail. Sous ce répertoire, des fichiers au nom des logins contiennent les messages des utilisateurs. Quels fichiers sont présents? Module M3 : Messagerie SMTP+POP3 2/7
Sous Terminal 3 : Vérifier le lancement correct de postfix. Tous les messages seront dans ce fichier. Donc pour comprendre ce qui ne fonctionne pas en cas de problèmes, il suffira de basculer sous ce terminal. Sous Terminal 2 : Lancer la commande ps aux et constater que plusieurs programmes se sont lancés. En particulier les programmes pickup et qmgr. Leurs fonctions sont de réceptionner les messages et de gérer le spool. Le schéma suivant montre le positionnement de chaque programme dans la chaîne de traitement des messages. Postfix est donc composé de plusieurs exécutables, remplissant chacun un rôle bien défini. Pour de plus amples renseignements sur ce logiciel et ses multiples configurations, une adresse à connaître : http://x.guimard.free.fr/postfix D'autres commandes sont très utiles. Citons postconf (et différentes variantes comme postconf n nous l avons vu) qui permet de visualiser la configuration simplifiée de postfix, sendmail bp (idem à mailq) qui permet de savoir les mails en gestion dans la file d'attente. On remarque que les concepteurs de postfix ont gardé le nom de sendmail pour le programme gérant l'envoi de courrier. Il nous faut maintenant tester le bon fonctionnement de cette messagerie interne. Test de la messagerie interne Sous Terminal 4 : Lancer la commande mail. Evidemment, il n y a pas de message pour le moment. Relancez en donnant le nom de login2 : mail login2 Éditer un message avec un sujet et un corps à destination de login2. Pour terminer le message, il faut une ligne avec un point, et seulement un point. Les caractères cc: signifient "Carbon copy", pour envoyer une copie du message à une seconde personne. Sous Terminal 3 : Vérifier les opérations effectuées par postfix et s'assurer du bon fonctionnement. On devra en particulier repérer quels sont les champs «From :» et «To :» pour comprendre comment postfix va traiter le message. Sous Terminal 6: Lancer la commande mail, puis choisir le numéro du message. Le message est édité. Pour voir la liste des commandes disponibles :?. Utilisez alors R pour répondre. Envoyer également un message à root. Le message est bien sûr consultable dans la messagerie du compte root, sous le terminal n 2. Supposons que l on veuille rediriger les messages à destination d un nom vers un autre nom (d une personne à une autre, et d un nom à un autre nom d une même personne), il faut utiliser les alias de messagerie. Editez le fichier /etc/aliases et compléter le à la fin pour que le courrier de root soit redirigé vers login1. Une fois la modification effectuée, il faut lancer la commande newaliases pour que le nouvel alias soit pris en compte. Module M3 : Messagerie SMTP+POP3 3/7
Montrer le bon fonctionnement à ce stade du TP. Sous Terminal 4 : Vérifiez la réception du message précédent dans la messagerie de login1. Envoyez un message à login2@pcxa.bx.gtr.iut et login2@bx.gtr.iut et expliquez dans chaque cas pourquoi cela fonctionne ou ne fonctionne pas. Envoyer maintenant un message à gtr.grenoble@free.fr. Que ce passe-t-il? Aidez vous de la console 3 pour comprendre ce qu il se passe. Montrez que c est bien le cas à l aide de la commande telnet! Pour la suite du TP, il faut s assurer que la connexion est possible depuis un poste extérieur sur le port 110. Ce n est pas le cas car nous n avons pas installé de protocoles de messagerie. Lancez la commande yum install dovecot, éditez le fichier de configuration et ne laisser actif que le protocole POP3. Lancez cet ensemble d outil permettant la gestion des protocoles de messagerie. Vérifiez avec netstat l écoute sur le port 110. Sur le poste de droite : Dans une console, testez la connexion sur le port 110 du serveur avec l utilitaire telnet et login1 par exemple. Vous devez pouvoir vous connecter sur l utilitaire dovecot. Vous disposez d un système Unix sur le poste de droite. Vous pouvez utiliser l outil de votre choix mais le texte cidessous présentera le logiciel thunderbird. Un nouveau point doit être précisé : le client de messagerie lit-il au bon endroit s il y a des messages? en effet, il y a deux possibilités principales : nommées mailbox et Maildir. Soit pose t on les mails dans un spool avec tous les mails dans un même fichier, mails séparés par une ligne blanche (mailbox), soit la méthode avec des mails dans des fichiers séparés, le tout dans un répertoire dans le home directory de l utilisateur (Maildir). Parcourez le fichier de configuration de postifx, et passez en Maildir. Attention, le client mail pour le moment utilisé ne voit plus les nouveaux mails déposés dans le Maildir de l utilisateur. Par contre, l outil thunderbird fonctionnera, comme la plupart des clients modernes. Vous pouvez à présent installer thunderbird sur les deux postes pour échanger des messages. Lancer donc thunderbird sur les deux postes, login1 à droite et login2 à gauche. Lors du lancement, entrez les paramètres pour les comptes respectifs. Choisissez votre serveur postfix pour la réception et l envoi de messages. Paramétrez la réception. Les noms du serveur doivent être pop.bx.gtr.iut et smtp.bx.gtr.iut. Lorsque le logiciel est configuré, différents dossiers sont utilisés pour la gestion de son courrier, ce logiciel se voulant être une alternative «gratuite» à Outlook, le look est très similaire nous le verrons. Ajoutez l autre utilisateur dans les Adresses et envoyez lui un message. Si cela ne marche pas, vérifier les paramètres du compte. Montrez à ce point le bon fonctionnement. Noms complets: Une messagerie utilise les noms et les prénoms des utilisateurs. Cette gestion se fait avec les alias. Éditer le fichier /etc/aliases, et ajouter les lignes suivantes : Prenom1.Nom1: login1 Prenom2.Nom2: login2 Testez l échange de message avec noms complets depuis thunderbird. Sous Term3 du poste de gauche, consulter les logs pour voir les champs «From :» et «To :» Module M3 : Messagerie SMTP+POP3 4/7
Liaison entre les différents domaines. Les DNS possèdent le champ MX servant à renseigner sur les serveurs de messagerie des domaines. Complétez votre DNS en utilisant les informations ci-dessous. Vous devez pour cela ajouter une ligne concernant le domaine, en dessous de la ligne précisant le nom du DNS. Cette ligne, sous la ligne NS, comportera le nom et la priorité du serveur de messagerie, indiquée sous la forme suivante : IN MX 10 nom_du_serveur_de_messagerie. Relancez le DNS et testez le bon fonctionnement (dig mx bx.gtr.iut). Test des messages @bx.gtr.iut : Envoyez depuis le poste de gauche un message à Prenom2.Nom2@bX.gtr.iut. Cela doit fonctionner. Si ensuite, le DNS gérant le domaine gtr.iut (qui possède donc les lignes informant des noms et adresses de vos DNS respectifs) possède également les entrées pour envoyer les courriers vers vos serveurs de messagerie, le courrier doit transiter d un domaine à un autre. Il faut ensuite modifier le paramètre myorigin = $mydomain pour que les messages semblent venir d adresses @bx.gtr.iut quelque soit la destination finale. Adaptez votre configuration et relancez postfix. Testez le bon fonctionnement en envoyant du courrier au compte des différents binômes. Faites vérifier. Formatage des adresses Dans l exercice précédent, si on regarde le mail reçu par login2, l émetteur (champ From : ) est login1@bx.gtr.iut. Il serait plus joli de voir le nom de l utilisateur au lieu du login. Cette fonctionnalité s appelle address masquerading ; cherchez dans le fichier /usr/dosc/postfix /ADDRESS_REWRITI G_README, lignes 330 et suivantes, ce qu il faut faire pour vos deux comptes. Faites le, et complétez le fichier /etc/postfix/canonical. Le fichier /etc/postfix/main.cf aura trois lignes à la fin : canonical_maps = hash:/etc/postfix/canonical masquerade_domains = bx.gtr.iut append_at_myorigin = yes (qui est aussi la value par défaut) Pour des plus amples informations, consultez le site Web donné précédemment, ou consultez le document donné qq lignes au-dessus. Remarque : Pour fabriquer canonical.bd à partir de canonical, on lance la commande : postmap hash:/etc/postfix/canonical Test du fonctionnement : Envoyez un message à Prenom2.Nom2@bX.gtr.iut. Vérifiez que le mail provient bien de Prenom1.Nom1@bX.gtr.iut. Maintenant, on voudrait que les noms complets Prénom.Nom@domaine soient affichés dans les champs login Prenom.Nom@domaine Pour fabriquer canonical.bd à partir de canonical, on lance la commande : postmap hash:/etc/postfix/canonical Envoyez un message à login2@bx.gtr.iut. Vérifiez que le mail provient bien de Prenom.Nom2@bX.gtr.iut. Faire vérifier Module M3 : Messagerie SMTP+POP3 5/7
Fichiers.forward Sous Terminal 4 (compte login1) : Sous le répertoire ~login1, créez un fichier nommé.forward contenant la ligne : Prenom.Nom2@bX.gtr.iut Depuis un poste du domaine d un autre binôme, ou depuis le compte root, envoyez un message à Prenom.Nom1@bX.gtr.iut et vérifier qu'il arrive dans la boîte à lettres de login2. Puis si cela fonctionne, enlevez cette fonctionnalité. Sécurité- Restriction d accès de certains mails Pour diverses raisons on peut vouloir empêcher l arriver de certains mails, et par exemple les rejeter à l arrivée. Cela peut être les messages de personnes non désirées, mais aussi le cas des messages non voulus car publicitaire, sans intérêt pour l entreprise, et faisant perdre beaucoup de temps à tout le monde : on parle de SPAM. Postfix possède plusieurs niveaux de restriction de courriers, mais cela s avère insuffisant, car il faut être au courant heure par heure des messages pouvant être du spam. Pour cela, il faut des outils complémentaires interrogeant des sites recensant les adresses générant du SPAM. Parmi ces outils, citons le plus célèbre, spamassassin, qui se couple naturellement à postfix. Mais voyons tout d abord les fonctionnalités de protection de postfix. Premièrement, il est possible d interdire un message venant d une adresse IP qui n est pas résolue à l envers. Pour cela, il suffi d utiliser la propriété smtpd_client_restrictions avec comme valeur reject_unknown_client. Ensuite, il est possible d utiliser un fichier, nommé access et d y recenser la liste des adresses, domaines, utilisateurs interdits. A l aide des infos fournies dans ce fichier, montrer que l on peut empêcher les mails venant d un binôme voisin par exemple. Regardez dans les fichiers de log la détection de l arrivée de ces mails et le traitement correspondant («Sender Address Rejected») dans les fichiers de log. Notons que pour valider l utilisation du fichier access et de la résolution d adresse inverse précédente, il faut avoir la ligne suivante : smtpd_client_restrictions = reject_unknown_client, hash:/etc/postfix/access Cette commande smtpd_client_restrictions a d autres options possibles, consultez le manuel. Autre possibilité de filtrage intégrée à postfix : l analyse des entêtes des messages, ou du corps du mail. Dans le fichier main.cf, ajouter à la fin : header_checks = regexp:/etc/postfix/header_checks body_checks = regexp:/etc/postfix/body_checks Et dans les fichiers header_checks et body_checks, il faut utiliser une syntaxe comme celle ci-dessous : /etc/postfix/header_checks /^From:.*@aol.com.*/ OK /^From:.*@gtrgrenoble.fr.*/ OK /^To: Paul.Dupont@societe.com/ /^Subject:.*Fwd:Viagra/ /^X-Spanska:/ /^Subject: ILOVEYOU/ /^Subject: (Re: )*Important Message From/ /^Subject: (Re: )*BubbleBoy is back!/ /^From:.*@artlover\.com.*/ /^Subject:.*Sex.*/ /etc/postfix/body_checks /.*www\.removeyou\.com.*/ /.*waterforge\.com.*/ /.*capitalwave\.com\?subject=please*/ /\.virtmundo\.com/ /Accept Credit Cards/ /Nude Celebrities/ /PRODUCT or SERVICE/ /GUARANTEED!/ Enfin, il est toujours recommandé si possible d utiliser les RBL : ce sont des sites recensant les diffuseurs de SPAM, et que l on peut utiliser pour savoir si le client a recensé dans ces sites (blacks listes). Pour cela, il faut compléter smtpd_clients_restrictions avec l option reject_rbl_client relays.ordb.org Mais il est quand même beaucoup plus intéressant d utiliser un outil dédié à la chasse au SPAM : spamassassin. Module M3 : Messagerie SMTP+POP3 6/7
Le but du TP n est pas d utiliser cet outil, mais si vous désirez le mettre en place hors TP, ou si vous avez de l avance, toute la documentation nécessaire à son installation est disponible sur de nombreux sites. En particulier le site source : http://spamassassin.apache.org. L installation de Spamassassin est délicate en général, mais très simple sur centos 5. Elle nécessite perl et des modules perl (une dizaine). Ensuite, on peut installer Spamassassin, et configurer postfix pour filtrer les messages et les faire passer dans Spamassassin avant de les envoyer dans les boîtes aux lettres. Les étapes sont donc les suivantes : - installer (voir fichier INSTALL) Spamassassin : yum install spamassassin. - Lancer le service et tester (voir le fichier /usr/share/doc/spamassassin- /sample-spam.txt). Visualiser le blocage dans les log. - A l aide des aides disponibles par exemple sur le site de Spamassassin, (http://spamassassin.apache.org), blacklistez le binôme voisin, testez le blocage des mails ayant un mot particulier. Webographie Pour toutes les explications sur les possibilités de postfix, consulter le site suivant : http://x.guimard.free.fr/postfix/ Ce site est très complet. Vous y trouverez des explications sur le fonctionnement de postfix, le détail de toutes les commandes et configurations possibles, et des liens vers d autres sites. Concernant Spamassassin : http://spamassassin.apache.org Module M3 : Messagerie SMTP+POP3 7/7