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
Clients
AD + DNS
charlie.be Serveur Mail Client W8.1
Fonctionnement d'un service de messagerie
Serveur mail charlie.be
Client de charlie.be Client de gmail.com
Serveur mail gmail.com
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)
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.
SMTP SMTP POP3/IMAP4
POP3/IMAP4
MTA MUA
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.
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=
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.
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:
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 !
On entre notre sujet Contenu du mail On termine par un "."
Cc: personne C'est envoyé
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
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 = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth
smtpd_recipient_restrictions = 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
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.
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
tux@charlie.be 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 = charlie.be virtual_mailbox_base = /home/vmail
virtual_mailbox_maps = ldap:/etc/postfix/address.cf virtual_uid_maps = static:5000
virtual_gid_maps = 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
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=
IP de notre AD + Infos
service postfix restart 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)
Permet de "réveiller" l'AD et vérifier que son DNS fonctionne bien
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:~
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é.