Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ce tutoriel présente comment monter un serveur de mail multi-domaines géré par une base mysql et administré par postfixadmin, activation du mode vacation (répondeur automatique)
Pour installer le serveur mysql, il faut juste entrer la commande suivante :
apt-get install mysql-server
Pour installer postfix et les modules nécessaire pour la gestion via mysql, entrez cette commande :
apt-get install postfix postfix-mysql
Si des questions vous sont posées, répondez par défaut, de toute manière les options sont modifiées plus bas
Pour installer dovecot, entrez cette commande :
apt-get install dovecot-common dovecot-imapd dovecot-pop3d
Là on a fait le plus simple… reste à configurer le tout… Première étape, créer l'utilisateur et le groupe utilisés par postfix :
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m
Ensuite on s'attaque au fichier de configuration de postfix à savoir : /etc/postfix/main.cf
Les versions récentes de debian offrent un canevas de ce fichier sous le nom main.cf.proto. Faites-en une copie
cp /etc/postfix/main.cf.proto /etc/postfix/main.cf nano /etc/postfix/main.cf
Dans ce fichier, les options à modifier/ajouter sont : Nom d'hôte du serveur, veiller à ce que ce nom soit fqdn et qu'il soit existant dans le domaine (reverse dns)
myhostname=mailhost.lindev.fr
Destinations locales gérés par postfix. Attention à ne pas mettre un domaines que vous allez gérer virtuellement
mydestination=mailhost.lindev.fr, localhost.lindev.fr, localhost
Permet de définir un relais pour vos mails sortant exemple : [smtp.nordnet.fr] vide par défaut
relayhost=
mynetworks permet de définir (le) les réseaux qui sont autorisés à envoyer des mails
mynetworks=127.0.0.0/8 10.0.0.0/24
mydomain permet de définir le domaine internet du système de messagerie
mydomain=lindev.fr
home_mailbox définit le chemin optionnel d'un fichier de boîte-aux-lettres relatif au répertoire personnel d'un utilisateur
home_mailbox=/
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
Repérez la ligne setgid_group et modifiez-la comme suit:
setgid_group = vmail
Voilà pour les principaux paramètres à modifier, nous allons maintenant lier postfix à la base mysql.
Pour lier postfix à la base, nous allons créer trois fichiers :
Le premier correspond à la gestion des noms de domaine, le second gère les boites des utilisateurs, et le troisième gère les alias.
user =**votre_utilisateur_de_BD** password =le password de l'utilisateur hosts = 127.0.0.1 dbname = postfix query= SELECT domain FROM domain WHERE domain='%s'
user =votre_utilisateur_de_BD password =le password de l'utilisateur hosts = 127.0.0.1 dbname = postfix query= SELECT maildir FROM mailbox WHERE username='%s' AND active='1'
user =votre_utilisateur_de_BD password =le password de l'utilisateur hosts = 127.0.0.1 dbname = postfix query= SELECT goto FROM alias WHERE address='%s'
Pour chaque fichier, nous allons exécuter la commande postmap :
postmap /etc/postfix/mysql-virtual-mailbox-domains.cf
postmap /etc/postfix/mysql-virtual-mailbox-maps.cf
postmap /etc/postfix/mysql-virtual-alias-maps.cf
Ensuite, nous retournons dans le fichier de configuration de postfix pour lui demander d'utiliser ces fichiers, vous devez donc ajouter dans ce fichier (/etc/postfix/main.cf
) les lignes suivantes :
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_mailbox_base = /home/vmail
Et voilà c'est terminé pour postfix !
Très rapide et très simple, voici le fichier à modifier : /etc/dovecot/dovecot.conf
Les lignes à vérifier/modifier sont :
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/%u mail_privileged_group = vmail 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 n'allons pas détailler chaque ligne, qui sort du but de ce tutoriel, décommentez/ajouter juste ce qu'il faut, et commentez le reste .
Dans cet exemple, un petit plus, la gestion des quotas, qui n'est vraiment pas obligatoire, dans notre cas, le quota est de 5Go ou 1000000000000 Messages par boite .
Commençons par éditer le fichier dovecot-sql.conf
:
driver = mysql connect = host=127.0.0.1 dbname=postfix user=**utilisateur de la bd** password=**mot de passe user bd** default_pass_scheme = PLAIN-MD5 password_query = SELECT username as user, password FROM mailbox WHERE username = '%u' user_query = SELECT maildir, 5000 AS uid, 5000 AS gid FROM mailbox WHERE username = '%u'
Voilà, votre serveur est prêt à l'emploi, il ne reste plus qu'à installer postfixadmin et à remplir la base de données ..
Récupérer postfixadmin comme ceci :
wget http://switch.dl.sourceforge.net/sourceforge/postfixadmin/postfixadmin_2.3rc2_all.deb
dpkg -i postfixadmin_2.3rc2_all.deb
Créer un lien des fichiers de postfixadmin à votre serveur web (dans mon cas /var/www)
ln -s /usr/share/postfixadmin /var/www
Créer l'hôte virtuel dans apache pour vous connecter à postfix admin puis on redémarre apache
service apache2 restart
Éditer le fichier de configuration /var/www/postfixadmin/config.inc.php
nano /var/www/postfixadmin/config.inc.php
Les options à vérifier sont les suivantes (à adapter selon vos souhaits):
$CONF['configured'] = true; $CONF['postfix_admin_url'] = 'http://postfixadmin.lindev.fr'; $CONF['default_language'] = 'fr'; $CONF['database_type'] = 'mysql'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = '< Votre mot de passe de la base >'; $CONF['database_name'] = 'postfix'; $CONF['database_prefix'] = ''; $CONF['encrypt'] = 'md5'; $CONF['domain_path'] = 'NO'; $CONF['domain_in_mailbox'] = 'YES'; $CONF['vacation'] = 'YES'; $CONF['vacation_domain'] = 'autoreply-lindev.fr'; $CONF['vacation_control'] ='YES'; $CONF['vacation_control_admin'] = 'YES'; $CONF['alias_control'] = 'YES'; $CONF['alias_control_admin'] = 'YES'; $CONF['special_alias_control'] = 'NO'; $CONF['alias_goto_limit'] = '0'; $CONF['user_footer_link'] = "http://postfixadmin.lindev.fr/main"; $CONF['show_footer_text'] = 'YES'; $CONF['footer_text'] = 'Return to postfixadmin.lindev.fr'; $CONF['footer_link'] = 'http://postfixadmin.lindev.fr';
Pour les autres options elles sont soit commentées, soit inchangées ( à adapter selon vos besoins).
Ensuite créez une base de donnée pour postfixadmin que j'ai nommé tout le long de ce tutoriel postfix Ainsi que l'utilisateur associé qui possède tout les droits sur cette base.
mysql -u root -p
CREATE DATABASE postfix; GRANT ALL PRIVILEGES ON postfix.* TO @localhost IDENTIFIED BY ''; quit
Et allez sur votre page d'administration, dans le setup (dans mon cas c'est): http://postfixadmin.lindev.fr/setup.php
Si tout est ok et que vous utilisez une vieille version (avant 2.3), renommez le fichier setup.php
mv setup.php setup.php.disable
Voilà, vous pouvez maintenant créer vos comptes/domaines
Nous avons activé le mode vacation dans la configuration de postfixadmin, ce qui permet de renvoyer un message automatique d'absence lorsque vous êtes parti en vacances par exemple …
useradd vacation
vacation:x:65501:65501:Virtual Vacation:/nonexistent:/bin/false
vacation:x:65501:
mkdir /var/spool/vacation
chown -R vacation:vacation /var/spool/vacation
chmod -R 700 /var/spool/vacation
cd /var/spool/vacation
wget http://phpu.lindev.fr/dld.php?i=2509e7ec-f8a0-4dc6-8fda-87997b646d29
chmod 700 vacation.pl
Modifier les paramètres de connexion à la base de données et installer les modules nécessaires
apt-get install libmail-sendmail-perl libdbd-pg-perl libemail-valid-perl libmime-perl libmime-charset-perl libmime-encwords-perl
Nous devons ensuite modifier le fichier /etc/postfix/master.cf
:
Ajouter ces lignes à la fin :
vacation unix - n n - - pipe flags=DRhu user=vacation argv=/var/spool/vacation/vacation.pl
Enfin, nous allons modifier le fichier /etc/postfix/main.cf en ajoutant cette ligne :
transport_maps = hash:/etc/postfix/transport
nous allons donc créer le fichier /etc/postfix/transport
avec le contenu suivant :
autoreply-lindev.fr vacation
Notez que autoreply-lindev.fr correspond à l'option $CONF['vacation_domain'] = 'autoreply-lindev.fr';
de la configuration de postfixadmin.
postmap /etc/postfix/transport
Et voilà c'est fini le mode vacation est maintenant opérationnel !
Nous allons redémarrer postfix et dovecot via cette commande :
service postfix restart
service dovecot restart
Pour voir les logs en temps réels, nous pouvons utiliser cette commande
tail -f /var/log/mail.log
Vous voilà avec un serveur de mails complet, administrable via une interface web, qui peut gérer plusieurs domaines, et qui permet la gestion des comptes personnalisés.
Si vous utilisez des alias avec Postfix à destination d’un autre serveur que le vôtre, et que celui-ci respecte les enregistrements Sender Policy Framework (SPF), certains de vos e-mails seront rejetés.
Cet article explique comment mettre en place Sender Rewriting Scheme (SRS) (article en anglais), une solution permettant d’éviter ce genre de blocage : Postfix - Sender Rewriting Scheme