Software">
Nothing Special   »   [go: up one dir, main page]

Serveur Messagerie Sous Linux: en Master Génie Logiciel Pour Cloud Module J2E

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 87

Serveur messagerie sous linux

En Master génie logiciel pour cloud Module J2E

Réalisez Par : RAFIKI AHMED Encadrer Par: Mr Moulay Youssef El hadi

Année Universtaire : 2021/2022


INTRODUCTION
La messagerie électronique est devenue le système critique d´une
entreprise puisque c´est le cœur de toutes communications entre employés.
Le fonctionnement de ce service impactera directement sur l´activité de
votre compagnie et dès lors. La messagerie électronique, encore connue
sous les appellations « courriel » ou « e-mail », est l'un des moyens de
communication les plus utilisés dans le monde à l'heure actuelle. La
messagerie électronique a été créée pour venir à bout des aléas de l'envoi
d'une lettre postale.

la mise en place d'un système de messagerie passe par l'installation de plusieurs


serveurs applicatifs (Un pour chaque protocole mis en œuvre : SMTP, POP, IMAP).
En fonction de la configuration de l'infrastructure réseau et de l'organisation de la
messagerie, il peut êtrenécessaire d'installer des outils supplémentaires comme
FetchMail (Récupération de messages sur un serveur POP externe) ou Procmail
(Distributeur de courrier interne avec filtrage des mails). L'installation peut aussi
être complétée par des utilitaires de sécurité supplémentaire tel que
SpamAssassin ou un Antivirus.
Une boite aux lettres est représentée par son adresse e-mail. Elle est de la forme
nom_utilisateur@domaine. Si le domaine n'est pas mentionné, l'adresse représente
une boite aux lettres locale. Les utilisateurs sont des comptes utilisateurs du
système Linux hébergeant le serveur SMTP Postfix. Ils sont créés à l'aide des
commandes [adduser] et [passwd].
Un système de messagerie est composé de trois éléments :
• L'UA (User Agent) : Il est chargé de poster et de lire le courrier. C'est l'outil utilisé
par l'utilisateur final. Ce sont des logiciels comme Outlook, Eudora ou Thunderbird
dansnotre distribution Linux
.
• Le MTA (Message Transfer Agent) : Son rôle est de transférer le courrier.
Ce sont des logiciels comme Sendmail, Qmail et Postfix.
• Le MDA (Mail Delivery Agent) : Il délivre le message provenant du MTA dans une
boîte aux lettres. C'est le rôle de Procmail.
Plan
1. Installation des Paquets.
2. Configuration de Postfix.
3. Installation des Services POP et IMAP.
4. Les diagrames
5. Interface graphique
6. Conclusion
Partie 1 : Installation des Paquets.

Les services sous LINUX.


Dans cette partie de notre support Formatux, nous vous proposons des
supports pour les services les plus courants que vous pourriez être amenés à
mettre en oeuvre :
 Bind, le service DNS,
 Samba, le service de partage de fichier compatible Windows,
 Apache, le serveur Web,
 Postfix, le service de messagerie,
 OpenLDAP le serveur d’annuaire,
 etc.
Bonne lecture

 Serveur de noms DNS – Bind


Généralités
Il existe 13 serveurs racines répartis dans le monde, dont une majorité se
situe en Amérique du Nord.
La traduction d’un FQDN en adresse IP est le cas que l’on rencontre le plus
fréquemment mais DNS permet également de renseigner le système sur les
serveurs de messagerie, sur les services disponibles, de faire des alias de
noms de service, etc.
Par exemple, il est possible de proposer un FQDN smtp.domain.tld sans qu’il y
ait
réellement de serveur nommé SMTP.
La résolution est possible en IPv4 comme en IPv6.
Installation du service

Le serveur DNS BIND s’articule autour du


service named. Installation à partir d’un dépôt
YUM :
[root]# yum install bind

L’installation du service BIND ajoute un utilisateur named. Cet utilisateur sera


le propriétaire
des fichiers de configuration.
[root]# grep named /etc/passwd
named:x:25:25:Named:/var/named:/sbin/nologin

BIND étant un service réseau, il faut le paramétrer pour un démarrage dans


les niveaux 3 et 5, puis le démarrer :

[root]# chkconfig --level 35 named on


[root]# service named start
Un serveur DNS peut très bien être configurer pour être maître d’une zone et
esclave d’une autre.

La mise à jour du serveur se fait depuis le réseau local. Le serveur


principal n’est pas accessible depuis l’extérieur.
La mise à jour se propage vers les serveurs secondaires.
L’interrogation par les clients internet ne se fait que sur les serveurs
secondaires, ce qui protège le
serveur principal des attaques par déni de service.
Pour un réseau complexe, il existe de nombreuses solutions
architecturales de l’infrastructure DNS qu’il est important de bien
étudier.
Configuration du
serveur Le fichier
/etc/named.conf
Ce fichier contient les paramètres de configuration du service DNS.
[root]# less
/etc/named.conf
options {
listen-on port 53 {
192.168.1.200; }; directory
"/var/named";
allow-query { 192.168.1.0/24; };
};
Chaque ligne du fichier
/etc/named.conf
(même à l’intérieur des accolades) se
termine
par un point-virgule.
L’oublie de ce ";" est l’erreur la plus
fréquente
dans la configuration d’un serveur
Bind.
Les noms, sous la forme FQDN
(Fully Qualified Domain Name)
doivent se terminer par ".". En
l’absence de ce ".", Bind suffixera
automatiquement avec le nom de
domaine
l’enregistrement.
Eg : www.etrs.lan →
www.etrs.lan.etrs.lan.
La rubrique options contient la configuration générale du serveur BIND via
différentes directives :
 listen-on : Définit l’interface, l’adresse et le port du service sur le
serveur.
 directory : Définit le répertoire de travail de BIND, contenant les fichiers
de zone.
 allow-query : Définit les hôtes autorisés à faire des requêtes sur le
serveur. Par adresse IP ou réseau.
Permettre qu’un serveur DNS résolve les requêtes de n’importe quel client est
une très mauvaise
idée. Il faut au moins restreindre les droits aux réseaux locaux.
Il est possible, pour cela, de créer des ACL pour simplifier l’administration du
fichier de
configuration.
Le fichier de configuration contient également les informations relatives aux
fichiers de zone.
[root]# less
/etc/named.conf zone
"etrs.lan" IN {
type master;
file
"masters/etrs.lan.direct"
; allow-update {
192.168.1.0/24; };
};

zone "1.168.192.in-
addr.arpa" IN { type
master;
file "masters/etrs.lan.inverse";
};
Les rubriques zone contiennent les configurations des zones de résolution de
nom, inverses ou directes :
 type : Définit le type de serveur pour cette zone :
o maître : possède la base de données en écriture
o esclave : possède la base en lecture seule
o forwarder : fait office de proxy-cache pour cette zone.
 file : Définit le chemin du fichier de zone.
 allow-update : Définit les hôtes ayant l’autorisation de mettre à jour les
enregistrements
DNS.
Les fichiers de zone inverse sont nommés en prenant l’adresse réseau de la
zone (en inversant les
octets) suivi du domaine in-
addr.arpa. Les rôles
Un serveur peut avoir le rôle de maître pour la zone, c’est-à-dire qu’il possède
la zone en écriture.
[root]# less
/etc/named.conf zone
"etrs.lan" IN {
type master;
file
"masters/etrs.lan.direct"
; allow-update {
192.168.1.0/24; };
};
Seuls les clients figurant dans la variable allow-update pourront mettre à
jour la base de données du DNS.
Un serveur peut également être un serveur secondaire (slave) pour la zone,
c’est-à-dire qu’il
possède la zone en lecture.
[root]# less
/etc/named.conf zone
"etrs.lan" IN {
type slave;
file "slaves/etrs.lan.direct";
};
Un serveur peut enfin être expéditeur (forwarder) pour la zone, c’est-à-dire
qu’il a connaissance
de cette zone, et relaie les informations pour celle-ci.
[root]# less
/etc/named.conf zone
"unautredomaine.fr" IN
{
type forwarder;
forwarders
{221.10.12.1};
};
Vous retrouverez cette notion sous
Windows en tant que « redirecteur
Fichiers de ».
zone
Les fichiers présents dans le
répertoire
/var/named doivent appartenir à
l’utilisateur
système named.
SELinux ne permettra pas
l’enregistrement des
fichiers de zone en dehors de ce
répertoire.
Ces fichiers contiennent des enregistrements (RR : Resource Records) DNS de
différents types. Ils permettent la résolution directe de noms (du nom vers
l’adresse IP), ou la résolution inverse (de l’adresse IP vers le nom).
En plus de contenir les adresses IP et les noms des machines, les fichiers
contiennent les paramètres de durée de vie des enregistrements (Time To
Live, TTL).
Lorsqu’un enregistrement DNS est mis en cache, le temps restant sur
son TTL est également conservé. À la fin du TTL, l’enregistrement est
supprimé des caches.
 Un TTL plus long réduit les échanges DNS.
 Un TTL plus court permet une reconfiguration du réseau plus rapide.
Les types d’enregistrements
Table 1. Les types d’enregistrements
Typ Descripti
e on
A Nom attribué à une adresse de type
IP V4
AAAA Nom attribué à une adresse de type
IP V6
Alias d’un enregistrement A déjà
CNAME
défini Éviter de faire un alias vers
un alias
MX Serveur de messagerie destinataire
pour la
zone concernée
NS Le ou les serveurs de noms de la zone
(type A)
Enregistrement pointeur pour
PTR une zone inverse
SOA Démarre la configuration (cf: diapos
suivantes)
SVR Service (protocole jabber,… )
TXT Informations
 Champ MX : Le numéro précise la priorité, la plus faible étant la
plus prioritaire. Ceci permet de définir un ou plusieurs serveurs
de secours qui stockeront les mails en attendant le retour du
serveur principal.
 Champ de type A : Enregistrement standard. Attribue un nom à une
adresse IP. Plusieurs enregistrements identiques de type A vers des
adresses différentes permet de faire de l’équilibrage de charge par round-
robin (RR).
Exemple :
mail A192.168.1.10
A 192.168.1.11
 Champ AAAA : On utilise quatre A pour symboliser IPv6 car une adresse
IPv6 est codée sur
16 octets, soit 4 fois plus qu’une adresse IPv4.
 CNAME : Permet d’attribuer un ou plusieurs alias à un enregistrement A
déjà défini.
Plusieurs enregistrements du même alias permettent également de
faire de l’équilibrage
de charge type RR.
On trouvera des enregistrements
typiques, comme autoconfig, qui
permet le mécanisme de
configuration automatique d’un
client de messagerie.
Fichier de zone directe
Ce fichier est nécessaire au fonctionnement du système DNS. C’est par lui
que se fait la résolution d’un nom en adresse IP.
[root]# less /var/named/etrs.lan.direct
$ORIGIN .
$TTL 3600
etrs.lan. SOA npinf-mcsnlz01v.etrs.lan. contact.etrs.lan.
(123; 14400;
3600; 604800; 3600; )

@ IN NS npinf-mcsnlz01v.etrs.lan.
poste1 IN A 192.168.1.10
npinf-mcsnlz01v IN A 192.168.1.200
etrs.lan. MX 10192.168.1.201
npinf-mcsnlw01v IN A 192.168.1.202
www IN CNAME npinf-mcsnlw01v.etrs.lan.
 $ORIGIN : Définit la valeur par défaut du domaine courant pour les
renseignements du fichier. Un . signifie la racine.
 $TTL : Durée de vie par défaut des enregistrements de la zone dans
