Serveur Parfait · 13 min read · Nov 01, 2025
Le serveur parfait CentOS 7.2 avec Apache, Postfix, Dovecot, Pure-FTPD, BIND et ISPConfig 3.1 - Page 2
7 Installer Dovecot
Dovecot peut être installé comme suit :
yum -y install dovecot dovecot-mysql dovecot-pigeonholeCréez un fichier dovecot-sql.conf vide et un lien symbolique :
touch /etc/dovecot/dovecot-sql.conf
ln -s /etc/dovecot/dovecot-sql.conf /etc/dovecot-sql.confMaintenant, créez les liens de démarrage du système et démarrez Dovecot :
systemctl enable dovecot
systemctl start dovecot8 Installer Postfix
Postfix peut être installé comme suit :
yum -y install postfixEnsuite, désactivez Sendmail et démarrez Postfix et MariaDB (MySQL) :
systemctl enable mariadb.service
systemctl start mariadb.servicesystemctl stop sendmail.service
systemctl disable sendmail.service
systemctl enable postfix.service
systemctl restart postfix.serviceNous désactivons sendmail pour nous assurer qu’il ne se lance pas au cas où il serait installé sur votre serveur. Donc, le message d’erreur “Échec de l’émission de l’appel de méthode : Unité sendmail.service non chargée.” peut être ignoré.
9 Installer Getmail
Getmail peut être installé comme suit :
yum -y install getmail10 Définir les mots de passe MySQL et configurer phpMyAdmin
Définissez des mots de passe pour le compte root MySQL :
mysql_secure_installation[root@server1 tmp]# mysql_secure_installation
NOTE : L'EXÉCUTION DE TOUTES LES PARTIES DE CE SCRIPT EST RECOMMANDÉE POUR TOUS LES SERVEURS MariaDB EN UTILISATION PRODUCTION ! VEUILLEZ LIRE CHAQUE ÉTAPE ATTENTIVEMENT !Pour se connecter à MariaDB pour le sécuriser, nous aurons besoin du mot de passe actuel pour l'utilisateur root. Si vous venez d'installer MariaDB, et que vous n'avez pas encore défini le mot de passe root, le mot de passe sera vide, donc vous devriez simplement appuyer sur entrer ici.Entrez le mot de passe actuel pour root (appuyez pour aucun) :
OK, mot de passe utilisé avec succès, passage à la suite...Définir le mot de passe root garantit que personne ne peut se connecter à l'utilisateur root de MariaDB sans l'autorisation appropriée.
Définir le mot de passe root ? [Y/n] <-- ENTRER
Nouveau mot de passe : <-- votremotdepasseSQLroot
Ressaisir le nouveau mot de passe : <-- votremotdepasseSQLroot
Mot de passe mis à jour avec succès !
Rechargement des tables de privilèges..
... Succès !
Par défaut, une installation de MariaDB a un utilisateur anonyme, permettant à quiconque de se connecter à MariaDB sans avoir à créer un compte utilisateur pour eux. Cela est destiné uniquement aux tests, et pour rendre l'installation un peu plus fluide. Vous devriez les supprimer avant de passer à un environnement de production.
Supprimer les utilisateurs anonymes ? [Y/n] <-- ENTRER
... Succès !
Normalement, root ne devrait être autorisé à se connecter que depuis 'localhost'. Cela garantit que quelqu'un ne peut pas deviner le mot de passe root depuis le réseau.
Interdire la connexion root à distance ? [Y/n] <-- ENTRER
... Succès !
Par défaut, MariaDB est livré avec une base de données nommée 'test' à laquelle quiconque peut accéder. Cela est également destiné uniquement aux tests, et devrait être supprimé avant de passer à un environnement de production.
Supprimer la base de données de test et l'accès à celle-ci ? [Y/n] <-- ENTRER
- Suppression de la base de données de test...
... Succès !
- Suppression des privilèges sur la base de données de test...
... Succès !
Recharger les tables de privilèges garantira que tous les changements effectués jusqu'à présent prendront effet immédiatement.
Recharger les tables de privilèges maintenant ? [Y/n] <-- ENTRER
... Succès !
Nettoyage...
Tout est fait ! Si vous avez complété toutes les étapes ci-dessus, votre installation de MariaDB devrait maintenant être sécurisée.
Merci d'utiliser MariaDB !
[root@server1 tmp]#Maintenant, nous configurons phpMyAdmin. Nous modifions la configuration d’Apache afin que phpMyAdmin autorise les connexions non seulement depuis localhost (en commentant les deux lignes “Require ip” et en ajoutant la nouvelle ligne “Require all granted” dans le bloc
nano /etc/httpd/conf.d/phpMyAdmin.conf# phpMyAdmin - Navigateur MySQL basé sur le Web écrit en php
#
# N'autorise que localhost par défaut
#
# Mais permettre à phpMyAdmin à quiconque autre que localhost devrait être considéré
# dangereux à moins d'être correctement sécurisé par SSL
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin
# Apache 2.4
# Require ip 127.0.0.1
# Require ip ::1
Require all granted
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
Ensuite, nous changeons l’authentification dans phpMyAdmin de cookie à http :
nano /etc/phpMyAdmin/config.inc.php[...]
/* Type d'authentification */
$cfg['Servers'][$i]['auth_type'] = 'http';
[...]Ensuite, nous créons les liens de démarrage du système pour Apache et le démarrons :
systemctl enable httpd.service
systemctl restart httpd.serviceMaintenant, vous pouvez diriger votre navigateur vers http://server1.example.com/phpmyadmin/ ou http://192.168.1.100/phpmyadmin/ et vous connecter avec le nom d’utilisateur root et votre nouveau mot de passe root MySQL.
11 Installer Amavisd-new, SpamAssassin et ClamAV
Pour installer amavisd-new, SpamAssassin et clamav, exécutez la commande suivante :
yum -y install amavisd-new spamassassin clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd unzip bzip2 perl-DBD-mysqlModifiez le fichier de configuration freshclam /etc/freshclam.conf
nano /etc/freshclam.confet commentez la ligne “Example”
[....]
# Example
[....]Ensuite, nous démarrons freshclam, amavisd et clamd.amavisd :
sa-update
freshclam
systemctl enable amavisd.service
systemctl start amavisd.service
systemctl start [email protected]12 Installer Apache avec mod_php, mod_fcgi/PHP5, PHP-FPM
ISPConfig 3 vous permet d’utiliser mod_php, mod_fcgi/PHP5, cgi/PHP5 et suPHP sur une base par site web.
Nous pouvons installer Apache2 avec mod_php5, mod_fcgid et PHP5 comme suit :
yum -y install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-pecl-apc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel mod_fcgid php-cli httpd-devel php-fpm wgetEnsuite, nous ouvrons /etc/php.ini…
nano /etc/php.ini… et modifions le rapport d’erreurs (pour que les avis ne soient plus affichés), définissons le fuseau horaire et décommentons cgi.fix_pathinfo=1 :
[...]
;error_reporting = E_ALL & ~E_DEPRECATED
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
[...]
; cgi.fix_pathinfo fournit un support *réel* pour PATH_INFO/PATH_TRANSLATED pour CGI. PHP's
; le comportement précédent était de définir PATH_TRANSLATED sur SCRIPT_FILENAME, et de ne pas comprendre
; ce qu'est PATH_INFO. Pour plus d'informations sur PAppp.tldTH_INFO, voir les spécifications cgi. Définir
; cela à 1 fera en sorte que PHP CGI corrige ses chemins pour se conformer à la spécification. Un paramètre
; de zéro fait que PHP se comporte comme avant. Par défaut, c'est 1. Vous devriez corriger vos scripts
; pour utiliser SCRIPT_FILENAME plutôt que PATH_TRANSLATED.
; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo
cgi.fix_pathinfo=1
[...]
date.timezone = 'Europe/Berlin'
[...]Activez httpd et PHP-FPM pour qu’ils démarrent au démarrage et démarrez le service PHP-FPM.
systemctl start php-fpm.service
systemctl enable php-fpm.service
systemctl enable httpd.serviceEnfin, nous redémarrons Apache :
systemctl restart httpd.serviceMaintenant, nous allons ajouter le support pour Let’s encrypt.
mkdir /opt/certbot
cd /opt/certbot
wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-autoMaintenant, exécutez la commande certboot-auto qui téléchargera et installera le logiciel et ses dépendances.
./certbot-autoLa commande vous dira alors que “aucun nom n’a été trouvé dans vos fichiers de configuration” et demande si elle doit continuer, veuillez choisir “non” ici car les certificats seront créés par ispconfig.

