Installation serveur · 13 min read · Sep 30, 2025

Installation d'un cluster Web, Email et MySQL sur Debian 6.0 avec ISPConfig 3 - Page 2

Les étapes suivantes doivent être exécutées sur le serveur 1 et le serveur 2.

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

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

/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove

Ensuite, Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear et mcrypt peuvent être installés comme suit :

 apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-curl php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libruby libapache2-mod-ruby php5-xcache libapache2-mod-perl2 sudo zip wget

Vous verrez la question suivante :

Serveur Web à reconfigurer automatiquement : <– apache2
Configurer la base de données pour phpmyadmin avec dbconfig-common ? <– Non

Ensuite, exécutez la commande suivante pour activer les modules Apache suexec, rewrite, ssl, actions et include :

a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digest

PureFTPd et quota peuvent être installés avec la commande suivante :

apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatool

Éditez le fichier /etc/default/pure-ftpd-common…

vi /etc/default/pure-ftpd-common

… et assurez-vous que le mode de démarrage est défini sur standalone et définissez VIRTUALCHROOT=true :

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

Éditez le fichier /etc/inetd.conf pour empêcher inetd d’essayer de démarrer ftp :

vi /etc/inetd.conf

S’il y a une ligne commençant par ftp stream tcp, commentez-la (s’il n’y a pas de tel fichier, c’est bien, et vous n’avez pas à modifier /etc/inetd.conf) :

[...]
#:STANDARD: Ce sont des services standard.
#ftp    stream  tcp     nowait  root    /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper
[...]

Si vous avez dû modifier /etc/inetd.conf, redémarrez inetd maintenant :

/etc/init.d/openbsd-inetd restart

Maintenant, nous configurons PureFTPd pour permettre 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 cryptée, rendant ainsi FTP beaucoup plus sécurisé.

Si vous souhaitez autoriser les sessions FTP et TLS, exécutez :

echo 1 > /etc/pure-ftpd/conf/TLS

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

Nom du pays (code à 2 lettres) [AU] : <– Entrez le nom de votre pays (par exemple, “FR”).
Nom de l’État ou de la province (nom complet) [Some-State] : <– Entrez le nom de votre État ou province.
Nom de la localité (par exemple, ville) [] : <– Entrez votre ville.
Nom de l’organisation (par exemple, entreprise) [Internet Widgits Pty 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) [] : <– Entrez le nom de domaine entièrement qualifié 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.pem

Puis redémarrez PureFTPd :

/etc/init.d/pure-ftpd-mysql restart

Éditez /etc/fstab. Le mien ressemble à ceci (j’ai ajouté, usrjquota=aquota.user, grpjquota=aquota.group, jqfmt=vfsv0 à la partition avec le point de montage /) :

vi /etc/fstab
# /etc/fstab: informations sur le système de fichiers statique.
#
# Utilisez 'blkid' pour imprimer l'identifiant universellement unique pour un
# périphérique ; cela peut être utilisé avec UUID= comme un moyen plus robuste de nommer des périphériques
# qui fonctionne même si des disques sont ajoutés et retirés. Voir fstab(5).
#
#                
proc            /proc           proc    defaults        0       0
# / était sur /dev/sda1 pendant l'installation
UUID=92bceda2-5ae4-4e3a-8748-b14da48fb297 /               ext3    errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0       1
# swap était sur /dev/sda5 pendant l'installation
UUID=e24b3e9e-095c-4b49-af27-6363a4b7d094 none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

Pour activer le quota, exécutez ces commandes :

 mount -o remount /

quotacheck -avugm
quotaon -avug

Installez le serveur DNS BIND :

apt-get -y install bind9 dnsutils

Installez vlogger, webalizer et awstats :

 apt-get -y install vlogger webalizer awstats geoip-database

Ouvrez ensuite /etc/cron.d/awstats…

vi /etc/cron.d/awstats

… et commentez les deux tâches cron dans ce fichier :

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Générer des rapports statiques :
 #10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh 

Installez Jailkit : Jailkit est nécessaire uniquement si vous souhaitez chrooter les utilisateurs SSH. Il peut être installé comme suit (important : Jailkit doit être installé avant ISPConfig - il ne peut pas être installé après !) :