le cache, exprimée en secondes. Le TTL peut également être précisé
enregistrement par enregistrement.
 SOA : Start Of Authority. La ligne démarre la configuration d’une zone.
Définit :
o le nom du serveur maître principal,
o l’email de l’administrateur de la zone (un . remplace le @ de
l’adresse mail).
o Entre parenthèses, le numéro de série du fichier (incrémenté
à chaque mise à jour) et les délais de mise à jour ou de
rafraîchissement, exprimés en secondes.
 Numéro de zone : Numéro incrémental (voir le paragraphe
suivant)
 Rafraîchissement : Durée en secondes avant
une tentative de synchronisation avec le
serveur maître
 Réitération : Intervalle de temps avant réitération si l’essai
précédent n’a
pas fonctionné
 Expiration : Durée en secondes avant l’expiration car le
serveur maître est
injoignable
 Cache négatif (TTL) : Durée de vie en secondes des
enregistrements
Le @ a une signification particulière
pour Bind. Il se représente lui
même, raison pour laquelle le @ de
l’adresse courriel d’administration
est
remplacée par un .
Le numéro de la zone sert à identifier la dernière modification du DNS maître.
Tous les serveurs
secondaires utilisent ce numéro pour savoir s’ils doivent
se synchroniser. Il existe deux méthodes
d’incrémentation du numéro de zone :
 Incrémentale : 1, puis 2, puis 3 (pourquoi pas ?)
 Basée sur la date : AAAAMMJJXX, qui nous donne par
exemple, pour la première modification du jour : 2017210101
(méthode à privilégier)
Le fichier de zone inverse
Bien que non obligatoire, ce fichier est fortement conseillé pour un
fonctionnement optimal du
système DNS. C’est par lui que se fait la résolution d’une adresse IP en nom.
Des services comme SSH s’appuie sur
la
résolution inverse.
[root]# more /var/named/etrs.lan.inverse
$ORIGIN 1.168.192.in-addr.arpa.
$TTL 259200
@ SOA npinf-mcsnlz01v.etrs.lan.
contact.etrs.lan. (
123; 14400; 3600; 604800; 3600; )
@ NS npinf-mcsnlz01v.etrs.lan.
1 0 PTR poste1.etrs.lan.
200 PTR npinf-mcsnlz01v.etrs.lan.
La commande nsupdate
L’usage de la commande
nsupdate est exclusive. Il ne faut
plus modifier les fichiers de zone
manuellement, sous peine de
pertes
d’informations.
Syntaxe :
nsupdate
Exemple:
[root]# nsupdate
> server 192.168.1.200
> zone etrs.lan
> update add poste2.etrs.lan 3600 A 192.168.1.11
> update delete poste1
> send
La commande nsupdate est interactive.
À la saisie, elle ouvre un prompt dans lequel il faut saisir les requêtes de mise
à jour du fichier de zone.
Ces requêtes peuvent être :
 server : Précise le serveur BIND pour lequel les requêtes seront
envoyées.
 zone : Précise la zone de résolution pour laquelle les requêtes seront
envoyées.
 prereq yxdomain nom : L’existence de l’enregistrement nom est une
condition de mise à
jour.
 update add nom TTL type @IP : Ajoute l’enregistrement nom, en
précisant son type, son
adresse IP et son TTL.
 update delete nom : Supprime l’enregistrement nom.
 send : Valide et envoie les
requêtes. La commande rndc
La commande rndc permet de manipuler le serveur DNS à chaud.
Syntaxe de la commande rndc
rndc reload
rndc querylog on|off
 reload : Prend en compte les modifications apportées sans devoir
relancer le service
 querylog : Active ou non la journalisation
Après modification d’un fichier de zone, il est nécessaire de faire prendre
en compte les modifications au service. Les fichiers étant lus au
démarrage du service, cela permet de prendre en compte les
modifications, mais résulte en la perte des statistiques. Il faut donc
privilégier la méthode reload.
Le suivi des logs
La fonction d’enregistrement des fichiers journaux est activée ou désactivée
par la commande
rndc.
Le fichier de logs est par défaut
/var/named/data/named.run Exemple :
[root]# rndc querylog on
[root]# tail –f /var/named/data/named.run
Bind propose dans son fichier de configuration des options pour journaliser les
informations :
 de transferts,
 de requêtes clients,
 d’erreurs,
 …
Configuration du client
NetworkManager est un outil de gestion du réseau. Sur un serveur dont
le réseau est défini par cet outil, la configuration cliente de Bind est
décrite dans le fichier de l’interface. [root]#less
/etc/sysconfig/network-scripts/ifcfg-ethX
DOMAIN="etrs.lan"
DNS1=192.168.1
.200
DNS2=192.168.1
.201
NetworkManager modifiera lui-même le fichier /etc/resolv.conf à
chaque relance du service réseau.
Avant de lancer une recherche DNS, le logiciel client vérifiera si la requête
porte sur un FQDN ou non. Si le nom n’est pas pleinement qualifié, le
client suffixera la requête avec le premier suffixe DNS fourni.
Si la résolution est impossible, le client émettra une nouvelle requête avec le
suffixe suivant, ainsi
de suite jusqu’à l’obtention d’une réponse.
Par exemple, il est possible de fournir deux suffixes :
dr-
cpt.intradef.gouv.fr
intradef.gouv.fr
Lors d’une requête DNS portant sur, par exemple, portail-etrs, une
première requête portail- etrs.dr-cpt.intradef.gouv.fr sera faite. En
l’absence de réponse positive, une seconde requête sera effectuée portant
sur portail-etrs.intradef.gouv.fr. Pour éviter ce phénomène d’interrogation
multiple, il est préférable de fournir une adresse pleinement qualifiée.
Veiller à spécifier au moins deux
serveurs DNS pour assurer une
redondance en cas de panne
du serveur principal.
Sans outil de gestion du réseau, la configuration cliente de Bind est décrite
dans le fichier
/etc/resolv.conf.
[root]# less
/etc/resolv.conf search
"etrs.lan"
nameserver 192.168.1.200
nameserver 192.168.1.201
NetworkManager, si actif, écrasera
les valeurs
entrées manuellement dans ce
fichier.
L’utilitaire system-config-network-tui (nmtui sous CentOS 7) permet une
configuration graphique correcte du réseau par une interface ncurse.
La commande dig
La commande dig (Domain Information Groper) permet d’interroger des
serveurs DNS.
Dig doit être privilégié par rapport à
NSLookup
qui n’est plus maintenue.
Syntaxe de la commande dig
dig [name] [type] [options]
Exemple :
[root]# dig centos65.etrs.lan A

;; QUESTION SECTION:
; centos65.etrs.lan. IN A

;; ANSWER SECTION:
centos65.etrs.lan. 86400 IN A 192.168.253.131

;; AUTHORITY SECTION:
etrs.lan. 86400 IN NS centos65.etrs.lan.

[root]# dig –t MX
linux.fr [root]# dig
linux.fr MX +short Mise en
cache côté client
Le service NSCD est responsable de la mise en cache des requêtes
réseaux type LDAP ou DNS. Pour profiter de la mise en cache local, il
faudra veiller à ce que le service NSCD soit démarré.
[root]# service nscd
start [root]# chkconfig
nscd on
Nscd n’est pas installé par défaut sur les RHEL 6.
Mise à jour dynamique
Les clients peuvent s’enregistrer dynamiquement sur le serveur DNS, ce qui
est intéressant dans le cadre d’une attribution de l’adressage IP dynamique
avec DHCP.
Configuration du pare-feu serveur
Les règles iptables a configurer en tcp et udp sont les suivantes :
[root]# vi
/etc/sysconfig/iptables #
Autoriser DNS
iptables –t filter –A INPUT –p tcp –dport 53 –j ACCEPT
iptables –t filter –A INPUT –p udp –dport 53 –j ACCEPT
system-config-firewall-tui est l’outil
graphique
permettant de configurer le pare-
feu.

 Serveur de fichiers Samba


Samba est un serveur de fichiers permettant l’interopérabilité entre divers
systèmes, notamment les systèmes Linux et Microsoft. Il permet à des
systèmes Linux de créer des partages utilisables par des machines Windows
et vice-versa.
Le projet Samba a été initié dès 1992 sous licence GPL (et donc gratuit).
Un même dossier partagé par NFS et par Samba est ainsi accessible
depuistoutes les plateformes clientes.
Le protocole SMB
Le protocole SMB (Server Message Block) était une extension de
Microsoftpour permettre la redirection des entrées/sorties vers NetBIOS
(Network Basic Input/Output System).
SMB permettait :
 le transfert de données entre machines Windows : partages
defichiers, impressions et messagerie électronique ;
 le parcours du voisinage réseau (browsing) ;
 la résolution de noms NetBIOS en adresses IP (Windows
InternetName Server) ;
 l’authentification centralisée (notion de domaine).
Le protocole NetBIOS était une interface permettant la mise en place de
noms de machines, de groupes de travail, de domaines, etc. Il faisait
fonctionner le voisinage réseau jusqu’à Windows 2000, mais son mode
defonctionnement induisait une charge réseau importante.
NetBIOS était le système de noms des réseaux SMB comme l’est aujourd’hui
le service DNS.
Les diffusions NetBIOS ne passant pas les routeurs, la notion de voisinage
réseau désigne l’ensemble des stations de travail utilisant le protocole
NetBIOS sur un même segment de réseau IP. Le maître explorateur
(masterbrowser) est le poste client ou serveur tenant à jour la liste des
ordinateurs utilisés par le service de voisinage réseau.
Le protocole CIFS
Les améliorations apportées au protocole SMB ont permis de faire aboutir
la suite de protocoles clients/serveurs CIFS (Common Internet File System)
quele service Samba implémente.
Installation de Samba
[root]# yum install samba smbclient
La partie serveur de Samba est basée essentiellement sur 2 démons :
 Le démon smb est le serveur SMB : il répond aux requêtes des clients
lorsque ceux-ci accèdent aux partages définis et il est le seul à
accéderaux systèmes de fichiers Linux.
 Le démon nmb est le serveur de noms NetBIOS essentiel au
fonctionnement de SMB. Il peut être configuré comme serveur
WINS.
 Le fichier de configuration principal est smb.conf. C’est dans ce
fichierque sont définis les paramètres de fonctionnement des 2
démons, ainsi que la définition des exports de ressources.
La partie cliente de samba (samba-client) contient les outils qui
permettentle montage et le parcours des ressources Samba.
Le paquet samba-client fournit les binaires :
 findsmb : afficher de nombreuses informations sur les stations d’un
sous-réseau qui répondent aux requêtes de noms SMB.
 nmblookup : interroger le protocole NetBIOS et associe les
nomsNetbios à des adresses IP.
 sharesec : manipuler les droits de partages de fichiers
 smbcacls : manipuler les ACL NT sur les partages de fichiers
 smbclient : offrir une interface FTP Like pour accèder à des
partagesde fichiers
 smbget : télécharger des fichiers depuis un partage windows
 smbspool : envoyer une impression à un serveur d’impression
 smbtree : fournir un explorateur de fichier en mode texte similaire
au“Voisinage réseau” des ordinateurs Windows. Il affiche un arbre
des domaines connus, desserveurs et des partages accessibles
depuis les serveurs.
 …
Le paquet samba-common fournit les binaires :
 net : offrir les mêmes fonctionnalités que la commande net du
mondeWindows.
 pdbedit : gérer de la base SAM
 smbcquotas : manipuler les quotas NT d’un partage de fichiers
 smbpasswd : changer le mot de passe des utilisateurs
 testparm : tester la syntaxe d’un fichier de configuration smb.conf
 …
