Vous êtes sur la page 1sur 35

Ministre de lEnseignement

Suprieur et
de la recherche scientifique

Universit de Monastir
Institut Suprieur dInformatique de
Mahdia
=============
Projet de fin dtudes
N dordre : .

PROJET

SERVEUR MAIL
PRPARES

PAR

CHAABANI WRIDA
SIWAR

BOUGRINE

BEN ZINEB MANEL


SAMIRA

ELKAMEL

KATTENI SABRINE
Anne Universitaire 2016/2017

Page 1

Introduction Gnrale
En anglais, E-mail est l'abrviation de Electronique mail ou courrier lectronique,
est un des services les plus utiliss de l'Internet et de l'Intranet. Car si on se connecte pour
consulter des pages web , c'est surtout pour avoir sa propre adresse lectronique que l'on
prend un abonnement chez un pourvoyeur de service. Contrairement au courrier
conventionnel ou mme du fax (fac-simile), le succs du courrier lectronique tient sa
facilit d'utilisation, sa rapidit d'envoi st son cot extrmement faible.
Pour le courrier personnel comme professionnel, les demandes de renseignements,
l'inscription dans les coles, les universits, la vente...etc. chaque jour des applications
nouvelles apparaissent.
Un serveur de messagerie lectronique est un logiciel serveur de courrier lectronique.
Il a pour vocation de transfrer les messages lectroniques d'un serveur un autre. Un
utilisateur n'est jamais en contact direct avec ce serveur mais utilise soit un client de
messagerie, soit un courrieller web, qui se charge de contacter le serveur pour envoyer ou
recevoir les messages.

Anne Universitaire 2016/2017

Page 2

Problmatique
La messagerie lectronique (ou Email : Electronique mail) est l'un
des services les plus importants dans une entreprise. Elle permet aux
utilisateurs denvoyer et recevoir des messages. Pour utiliser ce service
il faut mettre en place un serveur dit de messagerie qui va permettre
aux clients de recevoir et grer leurs comptes de messagerie.
Il sest impos comme loutil le plus utilis en entreprise car il permet de
multiplier les communications indpendamment du nombre de correspondants et de leur
disponibilit immdiate, dassurer la traabilit et le suivi des changes, de grer la
diffusion de linformation, personnelle ou au sein dun groupe, directe ou indirecte
(destinataire en copie), de classer, archiver et rechercher les communications ralises.
Donc notre serveur va grer la boite mail il va offrir des services des clients
(bien videment des entreprises) ce serveur doit accepter plusieurs nom de domaines, pour
administrer les clients web il nous faut un panel dadministration pour ajouter les clients
et les domaines.

Anne Universitaire 2016/2017

Page 3

Solution propose

La gestion du courrier lectronique a longtemps t un problme difficile sous Linux.


Ceci principalement du fait de la complexit de paramtrage du serveur de courrier
lectronique Sendmail. Heureusement, des logiciels efficaces et plus simples comme Postfix
sont apparus pour traiter la gestion du courrier lectronique.
En outre :

Postfix est un Mail Transfer Agent, simple d'utilisation

contrairement Sendmail ou bien Qmail. Il utilis par dfaut chez


Mac OS X, disponible sur GNU/Linux, la famille BSD et d'autres Unix
encore.

Ainsi que le, Postfix doit tre largement diffus et utilis afin d'avoir un

impact sensible sur les performances et la scurit des systmes de messagerie


proches(Performance). Vu quil utilise plusieurs niveaux de dfense afin de protger le
systme de toute intrusion.

Anne Universitaire 2016/2017

Page 4

I. Prsentation de projet :
Aujourdhui, je vais prsenter linstallation dun serveur de-mails sous
GNU/Linux. Touts linstallation a t ralis sous ubuntu v.16.04.
Tout dabord, je choisi le serveur mail NGINX comme interface web vu quil est plus rapide
que lAPACHE. Ainsi, jutiliserai le logiciel Postfix comme agent de transfert
de courrier (MTA), aussi appel serveur SMTP. Il assurera lenvoi de
messages depuis le serveur et la rception de courriers en provenance
dautres

serveurs de-mails

messagerie (comme

via

Microsoft

leurs

MTA.

Outlook

ou

Ainsi, les
Mozilla

clients

de

Thunderbird)

communiqueront directement avec le MTA pour envoyer un e-mail, via le


