Serveur · 14 min read · Nov 02, 2025
Le serveur parfait CentOS 7.3 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 créez des liens symboliques :
touch /etc/dovecot/dovecot-sql.conf
ln -s /etc/dovecot/dovecot-sql.conf /etc/dovecot-sql.conf
ln -s /etc/dovecot/dovecot.conf /etc/dovecot.confMaintenant, créez les liens de démarrage 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 démarre pas au cas où il serait installé sur votre serveur. Donc, le message d’erreur “Échec 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 les 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 EN 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
vous n'avez pas encore défini le mot de passe root, le mot de passe sera vide,
vous devez donc 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
lui. Ceci est destiné uniquement aux tests, et pour rendre l'installation
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
assure 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. Ceci est également destiné uniquement aux tests, et doit être supprimé
avant de passer à un environnement de production.
Supprimer la base de données test et l'accès à celle-ci ? [Y/n] <-- ENTRER
- Suppression de la base de données test...
... Succès !
- Suppression des privilèges sur la base de données 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é
# comme 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 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, ClamAV et Postgrey
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-mysql postgrey re2cModifiez le fichier de configuration freshclam /etc/freshclam.conf
nano /etc/freshclam.confet commentez la ligne “Example”
[....]
# Example
[....]Pour activer les mises à jour automatiques des signatures ClamAV avec freshclam, modifiez le fichier /etc/sysconfig/freshclam :
nano /etc/sysconfig/freshclamet mettez un # devant la dernière ligne pour qu’elle ressemble à ceci :
# FRESHCLAM_DELAY=disabled-warn # REMOVE MEEnsuite, nous démarrons freshclam, amavisd et clamd.amavisd :
sa-update
freshclam
systemctl enable amavisd.service
systemctl start amavisd.service
systemctl start [email protected]
systemctl enable postgrey.service
systemctl start postgrey.service12 Installer Apache avec mod_php, mod_fcgi/PHP5, PHP-FPM
ISPConfig 3 vous permet d’utiliser mod_php, mod_fcgi/PHP, cgi/PHP et PHP-FPM sur une base par site Web.
Nous pouvons installer Apache2 avec mod_php5, mod_fcgid et PHP 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 changeons 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 & ~E_STRICT
[...]
; 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. La valeur par défaut 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 “aucun nom n’a été trouvé dans vos fichiers de configuration” et demande si elle doit continuer, veuillez choisir “c” pour annuler 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 package 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
makeIl y a une erreur dans le module compilé qui fera échouer l’installation avec l’erreur “ version = “fatal: Not a git repository (or any of the parent directories): .git “. Pour corriger cela, exécutez cette commande sed (la commande est une seule ligne!).
sed -e 's/(git describe --always)/(git describe --always 2>\/dev\/null)/g' -e 's/`git describe --always`/`git describe --always 2>\/dev\/null`/g' -i $( find . -type f -name Makefile\* -o -name version.sh )Ensuite, installez le module avec cette commande.
make installet activez 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 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, il suffit d’exécuter :
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 sur 1 en supprimant le # devant la ligne TLS. Il est fortement recommandé d’activer TLS.
[...]
# 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 package 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.service
systemctl enable haveged.service
systemctl start haveged.service16 Installer Webalizer et AWStats
AWStats peut être installé comme suit :
yum -y install webalizer awstats perl-DateTime-Format-HTTP perl-DateTime-Format-BuilderModifiez le fichier /etc/httpd/conf.d/awstats.conf :
nano /etc/httpd/conf.d/awstats.confet changez la ligne :
Require localà :
Require all grantedEt redémarrez apache :
systemctl restart httpd.service17 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 système pour fail2ban et démarrez-le :
mkdir /var/run/fail2ban
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
ln -s /usr/lib/mailman/mail/mailman /usr/bin/mailman[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Entrez l’email de la personne gérant la liste : <– adresse email de l’administrateur, par exemple [email protected]
Mot de passe initial de mailman : <– mot de passe administrateur pour la liste mailman
Pour terminer la création de votre liste de diffusion, vous devez modifier votre
/etc/aliases (ou fichier é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 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 hôtes virtuels Apache (veuillez noter que suExec et CGI doivent être désactivés pour tous les hôtes virtuels à 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.