Ceci est une ancienne révision du document !
Installation d'une solution mail complète.
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ès 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
La première ligne permet d'utiliser apt-get ou aptitude au choix. Mais on aurait pût passer par tasksel et de là installer directement l'essemble mail-server^.
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
- On installe 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
On créé la base de données (postfixadmin) et l'utilisateur (postfixadmin)
create database postfixadmin; grant all on postfixadmin.* to 'mail'@'localhost' identified by 'mot_de_passe_administrateur_mail';
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.
Un paquet tout prêt est disponible et évite plusieurs étapes de configuration/mise en place. On va donc le télécharger et l'installer.
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
Dans le fichier /etc/postfixadmin/config.inc.php, 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';
Dans le fichier /etc/postfixadmin/dbconfig.inc.php, insérer les accès MySQL précédemment créé (1.2).
$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';
Lancer la configuration via : http://localhost/postfixadmin/setup.php
Créer un administrateur Postfixadmin (conseil : différenciez-le de l'administrateur mail (nom/mot de passe))
Il sera utilisé dans votre configuration finale.
Insertion du mot de passe "hashé", éditer /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).
Éditer /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.
J'utilise personnellement l'utilisateur vmail et le groupe mail. Et mon répertoire se situe dans /home/vmail (ces valeurs sont à votre convenance).
Création du groupe mail et de l'utilisateur vmail
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
sudo mkdir /home/vmail sudo chmod 770 /home/vmail
Application des droits.
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
On attaque la partie la plus "fatiguante".
Éditer ou créer 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 }
Éditer le fichier /etc/dovecot/dovecot-sql.conf.ext et modifier comme suit :
# Database driver: mysql, pgsql, sqlite driver = mysql
Ici remplacer mot_de_passe_postfixadmin par celui entrée à la section 1.2
# 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
# Default password scheme. # # List of supported schemes is in # http://wiki2.dovecot.org/Authentication/PasswordSchemes # default_pass_scheme = MD5-CRYPT
Attention à l'UID et le GUID. Pour vérifier ces informations :
grep vmail /etc/passwd vmail:x:150:1001:Virtual maildir handler:/home/vmail:/sbin/nologin
# 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'
# 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'
Éditer le fichier /etc/dovecot/conf.d/10-auth.conf et modifier comme suit :
Amavis, ClamAV SpamAssassin
Configuration Amavis
Configuration ClamAV
Configuration SpamAssassin
Postfix
Configuration
Relancer tous les services
Postfixadmin
Configuration
Postfixadmin
Configuration
Postfixadmin
Configuration
Liens
http://sourceforge.net/projects/postfixadmin/ (projet de PostfixAdmin - eng)