Accueil > Installer un serveur > Installation du serveur debian > Installation de postfix et courier

Installation de postfix et courier

Installation de postfix (choisir "Aucune configuration")

apt-get install postfix postfix-mysql

Configuration de Postfix

Postfix permet de gérer des utilisateurs virtuels et pour cela on créé le groupe vmail


groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /var/spool/vmail/ -m

On configure mysql pour pouvoir l'utiliser avec postfix : on doit décommenter cette ligne :

Debian 8

nano /etc/mysql/my.cnf

bind-address = 127.0.0.1

Debian 9

nano /etc/mysql/mariadb.conf.d/50-server.cnf

bind-address = 127.0.0.1

On se connecte à mysql afin de le configurer, et il faudra entrer votre mot de passe paramétré lors de l'installation de mysql


mysql -p

On va créer une table mysql nommée postfix et la sélectionner pour la remplir.


create database postfix character set utf8;
use postfix;

 CREATE TABLE `domain` (
  `domain` varchar(255) NOT NULL default '',
  `actif` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`domain`)
) ENGINE=MyISAM COMMENT='Postfix Admin - Domaines Virtuels';

CREATE TABLE `mailbox` (
  `email` varchar(255) NOT NULL default '',
  `password` varchar(255) NOT NULL default '',
  `quota` int(10) NOT NULL default '0',
  `name` varchar(255) NOT NULL default '',
  `actif` tinyint(1) NOT NULL default '1',
  `imap` tinyint(1) NOT NULL default '1',
  `pop3` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`email`)
) ENGINE=MyISAM COMMENT='Postfix Admin - Boites Emails Virtuelles';

 CREATE TABLE `alias` (
  `source` varchar(255) NOT NULL default '',
  `destination` text NOT NULL,
  `actif` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`source`)
) ENGINE=MyISAM COMMENT='Postfix Admin - Alias Virtuels';

On rajoute l'utilisateur mysql pour postfix, pensez à remplacer MONMOTDEPASSE par le mot de passe désiré.


GRANT SELECT ON `postfix`.* TO 'postfix'@'%' IDENTIFIED BY 'MONMOTDEPASSE';

On applique les paramètres:

FLUSH PRIVILEGES;

Et on termine notre session mysql.

exit;

Les fichiers de configuration de postfix

Comme nous avons choisis 'sans configuration' on va créer les fichiers de configuration:

Replacez nom_de_votre_serveur et ip_de_votre_serveur par les paramètres de votre serveur dédié.

Et remplacez MONMOTDEPASSE par celui que vous avez choisis pour l'utilisateur mysql de postfix

nano /etc/postfix/main.cf
biff = no
disable_vrfy_command = yes
smtpd_helo_required = yes

append_dot_mydomain = no

mydestination = nom_de_votre_serveur, localhost, localhost.localdomain

mydomain = nom_de_votre_serveur

myhostname = nom_de_votre_serveur

relayhost =

mynetworks = 127.0.0.0/8 ip_de_votre_serveur
inet_interfaces = all

smtpd_sender_restrictions =
 permit_mynetworks,
 reject_unknown_sender_domain,
 warn_if_reject,
 reject_unverified_sender

smtpd_recipient_restrictions =
 permit_mynetworks,
 reject_unauth_destination,
 reject_unknown_recipient_domain,
 reject_non_fqdn_recipient

smtpd_client_restrictions =
 reject_unknown_client,
 permit_mynetworks

virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_aliases.cf, mysql:/etc/postfix/mysql-virtual_aliases_mailbox.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /var/spool/vmail/
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

Attention aux espaces qui sont important pour la syntaxe de ce fichier de configuration notamment après "smtpd_sender_restrictions =" par exemple

nano /etc/postfix/mysql-virtual_mailbox_limit_maps.cf

hosts = 127.0.0.1
user = postfix
password = MONMOTDEPASSE
dbname = postfix
select_field = quota
table = mailbox
where_field = email
nano /etc/postfix/mysql-virtual_aliases_mailbox.cf

hosts = 127.0.0.1
user = postfix
password = MONMOTDEPASSE
dbname = postfix
select_field = email
table = mailbox
where_field = email
additional_conditions = AND actif='1'
nano /etc/postfix/mysql-virtual_aliases.cf

hosts = 127.0.0.1
user = postfix
password = MONMOTDEPASSE
dbname = postfix
select_field = destination
table = alias
where_field = source
additional_conditions = AND actif='1'
nano /etc/postfix/mysql-virtual_mailboxes.cf

hosts = 127.0.0.1
user = postfix
password = MONMOTDEPASSE
dbname = postfix
select_field = CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
table = mailbox
where_field = email
additional_conditions = AND actif='1'
nano /etc/postfix/mysql-virtual_domains.cf

