Différences
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 | ||
postfix_mysql_tls_sasl [Le 12/06/2014, 10:49] 82.229.111.95 [Première partie] orthographe |
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 14: | Ligne 14: | ||
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 44: | Ligne 44: | ||
mysqladmin -u root password 'xxxxxxxx' | mysqladmin -u root password 'xxxxxxxx' | ||
</code> | </code> | ||
+ | |||
==== Postfix ==== | ==== Postfix ==== | ||
Ligne 57: | 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 101: | 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 128: | 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 150: | 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 270: | 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 291: | 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 303: | Ligne 310: | ||
</note> | </note> | ||
- | <note warning> Depuis au moins Ubuntu 14.04, le lien symbolique disparaît à chaque reboot. Comme workaround, éditez /etc/init.d/rc.local : | + | <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 | sudo vi /etc/init.d/rc.local | ||
- | Et ajoutez ces lignes tout à la fin du fichier : | + | Et ajoutez ces lignes tout à la fin du fichier : |
/bin/sleep 5 | /bin/sleep 5 | ||
Ligne 376: | Ligne 383: | ||
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 736: | Ligne 743: | ||
$ /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 : | + | Pour dire à postfix d'utiliser spamassassin, modifier le fichier "/etc/postfix/master.cf" et changer la ligne : |
smtp inet n - - - - smtpd | smtp inet n - - - - smtpd | ||
- | par | + | par |
smtp inet n - - - - smtpd | smtp inet n - - - - smtpd | ||
-o content_filter=spamassassin | -o content_filter=spamassassin | ||
- | et à la fin du fichier, ajoutez : | + | et à la fin du fichier, ajoutez : |
spamassassin unix - n n - - pipe | spamassassin unix - n n - - pipe | ||
user=spamd argv=/usr/bin/spamc -f -e | user=spamd argv=/usr/bin/spamc -f -e | ||
Ligne 823: | 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 857: | 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 enregistrés (/home/vmail par exemple), puis | Aller dans le répertoire ou tout les comptes mails sont enregistrés (/home/vmail par exemple), puis | ||
Ligne 864: | 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 872: | 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 895: | 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 |