[root]# chkconfig smb on
[root]# chkconfig nmb on
[root]# service smb start
[root]# service nmb start
Sécurité SELinux
Par défaut, la sécurité SELinux est active. Pour vérifier le contexte de
sécuritéen place sur des fichiers, il faut utiliser la commande :
[root]# ls -Zd /export/
Le contexte de sécurité samba_share_t doit être positionné sur les
dossierspartagés :
[root]# chcon -R -t samba_share_t /export/
Plus d’information sur la sécurité SELinux et Samba sur le site de
RedHat.Pensez à stopper le parefeu ou à le configurer dans le fichier
/etc/sysconfig/iptables :
-A INPUT -m state --state NEW -m udp -p udp --dport 137 -
j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 137 -
j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 138 -
j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 139 -
j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 445 -
j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -
j ACCEPT
Pour pouvoir utiliser Samba comme contrôleur de domaine et utiliser
lescommandes useradd et groupadd, il faudra mettre le booléen
samba_domain_controller à on.
[root]# setsebool -P samba_domain_controller on
Pour rappel, il est possible d’obtenir tous les booléens SELinux concernant
Samba avec la commande suivante :
[root]# getsebool -a | grep "samba"
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_use_samba --> off
Pour autoriser les partages via Samba des répertoires de connexions des
utilisateurs, il faudra positionner le booléen samba_enable_home_dirs
également à on.
[root]# setsebool -P samba_enable_home_dirs on
La configuration de SAMBA
La partie serveur de Samba est basée sur 1 seul fichier de configuration
/etc/samba/smb.conf qui définit les paramètres de fonctionnement des
2 démons et des exports de ressources.
Chaque paramètre fait l’objet d’une ligne au format :
nom = valeur
Les commentaires commencent par un ';' ou un '#' et se termine à la fin de
laligne.
Le caractère '\' permet de scinder une ligne logique sur plusieurs lignes
physiques.
Ce fichier est constitué de 3 sections spéciales :
 [global] : paramètres généraux ;
 [homes] : paramètres des répertoires utilisateurs ;
 [printers] : paramètres des imprimantes.
Les autres sections, déclarées entre '[ ]' sont des déclarations de
partage.Les niveaux de sécurité
Il existe cinq niveaux de sécurité (option security), mais un seul peut être
appliqué par serveur :
 share : le niveau dit de partage, lié à une ressource. Un mot de
passeest associé à chaque partage (Déprécié : ne plus utiliser) ;
 user : le niveau de sécurité de l’utilisateur, lié à son
authentification. C’est le niveau recommandé et par défaut ;
 server : l’authentification est réalisée par un autre serveur (Déprécié :
ne plus utiliser) ;
 domain : l’authentification est réalisée par un autre serveur, mais
leserveur Samba doit être membre du domaine ;
 ads : l’authentification est réalisée par un serveur Active Directory.
Les variables internes à Samba
Table 1. Les variables internes à Samba
Variabl Observati
e on
%a Architecture du client
%I Adresse IP du client
%M Nom dns du client
%m Nom NetBios du client
Identité de l’utilisateur pour le
%u partage
concerné
%U Identité souhaitée par l’utilisateur
du partage
%H Répertoire de connexion de
l’utilisateur
%u%g ou %G Groupe principal de l’utilisateur
%u ou %U%S Nom du partage
%P Répertoire racine du partage
concerné
%d PID du processus courant
%h Nom DNS du serveur Samba
%L Nom NetBIOS du serveur Samba
%v Version de samba
%T Date et heure système
%$var valeur de la variable
d’environnement var
La commande testparm
La commande testparm teste la validité du fichier /etc/samba/smb.conf.
L’option -v affiche tous les paramètres applicables.
[root]# testparm
Load smb config files from /etc/samba/smb.conf
...
Loaded services file OK.
Server role : ROLE_STANDALONE
...
Sans option, cette commande renvoie la configuration du serveur samba
sans les commentaires et omet les paramètres positionnés à leur valeur par
défaut, ce qui facilite sa lecture.
[root]# testparm
La section [global]
Table 2. Les directives de la section [global]
Directi Exempl Explication
ve e
Définir le groupe de
workgroup workgroup = ETRS travail ou le nom de
domaine NetBIOS.
(À mettre en
majuscule).
Nom NetBIOS de la
netbios name netbios name = station Maximum
drinf- 15 caractères
mcsnlw01v Pas de rapport direct
avec le
nom de la machine
Linux

server string = Samba Description du


server string version serveur
%v apparaissant
dans
l’explorateur Windows
Permet de
hosts allow hosts allow = 127. restreindre les
172.16.76. clients du serveur
aux seuls
réseaux mentionnés.
Notez la
présence d’un point à la
fin de
l’adresse et l’absence
du 0.
Enregistrer les
log file log file = évènements dans un
/var/log/samba/log.% fichier
m %m représente le nom
NetBIOS du client
Modèle de sécurité du
security security = user serveur
Stockage des
utilisateurs et des mots
de passe. Le format
tdbsam (Trivial
passdb backend passdb backend = Database) est le
tdbsam format par défaut,
limité en performance
à 250 utilisateurs. Au
delà, il faudra passer
au format ldapsam et
stocker les utilisateurs
et les
groupes dans une base
LDAP.
La section [homes]
La section [homes] contient la configuration des partages utilisateurs.
C’est une section réservée par Samba, qui lui applique un
fonctionnementtrès particulier. Ce nom de partage ne doit pas être
utilisé pour un autre partage ni modifié.
[homes]
comment = Home Directories
browseable = no
writable = yes
Tous les utilisateurs verront le même partage “homes” mais le contenu sera
personnalisé pour chacun.
Attention à bien configurer les booléens SELinux pour autoriser le
partagedes dossiers personnels.
La section [printers]
La section [printers] contient la configuration du serveur d’impression.
[printers]
comment = All Printers
browseable = no
writable = yes
guest ok = no
printable = yes
Samba peut ainsi faire office de serveur d’impressions, ce qui est une
fonctionnalité intéressante (ne nécessite pas l’acquisition de licences
clientes).
Partages personnalisés
Avant de paramétrer une nouvelle section du fichier smb.conf qui
correspondra à un nouveau partage, il convient de se poser quelques
questions :
 Quel est le chemin du partage ?
 Qui peut modifier le contenu ?
 Le partage doit-il être visible sur le réseau ou au contraire sera-
t-il masqué ?
 Y aura-t-il un accès anonyme ?
Un nouveau partage est représenté par une section [nomdupartage] dans le
fichier smb.conf. En voici un exemple :
[partage]
comment = Partage
browseable = yes
writable = yes
path = /export/data
valid users = @users
read list = georges
write list = bob, alice
invalid users = maurice
create mask = 0664
directory mask = 0775
force group = users
De nombreuses directives sont disponibles pour configurer les partages :
Directi Exempl Explication
ve e
comment = Exemple de Affiche un commentaire
comment partage dans
l’explorateur de fichiers.
browseable browseable = yes Affiche le partage dans
le
voisinage réseau.
Le partage est en
writeable writeable = yes lecture
seule ou en écriture.
Le chemin absolu à
Path path = /export/data partager sur le
réseau. Attention au
contexte SELinux de
ce
dossier.
Liste les utilisateurs
valid users valid users = @users ou les groupes
autorisés à accéder
au partage.
Liste les utilisateurs
invalid users invalid users = alice ou les groupes qui
ne sont pas
autorisés à accéder
au
partage.
Liste les utilisateurs
read list read list = bob ou les groupes
autorisés à accéder
au partage en lecture.
Liste les utilisateurs
write list write list = patrick, alain ou les groupes
autorisés à accéder
au partage en écriture.
Les fichiers créés
create mask create mask = 0664 prendront
les droits spécifiés.
Les dossiers créés
directory mask directory mask = 0775 prendront
les droits spécifiés.
Les nouveaux fichiers
et dossiers
force group force group = users appartiendront au
groupe spécifié. Dans
ce cas, il n’y a pas d'@
devant le
groupe !
La directive force group
La directive force group permet de forcer l’appartenance d’un fichier créé à
un groupe spécifique.
Cette directive est essentielle dans le fonctionnement de Samba, puisqu’elle
assure que, quelque soit le groupe principal d’un utilisateur, celui-ci sera
autorisé à accéder à un fichier sur le partage s’il fait parti, en tant qu’invité,
du groupe spécifié dans la directive.
Les deux exemples ci-desous mettent en avant ce mécanisme
: Utilisation sans le mécanisme force group :

Utilisation avec le mécanisme force group :


Commandes d’administration
La commande pdbedit
La commande pdbedit permet de gérer la base SAM des utilisateurs
Samba,que le backend soit au format tdbsam ou ldapsam, contrairement
à la commande smbpasswd qui est limitée au format tdbsam.
Syntaxe de la commande pdbedit
pdbedit [-a|-r|-x|-L] [-u username] ...
Exemple :
[root]# pdbedit -L
stagiaire:1000:Stagiaire SYS
Table 3. Options principales de la commande pdbedit
Option Observati
on
-a Ajouter un utilisateur
-r Modifier un utilisateur
-x Supprimer un utilisateur
-L Lister les utilisateurs
-u Spécifier le nom de l’utilisateur pour
les
options -a, -r, et -x
Ajouter un utilisateur
Le format de cryptage du mot de passe entre le monde Microsoft et
le monde Linux étant différent, Samba doit soit tenir à jour une base
de données contenant les mots de passe au bon format ou déléguer
cettegestion au serveur LDAP, ce qui explique l’usage de la
commande smbpasswd.
pdbedit -a -u username [-f description]
Exemple :
[root]# pdbedit -a -u bob -f "Bob Leponge"
Unix username: bob
User SID: S-1-5-21-3024208064-2128810558-
4043545969-1000
Full Name: Bob Leponge
Home Directory: \\srvfichiers\bob
Domain: SRVFICHIERS
...
Option Observati
on
-a Ajouter un utilisateur. L’utilisateur
doit exister
dans le fichier /etc/passwd.
-u Spécifier le nom de l’utilisateur à
ajouter.
La commande smbpasswd
La commande smbpasswd permet de gérer les mots de passe des
utilisateursSamba.
Syntaxe de la commande
smbpasswd smbpasswd [-d|-e]
username Exemple :
[root]# smbpasswd bob
New SMB password:
Retype new SMB password:
Option Observati
on
-e Réactive un compte.
-d Désactive un compte.
Il est possible de synchroniser les mots de passe Unix et Samba :
[global]
unix password sync = yes
obey pam restrictions = yes
Directi Exempl Explication
ve e
Synchronise le mot de
passe entre le compte
unix et le compte
unix password sync unix password sync = samba. Fonctionne
yes uniquement avec la
commande
smbpasswd. La
directive n’est pas
prise en compte par
la commande
tdbedit.
obey pam restrictions obey pam restrictions = Applique les
yes restrictions PAM.
La commande smbclient
La commande smbclient permet d’accéder à des ressources Windows (ou
Samba) depuis le monde Unix.
Syntaxe de la commande smbclient
smbclient '//serveur/partage' -U utilisateur
Exemple :
[root]# smbclient \\\\stat-wind\\partage-wind -U alain
smb: |> help
ou :
[root]# smbclient '//stat-wind/partage-wind' -U alain
smb: |> help
Le programme smbclient est couramment utilisé pour créer un interpréteur
de type 'ftp' permettant ainsi d’accéder à des ressources SMB réseau.
Lister les partages :
[root]# smbclient -L drinf-mcsnlf01v
Se connecter à un partage data du serveur drinf-mcsnlf01v avec l’utilisateur
bob :
[root]# smbclient -L //drinf-mcsnlf01v/data -U bob
Enter bob's password:

 Serveur web Apache


