logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
doc:reseau:postfix [23/03/2009 21:36]
smolski
doc:reseau:postfix [17/12/2020 23:05] (Version actuelle)
vv222 Nouvelle section "articles liés", avec un lien vers la doc Sender Rewriting Scheme
Ligne 1: Ligne 1:
 +====== postfix : serveur mail smtp ======
  
 +  * Objet : configuration de postfix pour une gestion multi-domaines via MySQL.
 +  * Niveau requis : {{tag>​avisé}}
 +  * Commentaires : //Vous voulez gérer les comptes mails de différents domaines via postfix. //
 +  * Suivi : {{tag>​à-tester}} ​
 +    * Création par [[user>​stopher]] le 23-3-2009
 +    * Testé par <...> le <...>
 +  * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​id=1231 |ici]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
 +
 +===== Introduction =====
 +
 +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)
 +
 +===== Installations =====
 +
 +=== MySQL ===
 +
 +Pour installer le serveur mysql, il faut juste entrer la commande suivante :
 +<code root>​apt-get install mysql-server</​code>​
 +
 +=== Postfix ===
 +Pour installer postfix et les modules nécessaire pour la gestion via mysql, entrez cette commande : 
 +<code root>​apt-get install postfix postfix-mysql</​code>​
 +
 +//Si des questions vous sont posées, répondez par défaut, de toute manière les options sont modifiées plus bas//
 +
 +=== Dovecot ===
 +Pour installer dovecot, entrez cette commande : 
 +  apt-get install dovecot-common dovecot-imapd dovecot-pop3d
 +
 +===== Configuration =====
 +
 +=== Configuration de postfix ===
 +
 +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 :
 +<code root>
 +groupadd -g 5000 vmail</​code>​
 +<code root>​useradd -g vmail -u 5000 vmail -d /home/vmail -m</​code>​
 +
 +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
 +
 +<code root>cp /​etc/​postfix/​main.cf.proto /​etc/​postfix/​main.cf
 +nano /​etc/​postfix/​main.cf</​code>​
 +
 +Dans ce fichier, les options à modifier/​ajouter sont :
 +Nom d'​hôte du serveur, veiller à ce que ce nom soit [[http://​fr.wikipedia.org/​wiki/​Fully_qualified_domain_name|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 :
 +
 +  - mysql-virtual-mailbox-domains.cf
 +  - mysql-virtual-mailbox-maps.cf
 +  - mysql-virtual-alias-maps.cf
 +
 +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.
 +
 +=== Contenu de ces trois fichiers : ===
 + 
 +<code text mysql-virtual-mailbox-domains.cf>​
 +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'​
 +</​code>​
 +
 +<code text mysql-virtual-mailbox-maps.cf>​
 +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'​
 +</​code>​
 +
 +<code text mysql-virtual-alias-maps.cf>​
 +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'​
 +</​code>​
 + 
 +
 +Pour chaque fichier, nous allons exécuter la commande **postmap** : 
 +
 +<code root>​postmap /​etc/​postfix/​mysql-virtual-mailbox-domains.cf</​code>​
 +<code root>​postmap /​etc/​postfix/​mysql-virtual-mailbox-maps.cf</​code>​
 +<code root>​postmap /​etc/​postfix/​mysql-virtual-alias-maps.cf
 +</​code>​
 +
 +
 +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 ! 
 +
 +
 +==== Configuration de dovecot ====
 +
 +
 +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 .
 +
 +
 +=== Passons à la liaison dovecot/​mysql : ===
 +
 +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 .. 
 +
 +
 +==== Installation de postfixadmin ====
 +
 +Récupérer **postfixadmin** comme ceci :
 +<code user>
 +wget http://​switch.dl.sourceforge.net/​sourceforge/​postfixadmin/​postfixadmin_2.3rc2_all.deb
 +</​code>​
 +
 +=== Installer postfixadmin :  ===
 +
 +<code root>​dpkg -i postfixadmin_2.3rc2_all.deb</​code>​
 +
 +Créer un lien des fichiers de postfixadmin à votre serveur web (dans mon cas /​var/​www) ​
 +
 +<code root>ln -s /​usr/​share/​postfixadmin /​var/​www</​code>​
 +
 +Créer l'​hôte virtuel dans apache pour vous connecter à postfix admin puis on redémarre apache ​
 +
 +<code root>​service apache2 restart</​code>​
 +
 +==== Configuration de postfixadmin ====
 +
 +Éditer le fichier de configuration **/​var/​www/​postfixadmin/​config.inc.php**
 +
 +<code root>​nano /​var/​www/​postfixadmin/​config.inc.php</​code>​
 +
 +Les options à vérifier sont les suivantes (à adapter selon vos souhaits):
 +<code php>
 +$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';​
 +</​code>​
 +
 +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. 
 +
 +<code user>​mysql -u root -p</​code>​
 +<code sql>
 +CREATE DATABASE postfix;
 +GRANT ALL PRIVILEGES ON postfix.* TO @localhost IDENTIFIED BY '';​
 +quit
 +</​code>​
 +
 +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
 +
 +<code root>mv setup.php setup.php.disable</​code>​
 +
 +
 +Voilà, vous pouvez maintenant créer vos comptes/​domaines ​
 +
 +  * Dans un premier temps, vous devrez définir le mot de passe pour « setup » 
 +  ** Ce mot de passe devra être recopié (encrypté),​ tel que retourné par la page et selon les consignes données
 +
 +  * Ensuite vous devrez créer un compte d'​administrateur
 +  ** Suivez les indications à l'​écran
 +  ​
 +
 +==== Mise en place du mode vacation ====
 +
 +
 +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 ...
 +
 +=== création de l'​utilisateur local vacation ​ ===
 +<code root>​useradd vacation</​code>​
 +
 +=== Modifier la ligne comme ci-dessous dans le fichier /​etc/​passwd ​ ===
 +  vacation:​x:​65501:​65501:​Virtual Vacation:/​nonexistent:/​bin/​false
 +
 +=== Idem pour /​etc/​group ​ ===
 +  vacation:​x:​65501:​
 +
 +=== Ensuite, créer un dossier pour vacation ​ ===
 +<code root>​mkdir /​var/​spool/​vacation</​code>​
 +<code root>​chown -R vacation:​vacation /​var/​spool/​vacation</​code>​
 +<code root>​chmod -R 700 /​var/​spool/​vacation</​code>​
 +
 +=== Copier le script vacation.pl dans le dossier de vacation (/​var/​spool/​vacation) ===
 +
 +[[http://​phpu.lindev.fr/​dld.php?​i=2509e7ec-f8a0-4dc6-8fda-87997b646d29|Vacation.pl]]
 +
 +<code root>cd /​var/​spool/​vacation</​code>​
 +<code root>​wget http://​phpu.lindev.fr/​dld.php?​i=2509e7ec-f8a0-4dc6-8fda-87997b646d29</​code>​
 +<code root>​chmod 700 vacation.pl</​code>​
 +
 +
 +=== Editer vacation.pl ===
 +
 +Modifier les paramètres de connexion à la base de données et installer les modules nécessaires
 +<code root>​apt-get install libmail-sendmail-perl libdbd-pg-perl libemail-valid-perl libmime-perl libmime-charset-perl libmime-encwords-perl</​code>​
 +
 +Nous devons ensuite modifier le fichier ''/​etc/​postfix/​master.cf'':​
 +
 +=== Modification de master.cf ===
 +
 +Ajouter ces lignes à la fin : 
 +
 +  vacation ​   unix  -       ​n ​      ​n ​      ​- ​      ​- ​      pipe
 +    flags=DRhu user=vacation argv=/​var/​spool/​vacation/​vacation.pl
 +
 +=== Modification du main.cf ===
 +
 +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 :
 +<code text /​etc/​postfix/​transport>​
 +autoreply-lindev.fr vacation
 +</​code>​
 +
 +//Notez que autoreply-lindev.fr correspond à l'​option ''​$CONF['​vacation_domain'​] = '​autoreply-lindev.fr';''​ de la configuration de postfixadmin.//​
 +
 +=== Activer le fichier transport ===
 +
 +<code root>​postmap /​etc/​postfix/​transport</​code>​
 +
 +Et voilà c'est fini le mode vacation est maintenant opérationnel !
 +
 +Nous allons redémarrer **postfix** et **dovecot** via cette commande :
 +
 +<code root>​service postfix restart</​code>​
 +<code root>​service dovecot restart</​code>​
 +
 +==== Surveiller les logs ====
 +
 +Pour voir les logs en temps réels, nous pouvons utiliser cette commande ​
 +
 +<code root>​tail -f /​var/​log/​mail.log</​code>​
 +
 +==== Conclusion ====
 +
 +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.
 +
 +==== Sources ====
 +[[http://​www.lindev.fr|Lindev.fr]] ​
 +
 +===== Articles liés =====
 +
 +==== Sender Rewriting Scheme ====
 +
 +Si vous utilisez des alias avec Postfix à destination d’un autre serveur que le vôtre, et que celui-ci respecte les enregistrements [[https://​fr.wikipedia.org/​wiki/​Sender_Policy_Framework|Sender Policy Framework (SPF)]], certains de vos e-mails seront rejetés.
 +
 +Cet article explique comment mettre en place [[https://​en.wikipedia.org/​wiki/​Sender_Rewriting_Scheme|Sender Rewriting Scheme (SRS)]] (article en anglais), une solution permettant d’éviter ce genre de blocage : [[:​doc:​reseau:​postfix:​srs|Postfix - Sender Rewriting Scheme]]

Pied de page des forums

Propulsé par FluxBB