Aller au contenu
Couillaman le site une demo bientot ! ×

Serveur mail 01 - Starting Block


dokuro
 Share

Messages recommandés

Il existe de nombreuses solutions pour la gestion des emails sur un serveur dédié. Après avoir utilisé qmail pendant un moment sur la Release 2 de OVH, je me suis tourné vers une autre solution:

- Postfix/Mysql avec identification SASL pour le serveur SMTP

- Dovecot comme serveur POP & IMAP

- Amavis comme surcouche de Spamassassin et Clamav

La configuration de tout ce petit monde est plutôt complexe et va nécessiter de modifier de nombreux fichiers afin d'obtenir un bon fonctionnement. J'ai beaucoup tatonné avant de trouver une solution me convenant et je livre ici un résultat final, partant sur le principe que nous allons utiliser l'ensemble de ces paquets. On va passer en root pour ces opérations.

La commande magique pour l'installation...

$ su

# apt-get install postfix postfix-mysql libsasl2-2 sasl2-bin libsasl2-modules dovecot-common dovecot-imapd dovecot-pop3d libpam-mysql clamav-daemon clamav-freshclam spamassassin amavisd-new arj nomarch lzop cabextract razor pyzor p7zip-full pax zip unzip unrar-free

Choisissez "site internet" comme configuration de base pour Postfix et donnez le nom de votre machine comme serveur, soit ns01.mondomaine.net dans cet exemple... Une fois l'installation achevée, on va stopper tous les services, puisque rien n'est correctement configuré pour le moment 

# /etc/init.d/postfix stop

# /etc/init.d/dovecot stop

# /etc/init.d/saslauthd stop

# /etc/init.d/amavis stop

# /etc/init.d/clamav-freshclam stop

# /etc/init.d/clamav-daemon stop

# /etc/init.d/spamassassin stop

 

 

Configuration MySQL pour Postfix

Créons la table Mysql de base qui sera utilisée par Postfix et Posfix-Admin par la suite.

C'est ici que seront stockées nos adresses email entre autres...

# mysql -u root -p

mysql> create database postfix;

mysql> grant create,alter,select,insert,update,delete on postfix.* TO 'postfix'@'localhost' identified by 'mot_de_passe_postfix';

mysql> flush privileges;

mysql> quit

Ensuite, préparons les fichiers utiles pour faire la connexion à cette base

# mkdir /etc/postfix/mysql

 

Nous avons besoin de créer 4 fichiers:

# nano /etc/postfix/mysql/mysql_virtual_alias.cf

user = postfix

password = mot_de_passe_postfix

hosts = 127.0.0.1

dbname = postfix

table = alias

select_field = goto

where_field = address

 

# nano /etc/postfix/mysql/mysql_virtual_domains.cf

user = postfix

password = mot_de_passe_postfix

hosts = 127.0.0.1

dbname = postfix

table = alias

table = domain

select_field = domain

where_field = domain

#additional_conditions = and backupmx = '0' and active = '1'

# nano /etc/postfix/mysql/mysql_virtual_mailbox.cf

user = postfix

password = mot_de_passe_postfix

hosts = 127.0.0.1

dbname = postfix

table = mailbox

select_field = maildir

where_field = username

additional_conditions = and active = '1'

# nano /etc/postfix/mysql/mysql_virtual_mailbox_limit.cf

user = postfix

password = mot_de_passe_postfix

hosts = 127.0.0.1

dbname = postfix

table = mailbox

select_field = quota

where_field = username

Afin que Postfix puisse lire ces fichiers, on change les droits.

# chmod 640 /etc/postfix/mysql/mysql_*

# chgrp postfix /etc/postfix/mysql/mysql_*

On se connecte via phpMyAdmin sur la base de données postfix et on crée les tables minimales utiles au fonctionnement de Postfix, avec la commande SQL suivante:

