Ceci est une ancienne révision du document !
Le système de messagerie se base sur un certain nombre de composants :
Ci-dessous le diagramme des flux internes et externes du système de messagerie entre les différents composants :
Dans la section d'installation nous allons mettre en place cette solution
L'installation sera effectué dans l'ordre suivant :
L'ensemble de la procédure est réalisée dans la console en tant que root (accès par SSH), l'utilisation du navigateur dans certains cas vous sera précisé.
Le dépôt debian pour apt doit être configuré de façon à pouvoir récupérer des paquetages soit sur le CD soit sur Internet.
Si vous rencontrez des problèmes pendant l'installation vous pouvez consulter les logs dans :
/var/log/mail.err /var/log/mail.info /var/log/mail.log /var/log/mail.warn
Installer MySQL par la commande suivante :
apt-get install mysql-client mysql-server
Répondre aux questions relative à l'installation de MySQL
Se connecter au serveur pour créer la base postfix :
mysql -u root -p
Ici allons :
CREATE DATABASE postfix; CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'definir_un_mdp'; GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost'; quit
Installer Apache et PHP par la commande suivante :
apt-get install apache2 php5 php5-mysql php5-imap
Redémarrer apache :
/etc/init.d/apache2 restart
Télécharger postfixadmin chez l'éditeur :
cd /tmp wget http://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin-2.2.1.1.tar.gz/download
Décompacter l'archive :
tar xzf /tmp/postfixadmin-2.2.1.1.tar.gz
Déplacer et renommer le répertoire décompecté dans le répertoire d'apache:
mv /tmp/postfixadmin-2.2.1.1 /var/www/postfixadmin
Lancer la commande vi /var/www/postfixadmin/config.inc.php
pour éditer la configuration de postfixadmin et changer les paramètres suivants:
$CONF['configured'] = true; ... $CONF['database_type'] = 'mysqli'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = 'passwd4postfix'; $CONF['database_name'] = 'postfix'; $CONF['database_prefix'] = ''; ... $CONF['admin_email'] = 'postmaster@avg-groupe.net'; ... $CONF['default_aliases'] = array ( 'abuse' => 'abuse@host.avg-groupe.net', 'hostmaster' => 'hostmaster@mailhost.avg-groupe.net', 'postmaster' => 'postmaster@mailhost.avg-groupe.net', 'webmaster' => 'webmaster@mailhost.avg-groupe.net' ); $CONF['domain_path'] = 'YES'; ... $CONF['domain_in_mailbox'] = 'NO'; ... $CONF['emailcheck_resolve_domain']='NO';
Nous allons maintenant terminer la configuration depuis votre navigateur : http://mailhost.avg-groupe.net/postfixadmin/setup.php
Normalement lorsque la page est chargée, tout doit être “OK” il ne doit y avoir aucune erreur. Il vous est proposé de créer un compte administrateur, créez le librement.
Une fois le compte administrateur créer, retourner sur la console et supprimer le fichier setup.php
rm /var/www/postfixadmin/setup.php
Vous pouvez désormais créer des domaines de messagerie et des comptes mail sur http://mailhost.avg-groupe.net/postfixadmin/
Attention ces comptes ne seront pas fonctionnels tant que postfix et dovecot ne seront pas installés.
Pour créer un utilisateur, groupe et répertoire pour l'espace de stockage des mails lancer les commandes suivantes :
groupadd -g 5000 vmail useradd -g vmail -u 5000 vmail -d /home/vmail -m
Installer Postfix et son module Mysql :
apt-get install postfix postfix-mysql
A la question choisir :
pas de configuration
Pour configurer postfix créer et éditer le fichier /etc/postfix/main.cf de façon à obtenir le contenu suivant :
# Nom d'hote du serveur , veiller à ce que ce nom soit fqdn et qu'il soit existant dans le domaine (reverse dns) myhostname=mailhost.avg-groupe.net # Destinations locales gérés par postfix Attention à ne pas mettre un domaines que vous allez gérer virtuellement mydestination=mailhost.avg-groupe.net, localhost.avg-groupe.net, localhost # Permet de definir un relais pour vos mails sortant exemple : [smtp.nordnet.fr] vide par defaut relayhost=smtp.orange.fr # mynetworks permet de définir le/les réseaux qui sont autorisé à envoyer des mails mynetworks=127.0.0.0/8 192.168.40.0/24 # mydomain permet de définir le domaine internet du système de messagerie mydomain=avg-groupe.net # smtpd_recipient_restrictions permet d'ajouter des restrictions sur les mails entrant smtpd_recipient_restrictions= permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_non_fqdn_recipient, # reject_unknown_sender_domain, # reject_non_fqdn_sender, # reject_unknown_recipient_domain, # reject_invalid_helo_hostname, # reject_unlisted_recipient, # reject_unlisted_sender, # reject_non_fqdn_helo_hostname, # reject_rbl_client list.dsbl.org, # reject_rhsbl_sender dsn.rfc-ignorant.org # message_size_limit correspond à la taille maximale d'un message en octets message_size_limit=10240000 # Fichier de requete SQL pour les alias et redirections mails virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf # Fichier de requete SQL pour les domaines pris en charges virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf # Fichier de requete SQL pour les comptes de messagerie virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf # UID et GID à fixer pour le stockage de mail virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 # Répertoire de base où sont stockés les mails virtual_mailbox_base = /home/vmail
Nous allons maintenant créer les 3 fichiers de requêtes SQL :
Lancer vi /etc/postfix/mysql-virtual-alias-maps.cf
et insérer le contenu suivant :
user = postfix password = mdp_defini_dans_mysql hosts = 127.0.0.1 dbname = postfix query= SELECT goto FROM alias WHERE address='%s'
Lancer vi /etc/postfix/mysql-virtual-mailbox-domains.cf
et insérer le contenu suivant :
user = postfix password = mdp_defini_dans_mysql hosts = 127.0.0.1 dbname = postfix query= SELECT domain FROM domain WHERE domain='%s'
Lancer vi /etc/postfix/mysql-virtual-mailbox-maps.cf
et insérer le contenu suivant :
user = postfix password = mdp_defini_dans_mysql hosts = 127.0.0.1 dbname = postfix query= SELECT maildir FROM mailbox WHERE username='%s' AND active='1'
Redémarrer Postfix par le commande :
/etc/init.d/postfix restart
Lancer la commande suivante pour installer dovecot :
apt-get install dovecot-common dovecot-imapd dovecot-pop3
Faire une sauvegarde du fichier de configuration de dovecot :
mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.bkp
Recréer le fichier de configuration en lançant la commande : vi /etc/dovecot/dovecot.conf
et insérer le contenu suivant :
protocols = imap pop3 imaps pop3s listen = [::] disable_plaintext_auth = no log_timestamp = "%Y-%m-%d %H:%M:%S " ssl_listen = [::] mail_location = maildir:/home/vmail/%d/%n mail_privileged_group = mail protocol imap { mail_plugins = quota imap_quota } protocol pop3 { pop3_uidl_format = %08Xu%08Xv mail_plugins = quota } protocol lda { mail_plugins = quota } auth default { mechanisms = plain passdb sql { args = /etc/dovecot/dovecot-sql.conf } userdb sql { args = /etc/dovecot/dovecot-sql.conf } user = root count = 2 } dict { } plugin { #exemple pour un stockage de 5Gb par compte et/ou 1000000000000 mails quota = maildir:storage=5242880:messages=1000000000000 }
Nous allons créer le fichier de requête SQL pour l'authentification par SQL, lancer la commande vi /etc/dovecot/dovecot-sql.conf
et insérer à la fin le contenu suivant :
# Type de base SQL driver = mysql # Information de connexion à la base MySQL connect = host=127.0.0.1 dbname=postfix user=postfix password=passwd_defini_dans_mysql # md5crypt -> MD5-CRYPT # md5 -> PLAIN-MD5 # cleartext -> PLAIN #Type de cryptage di mot de passe default_pass_scheme = MD5-CRYPT # Requete pour obtenir le mot de passe password_query = SELECT password FROM mailbox WHERE username = '%u' # Requete pour obtenir les informations d'un compte. user_query = SELECT maildir, 5000 AS uid, 5000 AS gid FROM mailbox WHERE username = '%u'
Pour tester le SMTP :
telnet 127.0.0.1 smtp helo test mail from:<prenom.nom@avantgarde-dom.com> rcpt to:<user@avg-groupe.net> data subject: test test . quit
Pour le service POP3
telnet 127.0.0.1 pop3 user user@avg-groupe.net pass xxxxxx list retr 1
Pour tester l'IMAP :
telnet 127.0.0.1 imap ? LOGIN user@avg-groupe.net xxxxxx ? LIST "" "*" ? SELECT INBOX ? FETCH 1 ALL ? LOGOUT ? SELECT inbox