GNU/Linux >> Tutoriels Linux >  >> Debian

Le serveur parfait - Debian 8.6 (nginx, BIND, Dovecot, ISPConfig 3.1)

Ce tutoriel montre comment préparer un serveur Debian Jessie (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 Courier ou Dovecot IMAP/POP3, serveur de noms MySQL, BIND ou MyDNS, PureFTPd, SpamAssassin, ClamAV, et bien d'autres. Cette configuration couvre nginx (au lieu d'Apache), 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, vous devez donc les remplacer le cas échéant. Avant de poursuivre, vous devez disposer d'une installation minimale de Debian 8. Il peut s'agir d'une image minimale Debian de votre fournisseur d'hébergement ou vous utilisez le didacticiel 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

À partir de maintenant, vous pouvez utiliser un client SSH tel que PuTTY et vous connecter depuis votre poste de travail à votre serveur Debian 8 et suivre les étapes restantes de ce didacticiel.

3 Installer un éditeur de texte shell (facultatif)

J'utiliserai nano éditeur de texte dans ce tutoriel. Certains utilisateurs préfèrent l'éditeur vi classique, je vais donc installer les deux éditeurs ici. Le programme vi par défaut a un comportement étrange sur Debian et Ubuntu; pour résoudre ce problème, nous installons vim-nox :

apt-get -y install nano vim-nox

