Table des matières
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.
La version utilisée ici est la 2.3.7 présente dans la distributions Debian Jessie.
Installation
Suivant les règles Debian, le logiciel s'installe dans /usr/share/postfixadmin, installe dans /etc/apache2/conf-avalable 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 les fichiers config.inc.php et dbconfig.inc.php. Il y a également de la documentation à lire dans /usr/share/doc/postfixadmin/…
Création de la base
Il y a un script php qui permet de faire ça simplement en allant sur
http://notre.serveur/postfixadmin/setup.php
Les informations concertant la connexion à cette base se trouveront dans /etc/postfixadmin/dbconfig.inc.php.
Configuration
Le fichier /etc/postfixadmin/config.inc.php est assez long, bien documenté et il faut le lire jusqu'au bout…
Il y a quelques lignes remarquables dans ce fichier, mais celles-ci principalement:
...
// If you want to keep most settings at default values and/or want to ensure
// that future updates work without problems, you can use a separate config
// file (config.local.php) instead of editing this file and override some
// settings there.
if (file_exists(dirname(__FILE__) . '/config.local.php')) {
include(dirname(__FILE__) . '/config.local.php');
}
Autrement dit, s'il existe un fichier config.local.php, il sera inclus à la suite. Ceci pour dire qu'il vaut beaucoup mieux créer ce fichier pour surcharger certains paramètres plutôt que de les modifier directement dans le config.inc.php!
Et il y aura effectivement pas mal de lignes à surcharger. Certaines de celles-ci au moins:
// Set the location of your Postfix Admin installation here.
// YOU MUST ENTER THE COMPLETE URL e.g. http://domain.tld/postfixadmin
$CONF['postfix_admin_url'] = '/postfixadmin';
$CONF['default_language'] = 'en';
$CONF['encrypt'] = 'md5crypt';
// Minimum length required for passwords. Postfixadmin will not
// allow users to set passwords which are shorter than this value.
$CONF['min_password_length'] = 5;
// Default Aliases
// The default aliases that need to be created for all domains.
$CONF['default_aliases'] = array (
'abuse' => 'abuse@change-this-to-your.domain.tld',
'hostmaster' => 'hostmaster@change-this-to-your.domain.tld',
'postmaster' => 'postmaster@change-this-to-your.domain.tld',
'webmaster' => 'webmaster@change-this-to-your.domain.tld'
);
// Mailboxes
// If you want to store the mailboxes per domain set this to 'YES'.
// Examples:
// YES: /usr/local/virtual/domain.tld/username@domain.tld
// NO: /usr/local/virtual/username@domain.tld
$CONF['domain_path'] = 'NO';
// If you don't want to have the domain in your mailbox set this to 'NO'.
// Examples:
// YES: /usr/local/virtual/domain.tld/username@domain.tld
// NO: /usr/local/virtual/domain.tld/username
// Note: If $CONF['domain_path'] is set to NO, this setting will be forced to YES.
$CONF['domain_in_mailbox'] = 'YES';
// Transport options
// If you want to define additional transport options put them in array below.
$CONF['transport_options'] = array (
'virtual', // for virtual accounts
'local', // for system accounts
'relay' // for backup mx
);
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.
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 :
usernamecontient l'adresse du compte ;namecontient la partie gauche de l'adresse ;domaincontient le nom du domaine virtuel (partie droite de l'adresse) ;passwordcontient le mot de passe chiffré enMD5-CRYPT;maildircontient le chemin relatif du répertoireMaildirde 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.
