Postfix Mysql : Différence entre versions

De Wiki NCad
Aller à : navigation, rechercher
(Fichiers de configurations)
Ligne 1 : Ligne 1 :
=== Installation ===
+
== Installation ==
  
 
* Pour fonctionner avec une base de données MySQL, il faut installer le paquet postfix-mysql :
 
* Pour fonctionner avec une base de données MySQL, il faut installer le paquet postfix-mysql :
Ligne 9 : Ligne 9 :
 
{{ Box Console | objet=postconf -m }}
 
{{ Box Console | objet=postconf -m }}
  
=== Création de la base de données ===
+
== 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.
 
* 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.
Ligne 18 : Ligne 18 :
 
GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'%'; }}
 
GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'%'; }}
  
=== Comptes mails et utilisateurs ===
+
== 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=email passwdcolumn=cleard crypt=0
 +
account    sufficient  pam_mysql.so user=postfix passwd=motdepassebasemysqlpourpostfix host=127.0.0.1 db=postfix table=postfix_users usercolumn=email passwdcolumn=clear crypt=0
 +
 
 +
 
 +
=== Module authdaemonrc pour POP / IMAP ===
 +
 
 +
* 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      email
 +
MYSQL_HOME_FIELD        "/home/vmail"
 +
MYSQL_NAME_FIELD        name
 +
MYSQL_MAILDIR_FIELD    maildir
 +
 
 +
== Comptes mails et utilisateurs ==
  
 
  groupadd vmail -g 5000
 
  groupadd vmail -g 5000

Version du 2 février 2014 à 20:41

Installation

  • Pour fonctionner avec une base de données MySQL, il faut installer le paquet postfix-mysql :
ICON Terminal.png

sudo apt-get install postfix-mysql

  • Si le module est bien installé, la commande suivante devra retourner mysql parmi la liste des bases supportées :
ICON Terminal.png

postconf -m

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.
ICON Terminal.png

CREATE USER 'postfix'@'%' IDENTIFIED BY 'motdepassebasemysqlpourpostfix';
GRANT USAGE ON * . * TO 'postfix'@'%' IDENTIFIED BY 'motdepassebasemysqlpourpostfix' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE DATABASE IF NOT EXISTS `postfix` ;
GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'%';

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=email passwdcolumn=cleard crypt=0 account sufficient pam_mysql.so user=postfix passwd=motdepassebasemysqlpourpostfix host=127.0.0.1 db=postfix table=postfix_users usercolumn=email passwdcolumn=clear crypt=0


Module authdaemonrc pour POP / IMAP

  • 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       email
MYSQL_HOME_FIELD        "/home/vmail"
MYSQL_NAME_FIELD        name
MYSQL_MAILDIR_FIELD     maildir

Comptes mails et utilisateurs

groupadd vmail -g 5000
useradd vmail -u 5000 -g 5000
mkdir /var/mail/vmail
chown vmail:vmail /var/mail/vmail
chmod 700 /var/mail/vmail 

Création de la Table

CREATE TABLE postfix_users (
 id int(11) unsigned NOT NULL auto_increment,
 email varchar(128) 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)
)

Configuration 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

  • Ce fichiers de configuration sera appelé par Postfix pour interroger la table postix_users. Il retournera le répertoire où sont stockés les mails de l'utilisateur. Voici le contenu du fichier /etc/postfix/mysql-virtual-maps.cf :
user = postfix
password = motdepassebasemysqlpourpostfix
dbname = postfix
hosts = 127.0.0.1
query = SELECT maildir FROM postfix_users where email='%s' and postfix = 'y'

Liens