apt-get -y install build-essential autoconf automake1.9 libtool flex bison

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz
tar xvfz jailkit-2.14.tar.gz
cd jailkit-2.14
./configure
make
make install
cd ..
rm -rf jailkit-2.14*

Installez fail2ban : c’est optionnel mais recommandé, car le moniteur ISPConfig essaie de montrer le journal :

apt-get install fail2ban

Pour faire en sorte que fail2ban surveille PureFTPd et Dovecot, créez le fichier /etc/fail2ban/jail.local :

vi /etc/fail2ban/jail.local
[pureftpd]
enabled  = true
port     = ftp
filter   = pureftpd
logpath  = /var/log/syslog
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

Ensuite, créez les deux fichiers de filtre suivants :

vi /etc/fail2ban/filter.d/pureftpd.conf
[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.*
ignoreregex =
vi /etc/fail2ban/filter.d/dovecot-pop3imap.conf
[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P\S*),.*
ignoreregex =

Redémarrez fail2ban ensuite :

/etc/init.d/fail2ban restart

Pour installer le client webmail SquirrelMail, exécutez :

apt-get install squirrelmail

Ensuite, créez le lien symbolique suivant…

ln -s /usr/share/squirrelmail/ /var/www/webmail

… et configurez SquirrelMail :

squirrelmail-configure

Nous devons dire à SquirrelMail que nous utilisons Dovecot-IMAP/-POP3 :

Configuration de SquirrelMail : Lire : config.php (1.4.0)

Menu Principal –

  1. Préférences de l’organisation
  2. Paramètres du serveur
  3. Valeurs par défaut des dossiers
  4. Options générales
  5. Thèmes
  6. Carnets d’adresses
  7. Message du jour (MOTD)
  8. Plugins
  9. Base de données
  10. Langues

D. Définir des paramètres prédéfinis pour des serveurs IMAP spécifiques

C Activer la couleur
S Sauvegarder les données
Q Quitter

Commande >> <– D

Configuration de SquirrelMail : Lire : config.php

Alors que nous construisions SquirrelMail, nous avons découvert quelques
préférences qui fonctionnent mieux avec certains serveurs qui ne fonctionnent pas si
bien avec d’autres. Si vous sélectionnez votre serveur IMAP, cette
option définira certains paramètres prédéfinis pour ce serveur.

Veuillez noter que vous devrez toujours passer en revue et vous assurer que
tout est correct. Cela ne change pas tout. Il n’y a que quelques
paramètres que cela changera.

Veuillez sélectionner votre serveur IMAP :
bincimap = Serveur IMAP Binc
courier = Serveur IMAP Courier
cyrus = Serveur IMAP Cyrus
dovecot = Serveur IMAP sécurisé Dovecot
exchange = Serveur IMAP Microsoft Exchange
hmailserver = hMailServer
macosx = Serveur de messagerie Mac OS X
mercury32 = Mercury/32
uw = Serveur IMAP de l’Université de Washington
gmail = Accès IMAP aux comptes de messagerie Google (Gmail)

quitter = Ne rien changer
Commande >> <– dovecot

Configuration de SquirrelMail : Lire : config.php

Alors que nous construisions SquirrelMail, nous avons découvert quelques
préférences qui fonctionnent mieux avec certains serveurs qui ne fonctionnent pas si
bien avec d’autres. Si vous sélectionnez votre serveur IMAP, cette
option définira certains paramètres prédéfinis pour ce serveur.

Veuillez noter que vous devrez toujours passer en revue et vous assurer que
tout est correct. Cela ne change pas tout. Il n’y a que quelques
paramètres que cela changera.

Veuillez sélectionner votre serveur IMAP :
bincimap = Serveur IMAP Binc
courier = Serveur IMAP Courier
cyrus = Serveur IMAP Cyrus
dovecot = Serveur IMAP sécurisé Dovecot
exchange = Serveur IMAP Microsoft Exchange
hmailserver = hMailServer
macosx = Serveur de messagerie Mac OS X
mercury32 = Mercury/32
uw = Serveur IMAP de l’Université de Washington
gmail = Accès IMAP aux comptes de messagerie Google (Gmail)

quitter = Ne rien changer
Commande >> dovecot

imap_server_type = dovecot
default_folder_prefix =
trash_folder = Trash
sent_folder = Sent
draft_folder = Drafts
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = detect
delete_folder = false

Appuyez sur Entrée pour continuer… <– appuyez sur ENTRÉE

Configuration de SquirrelMail : Lire : config.php (1.4.0)

Menu Principal –

  1. Préférences de l’organisation
  2. Paramètres du serveur
  3. Valeurs par défaut des dossiers
  4. Options générales
  5. Thèmes
  6. Carnets d’adresses
  7. Message du jour (MOTD)
  8. Plugins
  9. Base de données
  10. Langues

D. Définir des paramètres prédéfinis pour des serveurs IMAP spécifiques

C Activer la couleur
S Sauvegarder les données
Q Quitter

Commande >> <– S

Configuration de SquirrelMail : Lire : config.php (1.4.0)

Menu Principal –

  1. Préférences de l’organisation
  2. Paramètres du serveur
  3. Valeurs par défaut des dossiers
  4. Options générales
  5. Thèmes
  6. Carnets d’adresses
  7. Message du jour (MOTD)
  8. Plugins
  9. Base de données
  10. Langues

D. Définir des paramètres prédéfinis pour des serveurs IMAP spécifiques

C Activer la couleur
S Sauvegarder les données
Q Quitter

Commande >> <– Q

Ensuite, nous activons un alias global /webmail pour Squirrelmail :

cd /etc/apache2/conf.d/
ln -s ../../squirrelmail/apache.conf squirrelmail.conf
/etc/init.d/apache2 reload

Maintenant, ouvrez /etc/apache2/conf.d/squirrelmail.conf…

vi /etc/apache2/conf.d/squirrelmail.conf

… et ajoutez les lignes suivantes au conteneur qui s’assure que mod_php est utilisé pour accéder à SquirrelMail, peu importe quel mode PHP vous sélectionnez pour votre site Web dans ISPConfig :

[...]
Alias /webmail /usr/share/squirrelmail

   Options FollowSymLinks

   AddType application/x-httpd-php .php
   php_flag magic_quotes_gpc Off
   php_flag track_vars On
   php_admin_flag allow_url_fopen Off
   php_value include_path .
   php_admin_value upload_tmp_dir /var/lib/squirrelmail/tmp
   php_admin_value open_basedir /usr/share/squirrelmail:/etc/squirrelmail:/var/lib/squirrelmail:/etc/hostname:/etc/mailname
   php_flag register_globals off


   DirectoryIndex index.php

 
# l'accès à configtest est limité par défaut pour éviter les fuites d'informations

   order deny,allow
   deny from all
   allow from 127.0.0.1


[...]

Créez le répertoire /var/lib/squirrelmail/tmp…

mkdir /var/lib/squirrelmail/tmp

… et faites-le appartenir à l’utilisateur www-data :

chown www-data /var/lib/squirrelmail/tmp

Rechargez Apache à nouveau :

/etc/init.d/apache2 reload

C’est déjà tout - /etc/apache2/conf.d/squirrelmail.conf définit un alias appelé /squirrelmail qui pointe vers le répertoire d’installation de SquirrelMail /usr/share/squirrelmail.

Vous pouvez maintenant accéder à SquirrelMail depuis votre site Web comme suit :

http://www.example.com/squirrelmail

Vous pouvez également y accéder depuis le panneau de contrôle ISPConfig vhost comme suit (cela ne nécessite aucune configuration dans ISPConfig) :

http://server1.example.com:8080/squirrelmail

Ensuite, nous installons Unison. Unison est utilisé pour synchroniser les répertoires /var/www et /var/vmail entre le maître et l’esclave

apt-get install unison

Maintenant, nous installons un fichier de configuration unison sur le premier serveur.

Sur le serveur 1 :

Créez un nouveau fichier /root/.unison/default.prf sur server1…

mkdir /root/.unison
vi /root/.unison/default.prf

… et ajoutez le contenu suivant :

# Racines de la synchronisation
root = /var
root = ssh://192.168.0.106//var/
 
# Chemins à synchroniser
path = www
path = vmail
 
# Quelques regexps spécifiant les noms et chemins à ignorer
#ignore = Path stats    ## ignore /var/www/stats
#ignore = Path stats/*  ## ignore /var/www/stats/*
#ignore = Path */stats  ## ignore /var/www/somedir/stats, mais pas /var/www/a/b/c/stats
#ignore = Name *stats   ## ignore tous les fichiers/répertoires se terminant par "stats"
#ignore = Name stats*   ## ignore tous les fichiers/répertoires commençant par "stats"
#ignore = Name *.tmp    ## ignore tous les fichiers avec l'extension .tmp
   
#          Lorsqu'il est défini sur true, ce drapeau fait en sorte que l'interface utilisateur saute
#          les confirmations sur les changements non conflictuels. (Plus
#          précisément, lorsque l'interface utilisateur a terminé de définir la
#          direction de propagation pour une entrée et est sur le point de passer à la
#          suivante, elle sautera toutes les entrées non conflictuelles et ira
#          directement à la prochaine conflit.)
auto=true
   
#          Lorsque cela est défini sur true, l'interface utilisateur ne posera aucune
#          question. Les changements non conflictuels seront propagés ;
#          les conflits seront ignorés.
batch=true
   
#          !Lorsque cela est défini sur true, Unison demandera une confirmation supplémentaire
#          s'il semble que l'ensemble de la réplique a été
#          supprimé, avant de propager le changement. Si le drapeau batch est
#          également défini, la synchronisation sera annulée. Lorsque la préférence
#          de chemin est utilisée, la même confirmation sera demandée pour
#          les chemins de premier niveau. (Pour le moment, ce drapeau n'affecte que
#          l'interface utilisateur texte.) Voir aussi la préférence mountpoint.
confirmbigdel=true
   
#          Lorsque cette préférence est définie sur true, Unison utilisera le
#          temps de modification et la longueur d'un fichier comme un `pseudo inode
#          number' lors de la recherche de mises à jour dans les répliques, au lieu de lire
#          le contenu complet de chaque fichier. Sous Windows, cela peut amener
#          Unison à manquer de propager une mise à jour si le temps de modification
#          et la longueur du fichier sont tous deux inchangés par la mise à jour.
#          Cependant, Unison ne remplacera jamais une telle mise à jour par un
#          changement de l'autre réplique, car il effectue toujours une vérification
#          sécurisée des mises à jour juste avant de propager un changement. Ainsi, il est
#          raisonnable d'utiliser ce commutateur sous Windows la plupart du temps
#          et de faire occasionnellement fonctionner Unison une fois avec fastcheck défini sur false,
#          si vous craignez qu'Unison ait négligé une mise à jour.
#          La valeur par défaut de la préférence est auto, ce qui fait
#          qu'Unison utilise une vérification rapide sur les répliques Unix (où c'est sûr)
#          et une vérification lente sur les répliques Windows. Pour la compatibilité
#          ascendante, yes, no et default peuvent être utilisés à la place de
#          true, false et auto. Voir la section "Vérification rapide" pour plus
#          d'informations.
fastcheck=true

#          Lorsque ce drapeau est défini sur true, les attributs de groupe des
#          fichiers sont synchronisés. Que les noms de groupe ou les identifiants de groupe
#          soient synchronisés dépend de la préférence numerids.
group=true
   
#          Lorsque ce drapeau est défini sur true, les attributs de propriétaire des
#          fichiers sont synchronisés. Que les noms de propriétaire ou les identifiants de propriétaire
#          soient synchronisés dépend de la préférence extttnumerids.
owner=true
   
#          Inclure la préférence -prefer root fait en sorte qu'Unison résolve toujours
#          les conflits en faveur de root, plutôt que de demander
#          des conseils à l'utilisateur. (La syntaxe de root est la même que pour
#          la préférence root, plus les valeurs spéciales newer et older.)
#          Cette préférence est remplacée par la préférence preferpartial.
#          Cette préférence ne doit être utilisée que si vous êtes sûr de savoir
#          ce que vous faites !
prefer=newer
   
#          Lorsque cette préférence est définie sur true, l'interface utilisateur
#          textuelle n'imprimera rien du tout, sauf en cas d'erreurs.
#          Définir silent sur true définit automatiquement la préférence batch
#          sur true.
silent=true
   
#          Lorsque ce drapeau est défini sur true, les temps de modification des fichiers
#          (mais pas les modtimes des répertoires) sont propagés.
times=true

Nous voulons automatiser la synchronisation, c’est pourquoi nous créons un travail cron pour cela sur server1.example.tld :

crontab -e
*/5 * * * * /usr/bin/unison &> /dev/null
Share: X/Twitter LinkedIn

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

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