protocole SMTP. Pour la rcupration des courriers reus sur le serveur par
les clients de messagerie, je mettrai en place le logiciel Dovecot. Celui-ci
permet de rcuprer les e-mails via les protocoles POP et IMAP. Afin
davoir un serveur de-mails complet, je dtaillerai la mise en place
de lantivirus ClamAv et du filtre anti-spam Spamassassin. Ces deux
logiciels seront exploits par le filtre de contenu Amavis qui analysera
directement les courriers stocks sur le serveur.
Afin de faciliter la gestion des diffrents comptes e-mails sur le serveur,
jinstallerai lapplication Web Postfix Admin. Ainsi, il sera possible de
grer plusieurs comptes e-mails mais galement plusieurs noms de
domaines.

Pour

terminer,

jaborderai

linstallation

du

Webmail

Roundcube afin que les utilisateurs puissent accder leurs e-mails


depuis nimporte quel navigateur Web.

Anne Universitaire 2016/2017

Page 5

Schma :

III. Prsentation des Outils


Postfix vs Sendmail:
Dfinition :

Anne Universitaire 2016/2017

Page 6

Postfix est lun des gestionnaires de messagerie les plus utiliss sur
Internet. Destin remplacer Sendmail dont les problmes de scurit
taient nombreux, Postfix a tout de suite t conu autour de trois
objectifs :
-

Un systme de configuration simple.


Une forte compatibilit avec les commandes de Sendmail
Une conception hautement scurise.

Sendmail est

un serveur

de

messagerie

lectronique dont

le code

source est ouvert. Il se charge de la livraison et de l'envoi de courriers


lectroniques (courriels).

Mode de fonctionnement :

Intrt
LSTT cherchent mettre en place un mcanisme dchange de donnes
et de communication interne rapide et fiable. Pour cela le moyen le plus
efficace est de mettre en place un systme de messagerie pour : Assurer
la scurit, ainsi que la fiabilit des informations changes 1 Envoyer
des messages tous les collaborateurs de lentreprise. Conservs tous
les messages, afin de retrouver un message reu ou mis. Programm
un message a fin qu'il sera envoy une date et une heure que vous
dfinissez.

Comparaison Postfix /Sendmail:


Anne Universitaire 2016/2017

Page 7

Bien que Sendmail reste la rfrence en matire de transport de courrier


sur les systmes Unix, c'est une application monolithique relativement
complexe configurer. Postfix prsente bien des avantages sur Sendmail
au niveau scurit et ne comporte qu'un seul fichier de configuration
modifier pour tre oprationnel. Postfix est sans aucun doute plus
conviviale et plus scuris que Sendmail.
La gestion du courrier lectronique a longtemps t un problme difficile
sous Linux. Ceci principalement du fait de la complexit de paramtrage
du serveur de courrier lectronique Sendmail. Heureusement, des logiciels
efficaces et plus simples comme Postfix sont apparus pour traiter la
gestion du courrier lectronique.

Postfix est un serveur de messagerie facile mettre en place


et permet de garantir une certaine scurit du fait que le serveur est
hberge en local.
Postfix doit tre largement diffus et utilis afin d'avoir un
impact sensible sur les performances et la scurit des systmes de
messagerie sur l'Internet.
Postfix est au moins trois fois plus rapide que son plus proche
rival (Qmail de Bernstein).
Un serveur Postfix sur un PC de bureau peut envoyer et

recevoir

quotidiennement un million de mails diffrents.

Sendmail est trs critiqu pour sa lenteur, sa complexit et sa


maintenance difficile en comparaison d'autres Mail Transfer Agents

(MTA) tels que Qmail et Postfix.


Le serveur de messagerie standard sur les systmes Unix est le
serveur Sendmail. Sendmail a fait ses preuves. L'inconvnient est son
mode de configuration.
Il existe d'autres serveurs de messagerie sur Unix (QMail, Zmailer...) tous prsentent des inconvnients au niveau utilisation de
la bande passante, inter-oprabilt, respect des RFC, facilit de
configuration, scurit...
L'objectif de Postfix est d'apporter une solution ces diffrents
problmes.

Anne Universitaire 2016/2017

Page 8

Postfix est un serveur de messagerie lectronique et un logiciel libre


dvelopp par Wietse Venema et plusieurs contributeurs. Il se charge
de la livraison de courriers lectroniques (courriels) et a t conu
comme une alternative plus rapide, plus facile administrer et plus
scurise que l'historique Sendmail.Haut du formulaire

Pour la partie Scurit, en activant le support TLS dans

Postfix, vous n'obtenez pas seulement la possibilit de chiffrer les


messages et d'authentifier les clients et les serveurs.
La couche de scurit du transport TLS (Transport Layer
Security, galement appele SSL) fournit les authentifications
bases sur des certificats et le chiffrement des sessions. Une session
chiffre protge les informations transmises par message SMTP.

