Vous êtes sur la page 1sur 28

Aujourd’hui, je vais présenter l’installation d’un serveur d’e-mails sous GNU/Linux.

Touts
l’installation a été réalisé sous ubuntu v.16.04.

Tout d’abord, je choisi le serveur mail NGINX comme interface web vu qu’il est plus rapide
que l’APACHE. Ainsi, j’utiliserai le logiciel Postfix comme agent de transfert de courrier
(MTA), aussi appelé serveur SMTP. Il assurera l’envoi de messages depuis le serveur et la
réception de courriers en provenance d’autres serveurs d’e-mails via leurs MTA. Ainsi, les
clients de messagerie (comme Microsoft Outlook ou Mozilla Thunderbird) communiqueront
directement avec le MTA pour envoyer un e-mail, via le protocole SMTP. Pour la
récupération des courriers reçus sur le serveur par les clients de messagerie, je mettrai en
place le logiciel Dovecot. Celui-ci permet de récupérer les e-mails via les protocoles POP et
IMAP. Afin d’avoir un serveur d’e-mails complet, je détaillerai la mise en place
de l’antivirus ClamAv et du filtre anti-spam Spamassassin. Ces deux logiciels
seront exploités par le filtre de contenu Amavis qui analysera directement les courriers
stockés sur le serveur.

Afin de faciliter la gestion des différents comptes e-mails sur le serveur, j’installerai
l’application Web Postfix Admin. Ainsi, il sera possible de gérer plusieurs comptes e-
mails mais également plusieurs noms de domaines. Pour terminer, j’aborderai l’installation
du Webmail Roundcube afin que les utilisateurs puissent accéder à leurs e-mails depuis
n’importe quel navigateur Web.

Année Universitaire 2016/2017 Page 1


➢ Schéma :

III. Présentation des Outils


• Postfix vs Sendmail:

Définition :

Postfix est l’un des gestionnaires de messagerie les plus utilisés sur Internet. Destiné à
remplacer Sendmail dont les problèmes de sécurité étaient nombreux, Postfix a tout de suite
été conçu autour de trois objectifs :
- Un système de configuration simple.
- Une forte compatibilité avec les commandes de Sendmail
- Une conception hautement sécurisée.

Année Universitaire 2016/2017 Page 2


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 :

Intérêt

L’STT cherchent à mettre en place un mécanisme d’échange de données et de communication


interne rapide et fiable. Pour cela le moyen le plus efficace est de mettre en place un système
de messagerie pour :  Assurer la sécurité, ainsi que la fiabilité des informations échangées 1
 Envoyer des messages à tous les collaborateurs de l’entreprise.  Conservés tous les
messages, afin de retrouver un message reçu ou émis.  Programmé un message a fin qu'il
sera envoyé à une date et une heure que vous définissez.

Comparaison Postfix /Sendmail:


Bien que Sendmail reste la référence en matière de transport de courrier sur les systèmes
Unix, c'est une application monolithique relativement complexe à configurer. Postfix présente
bien des avantages sur Sendmail au niveau sécurité et ne comporte qu'un seul fichier de
configuration à modifier pour être opérationnel. Postfix est sans aucun doute plus conviviale
et plus sécurisé que Sendmail.
La gestion du courrier électronique a longtemps été un problème difficile sous Linux. Ceci
principalement du fait de la complexité de paramétrage du serveur de courrier électronique
Sendmail. Heureusement, des logiciels efficaces et plus simples comme Postfix sont apparus
pour traiter la gestion du courrier électronique.

Année Universitaire 2016/2017 Page 3


• Postfix est un serveur de messagerie facile à mettre en place et permet de
garantir une certaine sécurité du fait que le serveur est héberge en local.
Postfix doit être largement diffusé et utilisé afin d'avoir un impact sensible sur
les performances et la sécurité des systèmes 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 différents.
• Sendmail est très 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 systèmes Unix est le
serveur Sendmail. Sendmail a fait ses preuves. L'inconvénient est son mode de
configuration.
Il existe d'autres serveurs de messagerie sur Unix (QMail, Z-mailer...) tous
présentent des inconvénients au niveau utilisation de la bande passante, inter-
opérabilté, respect des RFC, facilité de configuration, sécurité...
L'objectif de Postfix est d'apporter une solution à ces différents problèmes.

• Postfix est un serveur de messagerie électronique et un logiciel libre développé


