Voici un nouveau tutorial qui vous sera sans doute utile si vous venez d'installer la distribution linux Debian (Ou Ubuntu) sur votre serveur.

L'objectif du tutorial est d'obtenir un serveur linux debian permettant d'héberger et de gérer vos sites web PHP / MySQL à distance, uniquement avec un accès SSH.
Voici les différentes parties du tutorial qui seront divisées en 5 billets:
Pour réaliser ce tutorial, vous devrez au préalable avoir des connaissances en ligne de commande linux (Au moins les commandes basiques: cd, mkdir, mv ...).
Disposer d'un client SSH (Comme Putty), d'un client FTP (Comme FileZilla), et bien sûr de votre serveur avec une Debian fraichement installée.
Vous aurez aussi besoin d'au moins un nom de domaine pointant sur votre serveur.
Important, si vous souhaitez pouvoir gérer vos emails à partir de votre serveur debian, vous devez rediriger les champs MX vers l'IP de votre serveur.
Pour voir où les champs MX de votre domaine pointent actuellement, tapez la commande suivante en SSH:
root [~] > host -t MX VOTRE_DOMAINE
Vous verrez les serveurs mails associés ainsi que leur priorité.
Pour modifier ces champs MX, rendez-vous sur l'interface d'administration du registrar chez qui vous avez acheté le domaine, puis modifiez les DNS.
En plus petite valeur de priorité, mettez l'adresse de votre serveur ou son nom de domaine.
La prise en compte de ces modifications n'est pas immédiate, donc ne vous inquietez pas si vous ne voyez aucuns changement au bout de 10min. (Les changements peuvent prendre jusqu'à 48h ...)

Notre serveur web est maintenant prêt à emploi. Toutefois, il nous manque quand même un bon serveur d'email avec lequel nous pourrons gérer tous nos emails et adresses virtuelles aisément.
Postfix MySQL est une bonne solution pour gérer nos emails multi-domaines. Comme pour notre serveur FTP, nous pourrons gérer des comptes email virtuels directement à partir de phpMyAdmin.
Sortez vos clients SSH, et c'est parti !
root [~] > apt-get install postfix-mysql
Les paquets suivants seront installés:
openssl postfix postfix-mysql ssl-cert
Vous devriez obtenir les écrans suivants:

Il vous sera demandé quel type de configuration vous souhaitez créer. Choisissez "No configuration" pour avoir une config vierge.

Postfix est maintenant installé, passons à sa configuration.
Afin que postfix n'ai pas de problèmes de communication avec MySQL, il faut modifier le fichier master.cf
root [~] > nano /etc/postfix/master.cf
# service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - n - - smtpd
remplacez le n situé sous "chroot" par un tiret.
Sauvegardez et quittez.
Comme pour pureFTPd, nous allons devoir créer une base de données spécifique pour postfix avec un utilisateur propre.
1) Création de la table postfix et de l'utilisateur postfix dans MySQL.
Soit vous passez par phpMyAdmin > Privilèges > Ajouter un nouvel utilisateur.