Une faille de scurit vient d'tre dcouverte dans

Sendmail. Celle-ci peut donner un accs root une personne non


autorise.
Postfix:

lgant,

performant,

simple

configurer,

idal

dans

la plupart des cas.


Sendmail: complexe, monolithique, machin tout faire mais difficile
apprendre puis maitriser.

Anne Universitaire 2016/2017

Page 9

/https://www.axigen.com/articles/axigen-comparativebenchmarks_27.html//

Architecture Postfix :

Anne Universitaire 2016/2017

Page 10

//

http://cjovet.free.fr/cours/postfix.htm//

Dovecot vs Cyrus
Dfinition :
Dovecot est

un

serveur IMAP et POP3 pour

les

systmes

d'exploitation Unix et drivs, conu avec comme premier but la scurit.


Parmi les plus performants des serveurs IMAP compatibilit
complte avec des outils de manipulation de boites lettres. Les boites
lettres sont indexes de manire transparente.
Dovecot permet botes aux lettres et leurs index pour tre modifis
par plusieurs ordinateurs en mme temps, tout en performant. Cela
signifie que Dovecot fonctionne bien avec les systmes de fichiers
en cluster.
Dovecot la conception et la mise en uvre est fortement ax sur
la scurit.

Architecture :

Anne Universitaire 2016/2017

Page 11

Les avantages de Dovecot sur Cyrus en termes d'administration :


- les outils de migration pour les botes mail existantes
- la gestion/maintenance des botes plus aises
- la configuration plus souple/extensible via ses propres scripts
-L'approche de Cyrus est moins "immdiate" dans le sens o plus d'tapes
sont ncessaire pour effectuer certaines tches d'administration (l o
Dovecot regroupe certaines d'entre elles ; par ex. pour tout ce qui a trait
la gestion des botes), mais galement parce que celui-ci fait appel plus
d'outils ddis pour l'administration.
- Compar Cyrus, Dovecot est plus agrable administrer et un moins
couteux en ressources systme (bien que ce sera plutt visible sur de
larges volumes de botes). [2]

Roundcube vs Horde vs Squirrelmail


Dfinition : Roundcube

Il est un client Webmail pour le protocole IMAP crit en PHP et


JavaScript.
peut tre install sur une plateforme LAMP.
Il est compatible avec les serveurs web Apache, Nginx, etc.
Anne Universitaire 2016/2017

Page 12

Roundcube offre beaucoup plus agrable, interface assez intuitive


conviviale et pour vos e - mails par rapport squire mail.

Le Webmail Roundcube est disponible avec un


cryptage HTTPS grce au protocole SSL.
Fonctionnalits :
la fonction gliss-dposer
l'accus rception d'envois
le correcteur d'orthographe
lecture emails en threads
un carnet d'adresses complet et la possibilit
d'utiliser un diteur texte (Avec utilisation de gras,
insertion d'images,...). utilise la technologie AJAX
cryptage Support S / MIME
extraits de pices jointes
Recherche avance sur tous les dossiers
Les dossiers virtuels (Recherches aka sauvegards)
Raccourcis clavier
le soutien de l'historique du navigateur
module de calendrier en ligne
Interface d'administration

SquirrelMail :
SquirrelMail a toutes les fonctionnalits de base si on veut partir un client
de messagerie, calendrier, vrifier orthographe, y compris soutien fort de
MIME, carnets d'adresses, et dossier manipulation. Il a interface simple o
il fondamentalement liste de tous les emails. Recommand pour ceux qui
recherchent des fonctions base de lecture et rponse email.

Horde :
Il est considr comme plus email entirement slectionne rapport la
prcdente deux Squire mail & Roundcube et il a fonctions similaires
Outlook.
Webmail Horde est livr avec des fonctionnalits telles que le calendrier,
liste de tches, bloc-notes, carnet d'adresses, et plus encore. Le systme
Anne Universitaire 2016/2017

Page 13

de gestion du courrier lectronique inclut le support pour les filtres


avancs, les pices jointes, la vrification orthographique, et affiche HTML
e-mail ainsi.
Horde est galement livr avec des fonctions de gestion des tches, de
sorte que on peut inscrire la

tche, dfinir la tche de rappels et de

garder une trace son tat

Recommand
pour:

Type
d'interface

Caractristi
ques de la
composition
:
Caractristi
ques de
l'Organisati
on:

Caractristi
ques
supplment