hosts = 127.0.0.1
user = postfix
password = MONMOTDEPASSE
dbname = postfix
select_field = 'virtual'
table = domain
where_field = domain
additional_conditions = AND actif='1'

On modifie les droits de ces fichiers de configuration:


chgrp postfix /etc/postfix/mysql-virtual_*.cf
chmod u=rw,g=r,o= /etc/postfix/mysql-virtual_*.cf

Un redémarrage de Postfix, et un test de la configuration, si aucun message apparaît alors c'est ok:


/etc/init.d/postfix restart
postfix check

Installation de courier


apt-get install courier-base courier-authdaemon courier-authlib-mysql courier-imap courier-pop

Et répondre oui à la question suivante (faut il créer les répertoires):

postfix-courier

On précise à postfix que l'on va utiliser mysql on modifie la ligne par authmodulelist=.

nano /etc/courier/authdaemonrc

authmodulelist="authmysql"

On remplace les valeurs du fichier /etc/courier/authmysqlrc par ce qui suit:

nano /etc/courier/authmysqlrc

MYSQL_SERVER            localhost
MYSQL_USERNAME          postfix
MYSQL_PASSWORD          MONMOTDEPASSE
MYSQL_PORT              0
MYSQL_OPT               0
MYSQL_DATABASE          postfix
MYSQL_USER_TABLE        mailbox
MYSQL_CRYPT_PWFIELD     password
MYSQL_UID_FIELD         5000
MYSQL_GID_FIELD         5000
MYSQL_LOGIN_FIELD       email
MYSQL_HOME_FIELD        "/var/spool/vmail/"
MYSQL_MAILDIR_FIELD     CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
MYSQL_QUOTA_FIELD       quota

On pense à redémarrer les différents démons que l'on a paramétrés :


/etc/init.d/courier-authdaemon restart
/etc/init.d/courier-imap restart
/etc/init.d/courier-pop restart

L'accès POP ou IMAP échouera si la boîte mail n'existe pas ! En conséquence, je vous conseille d'envoyer un email de bienvenue lors de la création de vos comptes. Cela vous permettra de créer le répertoire !

On va maintenant tester tout ca et pour cela on installe :

apt-get install mailutils

On test que notre domaine est bien configuré dans bind pour accepter notre serveur mail :

host -t MX nom_domaine

Et la réponse doit être (sinon il faut configurer un MX dans bind) :

nom_domaine.com mail is handled by 10 mail.nom_domaine.com.

On va créer un compte email dans notre base de donnée, choisissez vos paramètres

Console (vous demandera votre mot de passe mysql)
mysql -u root -p
Console mysql
use postfix;
INSERT INTO domain (domain, actif) VALUES ('nom_domaine.com', '1');
INSERT INTO mailbox (email,password,quota,name,actif,imap,pop3) VALUES ('user@nom_domaine.com',ENCRYPT('MONMOTDEPASSEDUCOMPTEMAIL'),0,'',1,1,1);
exit;

Et maintenant, on va envoyer un mail pour créer le repertoire qui va bien dans /var/spool/vmail/:

mail -s "This is the subject" user@nom_domaine.com

vous pouvez ajouter une copie carbonne (cc)

écrivez un mail de test et pour quitter il faut taper sur CTRL+D

en principe vous devez maintenant avoir un répertoire dans /var/spool/vmail/, si ce n'est pas le cas, ça craind...


Après ce test d'envois de mail, le répertoire /var/spool/vmail/exemple.com à été créé et qui contiendra les emails

on attribue donc les droits à ce répertoire.

chmod -R 777 /var/spool/vmail/exemple.com


pour vérifier tout ca avec votre logiciel mail, comme Mozilla Thunderbird sous windows par exemple :

Mozilla Thunderbird

Pour tracer les éventuels bugs dans le fichier /var/log/mail.log vous pouvez mettre à 2 le niveau de debug

nano /etc/courier/authdaemonrc
DEBUG_LOGIN=2
Vos commentaires
aezaerth a écrit le 03-10-2016 :

Bonjour, avez-vous une raison particulière pour avoir choisi "Aucune configuration" pendant l'installation de postfix ? En tout cas super tuto merci !


1 réponse(s) :
https://www.installerunserveur.com a répondu le 25-11-2017 :

Bonjour

Choisir "aucune configuration" permet de choisir exactement la configuration que l'on souhaite, il faudrait essayer autrement pour voir la différence, mais j'ai toujours fais ainsi...


Répondre à ce(s) commentaires(s)

Laisser un commentaire

Votre commentaire sera en attente de modération, validation NON automatique

Votre nom (obligatoire) :


Email ou site internet (facultatif) (nécessaire si vous souhaitez être prévenu d'une réponse):


Image/photo (facultatif) (JPG, JPEG, PNG ou GIF) (image de partition concernant le question par exemple):

Javascript doit être activé