Soit vous êtes un adepte de la ligne de commande et vous le créez en SSH:
root [~] > mysql -u root -p mysql> CREATE USER 'postfix'@ 'localhost' IDENTIFIED BY 'VOTRE_PASS_POSTFIX_MYSQL'; mysql> GRANT USAGE ON * . * TO 'postfix'@'localhost' IDENTIFIED BY 'VOTRE_PASS_POSTFIX_MYSQL'; mysql> CREATE DATABASE `postfix` ; mysql> GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@ 'localhost'; mysql> FLUSH PRIVILEGES;
2) Les tables MySQL postfix
Postfix MySQL nécessite plusieurs tables:
Voici le code SQL de création de ces 3 tables:
USE postfix; CREATE TABLE `domaines` ( `domaine` varchar(255) NOT NULL default '', `etat` tinyint(1) NOT NULL default '1', PRIMARY KEY (`domaine`) ) ENGINE=MyISAM; CREATE TABLE `comptes` ( `email` varchar(255) NOT NULL default '', `password` varchar(255) NOT NULL default '', `quota` int(10) NOT NULL default '0', `etat` tinyint(1) NOT NULL default '1', `imap` tinyint(1) NOT NULL default '1', `pop3` tinyint(1) NOT NULL default '1', PRIMARY KEY (`email`) ) ENGINE=MyISAM; CREATE TABLE `alias` ( `source` varchar(255) NOT NULL default '', `destination` text NOT NULL, `etat` tinyint(1) NOT NULL default '1', PRIMARY KEY (`source`) ) ENGINE=MyISAM;
Maintenant que nos tables MySQL sont prêtes, nous allons pouvoir les renseigner dans les fichiers de configuration de postfix.
Nous allons créer un fichier de configuration par requêtes:
Tous ces fichiers seront stockés dans le répertoire /etc/postfix/
root [~] > nano /etc/postfix/mysql-virtual_domaines.cf
hosts = 127.0.0.1 user = postfix password = VOTRE_PASS_POSTFIX_MYSQL dbname = postfix select_field = 'virtual' table = domaines where_field = domaine additional_conditions = AND etat=1
root [~] > nano /etc/postfix/mysql-virtual_comptes.cf
hosts = 127.0.0.1 user = postfix password = VOTRE_PASS_POSTFIX_MYSQL dbname = postfix table = comptes select_field = CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') where_field = email additional_conditions = AND etat=1
root [~] > nano /etc/postfix/mysql-virtual_aliases.cf
hosts = 127.0.0.1 user = postfix password = VOTRE_PASS_POSTFIX_MYSQL dbname = postfix table = alias select_field = destination where_field = source additional_conditions = AND etat=1
root [~] > nano /etc/postfix/mysql-virtual_aliases_comptes.cf
hosts = 127.0.0.1 user = postfix password = VOTRE_PASS_POSTFIX_MYSQL dbname = postfix table = comptes select_field = email where_field = email additional_conditions = AND etat=1
root [~] > nano /etc/postfix/mysql-virtual_quotas.cf
hosts = 127.0.0.1 user = postfix password = VOTRE_PASS_POSTFIX_MYSQL dbname = postfix table = comptes select_field = quota where_field = email
Nos fichiers de configuration Postfix <-> Mysql sont prêts. Nous allons créer le fichier de configuration principal de postfix.
Tout d'abord, nous créons un groupe et un utilisateur mail virtuel:
root [~] > groupadd -g 5000 vmail root [~] > useradd -g vmail -u 5000 vmail -d /var/spool/vmail/ -m
Ensuite, on créé le fichier de configuration principal:
root [~] > nano /etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
disable_vrfy_command = yes
smtpd_helo_required = yes
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Pour faire simple, il est conseillé d'utiliser le reverse DNS de votre serveur.
myhostname = REVERSE_DNS
myorigin = REVERSE_DNS
mydestination = REVERSE_DNS, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8, IP_PUBLIQUE_SERVEUR
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_aliases.cf,mysql:/etc/postfix/mysql-virtual_aliases_comptes.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_domaines.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_comptes.cf
virtual_mailbox_base = /var/spool/vmail/
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql-virtual_quotas.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = "La boite mail de votre destinataire est pleine, merci de reessayez plus tard."
virtual_overquota_bounce = yes
# adresses d'expedition
smtpd_sender_restrictions =
permit_mynetworks,
warn_if_reject reject_unverified_sender
# adresses de destination
smtpd_recipient_restrictions =
permit_mynetworks,
reject_unauth_destination,
reject_non_fqdn_recipient
# client
smtpd_client_restrictions =
permit_mynetworks
Remplacez les valeurs en gras par celle qui vous correspondent.
Comme vous l'avez vu, le mot de passe MySQL de notre utilisateur postfix est en clair, il faut donc restreindre l'accès aux fichiers de conf à root et postfix uniquement.
root [~] > chmod u=rw,g=r,o= /etc/postfix/mysql-virtual_*.cf root [~] > chgrp postfix /etc/postfix/mysql-virtual_*.cf root [~] > l /etc/postfix/ -rw-r--r-- 1 root root 373 2009-01-09 11:40 dynamicmaps.cf -rw-r--r-- 1 root root 2731 2009-01-09 15:15 main.cf -rw-r--r-- 1 root root 3968 2009-01-09 11:40 master.cf -rw-r----- 1 root postfix 174 2009-01-09 13:02 mysql-virtual_aliases.cf -rw-r----- 1 root postfix 169 2009-01-09 13:02 mysql-virtual_aliases_comptes.cf -rw-r----- 1 root postfix 238 2009-01-09 13:01 mysql-virtual_comptes.cf -rw-r----- 1 root postfix 176 2009-01-09 13:01 mysql-virtual_domaines.cf -rw-r----- 1 root postfix 134 2009-01-09 13:02 mysql-virtual_quotas.cf -rw-r--r-- 1 root root 17975 2008-08-19 07:51 postfix-files -rwxr-xr-x 1 root root 6840 2008-08-19 07:51 postfix-script -rwxr-xr-x 1 root root 22239 2008-08-19 07:51 post-install drwxr-xr-x 2 root root 4096 2008-08-19 07:51 sasl
Les droits ont bien été mis à jour.
On reboot postfix pour qu'il prenne en compte toutes nos modifications
root [~] > /etc/init.d/postfix restart
Et pour s'assurer qu'il n'y'a pas de problème de syntaxe dans notre configuration, tapez:
root [~] > postfix check
Dans un premier temps, insérez des données dans les tables MySQL postfix.
On insère un domaine valide qui sera géré par postfix:
INSERT INTO `domaines` ( `domaine` , `etat` ) VALUES ('VOTRE_DOMAINE.com', '1');
Et on créé un compte virtuel:
INSERT INTO `comptes` ( `email` , `password` , `quota` , `etat` , `imap` , `pop3` ) VALUES
('contact@VOTRE_DOMAINE.com', ENCRYPT( 'VOTRE_PASS_MAIL' ) , '0', '1', '1', '1');
Nous allons voir si postfix fonctionne correctement, pour cela installez telnet (apt-get install telnet) si vous ne l'avez pas par défaut.
root [/etc/postfix] > telnet 127.0.0.1 25 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 mail.lafermeduweb.net ESMTP (Debian/GNU) ehlo VOTRE_DOMAINE 250-mail.VOTRE_DOMAINE 250-PIPELINING 250-SIZE 10240000 250-ETRN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN mail from: <postmaster@VOTRE_DOMAINE> 250 2.1.0 Ok rcpt to: <contact@VOTRE_DOMAINE> 250 2.1.5 Ok data 354 End data with . Hello ca farte ? . 250 2.0.0 Ok: queued as 286AA8C4089 quit 221 2.0.0 Bye
Nous avons envoyé un email en provenance de l'adresse test@VOTRE_DOMAINE vers notre compte mail récemment créé (contact@VOTRE_DOMAINE).
Jetons un oeil dans les logs générés:
root [~] > cat /var/log/mail.log Jan 12 14:28:50 F055 postfix/smtpd[27791]: connect from localhost[127.0.0.1] Jan 12 14:29:28 F055 postfix/smtpd[27791]: 78F628C4596: client=localhost[127.0.0.1] Jan 12 14:29:38 F055 postfix/cleanup[27796]: 78F628C4596: message-id=<20090112132928. 78F628C4596@VOTRE_DOMAINE> Jan 12 14:29:38 F055 postfix/qmgr[26852]: 78F628C4596: from=, size=366, nrcpt=1 (queue active) Jan 12 14:29:38 F055 postfix/virtual[27800]: 78F628C4596: to=, relay=virtual, delay=22, delays=22/0.01/0/0.02, dsn=2.0.0, status=sent (delivered to maildir) Jan 12 14:29:38 F055 postfix/qmgr[26852]: 78F628C4596: removed Jan 12 14:29:40 F055 postfix/smtpd[27791]: disconnect from localhost[127.0.0.1]
"delivred to maildir" indique que notre mail est bien arrivé à destination!
Regardez vos logs (cat /var/log/mail.log) en cas d'erreur.
Feb 4 16:29:10 ns205674 postfix/smtpd[29555]: fatal: open database /etc/aliases.db: No such file or directory
Si vous obtenez cette erreur, tapez dans votre console:
newaliases
root [~] > apt-get install courier-base courier-authdaemon courier-authlib-mysql courier-imap courier-pop
Les paquets suivant vont être installés:
courier-authdaemon courier-authlib courier-authlib-mysql courier-authlib-userdb courier-base courier-imap courier-pop libfam0
Répondez No à la question sur la séparation des fichiers de configuration pour l'administration web.
Nous allons déjà activer l'authentification Courier avec le module MySQL.
root [~] > nano /etc/courier/authdaemonrc
Modifiez la ligne 27:
authmodulelist="authmysql"
Sauvegardez et quittez.
Comme pour Postfix, nous allons renseigner les champs et la table MySQL à Courier:
root [~] > nano /etc/courier/authmysqlrc
Modifiez les paramètres de cette façon:
MYSQL_SERVER localhost MYSQL_USERNAME postfix MYSQL_PASSWORD VOTRE_PASS_POSTFIX_MYSQL MYSQL_DATABASE postfix MYSQL_USER_TABLE comptes MYSQL_CRYPT_PWFIELD password MYSQL_UID_FIELD 5000 MYSQL_GID_FIELD 5000 MYSQL_LOGIN_FIELD email MYSQL_HOME_FIELD "/var/spool/vmail/"
Sauvegardez et quittez.
Il faut maintenant rebooter les services de courier pour qu'il prenne en compte nos modifications:
root [~] > /etc/init.d/courier-authdaemon restart Stopping Courier authentication services: authdaemond. Starting Courier authentication services: authdaemond. root [~] > /etc/init.d/courier-imap restart Stopping Courier IMAP server: imapd. Starting Courier IMAP server: imapd. root [~] > /etc/init.d/courier-pop restart Stopping Courier POP3 server: pop3d. Starting Courier POP3 server: pop3d.
Pour tester si tout fonctionne correctement, nous allons directement mettre en place un webmail sur notre serveur web, il peut s'avérer pratique pour consulter vos emails lorsque vous n'êtes pas sur votre machine.

