Discuter:Netqmail/Vpopmail

Un article de Wiki SOS-ADMIN.

option uid/gid

Bonjour,

Lorsque j'exécute le qmail-smtpd frainchement compilé et installé, tout se passe bien, entre autre, par exemple :

srv160 bin # ./qmail-smtpd
220 srv160.sd-france.net ESMTP
mail from: david@euro-web.fr
250 ok
rcpt to: fake@srv160.sd-france.net
CHKUSER rejected rcpt: from <david@euro-web.fr::> remote <:unknown:unknown> rcpt <fake@srv160.sd-france.net> : not existing recipient
511 sorry, no mailbox here by that name (#5.1.1 - chkuser)
quit
221 srv160.sd-france.net

par contre, lorsque je passe par telnet/25, ça passe pas, en fait ça passe, aucun destinataire n'est rejeté, un strace révèle la cause :

[pid 18108] open("/var/vpopmail/domains/srv160.sd-france.net/.qmail-default", O_RDONLY|O_NONBLOCK) = -1 EACCES (Permission denied)
[pid 18108] setresgid32(-1, 200, -1)    = 0
[pid 18108] setresuid32(-1, 201, -1)    = 0
[pid 18108] write(2, "CHKUSER accepted rcpt: from <dav"..., 177CHKUSER accepted rcpt: from <david@euro-web.fr::> remote
:lns-bzn-22-82-249-127-181.adsl.proxad.net:82.249.127.181> rcpt <fake@srv160.sd-france.net> : found existing recipient
) = 177

ce qui est pas si mal, puisque chkuser ne refuse un mail que si il est certain qu'il doit l'être.

je suppose que l'option uid/gid est approprié pour pouvoir "obtenir" les droits nécéssaires.

seul hic, cette option est à exclure avec TLS. que faire ?


  • Gcuesta:
Si je me souvient bien, le démon qmail-smtpd tourne avec un des utilisateurs qmail (qmaill)
alors que les fichiers de vpopmail sont vpopmail:vchkpw et en 700;
  • DaviXX:
Oui, je sais :)
Ma question portait surtout sur la solution :) le problème je l'ai cerné.
une idée ?
  • Elgi:
Fait tourner qmail-smtpd sous le user et groupe de vpopmail.
  • Gcuesta:
Ca, c'est assez chaud, au vu des droits sur les repertoires qmail; ou alors, en ajoutant vpopmail
dans le groupe nofiles; et en dernier recours, recompiler vpopmail en utilisant l'utilisateur
qmaill:nofiles, ce qui doit etre le plus simple.
  • Elgi:
http://www.interazioni.it/opensource/chkuser/documentation/running/
  • Gcuesta
#if defined CHKUSER_ENABLE_UIDGID

/* qmail-smtpd is running now as (effective) qmaild:nofiles */
/* Save the effective UID & GID (qmaild:nofiles) */
 eff_uid = geteuid ();
 eff_gid = getegid ();

/* Now set new effective UID & GID, getting it from real UID & GID (vpopmail:vchkpw) */
 setegid (getgid());
 seteuid (getuid());

/* qmail-smtpd is running now as effective vpopmail:vchkpw */
#endif
Donc activer l'option (c'est deja fait par défault) et mettre qmail-smtpd en
La procédure serait de faire
chown vpopmail:vchkpw
et
chmod +s qmail-smtpd.
  • DaviXX :
Donc pour être clair, deux options :
1) Exécuter qmail-smtpd avec uid/gid de vpopmail
Pour cela il suffit simplement de modifier /service/qmail-smtpd/run
Il n'y a rien d'autre à faire


2) Utiliser le bit Setuid
Pour cela il faut chown l'exécutable qmail-smtpd pour qu'il appartienne a uid/gid de vpopmail
activer CHKUSER_ENABLE_UIDGID dans chkuser_settings.h
J'oublie rien ? c'est ça ?
  • Elgi:
Tout est là :
http://www.interazioni.it/opensource/chkuser/documentation/running/switching.html
http://www.interazioni.it/opensource/chkuser/documentation/running/fixed.html
http://qmailwiki.inter7.com/Simscan/Related_Docs/Simscan_ClamAV_Chkuser_Installation_Guide#Applying_Chkuser
  • DaviXX :
Merci Elgi.
Donc, selon moi, la methode "fixed" est la "meilleure" dans le sens où elle ne casse aucune compatibilitée, telle que TLS.
Ou bien y a t'il quelque chose que je rate ?
Je dirais que le seul avantage a utiliser le switching c'est qu'il n'obtient les droits vpopmail que lorsque c'est necessaire
me trompes-je ?