Postfix Admin

Postfix Admin est une interface en PHP qui permet principalement de gérer une base de données qui contiendra toutes les informations nécessaires à la maintenance de comptes virtuels. Postfix Admin n'impose pas de serveur POP/IMAP spécifique. Dovecot ou Courier-imap Pourront être utilisés, nous continuerons avec Dovecot.

Postfix Admin semble activement maintenu. La version utilisée ici est la 2.2.0 d'avril 2008. Bien que ne faisant à ce jour (17 juiller 2008) pas partie des distributions Debian, il existe sur le site officiel du projet un paquet Debian que nous allons utiliser. Les dépendances sont minimes : Dépend: apache2, libapache2-mod-php5 ou php5-cgi ou php5, Mysql-server. Autant de composants dont nous aurons besoin par ailleurs.

Installation

Suivant les règles Debian, le logiciel s'installe dans /usr/share/postfixadmin, installe dans /etc/apache2/conf.d un fichier nommé postfixadmin réduit à sa plus simple expression :

# BEGIN FOR POSTFIXADMIN
Alias /postfixadmin /usr/share/postfixadmin
# END FOR POSTFIXADMIN

Et dans /etc/postfixadmin le fichier config.inc.php qu'il conviendra de modifier manuellement, mais avant tout, il faut lire /usr/share/doc/postfixadmin/INSTALL.TXT

Création de la base

Nous allons commencer par créer la base de données et l'utilisateur qui va avec :

CREATE DATABASE vmail;
CREATE USER 'vmail'@'localhost' IDENTIFIED BY 'epikoi';
GRANT ALL PRIVILEGES ON `vmail` . * TO 'vmail'@'localhost';

Configuration

Le fichier /etc/postfixadmin/config.inc.php est assez long, bien documenté et il faut le lire jusqu'au bout…

Voici pour fixer les idées, une version débarrassée de ses commentaires. Ce qui est surligné est particulièrement important, mais encore une fois, prenez le temps de lire (et éventuellement modifier) ce fichier jusqu'au bout.

<?php
if (ereg ("config.inc.php", $_SERVER['PHP_SELF']))
{
   header ("Location: login.php");
   exit;
}

$CONF['configured'] = true;
$CONF['postfix_admin_url'] = 'http://cyrus.nain-t.net/postfixadmin';
$CONF['postfix_admin_path'] = '/usr/share/postfixadmin';
$CONF['default_language'] = 'fr';
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'vmail';
$CONF['database_password'] = 'epikoi';
$CONF['database_name'] = 'vmail';
$CONF['database_prefix'] = '';
$CONF['database_tables'] = array (
    'admin' => 'admin',
    'alias' => 'alias',
    'config' => 'config',
    'domain' => 'domain',
    'domain_admins' => 'domain_admins',
    'log' => 'log',
    'mailbox' => 'mailbox',
    'vacation' => 'vacation',
    'vacation_notification' => 'vacation_notification',
);

$CONF['admin_email'] = 'sysop@nain-t.net';
$CONF['smtp_server'] = 'localhost';
$CONF['smtp_port'] = '25';
$CONF['encrypt'] = 'md5crypt';
$CONF['min_password_length'] = 5;
$CONF['generate_password'] = 'NO';
$CONF['show_password'] = 'yes';
$CONF['page_size'] = '10';
$CONF['default_aliases'] = array (
    'abuse' => 'sysop@nain-t.net',
    'hostmaster' => 'sysop@nain-t.net',
    'postmaster' => 'sysop@nain-t.net',
    'webmaster' => 'sysop@nain-t.net'
);

$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['aliases'] = '0';
$CONF['mailboxes'] = '0';
$CONF['maxquota'] = '2000';
$CONF['quota'] = 'NO';
$CONF['quota_multiplier'] = '1024000';
$CONF['transport'] = 'NO';
$CONF['transport_options'] = array (
    'virtual',  // for virtual accounts
    'local',    // for system accounts
    'relay'     // for backup mx
);

$CONF['transport_default'] = 'virtual';
$CONF['vacation'] = 'NO';
$CONF['vacation_domain'] = 'autoreply.nain-t.net';
$CONF['vacation_control'] ='YES';
$CONF['vacation_control_admin'] = 'YES';
$CONF['alias_control'] = 'NO';
$CONF['alias_control_admin'] = 'NO';
$CONF['special_alias_control'] = 'NO';
$CONF['alias_goto_limit'] = '0';
$CONF['backup'] = 'YES';
$CONF['sendmail'] = 'YES';
$CONF['logging'] = 'YES';
$CONF['fetchmail'] = 'YES';
$CONF['fetchmail_extra_options'] = 'NO';
$CONF['show_header_text'] = 'NO';
$CONF['header_text'] = ':: Postfix Admin ::';
$CONF['user_footer_link'] = "http://cyrus.nain-t.net/postfixadmin";
$CONF['show_footer_text'] = 'YES';
$CONF['footer_text'] = 'Return to nain-t.net';
$CONF['footer_link'] = 'http://nain-t.net';
$CONF['welcome_text'] = <<