Les utilisateurs
qui ont besoin
d'une suite
complte de
fonctionnalits
qui inclut l'accs
e-mail mobile et
des outils de
productivit
avancs.
* Le format
de trois volet
avec vue volet.
* Interface
mobile
disponible.
* Pices jointes
* composition
HTML
* Vrification
orthographique
* Manipulation
de dossiers
* Les filtres de
courrier
* drapeaux de
message
* Recherche
courriel
* Threaded
(Conversation)
Vue
* Carnet
d'adresses
(avanc)

Anne Universitaire 2016/2017

Les utilisateurs qui


ont besoin d'une
interface web
conviviale avec
quelques
fonctionnalits
supplmentaires
disponibles.

Les utilisateurs qui


ont besoin d'une
interface trs
basique partir
duquel lire et
rpondre aux emails.

* Le format de trois * Format de liste


volet avec vue
deux volets.
volet.

* Pices jointes
* composition
HTML
* Vrification
orthographique
* Organisation
Drag-and-drop
* manipulation de
dossiers
* drapeaux de
message
* Recherche
courriel
* Threaded
(Conversation) Vue

* Pices jointes
* Texte
uniquement
composition

* Carnet
d' adresses
(avanc)

* Carnet
d'adresses
(simple)

Page 14

* Manipulation de
dossiers
* drapeaux de
message
* Recherche
courriel
* Threaded
(Conversation) Vue

aires:

Site officiel

* Calendrier
(avanc)
* rappels
d'vnements
* Nouvelles
feed
* Remarques
* Liste des
tches (avanc)
Le projet Horde

*
Les administrateur
s systme peuvent
utiliser des plugins
pour ajouter
des fonctionnalits
personnalises.
Roundcube
Webmail

Projet Le
Projet
SquirrelMail

Panel dadministration : Nginx (vimbadmin) :


Dfinition :
ViMbAdmin (prononc vim-tre-admin et le sens virtuel dadministration
de botes aux lettres) fournit un systme d'administration de la
messagerie base sur le Web virtuel pour une utilisation avec des agents
de transport de courrier tels que Postfix, Sendmail et qmail par exemple. Il
permet aux administrateurs systme d'ajouter et de grer les domaines et
d'ajouter ensuite, diter et supprimer des botes aux lettres et des alias
pour ces domaines.
ViMbAdmin (prononc vim-be-admin et qui signifie l'administration virtuel
bote aux lettres) est conu comme une alternative (et une quasi-fente
en remplacement) pour l'application Postfix Administrateur populaire, mais
dat.

Caractristiques :
Depuis la version 2.0.0 publie en Mars 2012, les caractristiques
standard et amliors par rapport Postfix Admin comprennent:

Super niveau de l'utilisateur de l'administrateur avec un accs

complet;

niveau de l'utilisateur d'administration avec accs uniquement

aux domaines affects et leurs botes aux lettres et alias.

Admins super peut crer et modifier les admins et les super-

administrateurs;

Anne Universitaire 2016/2017

Page 15

JQuery Datatable tout au long de rapide dans la recherche du

navigateur et la pagination;

Crer, modifier et purger les domaines, y compris la limitation

du nombre de botes aux lettres et alias un administrateur non-super peut


crer par domaine;

Activer / dsactiver les admins, les domaines, les botes aux

lettres et les alias au clic d'un bouton;

journalisation complte.

Facilit pour les utilisateurs finaux (propritaires de botes aux

lettres) pour changer leur mot de passe;

Un seul point de connexion pour tous les administrateurs si

super-ou non [3]

Scurit :
Le spam : Les pourriels ou spams sont des e-mails de masse, par exemple : des envois
de publicit, diffuss sur Internet. Ces spams sont envoys des millions d'adresses e-mail
sans qu'ils aient t sollicits.
Avec la solution du filtre anti-spam externalis ou ASP, la scurit des messageries
lectroniques est optimise. Comme les courriers lectroniques entrants seront drouts vers
le serveur de lhbergeur, tous les spams seront filtrs et limins avant que les emails
lgitimes ne rejoignent le serveur de messagerie de lentreprise. Le seul hic avec ce type de
filtre anti-spam est que la possibilit en matire de configuration est limite.
- Amavis est une interface entre Postfix et le contenu des paquets de
filtrage tels que SpamAssassin et ClamAV.
- ClamAV est un moteur antivirus haute performance pour les trojans
de dtection, les virus, leslogiciels malveillants et autres menaces
malveillantes.
- SpamAssassin est une haute performance plate - forme anti-spam
clbre pour ses baysiens capacits de filtrage de spam. Il donne

Anne Universitaire 2016/2017

Page 16

aux administrateurs systme un filtre pour classer lesmessages et


bloquer tous les courriels de masse non sollicits.[6]

III. Tutoriel dutilisation


Anne Universitaire 2016/2017

Page 17

