… ou le smtp
authentifié.
But: servir de relay mail, uniquement si l'envoyeur est authentifié.
On utilisera “Cyrius SASL” …
~~READMORE~~
# aptitude install sasl2-bin
On voit :
... update-rc.d: warning: default stop runlevel arguments (0 1 6) do not match saslauthd Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning). ...
D’après la doc : /usr/share/doc/sasl2-bin/README.Debian.gz
On utilise un Postfix
“chrooter” ? Oui par defaut.
mux
” dans son environnement “chroot
”dpkg-statoverride
”postfix
” dans le groupe “sasl
”
En pratique:
Pour mettre la socket saslauthd dans le chroot Postfix, editer /etc/default/saslauthd
et fixer OPTIONS
comme cela (vous pouvez omettre -c):
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
Et aussi, mettre/modifier:
# TJ ----------- #START=no START=yes # --------------
“To set the run directory using dpkg-statoverride, run this command as root
” :
# dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd
Et pour finir, ajouter le user Postfix au groupe sasl :
# adduser postfix sasl
Les lib sasl sont là:
/usr/lib/sasl2/
… et c'est bien. Par defaut, on a dans la conf:
# postconf -d | grep smtpd_sasl smtpd_sasl_auth_enable = no smtpd_sasl_authenticated_header = no smtpd_sasl_exceptions_networks = smtpd_sasl_local_domain = smtpd_sasl_path = smtpd smtpd_sasl_security_options = noanonymous smtpd_sasl_tls_security_options = $smtpd_sasl_security_options smtpd_sasl_type = cyrus
et c'est globalement bien (sauf que c'est encore disable), et notamment:
smtpd_sasl_path = smtpd smtpd_sasl_security_options = noanonymous smtpd_sasl_type = cyrus
La conf du daemon “sasl” doit être dans :
/etc/postfix/sasl/smtpd.conf
… ce qui est en adéquation avec ça:
# postconf -d | grep smtpd_sasl_path smtpd_sasl_path = smtpd
(le “.conf
” est ajouté automatiquement)
Donc, dans /etc/postfix/sasl/smtpd.conf
on a :
pwcheck_method: saslauthd saslauthd_path: /var/run/saslauthd/mux mech_list: login plain
le paramètre “saslauthd_path ” est relatif au chroot. |
Comme dit la doc : Do not specify any other mechanisms in mech_list than PLAIN or LOGIN when using saslauthd
Et enfin :
# /etc/init.d/saslauthd start
(parce que le daemon n'avait pas encore demarré …)
Le “mux
” est bien créé là: /var/spool/postfix/var/run/saslauthd/mux
# testsaslauthd -u <user> -p <password> -f /var/spool/postfix/var/run/saslauthd/mux
Si Ok:
0: OK "Success."
Sinon:
0: NO "authentication failed"
Eviter de créer un compte test avec le mot de passe test (ou autres evidences) .En moins de 24h, ce compte sera exploité par des intrus !!! |
Maintenant, on va faire en sorte que Postfix
utilise sasl
(qui n'est qu'un simple daemon tout seul pour l'instant)
Par defaut, Postfix est prêt a causer avec “Cyrius” (on la vu plus haut): c'est bien.
Bug avec certains clients Outlook: ( lien: http://www.postfix.org/SASL_README.html ) .
Dans ce cas, prévoir d'ajouter dans /etc/postfix/main.cf
:
broken_sasl_auth_clients = yes
… ce que je fais, puisque dixit la doc: ça ne casse rien pour les autres clients.
Mais surtout, il faut activer le SASL dans /etc/postfix/main.cf
:
############################ # SASL # smtp authentifié ############################ smtp_sasl_auth_enable = no smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $mydomain unknown_local_recipient_reject_code = 450 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination broken_sasl_auth_clients = yes
… et dans aussi :
# avec SASL devient: smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated
Et enfin:
# postfix reload
S'il y a des “warning” et autres “fatal” dans les logs:
Verifier que saslauthd_path
(dans sasl/smtpd.conf
) pointe bien sur la socket “mux
”, que les droits sont corrects, et que “postfix
” est dans le groupe “sasl
”.
On test vite:
$ telnet 0 25
On tape:
EHLO titi.localdomain
On devrait voir la ligne:
... 250-AUTH PLAIN LOGIN ...
… ainsi que 250-AUTH=PLAIN LOGIN
, si on a appliqué le broken_sasl_auth_clients = yes
vu plus haut.
Quand un utilisateur est authentifié, on a alors:
... ns postfix/smtpd[6880]: 8EE724FF1D: client=milf94-7-xxxxx.livebox.net[xxxxxx], sasl_method=PLAIN, sasl_username=xxxxx@tjaouen.fr
Voila.
UPDATE: 2016/09/11 |
L'authentification fonctionne, mais elle ne défini pas les utilisateurs ayant le droit de s'authentifier !!!
Ainsi, si par malheur vous avez un utilisateur quelconque avec un login/pass très simple (genre: test/test ), alors “saslauthd
” lui permettra d'envoyer des mails !!!!
On peut restreindre les uid/gid en jouant avec les modules PAM.
Imaginons que les comptes crées ont un uid entre '2000' et '9999', et qu'ils sont tous dans le groupe “users
” .
Alors on va créer un fichier là: “/etc/pam.d/smtp
” , contenant (exemple):
auth required pam_succeed_if.so quiet_success user ingroup users auth required pam_succeed_if.so quiet_success uid >= 2000 auth required pam_succeed_if.so quiet_success uid <= 9999 # Poursuivre l'authentification normale: @include other
Ne pas oublier le “@include other ” , sinon vous transformez votre serveur en “open relay” ! |
Relancer le service:
# /etc/init.d/saslauthd restart
Tester:
$ testsaslauthd -r <domain> -s smtp -u login -p pass -f /var/spool/postfix/var/run/saslauthd/mux
Remplacer “<domain>
” par ce que contient “$mydomain
” dans votre conf.