Serveur Debian · 8 min read · Nov 06, 2025
Le Serveur Parfait - Debian 9 (Stretch) avec Apache, BIND, Dovecot, PureFTPD et ISPConfig 3.1

Ce tutoriel montre comment préparer un serveur Debian 9 (avec Apache2, BIND, Dovecot) pour l’installation d’ISPConfig 3.1, et comment installer ISPConfig. Le panneau de contrôle d’hébergement web ISPConfig 3 vous permet de configurer les services suivants via un navigateur web : serveur web Apache ou nginx, serveur de messagerie Postfix, serveur IMAP/POP3 Courier ou Dovecot, MySQL, serveur de noms BIND ou MyDNS, PureFTPd, SpamAssassin, ClamAV, et bien d’autres. Cette configuration couvre Apache (au lieu de nginx), BIND et Dovecot.
1 Remarque Préliminaire
Dans ce tutoriel, j’utiliserai le nom d’hôte server1.example.com avec l’adresse IP 192.168.1.100 et la passerelle 192.168.1.1. Ces paramètres peuvent différer pour vous, donc vous devez les remplacer là où cela est approprié. Avant de continuer, vous devez avoir une installation minimale de Debian 9. Cela peut être une image Debian minimale de votre fournisseur d’hébergement ou vous pouvez utiliser le tutoriel Serveur Debian Minimal pour configurer le système de base.
2 Installer le serveur SSH (Optionnel)
Si vous n’avez pas installé le serveur OpenSSH lors de l’installation du système, vous pouvez le faire maintenant :
apt-get install ssh openssh-serverÀ partir de maintenant, vous pouvez utiliser un client SSH tel que PuTTY et vous connecter depuis votre station de travail à votre serveur Debian 9 et suivre les étapes restantes de ce tutoriel.
3 Installer un éditeur de texte en ligne de commande (Optionnel)
Nous utiliserons l’éditeur de texte nano dans ce tutoriel. Certains utilisateurs préfèrent l’éditeur classique vi, c’est pourquoi nous installerons les deux éditeurs ici. Le programme vi par défaut a un comportement étrange sur Debian et Ubuntu ; pour corriger cela, nous installons vim-nox :
apt-get install nano vim-noxSi vi est votre éditeur préféré, remplacez nano par vi dans les commandes suivantes pour éditer des fichiers.
4 Configurer le Nom d’Hôte
Le nom d’hôte de votre serveur doit être un sous-domaine comme “server1.example.com”. N’utilisez pas un nom de domaine sans la partie sous-domaine comme “example.com” comme nom d’hôte car cela causera des problèmes plus tard avec votre configuration de messagerie. Tout d’abord, vous devez vérifier le nom d’hôte dans /etc/hosts et le modifier si nécessaire. La ligne doit être : “Adresse IP - espace - nom d’hôte complet incl. domaine - espace - partie sous-domaine”. Pour notre nom d’hôte server1.example.com, le fichier doit ressembler à ceci :
nano /etc/hosts127.0.0.1 localhost.localdomain localhost
192.168.1.100 server1.example.com server1
# Les lignes suivantes sont souhaitables pour les hôtes compatibles IPv6
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allroutersEnsuite, éditez le fichier /etc/hostname :
nano /etc/hostnameIl doit contenir uniquement la partie sous-domaine, dans notre cas :
server1Enfin, redémarrez le serveur pour appliquer le changement :
rebootReconnectez-vous et vérifiez si le nom d’hôte est correct maintenant avec ces commandes :
hostname
hostname -fLa sortie doit ressembler à ceci :
root@server1:/tmp# hostname
server1
root@server1:/tmp# hostname -f
server1.example.com5 Mettez à Jour Votre Installation Debian
Tout d’abord, assurez-vous que votre /etc/apt/sources.list contient le dépôt stretch/updates (cela garantit que vous obtenez toujours les dernières mises à jour de sécurité), et que les dépôts contrib et non-free sont activés car certains paquets requis ne se trouvent pas dans le dépôt principal.
nano /etc/apt/sources.listdeb http://ftp.us.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.us.debian.org/debian/ stretch main contrib non-free
deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-freeExécutez :
apt-get updatePour mettre à jour la base de données des paquets apt
apt-get upgradeet pour installer les dernières mises à jour (s’il y en a).
6 Changer le Shell par Défaut
/bin/sh est un lien symbolique vers /bin/dash, cependant nous avons besoin de /bin/bash, pas de /bin/dash. Par conséquent, nous faisons ceci :
dpkg-reconfigure dashUtiliser dash comme shell système par défaut (/bin/sh) ? <- non
Si vous ne faites pas cela, l’installation d’ISPConfig échouera.
7 Synchroniser l’Horloge du Système
Il est judicieux de synchroniser l’horloge du système avec un serveur NTP ( network time protocol) sur Internet. Il suffit d’exécuter
apt-get install ntpet votre heure système sera toujours synchronisée.
8 Installer Postfix, Dovecot, MySQL, rkhunter et Binutils
Nous pouvons installer Postfix, Dovecot, MySQL, rkhunter et Binutils avec une seule commande :
apt-get install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudoSi vous préférez MySQL à MariaDB, remplacez les paquets “mariadb-client mariadb-server” dans la commande ci-dessus par “mysql-client mysql-server”.
Vous serez invité à répondre aux questions suivantes :
Type général de configuration de messagerie : <– Internet Site
Nom de messagerie du système : <– server1.example.com
Pour sécuriser l’installation de MariaDB / MySQL et désactiver la base de données de test, exécutez cette commande :
mysql_secure_installationRépondez aux questions comme suit :
Changer le mot de passe root ? [Y/n] <-- y
Nouveau mot de passe : <-- Entrez un nouveau mot de passe root MySQL
Répétez le nouveau mot de passe : <-- Répétez le mot de passe root MySQL
Supprimer les utilisateurs anonymes ? [Y/n] <-- y
Interdire la connexion root à distance ? [Y/n] <-- y
Supprimer la base de données de test et y accéder ? [Y/n] <-- y
Recharger les tables de privilèges maintenant ? [Y/n] <-- yEnsuite, ouvrez les ports TLS/SSL et de soumission dans Postfix :
nano /etc/postfix/master.cfDécommentez les sections de soumission et smtps comme suit et ajoutez des lignes si nécessaire afin que cette section du fichier master.cf ressemble exactement à celle ci-dessous.
[...]
submission inet n - - - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - - - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
[...]Redémarrez Postfix ensuite :
service postfix restartNous voulons que MySQL écoute sur toutes les interfaces, pas seulement localhost. Par conséquent, nous modifions /etc/mysql/mariadb.conf.d/50-server.cnf et commentons la ligne bind-address = 127.0.0.1 et ajoutons la ligne sql-mode=”NO_ENGINE_SUBSTITUTION” :
nano /etc/mysql/mariadb.conf.d/50-server.cnf[...]
# Au lieu de skip-networking, le défaut est maintenant d'écouter uniquement sur
# localhost, ce qui est plus compatible et n'est pas moins sécurisé.
#bind-address = 127.0.0.1
sql-mode="NO_ENGINE_SUBSTITUTION"
[...]Définissez la méthode d’authentification par mot de passe dans MariaDB sur native afin que nous puissions utiliser PHPMyAdmin plus tard pour nous connecter en tant qu’utilisateur root :
echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u rootÉditez le fichier /etc/mysql/debian.cnf et définissez le mot de passe root MYSQL / MariaDB là deux fois dans les lignes qui commencent par password.
nano /etc/mysql/debian.cnfLe mot de passe root MySQL qui doit être ajouté est affiché en lecture, dans cet exemple le mot de passe est “howtoforge”.
# Généré automatiquement pour les scripts Debian. NE PAS TOUCHER !
[client]
host = localhost
user = root
password = howtoforge
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password = howtoforge
socket = /var/run/mysqld/mysqld.sock
basedir = /usrPour éviter l’erreur ‘ Erreur dans accept: Trop de fichiers ouverts ‘, nous allons définir des limites de fichiers ouverts plus élevées pour MariaDB maintenant.
Ouvrez le fichier /etc/security/limits.conf avec un éditeur :
nano /etc/security/limits.confet ajoutez ces lignes à la fin du fichier.
mysql soft nofile 65535
mysql hard nofile 65535Ensuite, créez un nouveau répertoire /etc/systemd/system/mysql.service.d/ avec la commande mkdir.
mkdir -p /etc/systemd/system/mysql.service.d/et ajoutez un nouveau fichier à l’intérieur :
nano /etc/systemd/system/mysql.service.d/limits.confcollez les lignes suivantes dans ce fichier :
[Service]
LimitNOFILE=infinityEnregistrez le fichier et fermez l’éditeur nano.
Ensuite, nous rechargeons systemd et redémarrons MariaDB :
systemctl daemon-reload
service mysql restartVérifiez maintenant que le réseau est activé. Exécutez
netstat -tap | grep mysqlLa sortie doit ressembler à ceci :
root@server1:/home/administrator# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 17776/mysqld
root@server1:/home/administrator#9 Installer Amavisd-new, SpamAssassin et ClamAV
Pour installer amavisd-new, SpamAssassin et ClamAV, nous exécutons
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl libdbd-mysql-perl postgreyLa configuration d’ISPConfig 3 utilise amavisd qui charge la bibliothèque de filtres SpamAssassin en interne, donc nous pouvons arrêter SpamAssassin pour libérer de la RAM :
service spamassassin stop
systemctl disable spamassassin9.1 Installer le Serveur XMPP Metronome (optionnel)
Cette étape installe le Serveur XMPP Metronome qui fournit un serveur de chat compatible avec le protocole XMPP. Cette étape est optionnelle, si vous n’avez pas besoin d’un serveur de chat, vous pouvez sauter cette étape. Aucune autre fonction d’ISPConfig ne dépend de ce logiciel.
Ajoutez le dépôt de paquets Prosody dans Debian.
echo "deb http://packages.prosody.im/debian stretch main" > /etc/apt/sources.list.d/metronome.list
wget http://prosody.im/files/prosody-debian-packages.key -O - | sudo apt-key add -Mettez à jour la liste des paquets :
apt-get updateet installez les paquets avec apt.
apt-get install git lua5.1 liblua5.1-0-dev lua-filesystem libidn11-dev libssl-dev lua-zlib lua-expat lua-event lua-bitop lua-socket lua-sec luarocks luarocksluarocks install lpcAjoutez un utilisateur shell pour Metronome.
adduser --no-create-home --disabled-login --gecos 'Metronome' metronomeTéléchargez Metronome dans le répertoire /opt et compilez-le.
cd /opt; git clone https://github.com/maranda/metronome.git metronome
cd ./metronome; ./configure --ostype=debian --prefix=/usr
make
make installMetronome a maintenant été installé dans /opt/metronome.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.