par Wietse Venema et plusieurs contributeurs. Il se charge de la livraison de courriers
électroniques (courriels) et a été conçu comme une alternative plus rapide, plus facile à
administrer et plus sécurisée que l'historique Sendmail.Haut du formulaire

• Pour la partie Sécurité, 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 sécurité du transport TLS (Transport Layer Security, également
appelée SSL) fournit les authentifications basées sur des certificats et le chiffrement
des sessions. Une session chiffrée protège les informations transmises par message
SMTP.
• Une faille de sécurité vient d'être découverte dans Sendmail. Celle-ci
peut donner un accès root à une personne non autorisée.

Année Universitaire 2016/2017 Page 4


 Postfix: élégant, performant, simple à configurer, idéal dans
la plupart des cas.
 Sendmail: complexe, monolithique, machin à tout faire mais difficile
à apprendre puis maitriser.

/https://www.axigen.com/articles/axigen-comparative-benchmarks_27.html//

Année Universitaire 2016/2017 Page 5


➢ Architecture Postfix :

//

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

• Dovecot vs Cyrus

Définition :

Dovecot est un serveur IMAP et POP3 pour les systèmes d'exploitation Unix et
dérivés, conçu avec comme premier but la sécurité.
Parmi les plus performants des serveurs IMAP compatibilité complète avec des outils
de manipulation de boites à lettres. Les boites à lettres sont indexées de manière transparente.
Dovecot permet boîtes aux lettres et leurs index pour être modifiés par plusieurs
ordinateurs en même temps, tout en performant. Cela signifie que Dovecot fonctionne bien
avec les systèmes de fichiers en cluster.
Dovecot la conception et la mise en œuvre est fortement axé sur la sécurité.

Architecture :

Année Universitaire 2016/2017 Page 6


Les avantages de Dovecot sur Cyrus en termes d'administration :
- les outils de migration pour les boîtes mail existantes
- la gestion/maintenance des boîtes plus aisées
- la configuration plus souple/extensible via ses propres scripts
-L'approche de Cyrus est moins "immédiate" dans le sens où plus d'étapes sont nécessaire
pour effectuer certaines tâches d'administration (là où Dovecot regroupe certaines d'entre elles
; par ex. pour tout ce qui a trait à la gestion des boîtes), mais également parce que celui-ci fait
appel à plus d'outils dédiés pour l'administration.
- Comparé à Cyrus, Dovecot est plus agréable à administrer et un moins couteux en
ressources système (bien que ce sera plutôt visible sur de larges volumes de boîtes). [2]

• Roundcube vs Horde vs Squirrelmail

Définition : 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.
Roundcube offre beaucoup plus agréable, interface assez intuitive conviviale et
pour vos e - mails par rapport à squire mail.

Année Universitaire 2016/2017 Page 7


Le Webmail Roundcube est disponible avec un cryptage HTTPS grâce
au protocole SSL.

Fonctionnalités :
• la fonction glissé-déposer
• l'accusé réception 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 pièces jointes
• Recherche avancée sur tous les dossiers
• Les dossiers virtuels (Recherches aka sauvegardés)
• Raccourcis clavier
• le soutien de l'historique du navigateur
• module de calendrier en ligne
• Interface d'administration

SquirrelMail :
SquirrelMail a toutes les fonctionnalités de base si on veut partir un client de messagerie,
calendrier, vérifier 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 réponse email.

Horde :
Il est considéré comme plus email entièrement sélectionnée rapport à la précédente deux
Squire mail & Roundcube et il a fonctions similaires à Outlook.
Webmail Horde est livré avec des fonctionnalités telles que le calendrier, liste de tâches,
bloc-notes, carnet d'adresses, et plus encore. Le système de gestion du courrier électronique
inclut le support pour les filtres avancés, les pièces jointes, la vérification orthographique, et
affiche HTML e-mail ainsi.
Horde est également livré avec des fonctions de gestion des tâches, de sorte que on peut
inscrire la tâche, définir la tâche de rappels et de garder une trace son état

Année Universitaire 2016/2017 Page 8


