Postfix Mysql : Différence entre versions
(→Fichiers de configurations) |
(→Comptes mails et utilisateurs) |
||
Ligne 58 : | Ligne 58 : | ||
{{ Box Console | objet=sudo service courier-authdaemon restart }} | {{ Box Console | objet=sudo service courier-authdaemon restart }} | ||
+ | |||
+ | === Configuration de Postfix === | ||
+ | |||
+ | ==== Général ==== | ||
+ | |||
+ | * Pour activer les utilisateurs virtuels et interroger les bases de données adéquates, il faut ajouter les lignes suivantes dans le fichier de configuration '''/etc/postfix/main.cf''' de '''Postfix''' : | ||
+ | |||
+ | virtual_mailbox_base = /var/mail/vmail | ||
+ | virtual_mailbox_maps = mysql:/etc/postfix/mysql/mysql-virtual-maps.cf | ||
+ | virtual_minimum_uid = 5000 | ||
+ | virtual_uid_maps = static:5000 | ||
+ | virtual_gid_maps = static:5000 | ||
+ | virtual_transport = virtual | ||
+ | |||
+ | ==== Fichiers de configurations ==== | ||
+ | |||
+ | * Le fichier de configuration '''/etc/postfix/mysql-virtual-maps.cf''' permet de vérifier les '''utilisateurs virtuels''' de '''Postfix''' : | ||
+ | |||
+ | user = postfix | ||
+ | password = motdepassebasemysqlpourpostfix | ||
+ | dbname = postfix | ||
+ | hosts = 127.0.0.1 | ||
+ | query = SELECT maildir FROM postfix_users where CONCAT(username,'@',domain)='%s' and postfix = 'y' | ||
+ | |||
+ | * Le fichier de configuration '''mysql-virtual-domains.cf ''' permet de vérifier les '''domaines locaux''' de '''Postfix''' : | ||
+ | |||
+ | user = postfix | ||
+ | password = motdepassebasemysqlpourpostfix | ||
+ | dbname = postfix | ||
+ | hosts = 127.0.0.1 | ||
+ | query = SELECT destination FROM postfix_virtual_domains WHERE domain = '%s' | ||
== Comptes mails et utilisateurs == | == Comptes mails et utilisateurs == | ||
Ligne 108 : | Ligne 139 : | ||
{{ Box Attention | objet=Les noms de domaine contenus dans cette table ne devront pas apparaître dans le paramètre <span style="color:grey">mydestination</span> du fichier de configuration <span style="color:grey">/etc/postfix/main.cf</span> de Postfix. }} | {{ Box Attention | objet=Les noms de domaine contenus dans cette table ne devront pas apparaître dans le paramètre <span style="color:grey">mydestination</span> du fichier de configuration <span style="color:grey">/etc/postfix/main.cf</span> de Postfix. }} | ||
− | ==== | + | ==== Création d'un utilisateur ==== |
− | + | * Nous allons ajouter l'utilisateur '''cacheln''' avec le mot de passe '''cacheln''' et pour adresse mail '''cacheln@mail.glx''' dans la table mysql '''postfix_users''' : | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | INSERT INTO `courriel`.`postfix_users` ( | |
+ | `id` , | ||
+ | `username` , | ||
+ | `domain` , | ||
+ | `clear` , | ||
+ | `crypt` , | ||
+ | `name` , | ||
+ | `uid` , | ||
+ | `gid` , | ||
+ | `homedir` , | ||
+ | `maildir` , | ||
+ | `quota` , | ||
+ | `access` , | ||
+ | `postfix` , | ||
+ | `disablepop3` , | ||
+ | `disableimap` , | ||
+ | `disablewebmail` , | ||
+ | `sharedgroup` , | ||
+ | `smtpaccess` | ||
+ | ) | ||
+ | VALUES ( | ||
+ | NULL , 'cacheln', 'mail.glx', 'cacheln', '', 'Nicolas CACHELOU', '5000', '5000', '/var/mail/vmail/', 'mail.glx/cacheln/', '10000000', 'Y', 'Y', '0', '0', '0', '0', 'Y' | ||
+ | ); | ||
− | * | + | * Nous allons créer le '''répertoire mail''' de l'utilisateur : |
− | + | {{ Box Console | objet=mkdir -p /var/mail/vmail/mail.glx/<br /> | |
− | + | maildirmake /var/mail/vmail/mail.glx/cacheln<br /> | |
− | + | chown vmail:vmail /var/mail/vmail -R<br /> | |
− | + | chmod 700 /var/mail/vmail -R }} | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
== Liens == | == Liens == |
Version du 2 février 2014 à 23:13
Sommaire
Installation
- Pour fonctionner avec une base de données MySQL, il faut installer les paquets postfix-mysql, libsasl2-modules-sql (module saslauthd) et courier-authlib-mysql (modules courier POP/IMAP) :
|
Création de la base de données
- Création de l'utilisateur mysql postfix avec le mot de passe motdepassebasemysqlpourpostfix et sa base de données nommé postfix avec les droits nécessaires.
|
Authentification
Module Saslauthd
- Postfix utilise le module saslauthd pour l'authentification des utilisateurs qui est basée sur pam. Voici le contenu du fichier de configration /etc/pam.d/smtp :
auth required pam_mysql.so user=postfix passwd=motdepassebasemysqlpourpostfix host=127.0.0.1 db=postfix table=postfix_users usercolumn=username passwdcolumn=cleard crypt=0 account sufficient pam_mysql.so user=postfix passwd=motdepassebasemysqlpourpostfix host=127.0.0.1 db=postfix table=postfix_users usercolumn=username passwdcolumn=clear crypt=0
- Redémarrer le service saslauthd :
|
Module authdaemonrc pour POP / IMAP
- Pour activer l'authentification mysql, dans le fichier /etc/courier/authdaemonrc remplacer :
authmodulelist="authpam"
- Par :
authmodulelist="authmysql"
- Créer le fichier de connexion à la base de données mysql /etc/courier/authmysqlrc :
MYSQL_SERVER 127.0.0.1 MYSQL_USERNAME postfix MYSQL_PASSWORD motdepassebasemysqlpourpostfix MYSQL_PORT 0 MYSQL_OPT 0 MYSQL_DATABASE postfix MYSQL_USER_TABLE postfix_users MYSQL_CRYPT_PWFIELD crypt MYSQL_CLEAR_PWFIELD clear MYSQL_UID_FIELD 5000 MYSQL_GID_FIELD 5000 MYSQL_LOGIN_FIELD CONCAT(username,'@',domain) MYSQL_HOME_FIELD "/home/vmail" MYSQL_NAME_FIELD name MYSQL_MAILDIR_FIELD maildir
- On redémarre le service courier-authdaemon :
|
Configuration de Postfix
Général
- Pour activer les utilisateurs virtuels et interroger les bases de données adéquates, il faut ajouter les lignes suivantes dans le fichier de configuration /etc/postfix/main.cf de Postfix :
virtual_mailbox_base = /var/mail/vmail virtual_mailbox_maps = mysql:/etc/postfix/mysql/mysql-virtual-maps.cf virtual_minimum_uid = 5000 virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_transport = virtual
Fichiers de configurations
- Le fichier de configuration /etc/postfix/mysql-virtual-maps.cf permet de vérifier les utilisateurs virtuels de Postfix :
user = postfix password = motdepassebasemysqlpourpostfix dbname = postfix hosts = 127.0.0.1 query = SELECT maildir FROM postfix_users where CONCAT(username,'@',domain)='%s' and postfix = 'y'
- Le fichier de configuration mysql-virtual-domains.cf permet de vérifier les domaines locaux de Postfix :
user = postfix password = motdepassebasemysqlpourpostfix dbname = postfix hosts = 127.0.0.1 query = SELECT destination FROM postfix_virtual_domains WHERE domain = '%s'
Comptes mails et utilisateurs
- Les messages des utilisateurs virtuels seront stockés dans le dossier /var/mail/vmail qui sera crée spécialement à cet effet. On créera aussi l'utilisateur et le groupe vmail qui pourront accéder à ce dossier et ses sous-dossiers.
|
Création de la Table
- Maintenant, il faut créer la table contenant les utilisateurs virtuels de Postfix. Cette table contiendra les comptes mails ainsi que leur mot de passe.
CREATE TABLE postfix_users ( id int(11) unsigned NOT NULL auto_increment, username varchar(64) NOT NULL default , domain varchar(64) NOT NULL default , clear varchar(128) NOT NULL default , crypt varchar(128) NOT NULL default , name tinytext NOT NULL, uid int(11) unsigned NOT NULL default '5000', gid int(11) unsigned NOT NULL default '5000', homedir tinytext NOT NULL, maildir tinytext NOT NULL, quota tinytext NOT NULL, access enum('Y','N') NOT NULL default 'Y', postfix enum('Y','N') NOT NULL default 'Y', disablepop3 char(1) NOT NULL default '0', disableimap char(1) NOT NULL default '0', disablewebmail char(1) NOT NULL default '0', sharedgroup varchar(128) NOT NULL default '0', smtpaccess enum('Y','N') NOT NULL default 'Y', PRIMARY KEY (id), UNIQUE KEY email (email) )
- On créée également la table contenant les noms de domaine locaux (gérés par Postfix).
CREATE TABLE postfix_virtual_domains ( id int(11) unsigned NOT NULL auto_increment, domain varchar(128) NOT NULL default , destination varchar(128) NOT NULL default , PRIMARY KEY (id), UNIQUE KEY domain (domain) )
Les noms de domaine contenus dans cette table ne devront pas apparaître dans le paramètre mydestination du fichier de configuration /etc/postfix/main.cf de Postfix. |
Création d'un utilisateur
- Nous allons ajouter l'utilisateur cacheln avec le mot de passe cacheln et pour adresse mail cacheln@mail.glx dans la table mysql postfix_users :
INSERT INTO `courriel`.`postfix_users` ( `id` , `username` , `domain` , `clear` , `crypt` , `name` , `uid` , `gid` , `homedir` , `maildir` , `quota` , `access` , `postfix` , `disablepop3` , `disableimap` , `disablewebmail` , `sharedgroup` , `smtpaccess` ) VALUES ( NULL , 'cacheln', 'mail.glx', 'cacheln', , 'Nicolas CACHELOU', '5000', '5000', '/var/mail/vmail/', 'mail.glx/cacheln/', '10000000', 'Y', 'Y', '0', '0', '0', '0', 'Y' );
- Nous allons créer le répertoire mail de l'utilisateur :
|