Le serveur HTTP Apache est le fruit du travail d’un groupe de volontaires :
The Apache Group. Ce groupe a voulu réaliser un serveur Web du même
niveau que les produits commerciaux mais sous forme de logiciel libre
(son code source est disponible).
L’équipe d’origine a été rejointe par des centaines d’utilisateurs qui, par
leursidées, leurs tests et leurs lignes de code, ont contribué à faire d’Apache
le plus utilisé des serveurs Web du monde.
L’ancêtre d’Apache est le serveur libre développé par le National Center
for Supercomputing Applications de l’université de l’Illinois. L’évolution de
ce serveur s’est arrêtée lorsque le responsable a quitté le NCSA en 1994.
Les utilisateurs ont continué à corriger les bugs et à créer des extensions
qu’ils distribuaient sous forme de “patches” d’ou le nom “a patchee
server”.
La version 1.0 de Apache a été disponible le 1 décembre 1995 (il y a plus de
20 ans !).
L’équipe de développement se coordonne par l’intermédiaire d’une liste
dediffusion dans laquelle sont proposées les modifications et discutées les
évolutions à apporter au logiciel. Les changements sont soumis à un vote
avant d’être intégrés au projet. Tout le monde peut rejoindre l’équipe de
développement, il suffit de contribuer activement au projet pour pouvoir
être nommé membre de The Apache Group.
Le serveur Apache est très présent sur l’Internet, puisqu’il représente
encoreenviron 50% des parts de marché pour l’ensemble des sites actifs.

Les parts de marché perdues par Apache sont prises par son plus grand
challenger : le serveur nginx. Ce dernier, plus rapide pour délivrer les
pagesweb, et moins complets fonctionnellement parlant que le géant
Apache.
Le protocole HTTP
Le protocole HTTP (HyperText Transfer Protocol) est le protocole le
plusutilisé sur Internet depuis 1990.
Ce protocole permet un transfert de fichiers (essentiellement au format
HTML, mais aussi au format CSS, JS, AVI…) localisés grâce à une chaîne
decaractères appelée URL entre un navigateur (le client) et un serveur
Web (appelé d’ailleurs httpd sur les machines UNIX).
HTTP est un protocole “requête - réponse” opérant au dessus de TCP
(Transmission Control Protocol).
7. Le client ouvre une connexion TCP vers le serveur et envoie
unerequête.
8. Le serveur analyse la requête et répond en fonction de
sa configuration.
Le protocole HTTP est en lui même dit “STATELESS” : il ne conserve pas
d’information sur l’état du client d’une requête à l’autre. Ce sont les
langagesdynamiques comme le php, le python ou le java qui vont
permettre la conservation en mémoire des informations de session d’un
client (comme dans le cadre d’un site de e-commerce par exemple).
Le protocole HTTP est en version 1.1. La version 2 est en cours
dedéploiement.
Une réponse HTTP est un ensemble de lignes envoyées au navigateur par
leserveur. Elle comprend :
 Une ligne de statut : c’est une ligne précisant la version du protocole
utilisé et l’état du traitement de la requête à l’aide d’un code et
d’un texte explicatif. La ligne comprend trois éléments devant être
séparéspar un espace :
o La version du protocole utilisé ;
o Le code de statut ;
o La signification du code .
 Les champs d’en-tête de la réponse : il s’agit d’un ensemble de
lignesfacultatives permettant de donner des informations
supplémentairessur la réponse et/ou le serveur. Chacune de ces
lignes est composée d’un nom qualifiant le type d’en-tête, suivi de
deux points (:) et de la valeur de l’en-tête.
 Le corps de la réponse : il contient le document
demandé.Voici un exemple de réponse HTTP :
Exemple de réponse HTTP
HTTP/1.1 200 OK
Date : Sat, 15 Jan 2016 14:37:12 GMT Server : Apache/2.17
Content-Type : text/HTML
Content-Length : 1245
Last-Modified : Fri, 14 Jan 2016 08:25:13 GMT
Le rôle du serveur web consiste à traduire une URL en ressource locale.
Consulter la page http://www.free.fr/, revient à envoyez une requête HTTP
à cette machine. Le service DNS joue donc un rôle essentiel.
Les URL
Une URL (Uniform Ressource Locator - littéralement “identifiant uniforme
de ressources”) est une chaîne de caractères ASCII utilisée pour désigner
lesressources sur Internet. Elle est informellement appelée adresse web.
Une URL est divisée en trois parties :
Composition d’une URL
<protocole>://<hôte>:<port>/<chemin>
 Le nom du protocole : il s’agit du langage utilisé pour communiquer
sur le réseau. Le protocole le plus utilisé est le protocole HTTP
(HyperText TransferProtocol), le protocole permettant d’échanger
despages Web au format HTML. De nombreux autres protocoles
sont toutefois utilisables.
 Identifiant et mot de passe : permet de spécifier les paramètres
d’accès à un serveur sécurisé. Cette option est déconseillée car le mot
de passe est visible dans l’URL (dans le cadre de la sécurité).
 L’hôte : Il s’agit du nom de l’ordinateur hébergeant la ressource
demandée. Notez qu’il est possible d’utiliser l’adresse IP du serveur,
cequi rend par contre l’URL moins lisible.
 Le numéro de port : il s’agit d’un numéro associé à un service
permettant au serveur de savoir quel type de ressource est demandé.
Le port associé par défaut au protocole est le port numéro 80. Ainsi,
lorsque le service Web du serveur est associé au numéro de port 80,
lenuméro de port est facultatif.
 Le chemin d’accès à la ressource : Cette dernière partie permet au
serveur de connaître l’emplacement auquel la ressource est située,
c’est-à-dire de manière généralel’emplacement (répertoire) et le nom
du fichier demandé. Si non renseignée, indique la première page de
l’hôte. Sinon indique le chemin de la page à afficher.
Les ports
Une requête HTTP arrivera sur le port 80 (port par défaut pour http)
du serveur fonctionnant sur l’hôte. L’administrateur peut toutefois
choisirlibrement le port d’écoute du serveur.
Le protocole http se décline en une version sécurisée: le protocole https
(port 443). Ce protocole chiffré s’implémente à partir du module mod-ssl.
D’autres ports peuvent être utilisés, comme le port 8080 (serveurs
d’applications Java EE) ou le port 10 000 (Serveur webmin).
Installation du serveur
Apache est multiplateforme. Il peut être utilisé sur Linux, Windows,
Mac…L’administrateur devra choisir entre deux méthodes d’installation :
 Installation par paquets : l’éditeur de la distribution fourni des
versions stables et soutenues (mais parfois anciennes) ;
 Installation depuis les sources : le logiciel apache est compilé,
l’administrateur peut spécifier les options qui l’intéressent ce qui
permet l’optimisation du service. Apache fournissant une
architecture modulaire, la re-compilation du logiciel apache n’est
généralement pasnécessaire pour ajouter ou supprimer des
fonctionnalités complémentaires (ajout/suppression de modules).
Le choix de la méthode d’installation par paquets est fortement conseillé.
Des dépots complémentaires permettent d’installer des versions plus
récentes d’apache sur des versions de distributions anciennes mais, en
casde problème, RedHat n’apportera pas son soutien.
Exemples de modules et de leurs rôles respectifs :
 mod_access : filtre l’accès des clients par leur nom d’hôte, adresse IP
ou autre caractéristique
 mod_alias : permet la création d’alias ou répertoires virtuels
 mod_auth : authentifie les clients
 mod_cgi : exécute les scripts CGI
 mod_info : fournit des informations sur l’état du serveur
 mod_mime : associe les types de fichiers avec l’action correspondante
 mod_proxy : propose un serveur proxy (serveur mandataire)
 mod_rewrite : réécrit les URL
 …
Installation par rpm
Interroger la base de données des “rpm”
[root]# rpm –qa "http*"
Installez à partir de paquets liés à la distribution
[root]# rpm –ivh httpd-xxx.rpm
Installer si nécessaire les dépendances demandées.
Installation par yum
Si vous avez à disposition un dépôt yum :
[root]# yum install httpd
Lancer Apache au démarrage du serveur :
[root]# chkconfig httpd on
Avant de se lancer dans une installation, il est important de savoir si une
version du serveur Apache est installée :
rpm –qa "http*"
Lors de l’installation, un groupe apache et un utilisateur apache sont créés.
[root]# grep apache /etc/group
apache:x:48
[root]# grep apache /etc/passwd
apache:x:48:48:Apache:/var/www:/sbin/nologin

[root]# grep apache /etc/shadow


apache:!!:14411::::::
Le serveur Apache travaille sous l’identité d’un utilisateur “apache”
appartenant à un groupe “apache”. Lors de l’installation, ce groupe et cet
utilisateur sont créés. L’utilisateur apache étant un utilisateur système,
aucun mot de passe ne lui est attribué, ce qui rend impossible la
connexionau système avec cet utilisateur.
Les fichiers de configuration
Le répertoire /etc/httpd/conf/ contient le fichier de configuration
principal d’Apache httpd.conf. Ce fichier est très bien commenté. En
général, ces commentaires suffisent pour éclairer l’administrateur sur les
options dont ildispose.
Il peut être judicieux de créer un fichier de configuration sans commentaires
:
[root]# egrep –v ‘^#|^$’ /etc/httpd/conf/httpd.conf >
httpd.conf.lite
Le répertoire /etc/httpd/conf.d/ contient les fichiers de configuration des
sites virtuels ou des modules installés (ssl, php, welcome.conf, phpmyadmin,
etc.)
Manuel d’utilisation
Il existe un package contenant un site faisant office de manuel
d’utilisationd’apache. Il s’agit du package httpd-manual-xxx.noarch.rpm.
Une fois ce package installé vous pourrez accéder au manuel simplement
avec un navigateur web à cette adresse http://127.0.0.1/manual.
Lancement du serveur
 Par le script d’init :
[root]# /etc/rc.d/init.d/httpd {start|restart|status
 Avec la commande service :
[root]# service httpd {start|restart|status}
 Avec la commande apachectl fourni par apache :
[root]# apachectl {start|restart|stop}
Il est indispensable de lancer/relancer le serveur :
 après l’installation ;
 après toute modification de la configuration.
Parefeu
Le pare-feu “iptables” interdit l’accès aux ports 80 et 443. Pensez à
leconfigurer (ou à désactiver ce service sur plateforme de test) !
[root]# system-config-firewall-tui
Ou :
[root]# service iptables stop
[root]# service ip6tables stop
La configuration d’un pare-feu fait l’objet d’un autre cours.
Arborescence

Figure 1. Arborescence d’Apache


L’arborescence peut varier en fonction des distributions.
 /etc/httpd/ : Ce répertoire est la racine du serveur. Il contient
l’ensemble des fichiers du serveur Apache.
 /etc/httpd/conf/ : Ce répertoire contient l’ensemble des fichiers de
configuration du serveur. Il possède des sous-dossiers pour des
éléments de configuration précis.
 /var/www/html/ : Ce répertoire est le répertoire de publication par
défaut. Il contient les fichiers nécessaires à l’affichage de la page
web par défaut du serveur Apache. Quand l’administrateur veut
publier un site, il peut déposer ses fichiers dans ce répertoire.
D’autres répertoires existent sous /var/www :
 cgi-bin : contient les scripts CGI ;
 icons : contient des icônes, notamment celles pour identifier le type
defichier ;
 error : contient les messages d’erreur d’Apache, ce sont ces