Recommandé Les utilisateurs qui ont Les utilisateurs qui ont Les utilisateurs qui ont
pour: besoin d'une suite besoin d'une interface besoin d'une interface très
complète de web conviviale avec basique à partir duquel
fonctionnalités qui quelques fonctionnalités lire et répondre aux e-
inclut l'accès e-mail supplémentaires mails.
mobile et des outils de disponibles.
productivité avancés.
Type d'interface * Le format de trois * Le format de trois volet * Format de liste à deux
volet avec vue volet. avec vue volet. volets.
* Interface mobile
disponible.
Caractéristiques * Pièces jointes * Pièces jointes * Pièces jointes
de la * composition HTML * composition HTML * Texte uniquement
composition: * Vérification * Vérification composition
orthographique orthographique
Caractéristiques * Manipulation de * Organisation Drag-and- * Manipulation de
de dossiers drop dossiers
l'Organisation: * Les filtres de * manipulation de * drapeaux de message
courrier dossiers * Recherche courriel
* drapeaux de * drapeaux de message * Threaded
message * Recherche courriel (Conversation) Vue
* Recherche courriel * Threaded
* Threaded (Conversation) Vue
(Conversation) Vue
Caractéristiques * Carnet d'adresses * Carnet d' adresses * Carnet d'adresses
supplémentaires: (avancé) (avancé) (simple)
* Calendrier (avancé) * Les administrateurs
* rappels système peuvent utiliser
d'événements des plugins pour ajouter
* Nouvelles feed des fonctionnalités
* Remarques personnalisées.
* Liste des tâches
(avancé)
Site officiel Le projet Horde Roundcube Projet Le Projet SquirrelMail
Webmail

Panel d’administration : Nginx (vimbadmin) :

Définition :
ViMbAdmin (prononcé vim-être-admin et le sens virtuel d’administration de boîtes aux
lettres) fournit un système d'administration de la messagerie basée sur le Web virtuel pour une
utilisation avec des agents de transport de courrier tels que Postfix, Sendmail et qmail par

Année Universitaire 2016/2017 Page 9


exemple. Il permet aux administrateurs système d'ajouter et de gérer les domaines et d'ajouter
ensuite, éditer et supprimer des boîtes aux lettres et des alias pour ces domaines.
ViMbAdmin (prononcé vim-be-admin et qui signifie l'administration virtuel boîte aux lettres)
est conçu comme une alternative à (et une quasi-fente en remplacement) pour l'application
Postfix Administrateur populaire, mais daté.
Caractéristiques :
Depuis la version 2.0.0 publiée en Mars 2012, les caractéristiques standard et améliorés par
rapport à Postfix Admin comprennent:
• Super niveau de l'utilisateur de l'administrateur avec un accès complet;
• niveau de l'utilisateur d'administration avec accès uniquement aux domaines
affectés et leurs boîtes aux lettres et alias.
• Admins super peut créer et modifier les admins et les super-administrateurs;
• JQuery Datatable tout au long de rapide dans la recherche du navigateur et la
pagination;
• Créer, modifier et purger les domaines, y compris la limitation du nombre de
boîtes aux lettres et alias un administrateur non-super peut créer par domaine;
• Activer / désactiver les admins, les domaines, les boîtes aux lettres et les alias
au clic d'un bouton;
• journalisation complète.
• Facilité pour les utilisateurs finaux (propriétaires de boîtes aux lettres) pour
changer leur mot de passe;
• Un seul point de connexion pour tous les administrateurs si super-ou non [3]

• Sécurité :

Le spam : Les pourriels ou spams sont des e-mails de masse, par exemple : des envois
de publicité, diffusés sur Internet. Ces spams sont envoyés à des millions d'adresses e-mail
sans qu'ils aient été sollicités.
Avec la solution du filtre anti-spam externalisé ou ASP, la sécurité des messageries
électroniques est optimisée. Comme les courriers électroniques entrants seront déroutés vers
le serveur de l’hébergeur, tous les spams seront filtrés et éliminés avant que les emails
légitimes ne rejoignent le serveur de messagerie de l’entreprise. Le seul hic avec ce type de
filtre anti-spam est que la possibilité en matière de configuration est limitée.

Année Universitaire 2016/2017 Page 10


- 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 détection,
les virus, leslogiciels malveillants et autres menaces malveillantes.
- SpamAssassin est une haute performance plate - forme anti-spam célèbre pour ses
bayésiens capacités de filtrage de spam. Il donne aux administrateurs système un filtre pour
classer lesmessages et bloquer tous les courriels de masse non sollicités.[6]

Année Universitaire 2016/2017 Page 11


III. Tutoriel d’utilisation
Comme tutoriel d’utilisation dans notre projet on a choisie :
https://mondedie.fr/d/5750-Tuto-Installer-un-serveur-de-mail-avec-Postfix-Dovecot-et-
Rainloop/2
Ce tutoriel nous a aidées à installer un serveur mail sous GNU/Linux. Il s'adresse à des
personnes qui ont déjà une bonne expérience en administration système sous Linux car il est
très important de comprendre ce que l'on fait afin de mieux réagir 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'hôte, du FQDN et du champ MX

- Nom de domaine principal : tc.com


- Nom d'hôte : mail
- FQDN : mail.tc.com
- MX : mail.domain.tld

Pour modifier le nom d'hôte, exécutez la commande suivante (n'oubliez pas de remplacer
"hostname" par le nom d'hôte 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 gérés directement au sein d'une base de données, que vous
pourrez administrer grâce à 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 :

Année Universitaire 2016/2017 Page 12


Ensuite une autre fenêtre apparaît et vous demande le nom du système de mail, entrez alors
le FQDN de votre serveur.

3) Création de la base de données