Comme tutoriel dutilisation dans notre projet on a choisie :


https://mondedie.fr/d/5750-Tuto-Installer-un-serveur-de-mail-avec-Postfix-Dovecot-etRainloop/2
Ce tutoriel nous a aides installer un serveur mail sous GNU/Linux. Il s'adresse des
personnes qui ont dj une bonne exprience en administration systme sous Linux car il est
trs important de comprendre ce que l'on fait afin de mieux ragir en cas de
disfonctionnement surtout dans le cas o l'on se sert tous les jours de son serveur pour
envoyer/recevoir des mails.

1) Configuration du nom d'hte, du FQDN et du champ MX


- Nom de domaine principal : tc.com
- Nom d'hte : mail
- FQDN : mail.tc.com
- MX : mail.domain.tld
Pour modifier le nom d'hte, excutez la commande suivante (n'oubliez pas de remplacer
"hostname" par le nom d'hte de votre serveur) :
Nano /etc/hostname

Pour modifier le FQDN, il faut editer le fichier /etc/hosts :


# nano /etc/hosts
127.0.0.1 localhost.tc.com mail.tc.com localhost
127.0.1.1 projetmail-machinevirtual
192.168.3.146 mail.tc.com mail

2) Installation de postfix
On commence par installer Postfix avec le support de mysql. Les domaines, comptes
utilisateurs et alias seront ainsi grs directement au sein d'une base de donnes, que vous
pourrez administrer grce vos outils habituels, comme phpMyAdmin par exemple.
apt-get install postfix postfix-mysql
Lors de l'installation de Postfix, vous devez choisir le type du serveur de messagerie,
choisissez "Site Internet" pour utiliser SMTP :

Anne Universitaire 2016/2017

Page 18

Ensuite une autre fentre apparat et vous demande le nom du systme de mail, entrez alors
le FQDN de votre serveur.

3) Cration de la base de donnes


# Connexion au serveur MySQL en tant que root
mysql -u root -p
# Cration de la base de donnes "postfix"
mysql> CREATE database postfix;
# Cration de l'utilisateur "postfix" et ajout des permissions
mysql> CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'MOT DE PASSE';
mysql> GRANT USAGE ON *.* TO 'postfix'@'localhost';
mysql> GRANT ALL PRIVILEGES ON postfix.* TO 'postfix'@'localhost';
# On quitte la console MySQL
mysql> exit

4) nginx :

Anne Universitaire 2016/2017

Page 19

5) phpMyadmin :

6) postfixadmin :
cd /var/www
wget http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin2.92/postfixadmin-2.92.tar.gz
tar -xzf postfixadmin-2.92.tar.gz
mv postfixadmin-2.92 postfixadmin
rm -rf postfixadmin-2.92.tar.gz
chown -R www-data:www-data postfixadmin
apt-get install php5-imap
*restart le service :
service nginx restart
ok

Anne Universitaire 2016/2017

Page 20

7)Configuration de Postfix
cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
nano /etc/postfix/main.cf
#######################
## GENERALS SETTINGS ##
#######################
smtpd_banner
= $myhostname ESMTP $mail_name (Debian/GNU)
biff
= no
append_dot_mydomain = no
readme_directory = no
delay_warning_time = 4h
mailbox_command
= procmail -a "$EXTENSION"
recipient_delimiter = +
disable_vrfy_command = yes
message_size_limit = 502400000
mailbox_size_limit = 1024000000
inet_interfaces = all
inet_protocols = ipv4

Anne Universitaire 2016/2017

Page 21

myhostname = hostname.domain.tld
myorigin
= hostname.domain.tld
mydestination = localhost localhost.$mydomain
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
relayhost =
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
####################
## TLS PARAMETERS ##
####################
# Smtp ( OUTGOING / Client )
smtp_tls_loglevel
=1
smtp_tls_security_level = may
smtp_tls_CAfile
= /etc/ssl/certs/ca.cert.pem
smtp_tls_protocols
= !SSLv2, !SSLv3
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtp_tls_mandatory_ciphers = high
smtp_tls_exclude_ciphers = aNULL, eNULL, EXPORT, DES, 3DES, RC2, RC4, MD5,
PSK, SRP, DSS, AECDH, ADH
smtp_tls_note_starttls_offer = yes
# --------------------------------------------------------------------------------------------------# Smtpd ( INCOMING / Server )
smtpd_tls_loglevel
=1
smtpd_tls_auth_only
= yes
smtpd_tls_security_level = may
smtpd_tls_received_header = yes
smtpd_tls_protocols
= !SSLv2, !SSLv3
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_ciphers = medium
# Infos (voir : postconf -d)
# Medium cipherlist = aNULL:-aNULL:ALL:!EXPORT:!LOW:+RC4:@STRENGTH
# High cipherlist = aNULL:-aNULL:ALL:!EXPORT:!LOW:!MEDIUM:
+RC4:@STRENGTH
# smtpd_tls_exclude_ciphers = NE PAS modifier cette directive pour des raisons de
compatibilit
#
avec les autres serveurs de mail afin d'viter une erreur du type
#
"no shared cipher" ou "no cipher overlap" puis un fallback en
#
plain/text...
# smtpd_tls_cipherlist
= Ne pas modifier non plus !
smtpd_tls_CAfile
= $smtp_tls_CAfile
smtpd_tls_cert_file
= /etc/ssl/certs/mailserver.crt
smtpd_tls_key_file
= /etc/ssl/private/mailserver.key
smtpd_tls_dh1024_param_file = $config_directory/dh2048.pem
Anne Universitaire 2016/2017