CREATE TABLE IF NOT EXISTS `alias` (

  `address` varchar(255) NOT NULL,

  `goto` text NOT NULL,

  `domain` varchar(255) NOT NULL,

  `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

  `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

  `active` tinyint(1) NOT NULL DEFAULT '1',

  PRIMARY KEY (`address`),

  KEY `domain` (`domain`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `domain` (

  `domain` varchar(255) NOT NULL,

  `description` varchar(255) CHARACTER SET utf8 NOT NULL,

  `aliases` int(10) NOT NULL DEFAULT '0',

  `mailboxes` int(10) NOT NULL DEFAULT '0',

  `maxquota` bigint(20) NOT NULL DEFAULT '0',

  `quota` bigint(20) NOT NULL DEFAULT '0',

  `transport` varchar(255) NOT NULL,

  `backupmx` tinyint(1) NOT NULL DEFAULT '0',

  `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

  `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

  `active` tinyint(1) NOT NULL DEFAULT '1',

  PRIMARY KEY (`domain`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `mailbox` (

  `username` varchar(255) NOT NULL,

  `password` varchar(255) NOT NULL,

  `name` varchar(255) CHARACTER SET utf8 NOT NULL,

  `maildir` varchar(255) NOT NULL,

  `quota` bigint(20) NOT NULL DEFAULT '0',

  `local_part` varchar(255) NOT NULL,

  `domain` varchar(255) NOT NULL,

  `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

  `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

  `active` tinyint(1) NOT NULL DEFAULT '1',

  PRIMARY KEY (`username`),

  KEY `domain` (`domain`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

 

 Authentification SASL pour Postfix

Pour commencer on va créer un lien symbolique pour le daemon d'authentification et ajouter l'utilisateur postfix au groupe sasl 

# mkdir -p /var/spool/postfix/var/run/saslauthd

# ln -s /var/spool/postfix/var/run/saslauthd /var/run

# chgrp sasl /var/spool/postfix/var/run/saslauthd

# adduser postfix sasl

Configuration par défaut du daemon

# nano /etc/default/saslauthd

START=yes

DESC="SASL Authentication Daemon"

NAME="saslauthd"

MECHANISMS="pam"

MECH_OPTIONS=""

THREADS=5

OPTIONS="-c -r -m /var/spool/postfix/var/run/saslauthd"

Le mécanisme utlisé est "PAM", il faut le configurer pour qu'il puisse correctement accéder aux mots de passe stockés dans la base de données postfix. Il y a seulement deux lignes, deux longues lignes ( auth et account ) à ajouter à la fin du fichier

# nano /etc/pam.d/smtp

auth       required     pam_mysql.so user=postfix passwd=mot_de_passe_postfixhost=127.0.0.1 db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1 md5=1

account    sufficient   pam_mysql.so user=postfix passwd=mot_de_passe_postfixhost=127.0.0.1 db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1 md5=1

Configuration de l'authentification via SMTP dans Postfix

 # nano /etc/postfix/sasl/smtp.conf

pwcheck_method: saslauthd auxprop

auxprop_plugin: sql

mech_list: plain login

password_format: crypt

log_level: 5

allow_plaintext: true

sql_engine: mysql

sql_hostnames: 127.0.0.1

sql_user: postfix

sql_database: postfix

sql_passwd: mot_de_passe_postfix

sql_verbose: yes

sql_select: SELECT password FROM mailbox WHERE username = '%u' LIMIT 1

Indiquer à Postfix qu'il doit utiliser ce fichier lors du démarrage 

# nano /etc/init.d/postfix

 Rechercher la ligne qui commence par FILES=" ( aux alentours de la ligne 150 ) et ajouter le fichier précédemment créé comme ceci:

FILES="etc/localtime etc/services etc/resolv.conf etc/hosts 

            etc/nsswitch.conf etc/nss_mdns.config etc/postfix/sasl/smtpd.conf"

 

 

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

 Share

×
×
  • Créer...