### 2. Installation

#### 2.1 Pré-requis

Avant d'installer DTC, apache doit être déja installé sur le système ainsi que php4 (version cgi en ligne de commande (php4-cgi sous debian / php-cgi sous BSD) et le module mod_php4 pour apache). mysql.
Pour que DTC ait un intérêt, installer bind(ou autre nameserver compatible), qmail et proftpd avec le module mod_sql sans oublier de prévoir au moins un nom de domaine utilisable.
Nottez que sous BSD comme sous Debian, les dépendances installent éléments manquants. Par contre, le mot de passe administrateur du serveur MySQL doit etre configuré avant d'installer DTC.

#### 2.2 Configuration des daemons avant installation

##### 2.2.1 Mysql

Par défaut, la plupart des distributions installent mysql-server sans mot de passe administrateur, il faut donc mettre un mot de passe avant l'installation de DTC :
Taper sous shell la ligne de commande suivante pour vous connecter à mysql :

    mysql -uroot -Dmysql

Puis la requête SQL suivante :

    UPDATE user SET Password=PASSWORD('VOTRE_MOT_DE_PASSE') WHERE User='root';
    FLUSH PRIVILEGES;

##### 2.2.2 Apache

Il faut maintenant donner un nom par défaut au serveur apache et le configurer pour utiliser nobody/nogroup comme utilisateur, pour ce faire il suffit d'éditer le fichier httpd.conf en changeant les directives User, Group, ServerName :
User nobody
Group nogroup
ServerName www.example.com (le ServerName doit être le même que dans /etc/hostname)
(le fichier httpd.conf se retrouve avec un chemin différent selon la distribution installée, par exemple sous debian : /etc/apache/httpd.conf , sous redhat : /etc/httpd/conf/httpd.conf , si vous compilé apache vous même : /usr/local/apache/etc/httpd.conf , .. )

#### 2.3 Installation avec la distribution debian

DTC ne fait pas encore partie de l'arborescence officielle des packages debian, En attendant il suffit de rajouter la ligne suivante dans le fichier /etc/apt/sources.list :

    deb ftp://gplhost.com/debian stable main

Ce repository contient les versions compilées de qmail-src et ucspi-tcp-src qui ne sont fournies qu'en version source sur les repository officiels (pour des raisons de licences), on trouvera aussi le programme d'authentification alternatif (via le fichier /etc/poppasswd) pour qmail nommé checklocalpwd par Jedi (en package debian réalisé par l'auteur de DTC), et mysqmail qui contient une version patché de qmail-pop3d pour logger le trafic pop en MySQL, un logger et une authetification.
Une fois ce rajout effectué, l'installation se fait comme pour n'importe quel package debian:

    apt-get install dtc

Une suite de questions vous sera posée pour permettre à DTC d'installer le 1er domaine (c'est sur une zone de ce domaine que sera installé l'interface web de DTC) :
- le nom d'hote mysql.
- le login administrateur de mysql.
- le mot de passe administrateur de mysql.
- le nom de la base de données utilisée par DTC.
- le nom de domaine principal.
- la zone utilisée pour accéder à l'interface DTC.
- l'adresse ip principale de la machine.
- le chemin par défaut où seront stockés les données des domaines (mail,html) lors de la création d'un nouveau compte client.
- le couple login/mot de passe utilisé pour administrer le 1er domaine créé
Attention ! Il peut arrivé, si php4-cgi est installé après php4-mysql par exemple, que le module ne soit pas activé dans php4-cgi. Veuillez alors activer mysql.so manuellement dans /etc/php4/cgi/php.ini (de meme pour les autres modules de php4 nécessaires). De manière générale, il est raisonable de passer du temps pour vérifier que vos httpd.conf et php.ini sont bien configuré et permettent une sécurité maximale (reegister_globales=0, safe_mode=1 par exemple).

#### 2.4 Installation avec la distribution redhat

La version actuelle du package RPM de DTC a été conçue pour les dépendances et les chemins d'une redhat 7.3, mais puisqu'il s'agit de scripts php non compilés le package devrait fonctionner avec toutes les versions supérieures.
Le package RPM est disponible sur ftp.gplhost.com
L'installation se fait comme pour n'importe quel package rpm :

    rpm -ivh dtc-VERSION_noarch.rpm

Puisque sous redhat, il n'est pas possible de poser des questions à l'utilisateur durant la phase d'installation, un script de post-installation est disponible ( /usr/share/dtc/admin/dtc.rpm-install.sh ) qui vous posera les questions déja énumérées dans le sous-chapitre "installation avec la distribution debian".

#### 2.5 Installation avec une distribution BSD/GENTOO

Un port est en cours de développement permettant de résoudre les dépendances. Pour le moment vous devez vous satisfaire du script d'installation livré avec l'archive BSD. Veuillez notté que cette archive a été testé et qu'elle fonctionne, c'est simplement qu'il y a beaucoup de choses a installer pour que DTC soit opérationnel.

#### 2.6 Installation manuelle

Dans un premier temps il faut télécharger l'archive .tar de DTC qui est disponible sur ftp.gplhost.com
Puis décompresser l'archive:

    tar -xvzf dtc_VERSION_all.tar.gz

ensuite installer les fichiers décompressés:

    mkdir -p /usr/share/dtc/etc/zones
    mv dtc_VERSION_all/dtc /usr/share
    chown -R root:root /usr/share/dtc
    chown -R nobody:nogroup /usr/share/dtc/etc

enfin le lancement du script d'installation finale:

    dtc_VERSION_all/install.sh

En plus des questions déja énumérées dans le sous-chapitre "installation avec la distribution debian" il vous sera demandé le chemin des fichiers de configuration suivants : httpd.conf, proftpd.conf, named.conf.
Véfifier après installation de qmail que votre fichier /etc/passwd soit de la forme suivante :

    qmaild:x:64011:65534:qmail daemon,,,:/var/qmail:/bin/sh
    qmaill:x:64015:65534:qmail log,,,:/var/qmail:/bin/sh
    qmailp:x:64016:65534:qmail pw,,,:/var/qmail:/bin/sh

Si vous préféré installer tout 'a la main' sans le script d'installation, voici comment il faut procéder (désolé, c'est en anglais...):
- First, install apache, bind, proftpd with mysql support, and qmail with either mysql support or using the Jedi's checklocalpasswd program for authentification. Already done ? You should either be very fast or have debian system installed !
- Setup the database the way the "create_table.sql" describe it. You can cut-paste this file content in phpmyadmin if you like...
- Create some folders for dtc to store the generated files :

    # Create /etc/dtc (conf file), /etc/dtc/data (generated file path)
    # and /etc/dtc/data/zone (where named zone files will be stored)
    # Folder where dtc will generate it's files for apache, qmail and bind :
    mkdir -p /etc/dtc/data/zone