Page 22

smtpd_tls_dh512_param_file = $config_directory/dh512.pem
tls_preempt_cipherlist = yes
tls_random_source
= dev:/dev/urandom
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
lmtp_tls_session_cache_database = btree:${data_directory}/lmtp_scache
# ---------------------------------------------------------------------#####################
## SASL PARAMETERS ##
#####################
smtpd_sasl_auth_enable
= yes
smtpd_sasl_type
= dovecot
smtpd_sasl_path
= private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
smtpd_sasl_local_domain
= $mydomain
smtpd_sasl_authenticated_header = yes
broken_sasl_auth_clients = yes
##############################
## VIRTUALS MAPS PARAMETERS ##
##############################
virtual_uid_maps
= static:5000
virtual_gid_maps
= static:5000
virtual_minimum_uid = 5000
virtual_mailbox_base = /var/mail
virtual_transport
= lmtp:unix:private/dovecot-lmtp
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps
= mysql:/etc/postfix/mysql-virtual-alias-maps.cf
######################
## ERRORS REPORTING ##
######################
# notify_classes = bounce, delay, resource, software
notify_classes = resource, software
error_notice_recipient = mail@tc.com
# delay_notice_recipient = mail@tc.com
# bounce_notice_recipient = mail@tc.com
# 2bounce_notice_recipient = mail@tc.com

Anne Universitaire 2016/2017

Page 23

##################
## RESTRICTIONS ##
##################
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unknown_recipient_domain,
reject_rbl_client zen.spamhaus.org
smtpd_helo_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname
# reject_unknown_helo_hostname
smtpd_client_restrictions =
permit_mynetworks,
permit_inet_interfaces,
permit_sasl_authenticated
# reject_plaintext_session,
# reject_unauth_pipelining
smtpd_sender_restrictions =
reject_non_fqdn_sender,
reject_unknown_sender_domain
cd /etc/ssl/
openssl genrsa -out ca.key.pem 4096
openssl req -x509 -new -nodes -days 1460 -sha256 -key ca.key.pem -out ca.cert.pem
Country Name (2 letter code) [AU]: FR
State or Province Name (full name) [Some-State]: France
Locality Name (eg, city) []: Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Corp Ltd
Organizational Unit Name (eg, section) []: Certificate Authority
Common Name (e.g. server FQDN or YOUR name) []: Root CA
openssl genrsa -out mailserver.key 4096
openssl req -new -sha256 -key mailserver.key -out mailserver.csr
Country Name (2 letter code) [AU]: FR
State or Province Name (full name) [Some-State]: France
Locality Name (eg, city) []: Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Corp Ltd
Organizational Unit Name (eg, section) []:Mail server
Common Name (e.g. server FQDN or YOUR name) []: mail.domain.tld
Anne Universitaire 2016/2017

Page 24

openssl x509 -req -days 1460 -sha256 -in mailserver.csr -CA ca.cert.pem -CAkey ca.key.pem
-CAcreateserial -out mailserver.crt
chmod 444 ca.cert.pem
chmod 444 mailserver.crt
chmod 400 ca.key.pem
chmod 400 mailserver.key
mv ca.key.pem private/
mv ca.cert.pem certs/
mv mailserver.key private/
mv mailserver.crt certs/
openssl dhparam -out /etc/postfix/dh2048.pem 2048
openssl dhparam -out /etc/postfix/dh512.pem 512
Configuration de Postfix pour MySQL
Nano /etc/postfix/mysql-virtual-mailbox-domains.cf
hosts = 127.0.0.1
user = postfix
password = Azerty@123
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and
active= 1
nano /etc/postfix/mysql-virtual-mailbox-maps.cf
hosts = 127.0.0.1
user = postfix
password = Azerty@123
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
nano /etc/postfix/mysql-virtual-alias-maps.cf
hosts = 127.0.0.1
user = postfix
password = Azerty@123
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
nano /etc/postfix/mysql-sender-login-maps.cf
hosts = 127.0.0.1
user = postfix
password = Azerty@123
dbname = postfix
query = SELECT username FROM mailbox WHERE username='%s' AND active = 1

