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
postfix_mysql_tls_sasl [Le 12/05/2013, 20:03]
78.121.105.186 [Création des utilisateurs/domaines]
postfix_mysql_tls_sasl [Le 11/09/2022, 11:53] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 8: Ligne 8:
 Ce tuto a été réalisé sur une Debian Etch. Il est compatible pour Ubuntu. Ce tuto a été réalisé sur une Debian Etch. Il est compatible pour Ubuntu.
 La mise en place d'une telle solution demande du temps ainsi qu'un certain niveau pour savoir étudier les logs s'il y a une erreur. La mise en place d'une telle solution demande du temps ainsi qu'un certain niveau pour savoir étudier les logs s'il y a une erreur.
 +
 +<​note>​note du 15 mars 2014 : Ce tuto nécesssite d'​être revu du fait de l'​obsolescence de certains paquets</​note>​
  
 Niveau confirmé. Niveau confirmé.
 Temps d'​application : une bonne demi-heure. Temps d'​application : une bonne demi-heure.
  
-[[http://​www.postfix.org/​|Postfix]] est un mta (Mail Transfer Agent, simple d'​utilisation contrairement à Sendmail ou bien qmail. Postfix est utilisé par défaut chez Mac OS X, disponible sur GNU/Linux, la famille BSD et d'​autres unix encore. ​+[[http://​www.postfix.org/​|Postfix]] est un mta (Mail Transfer Agent, simple d'​utilisation contrairement à Sendmail ou bien qmail. Postfix est utilisé par défaut chez Mac OS X, disponible sur GNU/Linux, la famille BSD et d'​autres unix encore.
  
 Ce tuto vous permettra de mettre en place une solution multi-domaine basée sur des utilisateurs et domaines virtuels, couplée avec MySQL. Postfix peut être couplé a LDAP et ProgresSQL. Ce tuto vous permettra de mettre en place une solution multi-domaine basée sur des utilisateurs et domaines virtuels, couplée avec MySQL. Postfix peut être couplé a LDAP et ProgresSQL.
Ligne 23: Ligne 25:
  
 Paquets principaux [[:​tutoriel:​comment_installer_un_paquet|à installer]] : **postfix postfix-mysql mysql-client-5.0 mysql-server-5.0 courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl ​ courier-imap courier-imap-ssl postfix-tls libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl phpmyadmin** Paquets principaux [[:​tutoriel:​comment_installer_un_paquet|à installer]] : **postfix postfix-mysql mysql-client-5.0 mysql-server-5.0 courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl ​ courier-imap courier-imap-ssl postfix-tls libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl phpmyadmin**
 +
 +<note warning>​postfix-tls est un paquet obsolète il semble faire partie de postfix </​note>​
 +<​note>​je préfère mettre mysql-client mysql-server (sans préciser la version) pour réussir l'​installation à tous les coups</​note>​
  
 <note tip>Chez moi, le package courier-authlib-mysql s'​appelle courier-authmysql</​note>​ <note tip>Chez moi, le package courier-authlib-mysql s'​appelle courier-authmysql</​note>​
Ligne 39: Ligne 44:
 mysqladmin -u root password '​xxxxxxxx'​ mysqladmin -u root password '​xxxxxxxx'​
 </​code>​ </​code>​
 +
  
 ==== Postfix ==== ==== Postfix ====
Ligne 52: Ligne 58:
   GRANT ALL PRIVILEGES ON postfix.* TO "​postfix"​@"​localhost"​ IDENTIFIED BY '​motdepasse';​   GRANT ALL PRIVILEGES ON postfix.* TO "​postfix"​@"​localhost"​ IDENTIFIED BY '​motdepasse';​
  
-Insertion des tables dans la base de données ​+Insertion des tables dans la base de données
  
   USE postfix;   USE postfix;
Ligne 96: Ligne 102:
   quit;   quit;
  
-On crée un dossier nommé vmail. Ce dossier regroupera les boîtes mail des utilisateurs. ​+On crée un dossier nommé vmail. Ce dossier regroupera les boîtes mail des utilisateurs.
  
    $ groupadd -g 5000 vmail    $ groupadd -g 5000 vmail
Ligne 123: Ligne 129:
   #​relay_domains = mysql:/​etc/​postfix/​mysql_relay_domains_maps.cf   #​relay_domains = mysql:/​etc/​postfix/​mysql_relay_domains_maps.cf
  
-Le smtp de postfix est chrooter, il faut donc le retirer afin d'​assurer son bon fonctionnement. On retire le chroot dans /​etc/​postfix/​master.cf et modifier comme dessous.+Le smtp de postfix est chrooté, il faut donc le retirer afin d'​assurer son bon fonctionnement. On retire le chroot dans /​etc/​postfix/​master.cf et modifier comme dessous.
  
   #   #
Ligne 145: Ligne 151:
 Cela peut également vous servir le jour où vous désirez modifier le mot de passe...</​note>​ Cela peut également vous servir le jour où vous désirez modifier le mot de passe...</​note>​
  
-mysql_virtual_alias_maps.cf+Creation des fichiers : mysql_virtual_alias_maps.cf, mysql_virtual_domains_maps.cf,​ mysql_virtual_mailbox_maps.cf,​ mysql_virtual_mailbox_limit_maps.cf,​ mysql_relay_domains_maps.cf
  
-  ​user = postfix +  ​MYSQL_USER=postfix 
-  ​password ​= motdepasse +  ​MYSQL_PASSWORD=motdepasse 
-  ​hosts = 127.0.0.1+  ​MYSQL_HOST=127.0.0.1 
 +   
 +  cat << EOF >/​etc/​postfix/​mysql_virtual_alias_maps.cf 
 +  user = $MYSQL_USER 
 +  password = $MYSQL_PASSWORD 
 +  hosts = $MYSQL_HOST
   dbname = postfix   dbname = postfix
   query = SELECT goto FROM alias WHERE address='​%s'​ AND active = 1   query = SELECT goto FROM alias WHERE address='​%s'​ AND active = 1
- +  EOF 
-mysql_virtual_domains_maps.cf +   
- +  cat <<EOF >/​etc/​postfix/​mysql_virtual_domains_maps.cf 
-  user = postfix +  user = $MYSQL_USER 
-  password = motdepasse +  password = $MYSQL_PASSWORD 
-  hosts = 127.0.0.1+  hosts = $MYSQL_HOST
   dbname = postfix   dbname = postfix
   query = SELECT domain FROM domain WHERE domain='​%s'​   query = SELECT domain FROM domain WHERE domain='​%s'​
   #optional query to use when relaying for backup MX   #optional query to use when relaying for backup MX
   #query = SELECT domain FROM domain WHERE domain='​%s'​ and backupmx = '​0'​ and active = '​1'​   #query = SELECT domain FROM domain WHERE domain='​%s'​ and backupmx = '​0'​ and active = '​1'​
- +  EOF 
-mysql_virtual_mailbox_maps.cf +   
- +  cat <<EOF >/​etc/​postfix/​mysql_virtual_mailbox_maps.cf 
-  user = postfix +  user = $MYSQL_USER 
-  password = motdepasse +  password = $MYSQL_PASSWORD 
-  hosts = 127.0.0.1+  hosts = $MYSQL_HOST
   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
- +  EOF 
-mysql_virtual_mailbox_limit_maps.cf +   
- +  cat <<​EOF>/​etc/​postfix/​mysql_virtual_mailbox_limit_maps.cf 
-  user = postfix +  user = $MYSQL_USER 
-  password = motdepasse +  password = $MYSQL_PASSWORD 
-  hosts = 127.0.0.1+  hosts = $MYSQL_HOST
   dbname = postfix   dbname = postfix
   query = SELECT quota FROM mailbox WHERE username='​%s'​   query = SELECT quota FROM mailbox WHERE username='​%s'​
- +  EOF 
-mysql_relay_domains_maps.cf +   
- +  cat <<​EOF>/​etc/​postfix/​mysql_relay_domains_maps.cf 
-  user = postfix +  user = $MYSQL_USER 
-  password = motdepasse +  password = $MYSQL_PASSWORD 
-  hosts = 127.0.0.1+  hosts = $MYSQL_HOST
   dbname = postfix   dbname = postfix
   query = SELECT domain FROM domain WHERE domain='​%s'​ and backupmx = '​1'​   query = SELECT domain FROM domain WHERE domain='​%s'​ and backupmx = '​1'​
 +  EOF
  
 Pour le bon fonctionnement et la sécurité il faut exécuter ces deux lignes de commandes Pour le bon fonctionnement et la sécurité il faut exécuter ces deux lignes de commandes
Ligne 265: Ligne 277:
 warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory
  
-Il faut ajouter, dans le fichier ​    /​etc/​postfix/​sasl/​smtpd.conf la ligne: ​+Il faut ajouter, dans le fichier ​    /​etc/​postfix/​sasl/​smtpd.conf la ligne:
  
   saslauthd_path:​ /​var/​spool/​postfix/​var/​run/​saslauthd/​mux   saslauthd_path:​ /​var/​spool/​postfix/​var/​run/​saslauthd/​mux
Ligne 286: Ligne 298:
  
  
-Créez un  lien symbolique pour que cela fonctionne lorsque postfix est chrooter ​[sionib] :+Créez un  lien symbolique pour que cela fonctionne lorsque postfix est chrooté ​[sionib] :
  
    ln -s /​var/​spool/​postfix/​var/​run/​saslauthd /​var/​run/​saslauthd    ln -s /​var/​spool/​postfix/​var/​run/​saslauthd /​var/​run/​saslauthd
Ligne 295: Ligne 307:
  
    ln -s /​var/​spool/​postfix/​var/​run/​saslauthd /var/run/    ln -s /​var/​spool/​postfix/​var/​run/​saslauthd /var/run/
 +
 +</​note>​
 +
 +<note warning> Depuis au moins Ubuntu 14.04, le lien symbolique disparaît à chaque reboot. Comme workaround, éditez /​etc/​init.d/​rc.local :
 +
 +   sudo vi /​etc/​init.d/​rc.local
 +
 +
 +Et ajoutez ces lignes tout à la fin du fichier :
 + 
 +   /​bin/​sleep 5
 +   ln -s /​var/​spool/​postfix/​var/​run/​saslauthd /​var/​run/​saslauthd
 +   /​etc/​init.d/​saslauthd restart
 +
 +Ainsi le lien sera recréé à chaque reboot et sasl fonctionnera correctement.
  
 </​note>​ </​note>​
Ligne 351: Ligne 378:
    $ sudo apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip arj bzip2 razor pyzor dcc-client    $ sudo apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip arj bzip2 razor pyzor dcc-client
  
 +<note warning> les paquets dcc-client dcc-server dcc-common n'​existent plus sous debian note du 15/​03/​2014</​note>​
  
 Sous hardy 8.4, le paquet dcc-client n'​existe plus, pas même dcc-server. [[http://​www.howtoforge.com/​the-perfect-spamsnake-ubuntu-8.04]] est peut être une piste en attendant la mise à jour de cette documentation. Sous hardy 8.4, le paquet dcc-client n'​existe plus, pas même dcc-server. [[http://​www.howtoforge.com/​the-perfect-spamsnake-ubuntu-8.04]] est peut être une piste en attendant la mise à jour de cette documentation.
  
 Il est toujours possible de télécharger le paquet dcc-server (qui remplace dcc-client) via les paquets ubuntu cela marche avec la version 8.4 et la version 8.10. Il est toujours possible de télécharger le paquet dcc-server (qui remplace dcc-client) via les paquets ubuntu cela marche avec la version 8.4 et la version 8.10.
-Premièrement le paquet dcc-server a besoin de dcc-common pour fonctionner.  +Premièrement le paquet dcc-server a besoin de dcc-common pour fonctionner. 
-  * dcc-common : http://​packages.ubuntu.com/​gutsy/​dcc-common +  * dcc-common : https://​packages.ubuntu.com/​gutsy/​dcc-common 
-  * dcc-server : http://​packages.ubuntu.com/​gutsy/​dcc-server+  * dcc-server : https://​packages.ubuntu.com/​gutsy/​dcc-server
  
 Par exemple on peut procéder ainsi : Par exemple on peut procéder ainsi :
Ligne 661: Ligne 689:
 ==== Spamassassin ==== ==== Spamassassin ====
  
-Editez le fichier /​etc/​default/​spamassassin+Avant tout, il faut créer l'​utilisateur "​spamd"​
  
-  ENABLED=1+   sudo groupadd spamd 
 +   sudo useradd -g spamd -s /​sbin/​nologin -d /​var/​lib/​spamassassin spamd 
 +   sudo mkdir /​var/​lib/​spamassassin 
 +   sudo chown spamd:spamd /​var/​lib/​spamassassin 
 +   sudo mkdir /​var/​log/​spamd 
 +   sudo chown spamd:spamd /​var/​log/​spamd 
 + 
 +Modifer le fichier /​etc/​default/​spamassassin : 
 + 
 +   ENABLED=1 
 +   ​SAHOME="/​var/​lib/​spamassassin/"​ 
 +   ​OPTIONS="​--create-prefs --max-children 5 --username spamd --helper-home-dir ${SAHOME} -s /​var/​log/​spamd/​spamd.log"​ 
 +   ​PIDFILE="​${SAHOME}spamd.pid"​ 
 +  ​
  
 Editez le fichier /​etc/​spamassassin/​local.cf Editez le fichier /​etc/​spamassassin/​local.cf
Ligne 701: Ligne 742:
 Démarrez le daemon spamassassin Démarrez le daemon spamassassin
  
-   $ /​etc/​init.d/​spamassassin start+   $ /​etc/​init.d/​spamassassin start    
 +Pour dire à postfix d'​utiliser spamassassin,​ modifier le fichier "/​etc/​postfix/​master.cf"​ et changer la ligne :
  
 +   ​smtp ​     inet  n       ​- ​      ​- ​      ​- ​      ​- ​      ​smtpd ​  
 +par
 +   ​smtp ​     inet  n       ​- ​      ​- ​      ​- ​      ​- ​      smtpd
 +       -o content_filter=spamassassin
 +et à la fin du fichier, ajoutez :
 +   ​spamassassin unix -     ​n ​      ​n ​      ​- ​      ​- ​      pipe
 +       ​user=spamd argv=/​usr/​bin/​spamc -f -e    ​
 +       /​usr/​sbin/​sendmail -oi -f ${sender} ${recipient}
 Créez le fichier /​usr/​sbin/​sa_rules_update.sh Créez le fichier /​usr/​sbin/​sa_rules_update.sh
  
Ligne 780: Ligne 830:
   quit   quit
  
-Si les tests sont ok, votre serveur de mail est opérationnel. ​ +Si les tests sont ok, votre serveur de mail est opérationnel.
- +
- +
- +
 ===== Création des utilisateurs/​domaines ===== ===== Création des utilisateurs/​domaines =====
  
Ligne 814: Ligne 860:
 ===== Création du répertoire de stockage des mails ===== ===== Création du répertoire de stockage des mails =====
  
-Il faut créer le répertoire ou seront ​stocker ​les mails (envoyés, brouillons, etc...) +Il faut créer le répertoire ou seront ​stockés ​les mails (envoyés, brouillons, etc...) 
-Aller dans le répertoire ou tout les comptes mails sont enregistrer ​(/​home/​vmail par exemple), puis+Aller dans le répertoire ou tout les comptes mails sont enregistrés ​(/​home/​vmail par exemple), puis
  
   $ maildirmake VOTREREPERTOIREDEMAIL   $ maildirmake VOTREREPERTOIREDEMAIL
Ligne 821: Ligne 867:
 Modifier VOTREREPERTOIREDEMAIL par le nom que vous voulez donner au compte mail (machin@domain.ltd par exemple). Modifier VOTREREPERTOIREDEMAIL par le nom que vous voulez donner au compte mail (machin@domain.ltd par exemple).
  
-Donner les droits ​adéquates au dossiers ​contenue ​dans votre répertoire où les comptes mails sont enregistrés :+Donner les droits ​adéquats aux dossiers ​contenus ​dans votre répertoire où les comptes mails sont enregistrés :
  
   $ sudo chown vmail:vmail -R /​home/​vmail;​   $ sudo chown vmail:vmail -R /​home/​vmail;​
Ligne 829: Ligne 875:
  
 <note info> <note info>
-Pour vérifier que sasl va bien chercher dans la db les utilisateurs,​ mettez un nom d'​utilisateur inexistant dans l'​option -u. +Pour vérifier que sasl va bien chercher dans la db les utilisateurs,​ mettez un nom d'​utilisateur inexistant dans l'​option -u.
 La log /​var/​log/​auth.log devrait indiquer que le SELECT SQL ne retourne pas de résultat. La log /​var/​log/​auth.log devrait indiquer que le SELECT SQL ne retourne pas de résultat.
 Dans le cas contraire, vous avez probablement un problème de configuration. Dans le cas contraire, vous avez probablement un problème de configuration.
Ligne 852: Ligne 898:
   chown vmail:vmail -R /​home/​vmail;​   chown vmail:vmail -R /​home/​vmail;​
  
-- Si une fois un test d'​envoi de mail effectué (test SMTP+SASL), vous obtenez dans le journal /​var/​log/​auth.log le message suivant : +- Si une fois un test d'​envoi de mail effectué (test SMTP+SASL), vous obtenez dans le journal /​var/​log/​auth.log le message suivant :
   postfix/​smtpd[23340]:​ sql_select option missing   postfix/​smtpd[23340]:​ sql_select option missing
   postfix/​smtpd[23340]:​ auxpropfunc error no mechanism available ​   postfix/​smtpd[23340]:​ auxpropfunc error no mechanism available ​
  • postfix_mysql_tls_sasl.1368381785.txt.gz
  • Dernière modification: Le 12/05/2013, 20:03
  • par 78.121.105.186