- Make this folder accessible by your web user (it should be either nobody or www-data depending the way things are set up...).

    chown -R nobody:nogroup /etc/dtc/data;

- DTC will generate the following files in the /etc/dtc/data folder. You have to either replace package files by a symlink to those files, or include these in the package file. Let's see them one by one. Note that you can change the path to all of them in the config.inc.php.
DTC will generate the folowing files for you : named.zones - named_slave.zones - vhosts.prosites - rcpthosts - virtualdomains - assign - poppasswd
* named.zones or named_slave.zones
Include this file in your named.conf (located in /etc/bind under debian and /etc/namedb under FreeBSD) file using the following syntax :

    include "/etc/dtc/data/named.zones";

* vhosts.prosites
Include this in your /etc/apache/httpd.conf :

    Include /etc/dtc/data/vhosts.prosites

* qmail files
You have to replace the qmail files by symlinks to those files :

    rm /etc/qmail/rcpthosts; ln -s /etc/qmail/rcpthosts /etc/dtc/data/rcpthosts;
    rm /etc/qmail/virtualdomains; ln -s /etc/qmail/virtualdomains /etc/dtc/data/virtualdomains;
    rm /etc/qmail/users/assign; ln -s /etc/qmail/users/assign /etc/dtc/data/assign

If you use the Jedi's checklocalpasswd :

    rm /etc/poppasswd; ln -s /etc/poppasswd /etc/dtc/data/poppasswd;

- You have to add the following directives in /etc/proftpd.conf to enable sql control :

    # Beware that one is deprecated in newer version of proftpd:
    #	UseReverseDNS   off

    	IdentLookups    off
    # This is specific to mod_sql for proftpd
    	SQLAuthenticate on
    	SQLConnectInfo  YOURDATABASENAME@localhost YOURSQLUSER YOURSQLPASS
    	SQLUserInfo     ftp_access login password uid gid homedir shell
    	SQLAuthTypes    Plaintext

you can also add the following if you need quota support :

    	Quotas          on
    	DefaultQuota    50
    	QuotaType       hard
    	QuotaCalc       on
    	QuotaBlockName  Mbites
    	QuotaBlockSize  1024000
    	User            nobody
    	Group           nogroup
    	SQLHomedirOnDemand on

You can also add some directives to have FTP accouting done, like the install script does... - Next, you have to put all the dtc php file somewhere in your apache tree so you can browse, click, and enjoy dtc.

#### 2.7 Post-Installation (protection via .htaccess)

Par défaut le fichier .htaccess suivant protège le repertoire (par défaut dans /usr/share/dtc/admin) de l'interface administrateur :

    AuthName "A funny message prompted to user !"
    AuthType Basic
    AuthUserFile /var/www/.htpasswd
    require valid-user

Vous devez créer le fichier .htpasswd en spécifiant l'utilisateur pouvant accéder à ce répertoire :

    htpasswd -c /var/www/.htpasswd nom_utilisateur

(l'option -c permet de créer le fichier, si elle n'est pas spécifiée l'utilisateur sera ajouté au fichier).
A la suite de cette commande, il vous sera demandé d'entrer un mot de passe.
N'oubliez pas que la directive apache AllowOverride restreint l'utilisation des fichiers .htaccess, il y a donc de fortes chances que vous deviez configurer le fichier httpd.conf pour autoriser l'utilisation de la restriction d'accès, sans quoi ce répertoire ne sera pas protégé. (voir la documentation d'apache).
Pour que bind (named) fonctionne il faut que vous éditiez la partie 'forwarders' de votre named.conf. N'oubliez pas de configurer /etc/resolv.conf comme il suit :

    nameserver 127.0.0.1

Sans quoi votre serveur ne pourra pas résolver correctement.