Serveur Debian · 8 min read · Nov 03, 2025

Le Serveur Parfait - Debian 9 (Nginx, BIND, Dovecot, ISPConfig 3.1)

Ce tutoriel montre comment préparer un serveur Debian 9 (avec Nginx, BIND, Dovecot) pour l’installation d’ISPConfig 3.1, et comment installer ISPConfig 3.1. ISPConfig 3 est un panneau de contrôle d’hébergement web qui 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 le serveur web Nginx, BIND en tant que serveur DNS, et Dovecot en tant que serveur IMAP / POP3.

1 Remarque Préliminaire

Dans ce tutoriel, j’utilise 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 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 Minimal Debian Server pour configurer le système de base.

2 Installer le Serveur SSH

Si vous n’avez pas installé le serveur OpenSSH lors de l’installation du système, vous pouvez le faire maintenant :

apt-get -y install ssh openssh-server

Désormais, 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)

J’utiliserai l’éditeur de texte nano dans ce tutoriel. Certains utilisateurs préfèrent l’éditeur classique vi, c’est pourquoi j’installerai 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 -y install nano vim-nox

(Vous n’avez pas besoin de faire cela si vous utilisez un éditeur de texte différent comme joe.)

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 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 changer si nécessaire. La ligne doit être : “Adresse IP - espace - nom d’hôte complet incluant le domaine - espace - partie sous-domaine”. Éditez /etc/hosts. Faites-le ressembler à ceci :

nano /etc/hosts
127.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-allrouters

Ensuite, éditez le fichier /etc/hostname :

nano /etc/hostname

Il doit contenir uniquement la partie sous-domaine, dans notre cas :

server1

Enfin, redémarrez le serveur pour appliquer le changement :

reboot

Reconnectez-vous et vérifiez si le nom d’hôte est correct maintenant avec ces commandes :

hostname  
hostname -f

La sortie doit ressembler à ceci :

root@server1:/tmp# hostname  
server1  
root@server1:/tmp# hostname -f  
server1.example.com

5 Mettre à 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 pour le scanner de virus ClamAV - ce projet publie des versions très souvent, et parfois les anciennes versions cessent de fonctionner), et que les dépôts contrib et non-free sont activés.

nano /etc/apt/sources.list
deb 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-free

IMPORTANT : Ajoutez le dépôt Debian Backports comme indiqué ci-dessus.

Exécutez

apt-get update

pour mettre à jour la base de données des paquets apt et

apt-get upgrade

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 dash

Utiliser 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 ( n etwork t ime p rotocol) sur Internet. Il suffit d’exécuter

apt-get install ntp

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

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_installation

Nous n’avons pas besoin de changer le mot de passe root de MySQL car nous venons d’en définir un nouveau lors de l’installation. Répondez aux questions comme suit :

Change the root password? [Y/n] <-- y  
New password: <-- Entrez un nouveau mot de passe root MySQL  
Re-enter new password: <-- Répétez le mot de passe root MySQL  
Remove anonymous users? [Y/n] <-- y  
Disallow root login remotely? [Y/n] <-- y  
Remove test database and access to it? [Y/n] <-- y  
Reload privilege tables now? [Y/n] <-- y

Ensuite, ouvrez les ports TLS/SSL et de soumission dans Postfix :

nano /etc/postfix/master.cf

Décommentez les sections de soumission et smtps comme suit (laissez -o milter_macro_daemon_name=ORIGINATING car nous n’en avons pas besoin) :

[...]  
submission inet n - y - - 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 - y - - 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 restart

Nous voulons que MariaDB écoute sur toutes les interfaces, pas seulement localhost, donc nous éditons /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à-bas deux fois dans les lignes qui commencent par password.

nano /etc/mysql/debian.cnf

Le mot de passe root MySQL qui doit être ajouté est montré en rouge, 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 = /usr

Pour é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.conf

et ajoutez ces lignes à la fin du fichier.

mysql soft nofile 65535  
mysql hard nofile 65535

Ensuite, 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.conf

collez les lignes suivantes dans ce fichier :

[Service]  
LimitNOFILE=infinity

Enregistrez le fichier et fermez l’éditeur nano.

Ensuite, nous rechargeons systemd et redémarrons MariaDB :

systemctl daemon-reload  
service mysql restart

Vérifiez maintenant que le réseau est activé. Exécutez

netstat -tap | grep mysql

La sortie devrait ressembler à ceci :

root@server1:~# netstat -tap | grep mysql  
tcp6       0      0 [::]:mysql              [::]:*                     LISTEN      4027/mysqld  
root@server1:~#

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 postgrey

La configuration d’ISPConfig 3 utilise amavisd qui charge la bibliothèque de filtre SpamAssassin en interne, donc nous pouvons arrêter SpamAssassin pour libérer de la RAM :

service spamassassin stop  
systemctl disable spamassassin

9.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 update

Installez les programmes nécessaires au processus de construction

apt-get install build-essential

et 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 luarocks
luarocks install lpc

Ajoutez un utilisateur shell pour Metronome.

adduser --no-create-home --disabled-login --gecos 'Metronome' metronome

Té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 install

Metronome a maintenant été installé dans /opt/metronome.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.