(Vous n'avez pas à le faire si vous utilisez un autre éditeur de texte tel que Joe.)

4 Configurer le nom d'hôte

Le nom d'hôte de votre serveur doit être un sous-domaine tel que "server1.example.com". N'utilisez pas un nom de domaine sans partie de 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, y compris domaine - espace - partie sous-domaine". Modifiez /etc/hosts. Faites en sorte qu'il ressemble à ceci :

nano /etc/hosts
127.0.0.1 localhost.localdomain localhost192.168.1.100 server1.example.com server1# Les lignes suivantes sont souhaitables pour les hôtes compatibles IPv6 ::1 localhost ip6-localhost ip6-loopbackff02 ::1 ip6-allnodesff02 ::2 ip6 -allrouters

Modifiez ensuite le fichier /etc/hostname :

nano /etc/hostname

Il ne contiendra que la partie sous-domaine, dans notre cas :

serveur1

Enfin, redémarrez le serveur pour appliquer la modification :

redémarrer

Connectez-vous à nouveau et vérifiez si le nom d'hôte est correct maintenant avec ces commandes :

nomhôte
nomhôte -f

La sortie doit ressembler à ceci :

[email protected] :/tmp# hostname
server1
[email protected] :/tmp# hostname -f
server1.example.com

5 Mettre à jour votre installation Debian

Assurez-vous d'abord que votre /etc/apt/sources.list contient le référentiel wheezy-updates (cela garantit que vous obtenez toujours les dernières mises à jour pour le scanner de virus ClamAV - ce projet publie très souvent des versions, et parfois les anciennes versions cessent de fonctionner), et que les dépôts contrib et non-free sont activés (certains paquets comme libapache2-mod-fastcgi ne sont pas dans le dépôt principal).

nano /etc/apt/sources.list
deb http://ftp.us.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.us.debian.org/debian/ jessie main contrib non- free

deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free

# Backports Debian - Requis pour Letsencrypt
deb http://ftp.debian.org/debian jessie-backports main

IMPORTANT : Ajoutez le référentiel Debian Backports comme indiqué ci-dessus.

Exécuter

apt-obtenir la mise à jour

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

apt-get upgrade

pour installer les dernières mises à jour (le cas échéant).

6 Modifier 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. C'est pourquoi nous procédons comme suit :

dpkg-reconfigure tiret

Utiliser dash comme shell système par défaut (/bin/sh) ? <-- Non

Si vous ne le faites pas, l'installation d'ISPConfig échouera.

7 Synchroniser l'horloge système

C'est une bonne idée de synchroniser l'horloge système avec un NTP (n réseau t temps p rotocol) sur Internet. Exécutez simplement

apt-get install ntp

et l'heure de votre système sera toujours synchronisée.

8 Installer Postfix, Dovecot, MySQL, rkhunter, 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

Les questions suivantes vous seront posées :

Type général de configuration de messagerie :<-- Site Internet
Nom de messagerie système :<-- server1.example.com
Nouveau mot de passe pour l'utilisateur "root" de MariaDB :<-- yourrootsqlpassword
Répéter mot de passe de l'utilisateur "root" de MariaDB :<-- yourrootsqlpassword

Pour sécuriser l'installation de MariaDB / MySQL et pour 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 MySQL car nous venons d'en définir un nouveau lors de l'installation. Répondez aux questions comme suit :

Modifier le mot de passe root ? [O/n] <-- n
Supprimer les utilisateurs anonymes ? [O/n] <-- o
Interdire la connexion root à distance ? [O/n] <-- o
Supprimer la base de données de test et y accéder ? [O/n] <-- o
Recharger les tables de privilèges maintenant ? [O/n] <-- o

Ouvrez ensuite 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 - - - - 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=$dender_mua_sender br /># -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_r estrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING[...]

Redémarrez ensuite Postfix :

redémarrage postfixé du service

Nous voulons que MySQL écoute sur toutes les interfaces, pas seulement sur localhost, donc nous éditons /etc/mysql/my.cnf et commentons la ligne bind-address =127.0.0.1 :

nano /etc/mysql/my.cnf
[...]# Au lieu de sauter la mise en réseau, la valeur par défaut est désormais d'écouter uniquement sur# localhost qui est plus compatible et n'est pas moins sécurisé.#bind-address =127.0.0.1[...]

Ensuite, nous redémarrons MySQL :

service redémarrage mysql

Vérifiez maintenant que la mise en réseau est activée. Exécuter

netstat -tap | grep mysql

Le résultat devrait ressembler à ceci :

[email protected] :~# netstat -tap | grep mysql
tcp        0      0 *:mysql                * :*                    ÉCOUTER      218123/mysqld
[email protected] :~#

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 noarch 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 postgrey

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

service spamassassin stop
systemctl disable spamassassin

9.1 Installer le serveur Metronome XMPP (facultatif)

Cette étape installe le serveur Metronome XMPP qui fournit un serveur de discussion compatible avec le protocole XMPP. Cette étape est facultative, si vous n'avez pas besoin d'un serveur de chat, vous pouvez ignorer cette étape. Aucune autre fonction ISPConfig ne dépend de ce logiciel.

Ajoutez le référentiel de packages Prosody dans Debian.

echo "deb http://packages.prosody.im/debian jessie main"> /etc/apt/sources.list.d/metronome.list
wget http://prosody.im/files/ prosody-debian-packages.key -O - | sudo apt-key ajouter -

Mettre à jour la liste des packages :

apt-obtenir la mise à jour

Installez les programmes requis pour le processus de génération

apt-get install build-essentiel

et installez les packages 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 installer lpc

Ajoutez un utilisateur shell pour Metronome.

adduser --no-create-home --disabled-login --gecos Métronome '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é sur /opt/metronome.

10 Installer Nginx, PHP (PHP-FPM) et Fcgiwrap

Nginx est disponible sous forme de package pour Debian que nous pouvons installer comme suit :

apt-get install nginx

Si Apache2 est déjà installé sur le système, arrêtez-le maintenant...

arrêt du service apache2

Le message "Impossible d'arrêter apache2.service :l'unité apache2.service n'est pas chargée. " est correct et n'indique pas d'erreur.

... et supprimer les liens de démarrage du système d'Apache :

systemctl désactiver apache2

Démarrez ensuite nginx :

démarrage du service nginx

(Si Apache2 et nginx sont installés, le programme d'installation d'ISPConfig 3 vous demandera lequel vous souhaitez utiliser - répondez nginx dans ce cas. Si un seul de ces deux éléments est installé, ISPConfig effectuera automatiquement la configuration nécessaire.)

Nous pouvons faire fonctionner PHP5 dans nginx via PHP-FPM (PHP-FPM (FastCGI Process Manager) est une implémentation alternative de PHP FastCGI avec quelques fonctionnalités supplémentaires utiles pour les sites de toute taille, en particulier les sites les plus fréquentés) que nous installons comme suit :

apt-get install php5-fpm

PHP-FPM est un processus démon (avec le script d'initialisation /etc/init.d/php5-fpm) qui exécute un serveur FastCGI sur le socket /var/run/php5-fpm.sock.

Pour obtenir le support MySQL en PHP, nous pouvons installer le package php5-mysql. C'est une bonne idée d'installer d'autres modules PHP5, car vous pourriez en avoir besoin pour vos applications. Vous pouvez rechercher les modules PHP5 disponibles comme ceci :

apt-cache recherche php5

Choisissez ceux dont vous avez besoin et installez-les comme ceci :

apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-memcached php5-pspell php5-recode php5-sqlite php5-tidy php5 -xmlrpc php5-xsl memcaché

APC est un cache d'opcode PHP gratuit et ouvert pour la mise en cache et l'optimisation du code intermédiaire PHP. Il est similaire à d'autres cacheurs d'opcodes PHP, tels que eAccelerator et XCache. Il est fortement recommandé d'en installer un pour accélérer votre page PHP.

APC peut être installé comme suit :

apt-get install php-apc

Ouvrez ensuite /etc/php5/fpm/php.ini...

nano /etc/php5/fpm/php.ini

... et définissez cgi.fix_pathinfo=0 et votre fuseau horaire :

[...]cgi.fix_pathinfo=0[...]date.timezone="Europe/Berlin"[...]

(Vous pouvez trouver tous les fuseaux horaires disponibles dans les répertoires /usr/share/zoneinfo et ses sous-répertoires.)

Rechargez maintenant PHP-FPM :

rechargement du service php5-fpm

Pour obtenir le support CGI dans nginx, nous installons Fcgiwrap.

Fcgiwrap est un wrapper CGI qui devrait également fonctionner pour les scripts CGI complexes et peut être utilisé pour les environnements d'hébergement partagé car il permet à chaque vhost d'utiliser son propre répertoire cgi-bin.

Installez le package fcgiwrap :

apt-get install fcgiwrap

Après l'installation, le démon fcgiwrap devrait déjà être lancé; son socket est /var/run/fcgiwrap.socket. S'il n'est pas en cours d'exécution, vous pouvez utiliser le script fservice fcgiwrap pour le démarrer.

C'est ça! Désormais, lorsque vous créez un vhost nginx, ISPConfig s'occupe de la configuration correcte du vhost.

10.1 Versions PHP supplémentaires

À partir de ISPConfig 3.0.5, il est possible d'avoir plusieurs versions de PHP sur un serveur (sélectionnables via ISPConfig) qui peuvent être exécutées via PHP-FPM incl. PHP 7 et 7.1. Pour savoir comment créer des versions PHP supplémentaires (PHP-FPM) et comment configurer ISPConfig, veuillez consulter ce tutoriel : Comment installer PHP 7 (PHP-FPM et FastCGI) pour ISPConfig 3 sur Debian 8 (Jessie)

10.2 Installer phpMyAdmin

Installez phpMyAdmin comme suit :

apt-get install phpmyadmin

Ne sélectionnez aucune option lorsque le programme d'installation demande "Serveur Web à reconfigurer automatiquement : " et appuyez sur ok.

Configurer la base de données pour phpmyadmin avec dbconfig-common ? <-- oui
Mot de passe de l'administrateur de la base de données :<-- Entrez le mot de passe root MySQL
Mot de passe de l'application MySQL pour phpmyadmin :<-- Appuyez sur Entrée

Vous pouvez maintenant trouver phpMyAdmin dans le répertoire /usr/share/phpmyadmin/.

Après avoir installé ISPConfig 3, vous pouvez accéder à phpMyAdmin comme suit :

Le vhost des applications ISPConfig sur le port 8081 pour nginx est livré avec une configuration phpMyAdmin, vous pouvez donc utiliser http://server1.example.com:8081/phpmyadmin ou http://server1.example.com:8081/phpMyAdmin pour accéder à phpMyAdmin.

Si vous souhaitez utiliser un alias /phpmyadmin ou /phpMyAdmin que vous pouvez utiliser depuis vos sites Web, c'est un peu plus compliqué que pour Apache car nginx n'a pas d'alias globaux (c'est-à-dire des alias qui peuvent être définis pour tous les vhosts). Vous devez donc définir ces alias pour chacun vhost à partir duquel vous souhaitez accéder à phpMyAdmin.

Pour ce faire, collez ce qui suit dans le champ Directives nginx de l'onglet Options du site Web dans ISPConfig :

 emplacement /phpmyadmin { root /usr/share/ ; index index.php index.html index.htm; emplacement ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; racine /usr/partage/ ; fastcgi_pass unix:/var/run/php5-fpm.sock ; fastcgi_index index.php ; fastcgi_param SCRIPT_FILENAME $request_filename ; inclure /etc/nginx/fastcgi_params ; fastcgi_param PATH_INFO $fastcgi_script_name ; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k ; fastcgi_temp_file_write_size 256k ; fastcgi_intercept_errors activé ; } emplacement ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } emplacement /phpMyAdmin { réécrire ^/* /phpmyadmin dernier ; } 

Si vous utilisez https au lieu de http pour votre vhost, vous devez ajouter la ligne fastcgi_param HTTPS on; à votre configuration phpMyAdmin comme ceci :

 emplacement /phpmyadmin { root /usr/share/ ; index index.php index.html index.htm; emplacement ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; racine /usr/partage/ ; fastcgi_pass unix:/var/run/php5-fpm.sock ; fastcgi_param HTTPS activé ; # <-- ajoutez cette ligne fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename ; inclure /etc/nginx/fastcgi_params ; fastcgi_param PATH_INFO $fastcgi_script_name ; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k ; fastcgi_temp_file_write_size 256k ; fastcgi_intercept_errors activé ; } emplacement ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } emplacement /phpMyAdmin { réécrire ^/* /phpmyadmin dernier ; } 

Si vous utilisez à la fois http et https pour votre vhost, vous pouvez utiliser la variable $https. Accédez à nouveau au champ Directives nginx, et au lieu de fastcgi_param HTTPS on ; vous ajoutez la ligne fastcgi_param HTTPS $https; afin que vous puissiez utiliser phpMyAdmin pour les requêtes http et https :

 emplacement /phpmyadmin { root /usr/share/ ; index index.php index.html index.htm; emplacement ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; racine /usr/partage/ ; fastcgi_pass unix:/var/run/php5-fpm.sock ; fastcgi_param HTTPS $https; # <-- ajoutez cette ligne fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename ; inclure /etc/nginx/fastcgi_params ; fastcgi_param PATH_INFO $fastcgi_script_name ; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k ; fastcgi_temp_file_write_size 256k ; fastcgi_intercept_errors activé ; } emplacement ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } emplacement /phpMyAdmin { réécrire ^/* /phpmyadmin dernier ; } 

10.3 Installer HHVM (HipHop Virtual Machine)

Dans cette étape, nous allons installer HHVM à partir de son référentiel Debian officiel. Ajoutez le référentiel HHVM et importez la clé.

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449
echo deb http://dl.hhvm.com/debian jessie main | sudo tee /etc/apt/sources.list.d/hhvm.list

Mettre à jour la liste des packages :

sudo apt-get update

et installez HHVM :

sudo apt-get install hhvm

11 Installer Let's Encrypt

ISPConfig 3.1 prend en charge l'autorité de certification SSL gratuite Let's encrypt. La fonction Let's Encrypt vous permet de créer des certificats SSL gratuits pour votre site Web à partir d'ISPConfig.

apt-get install python-certbot -t jessie-backports

12 Installer Mailman

ISPConfig vous permet de gérer (créer/modifier/supprimer) des listes de diffusion Mailman. Si vous souhaitez utiliser cette fonctionnalité, installez Mailman comme suit :

apt-get install mailman

Sélectionnez au moins une langue, par exemple :

Langues à prendre en charge :<-- fr (anglais)
Liste de sites manquante <-- Ok

Avant de pouvoir démarrer Mailman, une première liste de diffusion appelée mailman doit être créée :

nouvelle liste de facteur

[email protected] : # newlist mailman
Saisissez l'adresse e-mail de la personne qui gère la liste : <-- l'adresse e-mail de l'administrateur, par ex. [email protected]
 mot de passe initial du mailman  : <-- mot de passe admin pour la liste de mailman 
Pour finir la création de votre liste de diffusion, vous devez modifier votre /etc/aliases (ou
équivalent) fichier en en ajoutant les lignes suivantes et éventuellement en exécutant le programme
`newaliases' :

## mailman mailing list
mailman :              "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin :        "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces :      "|/var/lib/mailman/mail/mailman rebondit mailman"
mailman-confirm :      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join :         "|/var/lib/mailman/mail/mailman join mailman"
mailman- congé :        "|/var/lib/mailman/mail/mailman congé mailman"
mailman-owner :        "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request :      "| /var/lib/mailman/mail/mailman request mailman"
mailman-subscribe :    "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-un s'abonner :  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

Appuyez sur Entrée pour notifier le propriétaire du mailman... <-- ENTER

[email protected] :~#

Ouvrez ensuite /etc/aliases...

nano /etc/aliases

... et ajoutez les lignes suivantes :

[...]## mailman mailing listmailman:"|/var/lib/mailman/mail/mailman post mailman"mailman-admin:"|/var/lib/mailman/mail/mailman admin mailman"mailman- rebondit :"|/var/lib/mailman/mail/mailman rebondit mailman"mailman-confirm :"|/var/lib/mailman/mail/mailman confirme mailman"mailman-join :"|/var/lib/mailman/mail /mailman rejoindre mailman"mailman-leave :"|/var/lib/mailman/mail/mailman quitter mailman"mailman-owner :"|/var/lib/mailman/mail/mailman propriétaire mailman"mailman-request :"|/ var/lib/mailman/mail/mailman demande mailman"mailman-subscribe:"|/var/lib/mailman/mail/mailman s'abonner mailman"mailman-unsubscribe:"|/var/lib/mailman/mail/mailman se désabonner mailman" 

Exécuter

nouveaux alias

ensuite et relancez Postfix :

redémarrage postfix du service

Démarrez ensuite le démon Mailman :

démarrage du service postier

Après avoir installé ISPConfig 3, vous pouvez accéder à Mailman comme suit :

Le vhost des applications ISPConfig sur le port 8081 pour nginx est livré avec une configuration Mailman, vous pouvez donc utiliser http://server1.example.com:8081/cgi-bin/mailman/admin/ ou http://server1.example .com:8081/cgi-bin/mailman/listinfo/ pour accéder à Mailman.

Si vous souhaitez utiliser Mailman à partir de vos sites Web, c'est un peu plus compliqué que pour Apache car nginx n'a pas d'alias globaux (c'est-à-dire des alias qui peuvent être définis pour tous les vhosts). Vous devez donc définir ces alias pour chacun vhost à partir duquel vous souhaitez accéder à Mailman.

Pour ce faire, collez ce qui suit dans le champ Directives nginx de l'onglet Options du site Web dans ISPConfig :

 emplacement /cgi-bin/mailman { root /usr/lib/ ; fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$ ; inclure /etc/nginx/fastcgi_params ; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name ; fastcgi_param PATH_INFO $fastcgi_path_info ; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info ; fastcgi_intercept_errors activé ; fastcgi_pass unix:/var/run/fcgiwrap.socket; } emplacement /images/mailman { alias /usr/share/images/mailman; } emplacement /pipermail { alias /var/lib/mailman/archives/public ; indexation automatique activée ; } 

Cela définit l'alias /cgi-bin/mailman/ pour votre vhost, ce qui signifie que vous pouvez accéder à l'interface d'administration Mailman pour une liste à http:///cgi-bin/mailman/admin/, et le La page Web pour les utilisateurs d'une liste de diffusion peut être trouvée à http:///cgi-bin/mailman/listinfo/.

Sous http:///pipermail, vous trouverez les archives de la liste de diffusion.

13 Installer PureFTPd et Quota

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

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

Editez le fichier /etc/default/pure-ftpd-common...

nano /etc/default/pure-ftpd-common

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

[...]STANDALONE_OR_INETD=autonome[...]VIRTUALCHROOT=true[...]

Nous configurons maintenant PureFTPd pour autoriser les sessions FTP et TLS. FTP est un protocole très peu sûr 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, ce qui rend le 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] :<-- Saisissez le nom de votre pays (par exemple, "DE").
Nom de l'État ou de la province (nom complet) [Some-State] :<-- Saisissez votre état ou Nom de la province.
Nom de la localité (par exemple, ville) [] :<-- Entrez votre ville.
Nom de l'organisation (par exemple, société) [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) [] :<-- Saisissez le nom de votre unité organisationnelle (par exemple, "Service informatique").
Nom commun (par exemple, VOTRE nom) [] :<-- Saisissez le nom de domaine complet du système (par exemple, "serveur1.exemple.com").
Adresse e-mail [] :<-- Saisissez votre adresse e-mail.

Modifiez les autorisations du certificat SSL :

chmod 600 /etc/ssl/private/pure-ftpd.pem

Redémarrez ensuite PureFTPd :

redémarrage du service pure-ftpd-mysql

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

nano /etc/fstab
# /etc/fstab :informations statiques sur le système de fichiers.
#
# Utilisez 'blkid' pour imprimer l'identifiant universel unique d'un
# périphérique ; cela peut être utilisé avec UUID=comme un moyen plus robuste de nommer les périphériques
# qui fonctionne même si des disques sont ajoutés et supprimés. Voir fstab(5).
#
#
# / était sur /dev/sda1 lors de l'installation
UUID=3dc3b58d-97e5-497b-8254-a913fdfc5408 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# swap was on /dev /sda5 lors de l'installation
UUID=36bf486e-8f76-492d-89af-5a8eb3ce8a02 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

Pour activer le quota, exécutez ces commandes :

monter -o remonter /
quotacheck -avugm
quotaon -avug

14 Installer le serveur DNS BIND

BIND peut être installé comme suit :

apt-get install bind9 dnsutils

Si votre serveur est une machine virtuelle, il est fortement recommandé d'installer le démon haveged pour obtenir une entropie plus élevée pour la signature DNSSEC. Vous pouvez également installer haveged sur des serveurs non virtuels, cela ne devrait pas faire de mal.

apt-get install haveged
systemctl enable haveged
service haveged start

Une explication sur ce sujet peut être trouvée ici.

15 Installer Webalizer et AWstats

Webalizer et AWstats peuvent être installés comme suit :

apt-get install webalizer awstats geoip-database libtimedate-perl libclass-dbi-mysql-perl

Ouvrez ensuite /etc/cron.d/awstats...

nano /etc/cron.d/awstats

... et commentez tout ce qui se trouve dans ce fichier :

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

16 Installer Jailkit

Jailkit n'est nécessaire que 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 install build-essential autoconf automake libtool flex bison debhelper binutils
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz
tar xvfz jailkit-2.19.tar.gz
cd jailkit- 2.19
./debian/rules binaire

Vous pouvez maintenant installer le package Jailkit .deb comme suit :

cd ..
dpkg -i jailkit_2.19-1_*.deb
rm -rf jailkit-2.19*

17 Installer Fail2ban et le pare-feu UFW

Ceci est facultatif mais recommandé, car le moniteur ISPConfig essaie d'afficher le journal :

apt-get install fail2ban

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

nano /etc/fail2ban/jail.local
[pureftpd]enabled =trueport =ftpfilter =pureftpdlogpath =/var/log/syslogmaxretry =3[dovecot-pop3imap]enabled =truefilter =dovecot-pop3imapaction =iptables-multiport[name=dovecot-pop3imap, port="pop3, pop3s,imap,imaps", protocol=tcp]logpath =/var/log/mail.logmaxretry =5[postfix-sasl]enabled =trueport =smtpfilter =postfix-sasllogpath =/var/log/mail.logmaxretry =3 

Créez ensuite les deux fichiers de filtre suivants :

nano /etc/fail2ban/filter.d/pureftpd.conf
[Definition]failregex =.*pure-ftpd :\(.*@\) \[WARNING\] L'authentification a échoué pour l'utilisateur.*ignoreregex =
nano /etc/fail2ban/filter.d/dovecot-pop3imap.conf
[Definition]failregex =(?:pop3-login|imap-login):.*(?:Échec de l'authentification|Connexion abandonnée \(échec de l'authentification|Connexion abandonnée \(tentative d'utilisation désactivée|Déconnecté \(échec de l'authentification| Connexion interrompue \(\d+ tentatives d'authentification).*rip=(?P\S*),.*ignoreregex =

Ensuite, pour ajouter la ligne ignoreregex dans le fichier de filtre postfix-sasl, exécutez :

echo "ignoreregex =">> /etc/fail2ban/filter.d/postfix-sasl.conf

Redémarrez ensuite fail2ban :

redémarrage du service fail2ban

Pour installer le pare-feu UFW, exécutez cette commande apt :

apt-get install ufw

18 Installer RoundCube

Roundcube n'est pas disponible dans le référentiel principal de Debian 8, mais nous pouvons l'obtenir via les backports.

Installez RoundCube avec cette commande :

apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins

Le programme d'installation posera les questions suivantes :

Configurer la base de données pour roundcube avec dbconfig.common ? <-- oui
Sélectionnez le type de base de données :<-- mysql
Mot de passe de l'administrateur de la base de données :<-- saisissez ici le mot de passe root MySQL.
Mot de passe de l'application MySQL pour roundcube :<- - appuyez sur entrée

Modifiez ensuite le fichier RoundCube /etc/roundcube/config.inc.php et ajustez quelques paramètres :

nano /etc/roundcube/config.inc.php

Définissez default_host et smtp_server sur localhost.

$config['default_host'] ='localhost';
$config['smtp_server'] ='localhost';

ISPConfig a une configuration dans le vhost des applications nginx pour squirrelmail qui fonctionne également pour roundcube. Nous l'activons avec :

ln -s /usr/share/roundcube /usr/share/squirrelmail

Vous pouvez désormais accéder à RoundCube comme suit :

http://192.168.1.100:8081/webmail
http://server1.example.com:8081/webmail (après avoir installé ISPConfig, voir le chapitre suivant)

 

19 Installer ISPConfig 3

Avant de démarrer l'installation d'ISPConfig, assurez-vous qu'Apache est arrêté (s'il est installé - il est possible que certains de vos packages installés aient installé Apache en tant que dépendance à votre insu). Si Apache2 est déjà installé sur le système, arrêtez-le maintenant...

arrêt du service apache2

... et supprimer les liens de démarrage du système d'Apache :

update-rc.d -f apache2 supprimer

Assurez-vous que nginx est en cours d'exécution :

redémarrage du service nginx

(Si Apache et nginx sont installés, le programme d'installation vous demande lequel vous souhaitez utiliser :Apache et nginx détectés. Sélectionnez le serveur à utiliser pour ISPConfig :(apache,nginx) [apache] :

Tapez nginx. Si seuls Apache ou nginx sont installés, cela est automatiquement détecté par le programme d'installation et aucune question n'est posée.)

Pour installer ISPConfig 3 à partir de la dernière version publiée, procédez comme suit :

cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/

La prochaine étape consiste à exécuter

php -q install.php

Cela lancera le programme d'installation d'ISPConfig 3. Le programme d'installation configurera tous les services comme Postfix, SASL, Courier, etc. pour vous. Une configuration manuelle telle que requise pour ISPConfig 2 (guides de configuration parfaits) n'est pas nécessaire.

# php -q install.php

------------------------------------------------------- -------------------------------------
_____ ___________ _____ __ _ ____
|_ _/ ___| ___ \ / __ \ / _(_) /__ \
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
_| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
\___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
__/ |
|___/
-------------------------------------------------- ------------------------------------------

>> Configuration initiale
Système d'exploitation :Debian 8.0 (Jessie) ou compatible
Voici quelques questions pour la configuration principale, alors soyez prudent.
Les valeurs par défaut sont entre [crochets] et peuvent être acceptées avec .
Appuyez sur "quitter" (sans les guillemets) pour arrêter le programme d'installation.

Sélectionnez la langue (en,de) [en] :<-- Appuyez sur Entrée
Mode d'installation (standard, expert) [standard] : <-- Appuyez sur Entrée
Nom d'hôte complet (FQDN) du serveur, par exemple server1.domain.tld [server1.canomi.com] : <-- Appuyez sur Entrée
Nom d'hôte du serveur MySQL [localhost] : <-- Appuyez sur Entrée
Port du serveur MySQL [3306] : <-- Appuyez sur Entrée
Nom d'utilisateur root MySQL [root] : <-- Appuyez sur Entrée
Mot de passe root MySQL [] : <-- Saisissez votre mot de passe root MySQL
Base de données MySQL pour créer [dbispconfig] : <-- Appuyez sur Entrée
Jeu de caractères MySQL [utf8] : <-- Appuyez sur Entrée
Apache et nginx détectés. Sélectionnez le serveur à utiliser pour ISPConfig :(apache,nginx) [apache] :<-- nginx

Configuration de Postgrey
Configuration de Postfix
Génération d'une clé privée RSA de 4 096 bits
.................................................. ......................++
...................... .................................................. .................................................. ..............++
écriture d'une nouvelle clé privée sur 'smtpd.key'
-----
Vous êtes sur le point d'être invité à entrez les informations qui seront incorporées
dans votre demande de certificat.
Ce que vous êtes sur le point d'entrer est ce qu'on appelle un nom distinctif ou un DN.
Il y a pas mal de champs mais vous pouvez laisser certains champs vides
Pour certains champs, il y aura une valeur par défaut,
Si vous saisissez '.', le champ restera vide.
-----
Nom du pays ( Code à 2 lettres) [AU] :<-- Saisissez le code de pays à 2 lettres
Nom de l'État ou de la province (nom complet) [Some-State] :<-- Saisissez le nom de l'État
Nom de la localité (par exemple, ville) [] :<-- Saisissez votre ville
Nom de l'organisation (par exemple, société) [Internet Widgits Pty Ltd] :<-- Saisissez le nom de la société ou appuyez sur Entrée
Nom de l'unité organisationnelle (par exemple , section) [] : <-- Appuyez sur Entrée
Nom commun (par ex. FQDN du serveur ou VOTRE nom) [] :<-- Entrez le nom d'hôte du serveur, dans mon cas :server1.example.com
Adresse e-mail [] : <-- Appuyez sur Entrée
Configuration de Mailman
Configuration de Dovecot
Configuration de Spamassassin
Configuration d'Amavisd
Configuration de Getmail
Configuration de BIND
Configuration de Jailkit
Configuration de Pureftpd
Configuration de Nginx
Configuration de vlogger
Configuration du serveur Metronome XMPP
écriture d'une nouvelle clé privée dans 'localhost.key'
-----
Nom du pays (code à 2 lettres) [AU] : <-- Entrée Code pays à 2 lettres
Nom de la localité (par exemple, ville) [] : <-- Saisissez votre ville
Nom de l'organisation (par exemple, société) [Internet Widgits Pty Ltd] : <-- Saisissez le nom de la société ou appuyez sur saisissez
Nom de l'unité organisationnelle (par exemple, section) [] : <-- Appuyez sur Entrée
Nom commun (par exemple, FQDN du serveur ou VOTRE nom) [server1.canomi.com] : <-- Saisissez le nom d'hôte du serveur , dans mon cas :server1.example.com
Adresse e-mail [] : <-- Appuyez sur Entrée
Configuration du pare-feu UFW
Configuration de Fail2ban
[INFO] service OpenVZ non détecté
Configuration des applications vhost
Installation d'ISPConfig
Port ISPConfig [8080] :
Mot de passe administrateur [admin] :
Souhaitez-vous une connexion sécurisée (SSL) à l'interface Web ISPConfig (y,n) [y] : <-- Appuyez sur Entrée
Génération de la clé privée RSA, module long de 4096 bits
.......................++
..... .................................................. .................................................. .......................++
e est 65537 (0x10001)
Vous êtes sur le point d'être invité à saisir des informations qui être incorporé
dans votre demande de certificat.
Ce que vous êtes sur le point d'entrer est ce qu'on appelle un nom distinctif ou un DN.
Il y a pas mal de champs mais vous pouvez laisser certains champs vides
Pour certains champs, il y aura une valeur par défaut,
Si vous saisissez '.', le champ restera vide.
-----
Nom du pays (code à 2 lettres) [AU] : <-- Saisissez le code de pays à 2 lettres
Nom de l'État ou de la province (nom complet) [Some-State] : <-- Saisissez le nom de l'état
Nom de la localité (par exemple, la ville) [] : <-- Saisissez votre ville
Nom de l'organisation (par exemple, société) [Internet Widgits Pty Ltd] : <-- Saisissez le nom de la société ou appuyez sur Entrée
Nom de l'unité organisationnelle (par exemple, section) [] : <-- Appuyez sur Entrée
Nom commun (ex. FQDN du serveur ou VOTRE nom) [] : <-- Entrez le nom d'hôte du serveur, dans mon cas :server1.example.com
Adresse e-mail [] : <-- Appuyez sur Entrée
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: <-- Hit Enter
An optional company name []: <-- Hit Enter
writing RSA key

Configuring DBServer
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Detect IP addresses
Restarting services ...
Installation completed.

The installer automatically configures all underlying services, so no manual configuration is needed.

Afterward you can access ISPConfig 3 under http(s)://server1.example.com:8080/ or http(s)://192.168.1.100:8080/ ( http or https depends on what you chose during installation). Log in with the username admin and the password admin (you should change the default password after your first login):

The system is now ready to be used.

20.1 ISPConfig 3 Manual

Afin d'apprendre à utiliser ISPConfig 3, je vous recommande fortement de télécharger le manuel ISPConfig 3.

Sur plus de 300 pages, il couvre le concept derrière ISPConfig (administrateur, revendeurs, clients), explique comment installer et mettre à jour ISPConfig 3, inclut une référence pour tous les formulaires et champs de formulaire dans ISPConfig ainsi que des exemples d'entrées valides, et fournit des tutoriels pour les tâches les plus courantes dans ISPConfig 3. Il explique également comment rendre votre serveur plus sécurisé et est accompagné d'une section de dépannage à la fin.

21 Additional Notes

21.1 OpenVZ

If the Debian server that you've just set up in this tutorial is an OpenVZ container (virtual machine), you should do this on the host system (I'm assuming that the ID of the OpenVZ container is 101 - replace it with the correct VPSID on your system):

VPSID=101
for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE
do
  vzctl set $VPSID --capability ${CAP}:on --save
done

22 Virtual machine image download of this tutorial

Ce didacticiel est disponible sous forme d'image de machine virtuelle prête à l'emploi au format ovf/ova compatible avec VMWare et Virtualbox. L'image de la machine virtuelle utilise les informations de connexion suivantes :

Connexion SSH/shell

Nom d'utilisateur :administrateur
Mot de passe :howtoforge

Nom d'utilisateur : root
Mot de passe :howtoforge

ISPConfig Login

Username:admin
Password:howtoforge

MySQL Login

Username:root
Password:howtoforge

The IP of the VM is 192.168.1.100, it can be changed in the file /etc/network/interfaces. Veuillez modifier tous les mots de passe ci-dessus pour sécuriser la machine virtuelle.

  • Debian :http://www.debian.org/
  • ISPConfig :http://www.ispconfig.org/


Debian
  1. Le serveur parfait - Ubuntu 14.10 (nginx, BIND, Dovecot, ISPConfig 3)

  2. Le serveur parfait - OpenSUSE 12.3 x86_64 (nginx, Dovecot, ISPConfig 3)

  3. Le serveur parfait - Ubuntu 15.04 (nginx, BIND, Dovecot et ISPConfig 3)

  4. Le serveur parfait - Ubuntu 12.04 LTS (nginx, BIND, Dovecot, ISPConfig 3)

  5. Le serveur parfait - Ubuntu 12.10 (nginx, BIND, Dovecot, ISPConfig 3)

Le serveur parfait - OpenSUSE 12.2 x86_64 (nginx, Dovecot, ISPConfig 3)

Le serveur parfait - CentOS 6.3 x86_64 (nginx, Dovecot, ISPConfig 3)

Le serveur parfait - Debian Wheezy (nginx, BIND, Dovecot, ISPConfig 3)

Le serveur parfait - Ubuntu 13.04 (Apache2, BIND, Dovecot, ISPConfig 3)

Le serveur parfait - CentOS 6.4 x86_64 (nginx, Dovecot, ISPConfig 3)

Le serveur parfait - Debian Wheezy (Apache2, BIND, Dovecot, ISPConfig 3)