fichiersqu’il faudra modifier pour personnaliser les mesages
d’erreur.
 /var/log/httpd/ : Ce répertoire contient les fichiers de logs du
serveur Apache.
o Le fichier access-log garde une trace des différents accès
auserveur ;
o Le fichier error-log contient la liste des erreurs rencontrées
pendant l’exécution du service ;
o Les fichiers logs sont personnalisables, l’administrateur
peutaussi en créer de nouveaux.
 /etc/httpd/modules : Répertoire contenant les liens vers le
répertoire “/usr/lib/httpd/modules” contenant les modules
utilisables par Apache. Un module est une extension logicielle
d’Apache, lui
permettant par exemple d’interpréter le PHP (ex: mod-php5.so).
 /etc/rc.d/init.d/httpd : Script de démarrage du serveur
httpd.Configuration du serveur
La configuration globale du serveur se fait dans /etc/httpd/conf/httpd.conf.
Ce fichier est découpé en 3 sections qui permettent de configurer :
 en section 1 l’environnement global ;
 en section 2 le site par défaut et les paramètres par défaut des
sitesvirtuels ;
 en section 3 les hôtes virtuels.
L'hébergement virtuel permet de mettre en ligne plusieurs sites virtuels sur
le même serveur. Les sites sont alors différenciés en fonction de leurs noms
de domaines, de leurs adresses IP, etc.
La modification d’une valeur en section 1 ou 2 impacte l’ensemble des sites
hébergés.
En environnement mutualisé, les modifications seront donc effectuées
en section 3.
Pour faciliter les mises à jour futures, il est vivement recommandé de créer
un fichier de configuration section 3 pour chaque site virtuel.
Section 1
Les différentes directives rencontrées en section 1 sont :
Table 1. Directives principales de la section 1
Directiv Observati
es ons
ServerTokens Cette directive sera vue dans le cours
Apache
– sécurité.
Indique le chemin du répertoire
ServertRoot contenant
l’ensemble des fichiers constituant le
serveur
Apache.
Le fichier cible de la directive
PidFile contient le
numéro de PID du serveur à son
démarrage.
Le nombre de secondes avant le
Timeout délai
d’expiration d’une requête trop
longue
(entrante ou sortante).
KeepAlive Connexion persistante (plusieurs
requêtes par
connexion TCP).
Nombre maximum de connexions
MaxKeepAliveRequests persistantes.
Nombre de secondes à attendre
KeepAliveTimeout la requête suivante du client
avant fermeture de la
connexion TCP.

Listen Permettre à apache d’écouter sur


des
adresses ou des ports spécifiques.
Charger des modules
LoadModule complémentaires (moins
de modules = plus de sécurité).
Include Inclure d’autres fichiers de
configuration au
serveur.
Afficher plus d’information sur le
ExtendedStatus serveur dans
le module server-status.
Permet de lancer les processus
User et Group apache avec différents
utilisateurs. Apache se lance
toujours en tant que root puis
change son
propriétaire et son groupe.
Le serveur Apache a été conçu comme un serveur puissant et
flexible,pouvant fonctionner sur une grande variété de plateformes.
Plateformes différentes et environnements différents signifient
souvent fonctionnalités différentes, ou utilisation des méthodes
méthodes pour implémenter la même fonctionnalité le plus
efficacement possible.
La conception modulaire d’apache autorise l’administrateur à choisir quelles
fonctionnalités seront incluses dans le serveur en choisissant les modules à
charger soit à la compilation, soit à l’exécution.
Cette modularité comprend également les fonctions les plus élémentaires du
serveur web.
Certains modules, les Modules Multi-Processus (MPM) sont responsables
del’association aux ports réseau de la machine, acceptent les requêtes, et
se chargent de les répartir entre les différents processus enfants.
Pour la version d’Apache de Windows, le MPM utilisé sera mpm-winnt.
Sous Linux, les sites très sollicités utiliseront un MPM threadé comme worker
ou event, tandis que les sites privilégiant la stabilité utiliseront prefork.
Voir la page
http://httpd.apache.org/docs/2.2/fr/mpm.html
Configuration par défaut des modules prefork et worker :
Configuration des modules dans /etc/http/conf/httpd.conf
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestPerChild 4000
</IfModule>