Notez les alias qui pointent tous vers sysop@nain-t.net qui est un compte qu'il nous faudra créer et qui sera celui du super-administrateur du site.

Mise à feu

Il faut maintenant, après avoir demandé à l'Apache de relire sa configuration, ce que le script « postinstall » du paquet postfixadmin n'a pas fait, d'aller sur l'URL de votre installation. Ici :

http://cyrus.nain-t.net/postfixadmin/setup.php

De corriger les éventuels erreurs constatées, de créer le compte du « super administrateur » et enfin de renommer ou détruire le fichier /usr/share/postfixadmin/setup.php.

Postfixadmin devrait être en état de fonctionner, hormis l'envoi de messages puisque nous n'avons pas encore configuré Postfix en fonction.

Accueil Postfix Admin

Base de données

La base de données a été construite lors du « setup ». Elle contient les tables admin, alias, config, domain, domain_admins, fetchmail, log, mailbox, vacation et vacation_notification.

Créons le domaine nain-t.net et le compte sysop@nain-t.net et regardons un peu :

mysql> select * from alias;
+-----------------------+------------------+------------+---------------------+---------------------+--------+
| address               | goto             | domain     | created             | modified            | active |
+-----------------------+------------------+------------+---------------------+---------------------+--------+
| abuse@nain-t.net      | sysop@nain-t.net | nain-t.net | 2008-07-15 16:15:31 | 2008-07-15 16:15:31 |      1 |
| hostmaster@nain-t.net | sysop@nain-t.net | nain-t.net | 2008-07-15 16:15:31 | 2008-07-15 16:15:31 |      1 |
| postmaster@nain-t.net | sysop@nain-t.net | nain-t.net | 2008-07-15 16:15:31 | 2008-07-15 16:15:31 |      1 |
| webmaster@nain-t.net  | sysop@nain-t.net | nain-t.net | 2008-07-15 16:15:31 | 2008-07-15 16:15:31 |      1 |
| sysop@nain-t.net      | sysop@nain-t.net | nain-t.net | 2008-07-15 16:16:01 | 2008-07-15 16:16:01 |      1 |
+-----------------------+------------------+------------+---------------------+---------------------+--------+

Dans la table alias nous retrouvons les alias définis dans la configuration, et sysop@nain-t.net qui pointe sur lui-même.

mysql> select * from mailbox;
+------------------+------------------------------------+------------------+-------------------+-------+------------+---------------------+---------------------+--------+
| username         | password                           | name             | maildir           | quota | domain     | created             | modified            | active |
+------------------+------------------------------------+------------------+-------------------+-------+------------+---------------------+---------------------+--------+
| sysop@nain-t.net | $1$b05611fa$K.98vXKRWNG5Xr97dlkcp1 | sysop            | nain-t.net/sysop/ |     0 | nain-t.net | 2008-07-15 16:16:01 | 2008-07-15 16:16:01 |      1 |
+------------------+------------------------------------+------------------+-------------------+-------+------------+---------------------+---------------------+--------+

Dans la table mailbox nous trouvons pas mal de choses :

  • username contient l'adresse du compte ;
  • name contient la partie gauche de l'adresse ;
  • domain contient le nom du domaine virtuel (partie droite de l'adresse) ;
  • password contient le mot de passe chiffré en MD5-CRYPT ;
  • maildir contient le chemin relatif du répertoire Maildir de l'utilisateur.
mysql> select * from domain;
+------------+----------------+---------+-----------+----------+-------+-----------+----------+---------------------+---------------------+--------+
| domain     | description    | aliases | mailboxes | maxquota | quota | transport | backupmx | created             | modified            | active |
+------------+----------------+---------+-----------+----------+-------+-----------+----------+---------------------+---------------------+--------+
| ALL        |                |       0 |         0 |        0 |     0 | NULL      |        0 | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |      1 |
| nain-t.net | Domaine public |       0 |         0 |        0 |     0 | virtual   |        0 | 2008-07-15 16:15:31 | 2008-07-15 16:15:31 |      1 |
+------------+----------------+---------+-----------+----------+-------+-----------+----------+---------------------+---------------------+--------+
La table ''domain'' contient essentiellement la liste des domaines virtuels créés.
Dernière modification:: le 26/03/2009 à 15:57
   
 
Cette création est mise à disposition sous un contrat Creative Commons. Creative Commons License