Anne Universitaire 2016/2017

Page 25

nano /etc/postfix/master.cf
submission inet n
smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_dh1024_param_file=${config_directory}/dh2048.pem
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
smtp inet n
smtpd

8)dovecot
Installation de Dovecot
apt-get install dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql

Configuration de dovecot
Nano /etc/dovecot/dovecot.conf
!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap lmtp
listen = *
!include conf.d/*.conf
Nano /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/var/mail/vhosts/%d/%n/mail
maildir_stat_dirs=yes
namespace inbox {
inbox = yes
}
mail_uid = 5000
mail_gid = 5000
first_valid_uid = 5000
last_valid_uid = 5000
mail_privileged_group = vmail
mkdir -p /var/mail/vhosts/tc.com

groupadd -g 5000 vmail


useradd -g vmail -u 5000 vmail -d /var/mail
chown -R vmail:vmail /var/mail
nano /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-sql.conf.ext
Nano /etc/dovecot/conf.d/auth-sql.conf.ext
Anne Universitaire 2016/2017

Page 26

# Le mot de passe est obtenu partir de la base de donne


passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
# Par contre le nom d'utilisateur est obtenu de manire statique partir du conteneur local
# %d = domaine.tld
# %n = utilisateur
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
}
Nano /etc/dovecot/dovecot-sql.conf.ext
# Paramtres de connexion
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=MOT DE PASSE
# Permet de dfinir l'algorithme de hachage.
# Pour plus d'information: http://wiki2.dovecot.org/Authentication/PasswordSchemes
# /!\ ATTENTION : ne pas oublier de modifier le paramtre $CONF['encrypt'] de
PostfixAdmin
default_pass_scheme = MD5-CRYPT
# Requte de rcupration du mot de passe du compte utilisateur
password_query = SELECT password FROM mailbox WHERE username = '%u'
cd /etc/dovecot
chown -R vmail:dovecot /etc/dovecot
chmod -R o-rwx /etc/dovecot
nano /etc/dovecot/conf.d/10-master.conf
service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
port = 993
ssl = yes
}
service_count = 0
}
service imap {
}
Anne Universitaire 2016/2017

Page 27

service lmtp {
# On autorise Postfix transfrer les emails dans le spooler de Dovecot via LMTP
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
}
service auth {
# On autorise Postfix se connecter Dovecot via LMTP
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
# On indique Dovecot les permissions du conteneur local
unix_listener auth-userdb {
mode = 0600
user = vmail
group = vmail
}
user = dovecot
}
service auth-worker {
user = vmail
}
Nano /etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_cert =
</etc/ssl/certs/mailserver.crt
ssl_key =
</etc/ssl/private/mailserver.key
ssl_protocols = !SSLv2 !SSLv3
ssl_cipher_list = ALL:!
Anne Universitaire 2016/2017

Page 28

aNULL:!eNULL:!LOW:!
MEDIUM:!EXP:!RC2:!RC4:!
DES:!3DES:!MD5:!PSK:!
SRP:!DSS:!
AECDH:ADH:@STRENGTH
ssl_prefer_server_ciphers = yes
# Dovecot > 2.2.x
ssl_dh_parameters_length =
2048 # Dovecot > 2.2.x
# On gnre le hash correspondant au mot de passe
doveadm pw -s MD5-CRYPT -p MOT_DE_PASSE | sed 's/{MD5-CRYPT}//'
mysql -u root -p
mysql> connect postfix
mysql> UPDATE admin SET password = 'HASH' WHERE username = 'admin@tc.com';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> quit
Redmarrage des services et vrification des ports
service postfix restart
service dovecot restart

9)roundcube :
sudo apt-get install mysql-server nginx php5-fpm php5-mysql php5-pspell php5-curl
sudo mysql_install_db
sudo mysql_secu_installation
sudo mysql -u root -p
create database roundcube;
grant all on roundcube.* to 'roundcubeuser'@'localhost' identified by 'Azerty@123';
flush privileges;
quit
sudo cp -R /etc/php5/fpm/php.ini /etc/php5/fpm/php.ini.bak
cgi.fix_pathinfo=0
date.timezone = Asia/Kolkata
sudo php5-fpm restart
sudo cd /etc/ssl
sudo openssl genrsa -out ca.key 1024
sudo openssl req -new -key ca.key -out ca.csr
sudo openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
Anne Universitaire 2016/2017

Page 29

cd /var/www/html
wget
http://downloads.sourceforge.net/project/roundcubemail/roundcubemail/1.0.5/roundcubemail1.0.5.tar.gz
tar -xf roundcubemail-1.0.5.tar.gz
mv roundcubemail-1.0.5 roundcube
sudo cp -R roundcube /usr/share/nginx
sudo chown -R www-data.root /usr/share/nginx/roundcube
sudo cd /etc/nginx/sites-available
sudo nano mail.tc.com
server {
listen 80;
server_name mail.tc.com;
return 301 https://mail.tc.com$request_uri;
}
server {
# llisten 80 is modified to listen 443 ssl;
listen 443 ssl;
server_name mail.tc.com;
root /usr/share/nginx/roundcube;
index index.php index.html index.htm;
access_log /var/log/nginx/roundcube_access.log;
error_log /var/log/nginx/roundcube_error.log;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
location ~ ^/(README.md|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ {
deny all;
}
location ~ ^/(config|temp|logs)/ {
deny all;
}
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
# pass the PHP scripts to FastCGI server listening on /var/run/php5-fpm.sock
location ~ \.php$ {
Anne Universitaire 2016/2017

Page 30

try_files $uri =404;


fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
ssl_certificate /etc/ssl/ca.crt;
ssl_certificate_key /etc/ssl/ca.key;
ssl_prefer_server_ciphers On;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers
ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES
:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
}
sudo cd /etc/nginx/sites-enabled
sudo ln -s ../sites-available/mail.tc.com
sudo service nginx restart
sudo nano /usr/share/nginx/roundcube/config/config.inc.php
$config['mail_domain'] = '%d';
sudo service nginx restart

Anne Universitaire 2016/2017

Page 31

10) SpamAssassin
apt-get install spamassassin spamc
adduser spamd --disabled-login

nano /etc/default/spamassassin
ENABLED=1
SPAMD_HOME="/home/spamd/"
OPTIONS="--create-prefs --max-children 5 --username spamd --helper-home-dir $
{SPAMD_HOME} -s ${SPAMD_HOME}spamd.log"
PIDFILE="${SPAMD_HOME}spamd.pid"
CRON=1
nano /etc/spamassassin/local.cf
Anne Universitaire 2016/2017

Page 32

rewrite_header Subject ***** SPAM _SCORE_ *****


report_safe
0
required_score
5.0
use_bayes
1
use_bayes_rules
1
bayes_auto_learn
1
skip_rbl_checks
0
use_razor2
0
use_dcc
0
use_pyzor
0
nano /etc/postfix/master.cf
smtp
inet n
smtpd
-o content_filter=spamassassin
spamassassin unix - n
n
pipe
user=spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}
*start service
service spamassassin start
service postfix restart

Bibliographies
[1] :https://wow.serverfreak.com/2011/webmail-squirrelmail-roundcubehorde/
[2]: http://forum.hardware.fr/hfr/OSAlternatifs/reseaux-securite/dovecotcyrus-courier- sujet_70962_1.htm
[3] : https://www.opensolutions.ie/open-source/vimbadmin
[4]:

https://linuxfr.org/news/faille-de-s%C3%A9curit%C3%A9-importante-

dans-sendmail
[5]

https://www.atlantic.net/community/howto/postfix-mail-server-setup-

ubuntu-14-04/
https://www.digitalocean.com/community/tutorials/how-to-install-linuxnginx-mysql-php-lemp-stack-in-ubuntu-16-04
Anne Universitaire 2016/2017

Page 33

http://www.rudraraj.net/2015/01/26/how-to-install-roundcube-with-nginx/
https://mondedie.fr/d/5750-Tuto-Installer-un-serveur-de-mail-avec-PostfixDovecot-et-Rainloop/2
https://blog.onee3.org/2014/08/tutorials-how-to-set-up-a-mail-server-onubuntu-with-postfix-dovecot-2-mysql-and-postfixadmin/#step7
http://www.rudraraj.net/2015/01/26/how-to-install-roundcube-with-nginx/
https://www.digitalocean.com/community/tutorials/how-to-configure-amail-server-using-postfix-dovecot-mysql-and-spamassassin
http://fr.wikipedia.org/wiki/Postfix
http://www.postfix.org/documentation.html

Anne Universitaire 2016/2017

Page 34

Anne Universitaire 2016/2017

Page 35

Vous aimerez peut-être aussi