1 CASE-LINUX MAIL Introduction On dispose d'un serveur mail, qui via postfix et dovecot va envoyer et réceptionner les mails. Les adresses mails seront liées à des users contenu dans notre DC charlie.be qui propose un AD et donc un DNS. Pour terminer on aura un ou plusieurs clients qui consulteront leurs mails depuis leur poste via thunderbird et/ou webmail. DB LDAP Contient les users Serveur mail Postfix Dovecot Client Thunderbird L'ensemble sera géré par deux réseaux distincts. Management pour l'administration et Clients pour le réseau des clients. Le tout sera protégé par un firewall. Management AD + DNS charlie.be Serveur Mail Client W8.1 Clients
2 Fonctionnement d'un service de messagerie Serveur mail gmail.com Serveur mail charlie.be Client de gmail.com Client de charlie.be Le client de gmail.com veut communiquer par email avec le client de charlie.be. Le client de gmail va dépendre d'un serveur de mail pour envoyer et recevoir ces emails, de même pour le client de charlie. L'ensemble des emails transite par internet représenté par le nuage. Sur chaque serveur mails on dispose de plusieurs services, premièrement un service d'envoi/réception d'email que l'on appelle serveur SMTP (Simple Mail Transfer Protocol) et un service de récupération d'email que l'on appelle serveur POP3 ou IMAP4. Les deux ont la même fonction principale qui est de récuperer les mails et les traiter mais le POP3 transfère l'email de son serveur au client tandis que l'imap4 lui reçoit les emails sur le serveur et les synchronisent avec le client. Ports utilisés SMTP (Simple Mail Transfer Protocol) TCP/25(sans auth), TCP/587(avec auth), TCP/465 (SSL) POP3 (Post Office Protocol) TCP/110, TCP/995 (SSL) IMAP4 (Internet Message Access Protocol) TCP/143, TCP/993 (SSL)
3 MTA et MUA Le MTA (Mail Transfert Agent) est le serveur SMTP chargé de l'envoi/réception de l'email. Le MUA (Mail user agent) est l'outil que va utiliser l'utilisateur pour récupérer ou transmettre ses emails, comme Thunderbird dans notre cas voir roundcube. MTA MUA POP3/IMAP4 SMTP SMTP POP3/IMAP4 Les prérequis d'un serveur mail Pour faire un serveur de mail avec LDAP il faut quelques prérequis : - Un domaine AD avec des users (et leur champ email remplis!) - Un service DNS actif - Un pc client sous windows avec un MUA (Thunderbird/Outlook) - Le serveur Debian 7.8.0 (mail) Les services utilisés L'active directory sera proposé par un serveur sous Windows Server 2012 R2. Pour info, Il existe une alternative libre OpenLDAP. Sera installé sur le serveur mail : Postfix (serveur SMTP qui sera chargé de livrer les emails). Dovecot (serveur POP3/IMAP qui récupèrera et gèrera les emails depuis un client). Le DNS sera utilisé pour lier les IPs de nos serveurs et les emails clients. Thunderbird est un client mail libre distribué gratuitement et qui sera installé sur notre client Windows 8.1. Roundcube sera le client webmail (IMAP) lui aussi gratuit et open source.
4 Prérequis Avoir un firewall avec une config NAT/routage. Iptables t nat A POSTROUTING o eth0 j SNAT - -to IPINTERNET Renommer la machine mail en mx-01 sed i "s/template/mx-01/g" /etc/host{s,name} Installation du serveur Windows Server 2012 R2 Installation du service Active Directory et promotion de ce DC en domain controller. Domaine : charlie.be Le DNS est d'office installé lors de l'installation d'ad DS. On se rend dans Active Directory Users and Computers et dans "Users" on configure quelques utilisateurs de test en leur ajoutant une adresse email dans le champ prévu. Par exemple : Nom Login Email Mot de passe coco coco coco@charlie.be test1234= crapule crapule crapule@charlie.be test1234= jean jean jean@charlie.be test1234=
5 Installation du serveur SMTP (Postfix) aptitude install postfix Postfix nous propose une solution qui est de supprimer ses sources après installation : yes Type de mailserver: no configuration Emplacement des fichiers de configurations : /etc/postfix /main.cf /master.cf /etc/mailname /etc/aliases Emplacement des logs : /var/log/mail.log /var/log/mail.err Emplacement des mailbox par défaut : /var/spool/mail/<username> On va configurer la base de postfix: vim /etc/postfix/main.cf mydomain = charlie.be myorigin = $mydomain smtpd_banner = $myhostname mail server myhostname = mx-01.charlie.be mydestination = charlie.be mynetworks = 127.0.0.1 [::1] mailbox_size_limit = 0 inet_interfaces = all inet_protocols = all home_mailbox = mail/ Mydomain indique le domaine auquel on appartient et myrorigin repointe vers mydomain. Smtp_banner est la bannière d'accueil et $myhostname est obligatoire pour respecter la RFC 2821. Myhostname définit le nom du serveur mail. Mydestination définit les IP prioritaires. Mailbox_size_limit définit les limites de taille de chaque boite mail. Inet_interfaces et inet_protocols définit quels protocoles (ipv4 et ipv6) et quels interfaces pourront faire des requêtes sur le serveur web. Home_mailbox définit l'emplacement par défaut des mailbox.
6 On va donc tester si ce serveur d'envoi de mail fonctionne bien. Pour cela on transforme notre liste d'alias en DB. C'est quoi? Prenons comme exemple l'alias jean.dujardin. Il pourrait être l'alias du compte système marketing. Cela veut dire que l'email sera adressé à jean.dujardin@charlie.be mais ira dans la boite du compte marketing. Pour convertir /etc/aliases en db on fait newaliases et on peut voir que cette db existe bien en faisant ls l /etc/aliases* On peut désormais restart notre service pour être sûre que tout est bon. service postfix restart Deux manières de faire 1) On envoie un fichier directement comme contenu du mail 2) On envoie un mail en notant manuellement le sujet et le contenu Pour envoyer un fichier : mail tux@charlie.be < /etc/passwd Pour écrire un mail : mail tux@charlie.be subject: Test blabla bla bla. Cc: On entre notre sujet Contenu du mail On termine par un "." Cc: personne C'est envoyé Pour voir l'état du mail on va voir les logs de ceux-ci. cat /var/log/mail.log Si status=sent c'est bon!
7 Installation du serveur POP3 et IMAP4 Maintenant qu'on peut distribuer les mails dans des mailbox on va donner la possibilité aux users de les consulter. On va donc installer le service dovecot, pour pop et imap. aptitude install dovecot-pop3d dovecot-imapd Emplacement des fichiers de configurations : /etc/dovecot /dovecot.conf /conf.d /*.conf On va indiquer à dovecot où il doit trouver les mails ainsi que leur format vim /etc/dovecot/conf.d/10-mail.conf Et on modifie le champ mail_location mail_location = maildir:~/mail Cela correspond à l'emplacement que nous avions donné dans postfix (home_mailbox) Si on veut tester si un utilisateur peut se connecter à sa mailbox il nous faut le service telnet. (L'installer si ce n'est pas déjà fait). aptitude install telnet Pour nos tests on va utiliser le user créé lors de l'installation de debian, dans mon cas "tux". Si maintenant on fait un telnet sur notre machine serveur mail (lui-même) on pourra s'authentifier avec cet user et voir si on accède bien à sa boite mail. telnet localhost 143 localhost car on se connecte à lui-même, on aurait pu mettre 127.0.0.1 ou encore ::1. Pour entrer des commandes il faut les faire précéder d'une lettre au hasard, je vais utiliser "a". a login tux test1234= Le test réussi s'il répond OK et se termine par Logged in Pour quitter : a logout
8 Dovecot intègre nativement un système d'authentification et il peut en faire profiter à postfix via un fichier socket. Cette authentification est appelée SASL (Simple Authentification and Security Layer). Dovecot à sa propre implémentation SASL. Cela consiste en une série de demande d'accès et de réponses suivants certains mécanismes sur lesquels je ne vais pas m'attarder. On va éditer le fichier de dovecot concernant l'authentification SMTP: vim /etc/dovecot/conf.d/10-master.conf Et on décommente les 3 lignes suivantes afin de préciser qu'on utiliser le socket Unix. unix_listener /var/spool/postfix/private/auth { Mode = 0666 } Dovecot a créé le socket de communication, il faut configurer postfix pour lui dire de l'utiliser vim /etc/postfix/main.cf smtpd_sasl_auth_enable smtpd_sasl_type smtpd_sasl_path smtpd_recipient_restrictions = yes = dovecot = private/auth = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination On peut restart postfix suivit de dovecot pour etre sur que les changements sont pris en compte. service postfix restart service dovecot restart On peut maintenant aller sur notre client Windows 8.1 sur Thunderbird et ajouter notre compte. On met l'ip du serveur mail car le DNS n'a pas encore été renseigné à son propos
9 Préparation de l'ad On doit ajouter notre utilisateur vmail sur le Windows Server 2012 R2. On en profite pour ajouter quelques utilisateurs de test.
10 Configuration Virtual Host et Postfix pour LDAP Le virtual domain hosting ou vhost est une méthode permettant à un serveur de traiter plusieurs noms de domaines. Ainsi un utilisateur pourra avoir plusieurs adresses mails et pas qu'une seule comme c'est le cas via postfix. tux@charlie.be tux tux@technofuturtic.be Dans notre cas on utilisera un utilisateur virtuel. La différence est que les utilisateurs systèmes sont répertoriés dans /etc/passwd alors que les utilisateurs virtuels ne le sont pas. On l'ajoute : groupadd g 5000 vmail useradd m g 5000 u 5000 vmail Il nous manque un paquet pour que postfix puisse gérer le LDAP: aptitude install postfix-ldap On va configurer postfix pour utiliser le LDAP vim /etc/postfix/main.cf virtual_mailbox_domains virtual_mailbox_base virtual_mailbox_maps virtual_uid_maps virtual_gid_maps = charlie.be = /home/vmail = ldap:/etc/postfix/address.cf = static:5000 = static:5000 domains base maps uid/gid liste les domaines qui seront distribués par le serveur SMTP racine des mailbox adresses mails de destination et l'emplacement de chaque mailbox spécifie le UID et GID du user et groupe qui seront propriétaires des fichiers vim /etc/postfix/address.cf server_host = 172.16.15.1 version = 3 search_base = dc=charlie,dc=be IP de notre AD + Infos query_filter = (&(objectclass=person)(mail=%s)) result_attribute = mail result_format = %d/%u/ bind = yes bind_dn = cn=vmail,cn=users,dc=charlie,dc=be bind_pw = test1234=
11 On peut faire un test de lecture des informations dans l'ad: Permet de "réveiller" l'ad et vérifier service postfix restart que son DNS fonctionne bien service dovecot restart ping 172.16.15.1 ping google.be postmap q coco@charlie.be ldap:/etc/postfix/address.cf Il doit nous répondre : charlie.be/coco/ On peut également tester l'envoi de mail : mail coco@charlie.be < /etc/passwd On va voir dans les logs s il est bien en status=send (/var/log/mail.log)
12 Configuration dovecot pour LDAP aptitude install dovecot-ldap vim /etc/dovecot/conf.d/10-auth.conf On décommente et modifie pour avoir : disable_plaintext_auth = no!include auth-passwdfile.conf.ext!include auth-ldap.conf.ext On va donc modifier auth-ldap.conf.ext vim /etc/dovecot/conf.d/auth-ldap.conf.ext userdb { Driver = static Args = uid=vmail gid=vmail home=/home/vmail/%d/%n } Maintenant on va configurer dovecot en lui donnant les informations nécessaires pour vérifier les identifiants vim /etc/dovecot/dovecot-ldap.conf.ext hosts = 172.16.15.1 auth_bind = yes ldap_version = 3 base = dc=charlie,dc=be dn = cn=vmail,cn=users,dc=charlie,dc=be dnpass = test1234= auth_bind_userdn = CHARLIE\%n vim /etc/dovecot/conf.d/10-mail.conf mail_location = maildir:~
13 Gestion du DNS pour notre serveur mail Voir doc DNS s'il y a des soucis de compréhension pour les différents records. Il faut un record MX, un record A et éventuellement un record CNAME. Puis on test sur Thunderbird MX => 10 mx-01.charlie.be A => mx-01 172.16.15.2 CNAME => mail mx-01.charlie.be On peut remplacer mx-01.charlie.be par mail.charlie.be grâce au champ CNAME Et c'est validé.