# Connexion au serveur MySQL en tant que root
mysql -u root -p

# Création de la base de données "postfix"


mysql> CREATE database postfix;

# Création 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 :

Année Universitaire 2016/2017 Page 13


5) phpMyadmin :

6) postfixadmin :

cd /var/www

wget http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-
2.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

Année Universitaire 2016/2017 Page 14


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
myhostname = hostname.domain.tld
myorigin = hostname.domain.tld
mydestination = localhost localhost.$mydomain

Année Universitaire 2016/2017 Page 15


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
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 ##
#####################

Année Universitaire 2016/2017 Page 16


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
##################
## 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

Année Universitaire 2016/2017 Page 17


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
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

Année Universitaire 2016/2017 Page 18


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

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

Année Universitaire 2016/2017 Page 19


}
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
# Le mot de passe est obtenu à partir de la base de donnée
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}

# Par contre le nom d'utilisateur est obtenu de manière 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
# Paramètres de connexion
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=MOT DE PASSE

# Permet de définir l'algorithme de hachage.


# Pour plus d'information: http://wiki2.dovecot.org/Authentication/PasswordSchemes
# /!\ ATTENTION : ne pas oublier de modifier le paramètre $CONF['encrypt'] de
PostfixAdmin
default_pass_scheme = MD5-CRYPT

# Requête de récupération 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 {

Année Universitaire 2016/2017 Page 20


inet_listener imap {
port = 143
}
inet_listener imaps {
port = 993
ssl = yes
}
service_count = 0
}
service imap {
}
service lmtp {
# On autorise Postfix à transférer 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:!aNULL:!eNULL:!LOW:!MEDIUM:!EXP:!RC2:!RC4:!DES:!3DES:!MD5:!PSK
:!SRP:!DSS:!AECDH:ADH:@STRENGTH

Année Universitaire 2016/2017 Page 21


ssl_prefer_server_ciphers = yes # Dovecot
> 2.2.x
ssl_dh_parameters_length = 2048 # Dovecot > 2.2.x
# On génère 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
Redémarrage des services et vérification 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

cd /var/www/html

Année Universitaire 2016/2017 Page 22


wget
http://downloads.sourceforge.net/project/roundcubemail/roundcubemail/1.0.5/roundcubemail-
1.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$ {
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;

Année Universitaire 2016/2017 Page 23


}
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

Année Universitaire 2016/2017 Page 24


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

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

Année Universitaire 2016/2017 Page 25


Bibliographies

[1] :https://wow.serverfreak.com/2011/webmail-squirrelmail-roundcube-horde/
[2]: http://forum.hardware.fr/hfr/OSAlternatifs/reseaux-securite/dovecot-cyrus-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-linux-nginx-mysql-php-
lemp-stack-in-ubuntu-16-04
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-Postfix-Dovecot-et-
Rainloop/2
https://blog.onee3.org/2014/08/tutorials-how-to-set-up-a-mail-server-on-ubuntu-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-a-mail-server-using-
postfix-dovecot-mysql-and-spamassassin

http://fr.wikipedia.org/wiki/Postfix
http://www.postfix.org/documentation.html

Année Universitaire 2016/2017 Page 26


Année Universitaire 2016/2017 Page 27
Année Universitaire 2016/2017 Page 28

Vous aimerez peut-être aussi