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 →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
doc:reseau:postfix [22/09/2013 23:31] 127.0.0.1 modification externe |
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: | ||
- | 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) | + | ====== postfix : serveur mail smtp ====== |
- | ==== Voici la procédure : ==== | + | * Objet : configuration de postfix pour une gestion multi-domaines via MySQL. |
- | * Installation mysql | + | * Niveau requis : {{tag>avisé}} |
- | * Installation postfix | + | * Commentaires : //Vous voulez gérer les comptes mails de différents domaines via postfix. // |
- | * Configuration de dovecot | + | * Suivi : {{tag>à-tester}} |
- | * Installation de postfixadmin | + | * Création par [[user>stopher]] le 23-3-2009 |
- | * Mise en place du mode vacation | + | * 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) | ||
- | ==== Installation de mysql ==== | + | ===== Installations ===== |
- | Pour installer le serveur mysql, il faut juste entrer la commande suivante | + | |
- | apt-get install mysql_server | + | |
+ | === MySQL === | ||
+ | Pour installer le serveur mysql, il faut juste entrer la commande suivante : | ||
+ | <code root>apt-get install mysql-server</code> | ||
- | ==== Installation de postfix ==== | + | === Postfix === |
Pour installer postfix et les modules nécessaire pour la gestion via mysql, entrez cette commande : | Pour installer postfix et les modules nécessaire pour la gestion via mysql, entrez cette commande : | ||
- | apt-get install postfix postfix-mysql | + | <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// | //Si des questions vous sont posées, répondez par défaut, de toute manière les options sont modifiées plus bas// | ||
- | + | === Dovecot === | |
- | + | ||
- | ==== Installation de Dovecot ==== | + | |
Pour installer dovecot, entrez cette commande : | Pour installer dovecot, entrez cette commande : | ||
apt-get install dovecot-common dovecot-imapd dovecot-pop3d | apt-get install dovecot-common dovecot-imapd dovecot-pop3d | ||
+ | ===== Configuration ===== | ||
+ | |||
+ | === Configuration de postfix === | ||
- | ==== Configuration de postfix ==== | ||
Là on a fait le plus simple... reste à configurer le tout... | 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 : | Première étape, créer l'utilisateur et le groupe utilisés par postfix : | ||
- | groupadd -g 5000 vmail | + | <code root> |
- | useradd -g vmail -u 5000 vmail -d /home/vmail -m | + | 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** | + | Ensuite on s'attaque au fichier de configuration de postfix à savoir : ''/etc/postfix/main.cf'' |
- | vim /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 : | 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) | 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 | myhostname=mailhost.lindev.fr | ||
Ligne 85: | Ligne 93: | ||
message_size_limit=10240000 | 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. | Voilà pour les principaux paramètres à modifier, nous allons maintenant lier postfix à la base mysql. | ||
Ligne 99: | Ligne 110: | ||
=== Contenu de ces trois fichiers : === | === Contenu de ces trois fichiers : === | ||
- | **mysql-virtual-mailbox-domains.cf** | + | <code text mysql-virtual-mailbox-domains.cf> |
- | user =**votre_utilisateur_de_BD** | + | user =**votre_utilisateur_de_BD** |
- | password =le password de l'utilisateur | + | password =le password de l'utilisateur |
- | hosts = 127.0.0.1 | + | hosts = 127.0.0.1 |
- | dbname = postfix | + | dbname = postfix |
- | query= SELECT domain FROM domain WHERE domain='%s' | + | query= SELECT domain FROM domain WHERE domain='%s' |
+ | </code> | ||
- | **mysql-virtual-mailbox-maps.cf** | + | <code text mysql-virtual-mailbox-maps.cf> |
- | user =votre_utilisateur_de_BD | + | user =votre_utilisateur_de_BD |
- | password =le password de l'utilisateur | + | password =le password de l'utilisateur |
- | hosts = 127.0.0.1 | + | hosts = 127.0.0.1 |
- | dbname = postfix | + | dbname = postfix |
- | query= SELECT maildir FROM mailbox WHERE username='%s' AND active='1' | + | query= SELECT maildir FROM mailbox WHERE username='%s' AND active='1' |
+ | </code> | ||
- | **mysql-virtual-alias-maps.cf** | + | <code text mysql-virtual-alias-maps.cf> |
- | user =votre_utilisateur_de_BD | + | user =votre_utilisateur_de_BD |
- | password =le password de l'utilisateur | + | password =le password de l'utilisateur |
- | hosts = 127.0.0.1 | + | hosts = 127.0.0.1 |
- | dbname = postfix | + | dbname = postfix |
- | query= SELECT goto FROM alias WHERE address='%s' | + | query= SELECT goto FROM alias WHERE address='%s' |
+ | </code> | ||
Pour chaque fichier, nous allons exécuter la commande **postmap** : | Pour chaque fichier, nous allons exécuter la commande **postmap** : | ||
- | postmap /etc/postfix/mysql-virtual-mailbox-domains.cf | + | <code root>postmap /etc/postfix/mysql-virtual-mailbox-domains.cf</code> |
- | postmap /etc/postfix/mysql-virtual-mailbox-maps.cf | + | <code root>postmap /etc/postfix/mysql-virtual-mailbox-maps.cf</code> |
- | postmap /etc/postfix/mysql-virtual-alias-maps.cf | + | <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 : | + | 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_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf | ||
Ligne 144: | Ligne 159: | ||
- | Très rapide et très simple, voici le fichier à modifier : **/etc/dovecot/dovecot.conf** | + | Très rapide et très simple, voici le fichier à modifier : ''/etc/dovecot/dovecot.conf'' |
Les lignes à vérifier/modifier sont : | Les lignes à vérifier/modifier sont : | ||
Ligne 190: | Ligne 205: | ||
=== Passons à la liaison dovecot/mysql : === | === Passons à la liaison dovecot/mysql : === | ||
- | Commençons par éditer le fichier **dovecot-sql.conf** | + | Commençons par éditer le fichier ''dovecot-sql.conf'' : |
driver = mysql | driver = mysql | ||
Ligne 200: | Ligne 215: | ||
Voilà, votre serveur est prêt à l'emploi, il ne reste plus qu'à installer **postfixadmin** et à remplir la base de données .. | 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 ==== | ==== Installation de postfixadmin ==== | ||
- | Récupérer **postfixadmin** comme ceci : | + | Récupérer **postfixadmin** comme ceci : |
- | + | <code user> | |
- | wget http://switch.dl.sourceforge.net/sourceforge/postfixadmin/postfixadmin_2.3rc2_all.deb | + | wget http://switch.dl.sourceforge.net/sourceforge/postfixadmin/postfixadmin_2.3rc2_all.deb |
+ | </code> | ||
=== Installer postfixadmin : === | === Installer postfixadmin : === | ||
- | dpkg -i postfixadmin_2.3rc2_all.deb | + | <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) | Créer un lien des fichiers de postfixadmin à votre serveur web (dans mon cas /var/www) | ||
- | ln -s /usr/share/postfixadmin /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 | Créer l'hôte virtuel dans apache pour vous connecter à postfix admin puis on redémarre apache | ||
- | /etc/init.d/apache2 restart | + | <code root>service apache2 restart</code> |
==== Configuration de postfixadmin ==== | ==== Configuration de postfixadmin ==== | ||
Ligne 225: | Ligne 240: | ||
Éditer le fichier de configuration **/var/www/postfixadmin/config.inc.php** | Éditer le fichier de configuration **/var/www/postfixadmin/config.inc.php** | ||
- | vim /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): | + | Les options à vérifier sont les suivantes (à adapter selon vos souhaits): |
- | + | <code php> | |
- | $CONF['configured'] = true; | + | $CONF['configured'] = true; |
- | $CONF['postfix_admin_url'] = 'http://postfixadmin.lindev.fr'; | + | $CONF['postfix_admin_url'] = 'http://postfixadmin.lindev.fr'; |
- | $CONF['default_language'] = 'fr'; | + | $CONF['default_language'] = 'fr'; |
- | $CONF['database_type'] = 'mysql'; | + | $CONF['database_type'] = 'mysql'; |
- | $CONF['database_host'] = 'localhost'; | + | $CONF['database_host'] = 'localhost'; |
- | $CONF['database_user'] = 'postfix'; | + | $CONF['database_user'] = 'postfix'; |
- | $CONF['database_password'] = '< Votre mot de passe de la base >'; | + | $CONF['database_password'] = '< Votre mot de passe de la base >'; |
- | $CONF['database_name'] = 'postfix'; | + | $CONF['database_name'] = 'postfix'; |
- | $CONF['database_prefix'] = ''; | + | $CONF['database_prefix'] = ''; |
- | $CONF['encrypt'] = 'md5'; | + | $CONF['encrypt'] = 'md5'; |
- | $CONF['domain_path'] = 'NO'; | + | $CONF['domain_path'] = 'NO'; |
- | $CONF['domain_in_mailbox'] = 'YES'; | + | $CONF['domain_in_mailbox'] = 'YES'; |
- | $CONF['vacation'] = 'YES'; | + | $CONF['vacation'] = 'YES'; |
- | $CONF['vacation_domain'] = 'autoreply-lindev.fr'; | + | $CONF['vacation_domain'] = 'autoreply-lindev.fr'; |
- | $CONF['vacation_control'] ='YES'; | + | $CONF['vacation_control'] ='YES'; |
- | $CONF['vacation_control_admin'] = 'YES'; | + | $CONF['vacation_control_admin'] = 'YES'; |
- | $CONF['alias_control'] = 'YES'; | + | $CONF['alias_control'] = 'YES'; |
- | $CONF['alias_control_admin'] = 'YES'; | + | $CONF['alias_control_admin'] = 'YES'; |
- | $CONF['special_alias_control'] = 'NO'; | + | $CONF['special_alias_control'] = 'NO'; |
- | $CONF['alias_goto_limit'] = '0'; | + | $CONF['alias_goto_limit'] = '0'; |
- | $CONF['user_footer_link'] = "http://postfixadmin.lindev.fr/main"; | + | $CONF['user_footer_link'] = "http://postfixadmin.lindev.fr/main"; |
- | $CONF['show_footer_text'] = 'YES'; | + | $CONF['show_footer_text'] = 'YES'; |
- | $CONF['footer_text'] = 'Return to postfixadmin.lindev.fr'; | + | $CONF['footer_text'] = 'Return to postfixadmin.lindev.fr'; |
- | $CONF['footer_link'] = 'http://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). | Pour les autres options elles sont soit commentées, soit inchangées ( à adapter selon vos besoins). | ||
Ligne 258: | Ligne 274: | ||
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. | 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 | + | <code user>mysql -u root -p</code> |
- | > CREATE DATABASE postfix; | + | <code sql> |
- | > GRANT ALL PRIVILEGES ON postfix.* TO @localhost | + | CREATE DATABASE postfix; |
- | IDENTIFIED BY ''; | + | GRANT ALL PRIVILEGES ON postfix.* TO @localhost IDENTIFIED BY ''; |
- | > quit | + | quit |
+ | </code> | ||
Et allez sur votre page d'administration, dans le setup (dans mon cas c'est): | Et allez sur votre page d'administration, dans le setup (dans mon cas c'est): | ||
**http://postfixadmin.lindev.fr/setup.php** | **http://postfixadmin.lindev.fr/setup.php** | ||
- | Si tout est ok, renommez le fichier 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> | ||
- | mv setup.php setup.php.diseable | ||
Voilà, vous pouvez maintenant créer vos comptes/domaines | 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 ==== | ==== Mise en place du mode vacation ==== | ||
Ligne 282: | Ligne 304: | ||
=== création de l'utilisateur local vacation === | === création de l'utilisateur local vacation === | ||
- | useradd vacation | + | <code root>useradd vacation</code> |
=== Modifier la ligne comme ci-dessous dans le fichier /etc/passwd === | === Modifier la ligne comme ci-dessous dans le fichier /etc/passwd === | ||
Ligne 291: | Ligne 313: | ||
=== Ensuite, créer un dossier pour vacation === | === Ensuite, créer un dossier pour vacation === | ||
- | mkdir /var/spool/vacation | + | <code root>mkdir /var/spool/vacation</code> |
- | chown -R vacation:vacation /var/spool/vacation | + | <code root>chown -R vacation:vacation /var/spool/vacation</code> |
- | chmod -R 700 /var/spool/vacation | + | <code root>chmod -R 700 /var/spool/vacation</code> |
=== Copier le script vacation.pl dans le dossier de vacation (/var/spool/vacation) === | === Copier le script vacation.pl dans le dossier de vacation (/var/spool/vacation) === | ||
Ligne 299: | Ligne 321: | ||
[[http://phpu.lindev.fr/dld.php?i=2509e7ec-f8a0-4dc6-8fda-87997b646d29|Vacation.pl]] | [[http://phpu.lindev.fr/dld.php?i=2509e7ec-f8a0-4dc6-8fda-87997b646d29|Vacation.pl]] | ||
- | cd /var/spool/vacation | + | <code root>cd /var/spool/vacation</code> |
- | wget http://phpu.lindev.fr/dld.php?i=2509e7ec-f8a0-4dc6-8fda-87997b646d29 | + | <code root>wget http://phpu.lindev.fr/dld.php?i=2509e7ec-f8a0-4dc6-8fda-87997b646d29</code> |
- | chmod 700 vacation.pl | + | <code root>chmod 700 vacation.pl</code> |
Ligne 307: | Ligne 329: | ||
Modifier les paramètres de connexion à la base de données et installer les modules nécessaires | 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> | ||
- | apt-get install libmail-sendmail-perl | + | Nous devons ensuite modifier le fichier ''/etc/postfix/master.cf'': |
- | apt-get install libdbd-pg-perl | + | |
- | apt-get install libemail-valid-perl | + | |
- | apt-get install libmime-perl | + | |
- | apt-get install libmime-charset-perl | + | |
- | apt-get install libmime-encwords-perl | + | |
- | + | ||
- | Nous devons ensuite modifier le fichier **/etc/postfix/master.cf**: | + | |
=== Modification de master.cf === | === Modification de master.cf === | ||
Ligne 330: | Ligne 346: | ||
transport_maps = hash:/etc/postfix/transport | transport_maps = hash:/etc/postfix/transport | ||
- | nous allons donc créer le fichier **/etc/postfix/transport** avec le contenu suivant : | + | nous allons donc créer le fichier ''/etc/postfix/transport'' avec le contenu suivant : |
- | + | <code text /etc/postfix/transport> | |
- | autoreply-lindev.fr vacation | + | autoreply-lindev.fr vacation |
- | + | </code> | |
- | //Notez que autoreply-lindev.fr correspond à l'option $CONF['vacation_domain'] = 'autoreply-lindev.fr'; de la configuration de postfixadmin.// | + | |
+ | //Notez que autoreply-lindev.fr correspond à l'option ''$CONF['vacation_domain'] = 'autoreply-lindev.fr';'' de la configuration de postfixadmin.// | ||
=== Activer le fichier transport === | === Activer le fichier transport === | ||
- | postmap /etc/postfix/transport | + | <code root>postmap /etc/postfix/transport</code> |
Et voilà c'est fini le mode vacation est maintenant opérationnel ! | Et voilà c'est fini le mode vacation est maintenant opérationnel ! | ||
- | |||
Nous allons redémarrer **postfix** et **dovecot** via cette commande : | Nous allons redémarrer **postfix** et **dovecot** via cette commande : | ||
- | /etc/init.d/postfix restart | + | <code root>service postfix restart</code> |
- | /etc/init.d/dovecot restart | + | <code root>service dovecot restart</code> |
==== Surveiller les logs ==== | ==== Surveiller les logs ==== | ||
Ligne 354: | Ligne 368: | ||
Pour voir les logs en temps réels, nous pouvons utiliser cette commande | Pour voir les logs en temps réels, nous pouvons utiliser cette commande | ||
- | tail -f /var/log/mail.log | + | <code root>tail -f /var/log/mail.log</code> |
==== Conclusion ==== | ==== 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. | 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 ==== | ==== Sources ==== | ||
[[http://www.lindev.fr|Lindev.fr]] | [[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]] |