Ceci est une ancienne révision du document !
Installation d'une solution mail complète : Postfix, Dovecot, MySQL, Postfixadmin
Cette page propose un pas-à-pas pour mettre en place rapidement un serveur de messagerie en faisant appel à l'ensemble:
- MySql pour enregistrer les comptes mails virtuels
- Postfixadmin pour gérer les domaines et comptes mails.
Pré-requis
- Une solution LAMP fonctionnelle.
- Un certificat SSL (auto-signé ou autre) valide.
sudo apt-get install ssl-cert sudo make-ssl-cert generate-default-snakeoil --force-overwrite
Installation des paquets
- Installez la première série de paquets utiles à savoir:
- bsd-mailx,dovecot-core,dovecot-imapd,dovecot-pop3d,postfix pour la partie MTA, IMAP, POP3
- amavisd-new,clamav,clamav-daemon,spamassassin pour Antivirus et AntiSpam
- php5-imap pour la gestion par postfixadmin.
Par exemple avec l'outil apt-get, saisissez dans un terminal:sudo apt-get install bsd-mailx dovecot-core dovecot-imapd dovecot-pop3d postfix sudo apt-get install amavisd-new clamav clamav-daemon spamassassin sudo apt-get install php5-imap
La première ligne permet d'utiliser apt-get ou aptitude au choix. Mais vous auriez pût passer par Tasksel et de là installer directement l'ensemble mail-server^.
- Installez la seconde série de paquets utiles à savoir :
- libnet-dns-perl,pyzor,razor pour requêtes DNS et AntiSpam
- arj,bzip2,cabextract,cpio,file,gzip,nomarch,pax,unzip,zip pour décompresser des archives directement dans roundcube
sudo apt-get install libnet-dns-perl pyzor razor sudo apt-get install arj bzip2 cabextract cpio file gzip nomarch pax unzip zip
Création de l'administrateur mail dans MySQL
sudo mysql -u root -p
Créez la base de données (ici postfixadmin) et l'utilisateur (ici postfixadmin)
create database postfixadmin; grant all on postfixadmin.* to 'mail'@'localhost' identified by 'mot_de_passe_administrateur_mail';
Plus d'informations sur la page MySQL
Postfixadmin
Postfixadmin permet de gérer graphiquement les domaines et les boites e-mail rattachées. Il permet de créer des administrateurs par domaine qui peuvent eux-mêmes créer des boites ainsi que des alias. Le tout se pilotant au travers d'un navigateur web.
Installation
Un paquet tout prêt est disponible et évite plusieurs étapes de configuration/mise en place. Il s'agit donc de
- le télécharger à cette adresse
- l'installer.
Ceci se résume dans un terminal par:
wget http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.5/postfixadmin_2.3.5-1_all.deb sudo dpkg -i postfixadmin_2.3.5-1_all.deb
Configuration
Paramètres principaux
Ouvrez avec les droits d'administration le fichier /etc/postfixadmin/config.inc.php, pour modifier/vérifier les variables comme suit :
$CONF['configured'] = true; $CONF['postfix_admin_url'] = '/postfixadmin'; # à laisser tel quel pour le multi-domaine $CONF['admin_email'] = 'me@example.com'; # l'adresse mail de l'administrateur général $CONF['smtp_server'] = 'localhost'; $CONF['smtp_port'] = '25'; $CONF['encrypt'] = 'md5crypt'; $CONF['domain_path'] = 'YES'; $CONF['domain_in_mailbox'] = 'NO';
Définition de la base de données
Ouvrez avec les droits d'administration le fichier /etc/postfixadmin/dbconfig.inc.php pour insérer les accès MySQL précédemment créés.
$dbuser='postfixadmin'; $dbpass='mot_de_passe_administrateur_mail'; $basepath=''; $dbname='postfixadmin'; $dbserver=''; # utilisera la valeur par défaut : localhost $dbport=''; # utilisera le port MySQL par défaut $dbtype='mysql';
Mise en place
Lancez la configuration en saisissant dans votre navigateur l'adresse : http://localhost/postfixadmin/setup.php
Créez un administrateur Postfixadmin. Il est fortement conseillé de bien le différencier de l'administrateur mail quant à son ensemble nom/mot de passe.
Il sera utilisé dans votre configuration finale.
Ouvrez avec les droits d'administration le fichier /etc/postfixadmin/config.inc.php et modifier la variable :
$CONF['setup_password'] = '… votre mot de passe hashé …';
Il faut ensuite protéger cette page (vous pourrez créer d'autres administrateurs via l'interface de postfixadmin).
Ouvrez avec les droits d'administration le fichier /etc/apache2/conf.d/postfixadmin, et ajouter :
<Files "setup.php"> deny from all </Files>
Se rendre sur la page http://localhost/postfixadmin, et créer le premier domaine. Ajouter une boite mail à ce domaine.
À ce stade, Postfixadmin est opérationnel.
Répertoire des e-mails
Ici les utilisateurs sont virtuels, et donc indépendant de la création/gestion classique Unix. Un seul utilisateur (Unix) aura les droits sur ce dossiers et permettra de gérer les liaisons entre Dovecot et Postfix.
Pour l'exemple, l'utilisateur sera vmail et le groupe mail. Le répertoire dédié sera dans /home/vmail (ces valeurs sont à votre convenance).
- Création du groupe mail puis de l'utilisateur vmail associé à ce groupe
sudo groupadd mail sudo useradd -r -u 150 -g mail -d /home/vmail -s /sbin/nologin -c "Propriétaire des répertoires e-mail virtuel" vmail
- Création du répertoire dédié et les droits associés
sudo mkdir /home/vmail sudo chmod 770 /home/vmail
- Désignation du propriétaire:groupe du dossier
sudo chown vmail:mail /home/vmail
Dovecot
Dovecot gère les connexions POP3 et IMAP, permet de gérer les mails locaux et récupère les courriers en provenance de Postfix.
Il gère également l'authentification SMTP.
Configuration
Vous allez attaquer la partie la plus "fatiguante" .
Définition de la base de données ?
Éditez ou créez avec les droits d'administration le fichier /etc/dovecot/conf.d/auth-sql.conf.ext avec le contenu suivant :
# Look up user passwords from a SQL database as # defined in /etc/dovecot/dovecot-sql.conf.ext passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext } # Look up user information from a SQL database as # defined in /etc/dovecot/dovecot-sql.conf.ext userdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext }
Définition des accès à la base de données ?
Vérifiez avant tout l'UID et le GUID c'est pas GID plutot ? :
grep vmail /etc/passwd
devrait répondre quelque chose comme
vmail:x:150:1001:Virtual maildir handler:/home/vmail:/sbin/nologin
Notez bien ces informations avant d' éditer avec les droits d'administration le fichier /etc/dovecot/dovecot-sql.conf.ext que vous modifierez comme suit :
- Type de base de données:
# Database driver: mysql, pgsql, sqlite driver = mysql
- Ici remplacez mot_de_passe_postfixadmin par celui entrée à la section 1.2
1.2 ou 2.1 ?
# Examples: # connect = host=192.168.1.1 dbname=users # connect = host=sql.example.com dbname=virtual user=virtual password=blarg # connect = /etc/dovecot/authdb.sqlite # connect = host=localhost dbname=postfixadmin user=postfixadmin password=mot_de_passe_postfixadmin
- Type d'authentification
# Default password scheme. # # List of supported schemes is in # http://wiki2.dovecot.org/Authentication/PasswordSchemes # default_pass_scheme = MD5-CRYPT
- Requète de mot de passe (adaptez avec les informations obtenues en début de ce chapitre)
# Define the query to obtain a user password. password_query = \ SELECT username as user, password, '/home/vmail/%d/%n' as userdb_home, \ 'maildir:/home/vmail/%d/%n' as userdb_mail, 150 as userdb_uid, 1001 as userdb_gid \ FROM mailbox WHERE username = '%u' AND active = '1'
- Information utilisateur (adaptez avec les informations obtenues en début de ce chapitre)
# Define the query to obtain user information. user_query = \ SELECT '/home/vmail/%d/%n' as home, 'maildir:/home/vmail/%d/%n' as mail, \ 150 AS uid, 1001 AS gid, concat('dirsize:storage=', quota) AS quota \ FROM mailbox WHERE username = '%u' AND active = '1'
FIXME
Éditez avec les droits d'administration le fichier /etc/dovecot/conf.d/10-auth.conf et modifier comme suit :