SASL est un daemon qui permet l’authentification smtp avec Postfix.
L’idée c’est : Postfix => SASL => PAM => MySQL
apt-get install sasl2-bin libsasl2-2 libsasl2-modules libsasl2-modules-sql libpam-mysql
on ajoute dans main.cf
nano /etc/postfix/main.cf # Support Authentification SASL smtpd_sasl_auth_enable = yes smtpd_sasl_path = smtpd smtpd_sasl_local_domain = $myhostname smtpd_tls_auth_only = no broken_sasl_auth_clients = yes smtpd_sasl_security_options = noanonymous smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_unauth_pipelining, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_invalid_hostname, reject_rbl_client list.dsbl.org, reject_rbl_client bl.spamcop.net, reject_rbl_client sbl-xbl.spamhaus.org
On rajoute ceci dans le fichier /etc/postfix/sasl/smtpd.conf, histoire que Postfix puisse communiquer avec SASL
pwcheck_method: saslauthd mech_list: PLAIN LOGIN log_level: 5 allow_plaintext: true password_format: crypt auxprop_plugin: mysql sql_engine: mysql sql_hostnames: 127.0.0.1 sql_user: postfix sql_passwd: votre_mot_de_passe sql_database: postfix sql_select: SELECT password FROM mailbox WHERE username = '%u'
On modifie le fichier /etc/default/saslauthd pour que SASL communique avec PAM :
START=yes MECHANISMS="pam" OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
On supprime le répertoire /var/run/saslauthd et on crée un lien symbolique entre /var/spool/postfix/var/run/saslauthd et /var/run/saslauthd
rmdir /var/run/saslauthd/ ln -s /var/spool/postfix/var/run/saslauthd/ /var/run/
Il faut ensuite créer le fichier /etc/pam.d/smtp et mettre ceci dedans pour que PAM communique avec MySQL :
auth required pam_mysql.so host=127.0.0.1 user=postfix passwd=votre_mot_de_passe db=postfix table=mailbox usercolumn=name passwdcolumn=password crypt=1 account sufficient pam_mysql.so host=127.0.0.1 user=postfix passwd=votre_mot_de_passe db=postfix table=mailbox usercolumn=name passwdcolumn=password crypt=1
On rajoute l’utilisateur postfix au groupe sasl :
adduser postfix sasl
Enfin, on modifie le script de démarrage de Postfix pour qu’il tienne compte du fichier /etc/postfix/sasl/smtpd.conf :
nano /etc/init.d/postfix
FILES="etc/localtime etc/services etc/resolv.conf etc/hosts \ etc/nsswitch.conf etc/nss_mdns.config etc/postfix/sasl/smtpd.conf"
et on relance les services saslauthd et postfix
service saslauthd restart service postfix restart
pour tester la connexion:
testsaslauthd -u fred@domaine.tld
Hey ! Merci, super tuto !
Juste le dernier passage « Enfin, on modifie le script de démarage de Postfix pour qu’il tienne compte du fichier » il est ou ce script de démarrage ? Tu pourrais juste me donner le chemin du fichier car impossible de le trouver…
je me suis replonger sur le tuto, en faite il faut juste relancer les services postfix et saslauthd
Ha dac :-/
Suivi 4 fois a la lettre et même sur un systéme neuf, mais saslauthd refuse de demarrer
t’as jeté un oeil dans /var/log/syslog? lorsque tu relances
saslauthd
salut je viens d’installer mandriva et je constate qu’il ne plante 5 secondes et puis la souris n’est pas rapide.
je voudrais savoir si je dois installer des paquets pour les regler ou si je dois configuer dans le desktop.
merci et a plus.
toshiba L300 2go ram et 320 Hdd.
salut armeloo,
j’ai des doutes entre ton problème et celui de l’article: SASL pour Postfix?
ton problème n’est-il pas plutôt lié avec l’article http://memo-linux.com/tuto-installation-mandriva-2011-hydrogen/
Page en favoris, juste parfait ;)
1 semaine que je coinçais pour réussir à configurer ça, il me manquait juste la partie auth (la plus importante quand même :p)
Marche du 1er coup avec ton tuto, un grand merci à toi !
de rien et au plaisir! :-)
Bonjour,
J’aurais voulu faire une authentification SASL sur notre systeme de messagerie,
Le probleme ce que: J’ai deux tables mail_user et domain
ci-desous les descriprtion:
mail_users:
Field | Type | Null | Key | Default | Extra |
+——————-+——————+——+—–+———+—————-+
| mail_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| mail_acc | varchar(200) | YES | | NULL | |
| mail_pass | varchar(150) | YES | | NULL | |
| mail_crypt | varchar(150) | YES | | NULL | |
| mail_forward | text | YES | | NULL | |
| domain_id | int(10) unsigned | YES | | NULL | |
| mail_type | varchar(20) | YES | | NULL | |
| sub_id | int(10) unsigned | YES | | NULL | |
| status | varchar(255) | YES | | NULL | |
| mail_auto_respond | text | YES | | NULL | |
| mail_host | varchar(128) | YES | | NULL
domain:
| Field | Type | Null | Key | Default | Extra |
+———————-+——————+——+—–+———+—————-+
| domain_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| domain_name | varchar(200) | YES | | NULL | |
| domain_gid | int(10) unsigned | NO | | 0 | |
| domain_uid | int(10) unsigned | NO | | 0 | |
| domain_admin_id | int(10) unsigned | NO | | 0 | |
| domain_created_id | int(10) unsigned | NO | | 0 | |
| domain_created | int(10) unsigned | NO | | 0 | |
| domain_last_modified | int(10) unsigned | NO | | 0 | |
| domain_mailacc_limit | int(11) | YES | | NULL | |
| domain_ftpacc_limit | int(11) | YES | | NULL | |
| domain_traffic_limit | int(11) | YES | | NULL | |
| domain_sqld_limit | int(11) | YES | | NULL | |
| domain_sqlu_limit | int(11) | YES | | NULL | |
| domain_status | varchar(255) | YES | | NULL | |
| domain_alias_limit | int(11) | YES | | NULL | |
| domain_subd_limit | int(11) | YES | | NULL | |
| domain_ip_id | int(10) unsigned | YES | | NULL | |
| domain_disk_limit | int(30) unsigned | YES | | NULL | |
| domain_disk_usage | int(30) unsigned | YES | | NULL | |
| domain_php | varchar(15) | YES | | NULL | |
| domain_cgi | varchar(15) | YES | | NULL |
le nom de l’utilisateur se trouve dans mail_acc
et le nom du domain domain_name
donc mon soucie se trouve dans le fichier
/etc/pam.d/smtp
car
auth required pam_mysql.so host=127.0.0.1 user=postfix passwd=votre_mot_de_passe db=postfix table=mailbox usercolumn=name passwdcolumn=password crypt=1
account sufficient pam_mysql.so host=127.0.0.1 user=postfix passwd=votre_mot_de_passe db=postfix table=mailbox usercolumn=name passwdcolumn=password crypt=1
car le nom de l’utilisateur et le domaine est separe mais pas comme votre base
donc je voulais obtenir comme usercolumn=name le mail_acc@domain_name qui se trouve dans les deux tables,
Est-ce qu’il serait possible de faire une requete complexe SQL pour joindre ces deux chaine dans ce fichier pour avoir usercolumn=name car mon tables mailbox est different de la votre.
Pourriez vous m’aider s’il vous plait????