<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
Le module Prefork, activé par défaut, s’appuie sur des processus. Il est donc
plus stable mais nécessite plus de mémoire pour fonctionner. Le
moduleWorker, quand à lui, s’appuie sur des threads, ce qui le rend
plus performant, mais des modules comme le Php ne sont pas
compatible.
Choisir un module plutôt qu’un autre est donc une tâche complexe,
tout autant que l’optimisation du module MPM retenu (nombre de
client, derequêtes, etc.).
Par défaut Apache est configuré pour un service moyennement sollicité
(256 clients max).
La configuration minimal d’un serveur apache ressemble à ceci :
Configuration d’apache minimal dans /etc/httpd/conf/httpd.conf
ServerRoot /etc/httpd
KeepAlive On
Listen 80
Listen 160.210.150.50:1981
LoadModule ...
Include conf.d/*.conf
User apache
Group apache
SELinux
Attention par défaut la sécurité via SELinux est active. Elle empêche la
lecture d’un site sur un autre répertoire que “/var/www/”.
Le répertoire contenant le site doit posséder le contexte de
sécuritéhttpd_sys_content_t.
Le contexte actuel se vérifie par la commande :
[root]# ls –Z /rep
Rajouter le contexte via la commande :
[root]# chcon -vR --type=httpd_sys_content_t /rep
Elle empêche également l’ouverture d’un port non standard. Il faut
ouvrir manuellement le port désiré à l’aide de la commande semanage
(non installée par défaut).
[root]# semanage port -a -t http_port_t -p tcp 1664
Directives User et Group
Définir un compte et un groupe de gestion d’Apache
Historiquement, apache était lancé par root, ce qui posait des problèmes
desécurité. Apache est toujours lancé par root mais change ensuite son
identité. Généralement User Apache et Group Apache.
Attention jamais ROOT !!!
Le serveur Apache (processus httpd) est lancé par le compte de super-
utilisateur root. Chaque requête d’un client déclenche la création d’un
processus “fils”. Pour limiter les risques, il faut lancer ces processus enfants
avec un compte moins privilégié.
Les directives User et Group servent à déclarer le compte et le
groupeutilisés pour la création des processus enfants.
User apache
Group apache
Ce compte et ce groupe doivent avoir été créés dans le système (par défaut
cela est fait à l’installation). Par mesure de précaution supplémentaire,
s’assurer que le compte n’est pas interactif (ne peut pas ouvrir de session).

Avec la directive KeepAlive désactivée, chaque demande de ressource sur


leserveur nécessite une ouverture de connexion TCP, ce qui est long à
effectuer d’un point de vue réseau et gourmand en ressource système.
Avec la directive KeepAlive à On, le serveur conserve la connexion
ouverteavec le client le temps du Keepalive.
Sachant qu’une page web est constituée de plusieurs fichiers (images,
feuilles de styles, javascripts, etc.), cette stratégie est rapidement
gagnante.Il est toutefois nécessaire de bien paramétrer cette valeur au
plus juste :
 Une valeur trop courte pénalise le client,
 Une valeur trop longue pénalise les ressources du serveur.
Des demandes de configuration spécifiques peuvent être faîtes par le
client en hébergement mutualisé. Auquel cas, les valeurs de KeepAlive
seront paramétrées directement dans le VirtualHost du client ou au
niveau du mandataire (ProxyKeepalive et ProxyKeepaliveTimeout).

L’affichage de cette page prouve que le serveur est fonctionnel. Mais le


serveur ne dispose pas encore de site à publier. Paramétrons la section
2.Section 2
La section 2 paramètre les valeurs utilisées par le serveur principal. Le
serveur principal répond à toutes les requêtes qui ne sont pas prises
en charge par un des Virtualhosts de la sections 3.
Les valeurs sont également utilisées comme valeur par défaut pour les
sitesvirtuels.
 ServerAdmin : spécifie une adresse de messagerie qui apparaîtra
danscertaines pages auto-générées, comme dans les pages
d’erreurs.
 ServerName : spécifie le nom qui servira d’identification pour le
serveur. Peut être déterminé automatiquement, mais il est
recommandé de le spécifier explicitement (adresse IP ou nom
DNS).
 DocumentRoot : spécifie le répertoire contenant les fichiers à
serviraux clients. Par défaut /var/www/html/.
 ErrorLog : spécifie le chemin vers le fichier d’erreurs.
 LogLevel : debug, info, notice, warn, error, crit, alert, emerg.
 LogFormat : définir un format spécifique de log à utiliser avec
ladirective CustomLog.
 CustomLog : spécifie le chemin vers le fichier d’accès.
 ServerSignature : vue dans le cours sécurité.
 Alias : spécifie un répertoire extérieur à l’arborescence et le rend
accessible par un contexte. La présence ou l’absence du dernier
slashdans le contexte à son importance.
 ScriptAlias : spécifie le dossier contenant les scripts serveurs
(idemalias) et les rend exécutables.
 Directory : spécifie des comportements et des droits d’accès par
répertoire.
 AddDefaultCharset : spécifie le format d’encodage des pages
envoyés(les caractères accentués peuvent être remplacés par des
?…).
 ErrorDocument : personnaliser les pages d’erreurs.
 server-status : rapport sur l’état du serveur.
 server-info : rapport sur la configuration du serveur.
La directive ErrorLog
La directive ErrorLog permet de définir le journal des erreurs.
Cette directive définit le nom du fichier dans lequel le serveur
enregistretoutes les erreurs qu’il rencontre. Si le file-path n’est pas
absolu, il est supposé être relatif à ServerRoot.
Syntaxe :
ErrorLog file-path
Exemple :
ErrorLog logs/error-log
La directive DirectoryIndex
La directive DirectoryIndex permet de définir la page d’accueil du site.
Cette directive indique le nom du fichier qui sera chargé en premier, qui fera
office d’index du site ou de page d’accueil.
Syntaxe :
DirectoryIndex page-à-afficher
Le chemin complet n’est pas précisé car le fichier est recherché dans
lerépertoire spécifié par DocumentRoot
Exemple :
DocumentRoot /var/www/html
DirectoryIndex index.php, index.htm
Cette directive indique le nom du fichier index du site web. L’index est la
page par défaut qui s’ouvre quand le client tape l’URL du site (sans avoir
àtaper le nom de cet index). Ce fichier doit se trouver dans le répertoire
indiqué par la directive DocumentRoot.
La directive DirectoryIndex peut spécifier plusieurs noms de fichiers
indexséparés par des espaces. Par exemple, une page d’index par
défaut au contenu dynamique et en deuxième choix une page statique.
La directive ServerAdmin
La directive ServerAdmin permet d’indiquer le mail de l’administrateur.
Syntaxe :
ServerAdmin email-adresse
Exemple :
ServerAdmin root@etrs.terre.defense.gouv.fr
La balise Directory
La balise Directory permet de définir des directives propre à un
répertoire. Cette balise permet d’appliquer des droits à un ou plusieurs
répertoires. Le chemin du répertoire sera saisi en absolu.
Syntaxe :
<Directory directory-path>
Définition des droits des utilisateurs
</Directory>
Exemple :
<Directory /home/SitesWeb/SiteTest>
Allow from all # nous autorisons tout le monde
</Directory>
La section Directory sert à définir un bloc de consignes s’appliquant à une
partie du système de fichiers du serveur. Les directives contenues dans la
section ne s’appliqueront qu’au répertoire spécifié (et ses sous-
répertoires).La syntaxe de ce bloc accepte les caractères génériques mais il
faudra préfèrer alors utiliser le bloc DirectoryMatch.
Dans l’exemple suivant, nous allons refuser l’accès au disque dur local du
serveur quelque soit le client. Le répertoire « / » représente la racine du
disque dur.
<Directory />
Order deny, allow
Deny from all
</Directory>
Dans l’exemple suivant, nous allons autoriser l’accès au répertoire de
publication /var/www/html pour tous les clients.
<Directory /var/www/html>
Order allow, deny
Allow from all
</Directory>
Prise en compte des modifications
La commande apachectl permet de tester la syntaxe du fichier de conf :
[root]# service httpd configtest
ou :
[root]# apachectl -t
puis :
[root]# /etc/rc.d/init.d/httpd {start|restart|status}
ou :
[root]# service httpd {start|restart|status}
ou :
[root]# apachectl {start|restart|stop}
Les commandes précédentes ont pour effet de couper les connexions en
cours. Apache propose une solution plus élégante, qui lance de
nouveauxserveurs et attends la fin du timeout pour détruire les anciens
processus :Ne pas couper les connexions TCP actives :
[root]# service httpd graceful
Configuration avancée du
serveur Le mod_status
Le mod_status permet d’afficher une page /server-status ou /server-info
récapitulant l’état du serveur :
Configuration des directives server-status et server-info
<Location /server-status>
SetHandler server-status
Order allow,deny
Allow from 127.0.0.1
</Location>

<Location /server-info>
SetHandler server-info
Order allow,deny
Allow from 127.0.0.1
Allow from 172.16.96.105
</Location>
La page /server-status :
La page /server-info :

Hébergement mutualisé (section 3)


Dans le cas d’un hébergement mutualisé, le client pense visiter plusieurs
serveurs. En réalité, il n’existe qu’un seul serveur et plusieurs sites virtuels.
Pour mettre en place un hébergement mutualisé, il faut mettre en place des
hôtes virtuels :
 en déclarant plusieurs ports d’écoute ;
 en déclarant plusieurs adresses IP d’écoute (hébergement virtuel par
IP) ;
 en déclarant plusieurs noms de serveur (hébergement virtuel par
nom);
Chaque site virtuel correspond à une arborescence différente.
La section 3 du fichier httpd.conf permet de déclarer ces hôtes virtuels.
Pour faciliter les mises à jour futures, il est vivement recommandé de
créerun fichier de configuration section 3 pour chaque site virtuel.
Choisissez un hébergement virtuel “par IP” ou “par nom”. En production, il
est déconseillé de mixer les deux solutions.
 Chaque site virtuel peut être configuré dans un fichier indépendant ;
 Les VirtualHosts sont stockés dans /etc/httpd/conf.d/ ;
 L’extension du fichier est .conf.
La balise VirtualHost
La balise VirtualHost permet de définir des hôtes
virtuels.Syntaxe :
Syntaxe d’un fichier virtualhostXXX.conf
<VirtualHost adresse-IP[:port]>
# si la directive "NameVirtualHost" est présente
# alors "adresse-IP" doit correspondre à celle
saisie
# sous "NameVirtualHost" ainsi que pour le "port".
...
</VirtualHost>
Si nous configurons le serveur Apache avec les directives de base vues
précédemment, nous ne pourrons publier qu’un seul site. En effet, nous ne
pouvons pas publier plusieurs sites avec les paramètres par défaut : même
adresse IP, même port TCP et absence de nom d’hôte ou nom d’hôte
unique.L’usage des sites virtuels va nous permettre de publier plusieurs
sites web sur un même serveur Apache. Nous allons définir des blocs qui
décriront chacun un site web. Ainsi chaque site aura sa propre
configuration.
Pour des facilités de compréhension, nous associons souvent un site web
à une machine unique. Les sites virtuels ou hôtes virtuels (virtual hosts)
sont appelés ainsi parce qu’ils dématérialisent le lien entre machine et
site web.Exemple 1 :
Listen 192.168.0.10:8080
<VirtualHost 192.168.0.10:8080>
DocumentRoot /var/www/site1/
ErrorLog /var/log/httpd/site1-error.log
</VirtualHost>
Listen 192.168.0.11:9090
<VirtualHost 192.168.0.11:9090>
DocumentRoot /var/www/site2/
ErrorLog /var/log/httpd/site2-error.log
</VirtualHost>
L’hébergement virtuel basé sur IP est une méthode permettant
d’appliquer certaines directives en fonction de l’adresse IP et du port sur
lesquels la
requête est reçue. En général, il s’agit de servir différents sites web sur
desports ou des interfaces différents.
La directive NameVirtualHost
La directive NameVirtualHost permet de définir des hôtes virtuels à base
denom.
Cette directive est obligatoire pour configurer des hôtes virtuels à base de
nom. Nous spécifions avec cette directive l’adresse IP sur laquelle le
serveur recevra des demandes des hôtes virtuels à base de nom.
Syntaxe :
NameVirtualHost adresse-IP[:port]
Exemple :
NameVirtualHost 160.210.169.6:80
Il faut placer la directive avant les blocs descriptifs de sites virtuels. Elle
désigne les adresses IP utilisées pour écouter les requêtes des clients vers
lessites virtuels. La syntaxe est la suivante :
Pour écouter les requêtes sur toutes les adresses IP du serveur il faut utiliser
le caractère *.
Exemple de publication de sites
Fichier /etc/httpd/conf.d/80-site1.conf :
<VirtualHost 160.210.69.6:80>
# déclaration de l'arborescence du site
DocumentRoot "/var/sitesweb/site1"
# déclaration des index du site
DirectoryIndex "Index1.htm"
# déclaration des droits sur le site
<Directory "/var/sitesweb/site1">
Allow from all
</Directory>
</VirtualHost>
Fichier /etc/httpd/conf.d/1664-site2.conf :
Listen 1664
<VirtualHost 160.210.69.6:1664>
# déclaration de l'arborescence du site
DocumentRoot "/var/sitesweb/site2"
# déclaration des index du site
DirectoryIndex "Index2.htm"
# déclaration des droits sur le site
<Directory "/var/sitesweb/site2">
Allow from all
</Directory>
</VirtualHost>
Partie 2: Configuration Postfix.
Postfix
Postfix est le Service de Transfert de Courriel (MTA) par défaut d'Ubuntu. Il
est conçu pour être sûr autant que facile et rapide à configurer. Il est
compatible avec le MTA sendmail. Cette section détaille l'installation et la
configuration de postfix. Elle explique aussi comment en faire un serveur
SMTP utilisant une connexion sécurisée (afin d'assurer la sécurité des
courriels envoyés).
Ce guide n'explique cependant pas comment mettre en place des
Domaines Virtuels Postfix. Pour obtenir des informations sur les Domaines
Virtuels et d'autres configurations avancées, voir Références.
 Installation
 Configuration de base
 Authentification SMTP
 Configuration de SASL
 Mail-Stack Delivery
 Tests
 Dépann
age
Installation
Pour installer postfix, exécutez la commande suivante :
sudo apt install postfix

Appuyez simplement sur la touche « entrée » lorsque le processus


d'installation pose des questions, la configuration se fera plus en détail
dans la prochaine étape.
Configuration de base
Pour configurer postfix, exécutez la commande suivante :
sudo dpkg-reconfigure postfix

L'interface utilisateur va s'afficher. Sur chaque écran, sélectionnez les valeurs


suivantes :
 Site Web
 courriel.exemple.fr
 steve
 courriel.exemple.fr, localhost.localdomain, localhost
 Non
 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24
 0
 +
 tous
Replace mail.example.com with the domain for which you'll accept email,
192.168.0.0/24 with the actual network and class range of your mail
server, and steve with the appropriate username.
C'est maintenant le bon moment pour choisir le format de boite courriel
que vous souhaitez utiliser. Par défaut, Postfix utilisera le format mbox.
Plutôt que d'éditer directement le fichier de configuration, vous pouvez
utiliser la commande postconf pour configurer tous les paramètres de
postfix. Les paramètres de configuration seront conservés dans le fichier
/etc/postfix/main.cf. Plus tard, si vous souhaitez reconfigurer un paramètre
en particulier, vous pourrez soit réutiliser cette commande, soit éditer
manuellement ce fichier.
Pour utiliser le format de boîte aux lettres Maildir :
sudo postconf -e 'home_mailbox = Maildir/'

Cela placera les nouveaux courriels dans /home/nom_utilisateur/Maildir,


vous aurez donc besoin de configurer votre agent de distribution du
courrier (MDA) de façon à utiliser le même chemin. Authentification SMTP
SMTP-AUTH permet à un client de s'identifier par un méchanisme
d'authentification (SASL). Transport Layer Security (TLS) devrait être
utilisée afin de chiffrer le processus d'authentification. Une fois authentifié,
le serveur SMTP autorisera le client à relayer les courriels.
8.
9. configurez Postfix pour SMTP-AUTH en utilisant SASL (Dovecot SASL):
10. sudo postconf -e 'smtpd_sasl_type
= dovecot' sudo postconf -e
'smtpd_sasl_path = private/auth' sudo
postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_security_options =
noanonymous' sudo postconf -e
'broken_sasl_auth_clients = yes'
sudo postconf -e
'smtpd_sasl_auth_enable = yes' sudo
postconf -e
'smtpd_recipient_restrictions = \
permit_sasl_authenticated,permit_mynetworks,reject_una
uth_destinat ion'

11.
12.
13.Le chemin smtpd_sasl_path est un chemin relatif au répertoire de la
file d'attente (queue) de Postfix.
14.
15.
16.Ensuite, générez ou obtenez un certificat numérique pour TLS. Voir
Certificats pour plus de détails. Cet exemple utilise également une
autorité de certification (CA). Pour plus d'informations sur la
génération d'un certificat, voir Autorité de certification.
17.
18.MUAs connecting to your mail server via TLS will need to recognize
the certificate used for TLS. This can either be done using a certificate
from a commercial CA or with a self-signed certificate that users
manually install/accept. For MTA to MTA TLS certficates are never
validated without advance agreement from the affected
organizations. For MTA to MTA TLS, unless local policy requires it,
there is no reason not to use a self-signed certificate. Refer to
Création d'un certificat auto-signé (Self-Signed
Certificate ou SSC) for more details.
19.
20.Une fois que vous avez un certificat, configurez Postfix pour fournir
l'encryptage à l'aide du protocole TLS des e-mails entrants et
sortants :
21. sudo postconf -e
'smtp_tls_security_level = may' sudo
postconf -e 'smtpd_tls_security_level =
may' sudo postconf -e
'smtp_tls_note_starttls_offer = yes' sudo
postconf -e 'smtpd_tls_key_file =
/etc/ssl/private/server.key'
sudo postconf -e 'smtpd_tls_cert_file =
/etc/ssl/certs/server.crt' sudo postconf -e
'smtpd_tls_loglevel = 1'
sudo postconf -e
'smtpd_tls_received_header = yes' sudo
postconf -e 'myhostname =
mail.example.com'

22.
23.Si vous utilisez votre propre autorité de certification, saisissez ce
qui suit pour signer le certificat :
24. sudo postconf -e 'smtpd_tls_CAfile =
/etc/ssl/certs/cacert.pem'

25.De nouveau, pour plus de détails sur les certificats, consultez Certificats.
Après avoir exécuté toutes les commandes, Postfix est configuré pour
SMTP-AUTH et un certificat autosigné a été créé pour le cryptage TLS.
Maintenant, le fichier /etc/postfix/main.cf devrait ressembler à ceci :
# See /usr/share/postfix/main.cf.dist for a
commented, more complete # version

smtpd_banner = $myhostname ESMTP


$mail_name (Ubuntu) biff = no

# appending .domain is the MUA's


job. append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail"


warnings #delay_warning_time = 4h

myhostname =
server1.example.com
alias_maps =
hash:/etc/aliases
alias_database =
hash:/etc/aliases myorigin
= /etc/mailname
mydestination = server1.example.com, localhost.example.com,
localhost relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a
"$EXTENSION" mailbox_size_limit =
0
recipient_delimiter =
+ inet_interfaces =
all
smtpd_sasl_local_domai
n =
smtpd_sasl_auth_enable
= yes
smtpd_sasl_security_options =
noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,permit_mynetworks,reject
_unauth_destination smtpd_tls_auth_only = no
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file =
/etc/ssl/private/smtpd.key
smtpd_tls_cert_file =
/etc/ssl/certs/smtpd.crt
smtpd_tls_CAfile =
/etc/ssl/certs/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout =
3600s tls_random_source =
dev:/dev/urandom

La configuration initiale de Postfix est terminée. Tapez la commande suivante


pour redémarrer le démon Postfix :
sudo systemctl restart postfix.service

Postfix prend en charge le protocole SMTP-AUTH tel que défini dans la


RFC2554. Il est basé sur SASL. Toutefois, il est encore nécessaire de
mettre en place l'authentification SASL avant de pouvoir utiliser SMTP-
AUTH.
Configuration de SASL
Postfix supports two SASL implementations Cyrus SASL and
Dovecot SASL. To enable Dovecot SASL the dovecot-core
package will need to be installed. From a terminal prompt enter the
following:
sudo apt install dovecot-core

Ensuite, vous devrez modifier /etc/dovecot/conf.d/10-master.conf. Changez


ce qui suit :
service auth {
# auth_socket_path points to this userdb socket by
default. It's typically
# used by dovecot-lda, doveadm, possibly imap process,
etc. Its default
# permissions make it readable only by root, but you may
need to relax these
# permissions. Users that have access to this socket
are able to get a list
# of all usernames and get results of everyone's userdb
lookups. unix_listener auth-userdb {
#mode =
0600 #user
= #group
=
}

# Postfix smtp-auth
unix_listener
/var/spool/postfix/private/auth { mode
= 0660
user =
postfix
group =
postfix
}

Afin de permettre aux clients Outlook d'utiliser le protocole SMTP-


AUTH, dans la section authentication mechanisms de
/etc/dovecot/conf.d/10-auth.conf, changez cette ligne :
auth_mechanisms = plain

En ceci :
auth_mechanisms = plain login

Une fois que vous avez configuré Dovecot, faites le redémarrer avec :
sudo systemctl restart dovecot.service
Mail-Stack Delivery
Une autre option de configuration de Postfix pour SMTP-AUTH est
l'utilisation du paquet mail- stack-delivery (nommé auparavant dovecot-
postfix). Ce paquet installera Dovecot et configurera Postfix afin d'utiliser
Dovecot pour l'authentification SASL et en tant qu'agent distributeur de
courriel. Le paquet configure également Dovecot pour les protocoles
IMAP, IMAPS, POP3, et POP3S.
You may or may not want to run IMAP, IMAPS, POP3, or POP3S on your
mail server. For example, if you are configuring your server to be a mail
gateway, spam/virus filter, etc. If this is the case it may be easier to use
the above commands to configure Postfix for SMTP-AUTH.
Pour installer le paquet, saisissez dans un terminal :
sudo apt install mail-stack-delivery
Votre serveur de courriel devrait être opérationnel, mais vous voudrez sans
doute configurer certaines options. Par exemple, le paquet utilise le
certificat et la clé du paquet ssl-cert, mais dans un environnement de
production, vous devriez utiliser un certificat et une clef créée pour l'hôte.
Consultez Certificats pour de plus amples informations.
Changez les options suivantes dans /etc/postfix/main.cf une fois que vous
avez personnalisé un certificat et une clé pour l'hôte :
smtpd_tls_cert_file = /etc/ssl/certs/ssl-
mail.pem smtpd_tls_key_file =
/etc/ssl/private/ssl-mail.key

Redémarrez ensuite Postfix :


sudo systemctl restart postfix.service

Tests
La configuration de SMTP-AUTH est terminée. Il est maintenant temps de
tester la configuration. Pour vérifier que SMTP-AUTH et TLS fonctionnent
correctement, exécutez la commande suivante : telnet
mail.example.com 25

Après avoir établi la connexion au serveur Postfix, tapez :


ehlo mail.example.com

Si vous voyez, entre autres, les lignes suivantes, alors tout fonctionne
parfaitement. Tapez quit pour sortir.
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME

Dépannage
Cette section introduit les méthodes de base pour déterminer les causes d'un
éventuel problème. Échappement du chroot
Le paquet postfix d'Ubuntu s'installera par défaut dans un environnement
chroot par mesure de
sécurité. Ceci peut accroître la complexité de la résolution de problèmes.
Pour désactiver l'opération chroot essayez de trouver la ligne
suivante dans le fichier de configuration /etc/postfix/master.cf :
smtp inet n ---- smtpd

et la modifier ainsi :
smtp inet n - n - - smtpd

Vous devrez ensuite redémarrer Postfix pour utiliser la nouvelle


configuration. A parti d'un terminal, saisissez :
sudo systemctl restart postfix.service
Smtps
Si vous avez besoin de smtps, modifiez /etc/postfix/master.cf et
décommentez la ligne suivante :
smtps inet n - - - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o
smtpd_client_restrictions=permit_sasl_authenticated,rejec
t
-o milter_macro_daemon_name=ORIGINATING
Fichiers journaux
Postfix inscrit tous les messages de journalisation dans /var/log/mail.log.
Cependant, les erreurs et les alertes peuvent quelquefois disparaître dans
les messages normaux, ils sont donc également inscrits dans
/var/log/mail.err et /var/log/mail.warn respectivement.
Pour voir en temps réel les messages inscrits dans les journaux, vous
pouvez utiliser la commande tail -f :
tail -f /var/log/mail.err

La quantité de renseignements enregistrés dans les journaux peut être


augmenté. Voici quelques options de configuration afin d'augmenter le
niveau de journalisation pour certains des domaines visés ci-dessus.
 Afin d'accroître l'activité de log de TLS, configurez l'option
smtpd_tls_loglevel sur une valeur entre 1 et 4.
 sudo postconf -e 'smtpd_tls_loglevel = 4'

 Si vous avez des problèmes d'envoi ou de réception de courriers


électroniques en provenance d'un domaine spécifique vous
pouvez ajouter ce domaine à la directive debug_peer_list.
 sudo postconf -e 'debug_peer_list = problem.domain'

 Vous pouvez accroître la verbosité de n'importe quel démon Postfix en


modifiant
/etc/postfix/master.cf et en ajoutant -v après l'entrée. Par
exemple, modifiez l'entrée smtp :
 smtp unix - - - - - smtp -v

It is important to note that after making one of the logging changes


above the Postfix process will need to be reloaded in order to
recognize the new configuration:
sudo systemctl reload postfix.service
 Pour augmenter la quantité d'informations journalisées lors du
dépannage de problèmes avec SASL, vous pouvez définir les options
suivantes dans /etc/dovecot/conf.d/10- logging.conf
 auth_debug=yes
auth_debug_password
s=yes

 Just like Postfix if you change a Dovecot configuration the


process will need to be reloaded: sudo systemctl reload
dovecot.service.

Certaines options ci-dessous peuvent dramatiquement augmenter la


quantité d'informations inscrites dans les fichiers journaux. Pensez à
ramener le niveau de journalisation à la normale une fois que vous aurez
détecté et corrigé le problème. Ensuite redémarrez le démon afin que la
nouvelle configuration soit prise en compte.
Partie 3: Installation des Services POP et IMAP.

IMAP (Internet Message Access Protocol) est un protocole de récupération


et de stockage des e- mails, qui se synchronise avec les serveurs et
maintient le statut des messages entre plusieurs clients de messagerie.
Table des matières
 Qu'est-ce que le protocole IMAP ?
 Activer l'accès IMAP pour votre compte
 Détails du serveur IMAP Zoho Mail
 Paramètres d'affichage des dossiers
 Paramètres IMAP Expunge
 Instructions spécifiques pour les clients de messagerie
 Résolution des problèmes de configuration IMAP
Zoho Mail est accessible via IMAP pour tout client IMAP standard
disposant des informations de configuration décrites dans ce guide.
Connectez-vous à votre messagerie Web et activez l'accès IMAP pour
votre compte avant de configurer IMAP dans le client de messagerie.
(Vous aurez peut-être besoin d'un mot de passe spécifique à l'application
pour configurer le compte sur d'autres appareils si vous avez activé
l'authentification à deux facteurs.)
Vous trouverez les procédures étape par étape pour certains clients IMAP
populaires en cliquant sur les liens ci-dessous.
Clients de bureau : Outlook | Thunderbird | Apple (Mac) Mail | Autre
clients IMAP Appareils mobiles / Tablettes : Apple iPhone/iPad |
Windows 7 Mobile | Android (Samsung, Google Nexus, etc.) | Autres
clients IMAP pour mobiles
Vous pouvez également choisir de télécharger les applications mobiles
natives sous iOS et Android pour utiliser les fonctionnalités avancées de
Zoho Mail sur votre appareil mobile.
IMAP – Introduction
IMAP et POP3 sont des protocoles qui vous permettent de télécharger des
e-mails à partir de votre serveur Zoho Mail et d'y accéder avec des clients
de messagerie de bureau comme Outlook
/ Mac Mail et/ou des clients de messagerie mobile et applications de
messagerie iPhone/Android. Zoho Mail peut être configuré sur n'importe
quel client de messagerie IMAP standard en utilisant les paramètres de
serveur SMTP et IMAP.
IMAP est plus récent que POP et permet une synchronisation
bidirectionnelle entre les clients de messagerie et votre compte Zoho Mail.
IMAP est recommandé si vous voulez accéder au même compte depuis
plusieurs clients de messagerie.
Activer l'accès IMAP
Pour activer l'accès IMAP pour votre compte de messagerie :
26.Connectez-vous à Zoho Mail.
27.Accédez à Settings .
28.Accédez à Mail Accounts >> Configure IMAP.
29.Sous IMAP, cochez la case IMAP Access.

30.Configurez Auto-Expunge et
Folder Settings. Détails du serveur IMAP
Zoho Mail
Vous pouvez configurer votre compte Zoho Mail sur n'importe quel client
IMAP standard avec les
informations de configuration indiquées ci-dessous.
Paramètres du serveur entrant (utilisateurs personnels avec une
adresse e-mail, nom- utilisateur@zoho.com) :
Nom du serveur entrant :
imap.zoho.com Port : 993
SSL requis : Oui
Nom d'utilisateur : nom-utilisateur@zoho.com
Paramètres du serveur entrant (utilisateurs de l'organisation avec
une adresse e-mail personnalisée basée sur
domaine,vous@votredomaine.com) :
Nom du serveur entrant :
imappro.zoho.com Port : 993
SSL requis : Oui
Nom d'utilisateur :
vous@votredomaine.com
Paramètres du serveur sortant :
Nom du serveur sortant :
smtp.zoho.com Port : 465 avec
SSL ou
Port : 587 avec TLS
Authentification requise :
Oui
Nom d'utilisateur : saisissez votre nom d'utilisateur ou votre adresse Zoho
Mail complète. Si votre domaine est hébergé par Zoho, votre adresse e-mail
se présente au format vous@votredomaine.com.
Adresse e-mail : saisissez votre adresse Zoho Mail. Si votre domaine est
hébergé par Zoho, votreadresse e-mail se présente au format
vous@votredomaine.com.
Mot de passe : saisissez le mot de passe de votre compte Zoho. (Vous aurez
peut-être besoin d'un mot de passe spécifique à l'application si
l'authentification à deux facteurs est activée.) Paramètres d'affichage des
dossiers pour IMAP
Lorsque la boîte aux lettres est très volumineuse et contient de nombreux
dossiers, la
visualisation et la synchronisation des e-mails dans les clients IMAP
peuvent être difficiles. Pour optimiser les performances de votre client
IMAP, vous pouvez choisir les dossiers que vous souhaitez synchroniser
avec IMAP comme suit :
31.Connectez-vous à Zoho Mail.
32.Accédez à Settings .
33.Accédez à Mail Accounts >> IMAP Access.
34.Sous la section IMAP Access, cliquez sur Launch folder settings now.
35.Sélectionnez les dossiers que vous souhaitez afficher dans le client
IMAP.

Remarque :
36.Seuls les dossiers sélectionnés ici seront disponibles dans le client IMAP
que vous utilisez.
37.Vous pouvez afficher les dossiers qui ont été partagés avec vous
depuis les clients IMAP sur le bureau ou un téléphone mobile.
38.Le client Thunderbird prend en charge les options de partage de
dossiers Read et Write dans Zoho Mail. En savoir plus.
Options IMAP Expunge
Lorsque vous supprimez un e-mail ou que vous le déplacez vers un autre
dossier sur votre client IMAP, le message est supprimé ou déplacé vers un
autre dossier en fonction de vos paramètres IMAP. Pour effectuer ces
changements immédiatement dans votre compte IMAP, vous pouvez
activer l'option « Expunge Immediately » comme suit.
39.Connectez-vous à Zoho Mail.
40.Accédez à Settings .
41.Accédez à Mail Accounts >> Configure IMAP.
42.Dans la section IMAP, sélectionnez votre option Expunge favorite pour
IMAP.
o Cochez Auto-Expunge Mails pour supprimer les messages du
serveur Zoho Mail lorsque vous supprimez / déplacez des e-
mails dans le client IMAP.
o Décochez Auto-Expunge Mails pour conserver les
messages. Ils devront être effacés manuellement du client
IMAP.
Résolution des problèmes de
configuration IMAP Connexion
impossible depuis les clients IMAP
Si vous avez activé l'authentification à deux facteurs pour votre compte, vous
devez générer et
utiliser le mot de passe spécifique à l'application dans le client IMAP que vous
utilisez.
Si vous utilisez une connexion fédérée (connexion à l'aide de Google Apps,
Gmail, Facebook, etc.), il est possible que vous n'ayez pas de mot de passe
exclusif dans Zoho pour votre compte de messagerie. Cliquez ici pour
obtenir des instructions détaillées sur la création d'un mot de passe pour
votre compte. Vous ne pouvez pas vous connecter en utilisant votre compte
externe pour POP / IMAP / Active Sync.
Accès IMAP non activé
Assurez-vous que l'accès IMAP est activé pour votre compte avant de
configurer IMAP dans les autres clients de messagerie. Reportez-vous à
cette section pour obtenir des instructions.
Si vous êtes un utilisateur de l'organisation, demandez à votre
administrateur si l'accès IMAP est autorisé pour votre compte,
conformément aux politiques de messagerie.
Remarque :
Pour les utilisateurs nouvellement inscrits (forfait Gratuit), la fonction
d'accès POP n'est pas disponible. Cliquez ici pour plus d'informations.

Avantage d'IMAP par rapport à POP


Le protocole IMAP (Internet Message Access Protocol) peut être utilisé à
la place du protocole POP. IMAP et POP sont deux protocoles de
messagerie qui vous permettent de lire vos e-mails dans des applications
tierces telles que Thunderbird, Outlook, etc.
Bien que Zoho Mail prenne en charge ces deux protocoles, le
protocole IMAP présente des avantages par rapport à la méthode
POP.
POP IMA
P
L'utilisation de POP est limitée à un IMAP peut être utilisé pour accéder
seul aux e-
terminal. mails à partir de plusieurs appareils.
Communication unidirectionnelle : Communication bidirectionnelle :
 Les e-mails sont récupérés à
 Les e-mails sont
partir du serveur sans synchronisés en permanence
synchronisation dans les deux sens entre le
supplémentaire entre le serveur et différents clients
serveur et le client. de messagerie.
 Le statut lu/non lu des e-
 Le statut lu/non lu des e-
mails n'est pas géré. mails est géré.
 Les actions exécutées sur
 Les actions exécutées sur
les e-mails (suppression, les e-mails (suppression,
déplacement, etc.) se déplacement, etc.) se
reflètent uniquement dans reflètent sur tous les
le client appareils.
concerné.
Les e-mails sont téléchargés et Les e-mails sont toujours sur le
supprimés du serveur, sauf si une serveur et restent donc
option de conservation de accessibles chaque fois que
copie sur le serveur est activée. nécessaire.
Les e-mails ne sont pas Les e-mails sont sauvegardés
sauvegardés, sauf si vous les avez automatiquement pour une
sauvegardés manuellement. utilisation
ultérieure.
POP utilise l'espace de stockage IMAP économise l'espace de
local car les e-mails sont stockage local
téléchargés sur le terminal. car les e-mails sont stockés sur
un serveur distant.
Cliquez ici pour en savoir plus sur le
protocole IMAP. Activer l'accès POP
Vous devez activer l'accès POP du compte Zoho Mail pour pouvoir accéder à
ce compte dans
d'autres clients POP. Vous pouvez activer l'accès POP pour tous les e-
mails depuis le début, ou à partir de ce jour particulier.
43.Connectez-vous à Zoho Mail.
44.Accédez à Settings .
45.Accédez à Mail Accounts >> POP Access.
46.Vous pouvez activer l'accès POP dans deux modes :
o All Emails : permet d'activer l'accès POP pour tous les
messages du compte ; tous les e-mails seront téléchargés par
le client POP que vous configurez.
o Emails that arrive from now : permet d'activer l'accès POP
pour les e-mails qui arrivent à partir du moment où
l'utilisateur active l'accès POP (seuls les nouveaux e-mails
seront téléchargés sur le client POP que vous configurez).
Paramètres de configuration POP pour Zoho Mail
Vous pouvez configurer votre compte Zoho Mail sur n'importe quel client
POP standard avec les paramètres POP indiqués ci-dessous. L'adresse e-
mail complète du compte Zoho doit être saisie correctement à la fois dans
les champs d'adresse e-mail et de nom d'utilisateur. Si vous avez activé
l'authentification à deux facteurs, vous devez générer et utiliser un mot de
passe spécifique à l'application dans le client de messagerie.
Paramètres du serveur entrant : (utilisateurs personnels avec une
adresse e-mail nom- utilisateur@zoho.com)
Nom du serveur entrant : pop.zoho.com
Port : 995
SSL requis : Oui
Nom d'utilisateur : nom-utilisateur@zoho.com
Paramètres du serveur entrant : (utilisateurs de l'organisation avec
une adresse e-mail personnalisée basée sur domaine
vous@votredomaine.com)
Nom du serveur entrant : poppro.zoho.com
Port : 995
SSL requis : Oui
Nom d'utilisateur : vous@votredomaine.com
Paramètres du serveur sortant :
Nom du serveur sortant : smtp.zoho.com
Port : 465 SSL ou
Port : 587 TLS
Authentification requise : Oui
Nom d'utilisateur : adresse e-mail complète de votre compte Zoho Mail.
Si votre domaine est hébergé par Zoho, saisissez ici l'adresse
vous@votredomaine.com.
Adresse e-mail : adresse e-mail complète de votre compte Zoho Mail.
Si votre domaine est hébergé par Zoho, saisissez l'adresse
vous@votredomaine.com.
Mot de passe : le mot de passe de votre compte Zoho.
Vous aurez peut-être besoin d'un mot de passe spécifique à l'application
pour configurer le compte sur d'autres appareils si l'authentification à
deux facteurs est activée pour votre compte. Remarque :
Si vous utilisez une connexion fédérée, vous n'aurez pas de mot de passe
« Zoho » pour votre compte. Utilisez le lien Forgot Password sur la page
accounts.zoho.com pour générer un mot de passe spécifique à Zoho pour
votre compte dans Zoho. Les identifiants de connexion fédérée ne
fonctionnent pas pour l'accès POP / IMAP / Active Sync.
Inclure les SPAMS dans le téléchargement POP
Vous pouvez choisir d'inclure les spams lors de la récupération par POP.
Zoho Mail fournit des options permettant d'inclure les spams ou de
récupérer uniquement les spams lors de la récupération par POP. Si vous
comptez uniquement sur votre client de messagerie et qu'il arrive que des
e-mails reçus de vos contacts connus soient classés comme spams pour
diverses raisons, vous pouvez inclure les spams dans la récupération par
POP.
47.Connectez-vous à Zoho Mail.
48.Accédez à Settings .
49.Accédez à Mail Accounts >> POP Access.
50.Une fois l'accès POP activé, vous pouvez choisir d'inclure les spams.
Partie 4: conception UML du serveur de messagerie

LES DIAGRAMES
Partie 5: Interface graphiques
Figure 1: Se connecter User
Figure 2: Inscription Utilisateur

Figure 3: Liste Pour Utilisateur


Figure 4: Se connecter Admin

Figure 5: Inscription Admin


Figure 7: Liste pour les admins
CONSCLUSION
Le courrier électronique est considéré comme étantle service le plus
utilisé sur
Internet. Son principe repose sur l’utilisation des
protocoles textuels dans le transfert des
courriers via les différents serveurs de messagerie ouMTA. Il n'existe qu'un
seul protocole
entre MTA : SMTP. Il sert à transférer des mailsd'une machine à
une autre. Le transfert du
courrier du serveur mail vers le client s’effectue avecd’autres protocoles.
Le protocole POP
permet d'aller récupérer son courrier sur le serveurdistant. Il est
nécessaire pour les personnes n'étant pas connectées en permanence à
Internet afin de pouvoir collecter les mails reçus hors connexion. En
outre, le protocole IMAP est un protocole alternatif au protocole POP3
mais offrant beaucoup plus de possibilités. Lors de son envoie, le
courrier est encodé selon le mode d’encodage choisi par l’expéditeur et
sera ensuite décodé par le logiciel client de messagerie.
Par ailleurs, une solution viable et efficace quant à lagestion des courriers
consiste à
opter pour des logiciels libres. Linux offre danschacune de ses distributions
le serveur Postfix
qui a l'ambition d'être rapide, facile à administrer etparticulièrement
sécurisé tout en étant suffisamment compatible avec son prédécesseur
sendmail pour ne pas dérouter les
utilisateurs.
Une architecture sécurisée d’un serveur mail consiste
ainsi à combiner le serveur
Postfix avec d’autres outils de filtrage antivirus etantispam. D’autres
solutions libres sont
prévues à cet effet.
Comme il n’existe de politique de sécurité garantie à100%, ce document
n’est qu’un
début quant à la sécurisation des serveurs mails. D’autres méthodes
consisteraient à insérer au niveau même du serveur Postfix des modules
permettant de sécuriser les e-mails. Une suite logique de ce mémoire peut
amener à penser à fairedes recherches sur la messagerie unifiée
qui gère les services de courrier entre des terminauxautres que des
ordinateurs (téléphone, minitel,etc.).

Vous aimerez peut-être aussi