Téléchargez roundcube sur votre serveur: http://roundcube.net/downloads
root [~] > wget http://surfnet.dl.sourceforge.net/sourceforge/roundcubemail/roundcubemail-0.2-stable.tar.gz root [~] > tar -zxvf roundcubemail-0.2-stable.tar.gz root [~] > mv roundcubemail-0.2-stable/ /var/www/webmail/
Votre webmail est en place, il faut maintenant le configurer.
root [~] > mysql -u root -p mysql> CREATE DATABASE roundcubemail; mysql> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'PASS_ROUNDCUBE'; mysql> quit
Notre base de données roundcubemail est créée, il faut maintenant importer les tables
root [~] > mysql -u root -p roundcubemail < /var/www/webmail/SQL/mysql.initial.sql
Lancez maintenant votre navigateur web et entrez l'adresse suivante:
http://VOTRE_IP_DE_SERVEUR/webmail/installer/
Suivez pas à pas les instructions pour installer le webmail.
En fin d'installation, copiez les deux sources générées, et collez les dans les fichiers de conf du serveur:
Supprimez le répertoire installer/ une fois que vos fichiers de conf sont créés.
http://VOTRE_IP_DE_SERVEUR/webmail/
Et maintenant vous devriez pouvoir accéder au webmail.
Entrez le nom de votre compte précedemment inséré dans les tables de postfix (contact/password), et vous devriez pouvoir vous connecter si tout marche correctement.
Avec roundcube, vous pouvez envoyer et recevoir des messages avec votre adresse contact@VOTRE_DOMAINE.
Si vous rencontrez des problèmes lors de l'installation ou de son fonctionnement, laissez un message dans le topic du forum dédié au tutorial.
Votre serveur web est maintenant totalement opérationnel.
Pour plus de sécurité nous verrons dans la dernière partie du tutorial comment mettre en place un système de backup efficace et gratuit et comment faire pour contrer la plupart des attaques SSH, FTP, Web et Mail avec de simples modifications de votre config debian.
Aide & Questions: Pour tous problèmes ou questions à propos de ce tutorial, merci d'utiliser le topic dédié dans le forum de La Ferme du Web
A voir aussi sur le même sujet:
Pour poster un commentaire, vous devez être identifié. Vous pouvez choisir parmi ces trois méthodes d'identification:
Compte la Ferme du WebIdentifiez-vousInscrivez-vous |
Compte Facebook
|
Compte Twitter
|