13 Installation de mod_python
Le module apache mod_python n’est pas disponible en tant que paquet RPM, nous allons donc le compiler à partir de la source. La première étape consiste à installer les fichiers de développement python et à télécharger la version actuelle de mod_python sous forme de fichier tar.gz
yum -y install python-develcd /usr/local/src/
wget http://dist.modpython.org/dist/mod_python-3.5.0.tgz
tar xfz mod_python-3.5.0.tgz
cd mod_python-3.5.0et ensuite configurer et compiler le module
./configure
make
make installet activer le module dans apache
echo 'LoadModule python_module modules/mod_python.so' > /etc/httpd/conf.modules.d/10-python.conf
systemctl restart httpd.service14 Installer PureFTPd
PureFTPd peut être installé avec la commande suivante :
yum -y install pure-ftpdEnsuite, créez les liens de démarrage du système et démarrez PureFTPd :
systemctl enable pure-ftpd.service
systemctl start pure-ftpd.serviceMaintenant, nous configurons PureFTPd pour autoriser les sessions FTP et TLS. FTP est un protocole très peu sécurisé car tous les mots de passe et toutes les données sont transférés en texte clair. En utilisant TLS, toute la communication peut être chiffrée, rendant ainsi FTP beaucoup plus sécurisé.
OpenSSL est nécessaire pour TLS ; pour installer OpenSSL, nous exécutons simplement :
yum install opensslOuvrez /etc/pure-ftpd/pure-ftpd.conf…
nano /etc/pure-ftpd/pure-ftpd.confSi vous souhaitez autoriser les sessions FTP et TLS, définissez TLS à 1 :
[...]
# Cette option peut accepter trois valeurs :
# 0 : désactiver la couche de chiffrement SSL/TLS (par défaut).
# 1 : accepter à la fois les sessions traditionnelles et chiffrées.
# 2 : refuser les connexions qui n'utilisent pas les mécanismes de sécurité SSL/TLS,
# y compris les sessions anonymes.
# Ne décommentez pas cela à la légère. Assurez-vous que :
# 1) Votre serveur a été compilé avec le support SSL/TLS (--with-tls),
# 2) Un certificat valide est en place,
# 3) Seuls des clients compatibles se connecteront.
TLS 1
[...]Pour utiliser TLS, nous devons créer un certificat SSL. Je le crée dans /etc/ssl/private/, donc je crée d’abord ce répertoire :
mkdir -p /etc/ssl/private/Ensuite, nous pouvons générer le certificat SSL comme suit :
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pemNom du pays (code à 2 lettres) [XX] : <– Entrez le nom de votre pays (par exemple, “FR”).
Nom de l’état ou de la province (nom complet) [] : <– Entrez le nom de votre état ou province.
Nom de la localité (par exemple, ville) [Default City] : <– Entrez votre ville.
Nom de l’organisation (par exemple, entreprise) [Default Company Ltd] : <– Entrez le nom de votre organisation (par exemple, le nom de votre entreprise).
Nom de l’unité organisationnelle (par exemple, section) [] : <– Entrez le nom de votre unité organisationnelle (par exemple, “Département IT”).
Nom commun (par exemple, votre nom ou le nom d’hôte de votre serveur) [] : <– Entrez le nom de domaine complet du système (par exemple, “server1.example.com”).
Adresse e-mail [] : <– Entrez votre adresse e-mail.
Changez les permissions du certificat SSL :
chmod 600 /etc/ssl/private/pure-ftpd.pemEnfin, redémarrez PureFTPd :
systemctl restart pure-ftpd.serviceC’est tout. Vous pouvez maintenant essayer de vous connecter en utilisant votre client FTP ; cependant, vous devez configurer votre client FTP pour utiliser TLS.
15 Installer BIND
Nous pouvons installer BIND comme suit :
yum -y install bind bind-utils havegedFaites une sauvegarde du fichier /etc/named.conf existant et créez un nouveau comme suit :
cp /etc/named.conf /etc/named.conf_bak
cat /dev/null > /etc/named.conf
nano /etc/named.conf// named.conf
//
// Fournit par le paquet bind de Red Hat pour configurer le serveur DNS ISC BIND nommé(8)
// comme un serveur de noms uniquement en cache (comme un résolveur DNS localhost uniquement).
//
// Voir /usr/share/doc/bind*/sample/ pour des exemples de fichiers de configuration nommés.
//
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
allow-recursion {"none";};
recursion no;
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.conf.local";Créez le fichier /etc/named.conf.local qui est inclus à la fin de /etc/named.conf ( /etc/named.conf.local sera plus tard peuplé par ISPConfig si vous créez des zones DNS dans ISPConfig) :
touch /etc/named.conf.localEnsuite, nous créons les liens de démarrage et démarrons BIND :
systemctl enable named.service
systemctl start named.service16 Installer Webalizer et AWStats
AWStats peut être installé comme suit :
yum -y install awstats perl-DateTime-Format-HTTP perl-DateTime-Format-BuilderWebalizer doit être compilé à partir de la source.
yum install -y libpng-devel gd-devel
cd /tmp
wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.23-08-src.tgz
tar xvfz webalizer-2.23-08-src.tgz
cd webalizer-2.23-08
./configure
make
make install17 Installer Jailkit
Jailkit est utilisé pour chroot les utilisateurs SSH et les cronjobs. Il peut être installé comme suit (important : Jailkit doit être installé avant ISPConfig - il ne peut pas être installé après !) :
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz
tar xvfz jailkit-2.19.tar.gz
cd jailkit-2.19
./configure
make
make install
cd ..
rm -rf jailkit-2.19*18 Installer fail2ban
C’est optionnel mais recommandé, car le moniteur ISPConfig essaie d’afficher le journal.
yum -y install iptables-services fail2ban fail2ban-systemd
systemctl stop firewalld.service
systemctl mask firewalld.service
systemctl disable firewalld.service
systemctl stop firewalld.serviceEnsuite, nous créons le fichier /etc/fail2ban/jail.local et activons la surveillance pour ssh, email et le service ftp.
nano /etc/fail2ban/jail.localAjoutez le contenu suivant dans le fichier jail.local :
[sshd]
enabled = true
action = iptables[name=sshd, port=ssh, protocol=tcp]
[pure-ftpd]
enabled = true
action = iptables[name=FTP, port=ftp, protocol=tcp]
maxretry = 3
[dovecot]
enabled = true
action = iptables-multiport[name=dovecot, port="pop3,pop3s,imap,imaps", protocol=tcp]
maxretry = 5
[postfix-sasl]
enabled = true
action = iptables-multiport[name=postfix-sasl, port="smtp,smtps,submission", protocol=tcp]
maxretry = 3Ensuite, créez les liens de démarrage du système pour fail2ban et démarrez-le :
systemctl enable fail2ban.service
systemctl start fail2ban.service19 Installer rkhunter
rkhunter peut être installé comme suit :
yum -y install rkhunter20 Installer Mailman
Si vous souhaitez gérer des listes de diffusion avec Mailman sur votre serveur, installez mailman maintenant. Mailman est pris en charge par ISPConfig, vous pourrez donc créer de nouvelles listes de diffusion via ISPConfig plus tard.
yum -y install mailmanAvant de pouvoir démarrer Mailman, une première liste de diffusion appelée mailman doit être créée :
touch /var/lib/mailman/data/aliases
postmap /var/lib/mailman/data/aliases
/usr/lib/mailman/bin/newlist mailman[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Entrez l’email de la personne gérant la liste : <– adresse email de l’admin, par exemple [email protected]
Mot de passe initial de mailman : <– mot de passe admin pour la liste mailman
Pour terminer la création de votre liste de diffusion, vous devez modifier votre fichier /etc/aliases (ou équivalent) en ajoutant les lignes suivantes, et éventuellement en exécutant le programme newaliases :
liste de diffusion mailman
mailman: “|/usr/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/usr/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/usr/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/usr/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/usr/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/usr/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/usr/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/usr/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/usr/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/usr/lib/mailman/mail/mailman unsubscribe mailman”
Appuyez sur entrer pour notifier le propriétaire de mailman… <– ENTRER
[root@server1 tmp]#
Ouvrez ensuite /etc/aliases…
nano /etc/aliases… et ajoutez les lignes suivantes :
[...]
mailman: "|/usr/lib/mailman/mail/mailman post mailman"
mailman-admin: "|/usr/lib/mailman/mail/mailman admin mailman"
mailman-bounces: "|/usr/lib/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/usr/lib/mailman/mail/mailman confirm mailman"
mailman-join: "|/usr/lib/mailman/mail/mailman join mailman"
mailman-leave: "|/usr/lib/mailman/mail/mailman leave mailman"
mailman-owner: "|/usr/lib/mailman/mail/mailman owner mailman"
mailman-request: "|/usr/lib/mailman/mail/mailman request mailman"
mailman-subscribe: "|/usr/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/usr/lib/mailman/mail/mailman unsubscribe mailman"Exécutez
newaliasesensuite et redémarrez Postfix :
systemctl restart postfix.serviceMaintenant, ouvrez le fichier de configuration Apache de Mailman /etc/httpd/conf.d/mailman.conf…
nano /etc/httpd/conf.d/mailman.conf… et ajoutez la ligne ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/. Commentez Alias /pipermail/ /var/lib/mailman/archives/public/ et ajoutez la ligne Alias /pipermail /var/lib/mailman/archives/public/ :
#
# paramètres de configuration httpd pour une utilisation avec mailman.
#
ScriptAlias /mailman/ /usr/lib/mailman/cgi-bin/
ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
#Alias /pipermail/ /var/lib/mailman/archives/public/
Alias /pipermail /var/lib/mailman/archives/public/
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
AddDefaultCharset Off
# Décommentez la ligne suivante, pour rediriger les requêtes vers /mailman vers la
# page listinfo (recommandé).
# RedirectMatch ^/mailman[/]*$ /mailman/listinfoRedémarrez Apache :
systemctl restart httpd.serviceCréez les liens de démarrage du système pour Mailman et démarrez-le :
systemctl enable mailman.service
systemctl start mailman.serviceAprès avoir installé ISPConfig 3, vous pouvez accéder à Mailman comme suit :
Vous pouvez utiliser l’alias /cgi-bin/mailman pour tous les vhosts Apache (veuillez noter que suExec et CGI doivent être désactivés pour tous les vhosts à partir desquels vous souhaitez accéder à Mailman !), ce qui signifie que vous pouvez accéder à l’interface d’administration de Mailman pour une liste à http://
Sous http://
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.