j'ai un script simple :
ini_set("display_errors", true);
ini_set("error_reporting", E_ALL);
$Email="foo@bar.com";
$headers = "Content-type: text/\r\nFrom: " . $Email . "\r\n";
if ( mail("monadresse@monserveur.plop" , "essai" , "test", $headers) )
echo "OK\n";
else
echo "NOK\n";
Si j'exécute le code via la ligne de commande : php essai.php
ça me renvoie OK, et en effet, le mail est envoyé, et reçu.
Si j'exécute le code via le serveur apache, avec mod_php donc http://monserveur.com/essai.php , bah ça me renvoie NOK, et en effet, aucune trace du mail nulle part.
De plus, PHP ne me renvoie aucune erreur...
La seule info que j'aie, c'est que la fonction mail n'a pas fait son travail, et qu'elle le sait.
Alors voilà, si vous aviez la moindre idée....
Est ce qu'il est possible que php soit configuré d'une manière pour l'exécution en ligne de commande et d'une autre manière pour apache ?
Est ce que mon problème est du à un tiers autre que Apache et PHP ?
Si vous avez la moindre idée farfelue (ou pas) de chose à vérifier, je suis preneur ! Merci :)
( j'ai peur qu'avec un problème aussi flou, la solution le soit tout autant :/ )
# php.ini
Posté par nakan (site web personnel) . Évalué à 2.
[^] # Re: php.ini
Posté par Thomas Debesse (site web personnel) . Évalué à 2.
Cependant, il faut croire que ce soit autrechose :
# cat /etc/php.ini | grep sendmail_path
sendmail_path = /usr/sbin/sendmail -t -i
# which sendmail
/usr/sbin/sendmail
Ce sont les paramètres par défaut du php.ini
De plus je pense que cette partie est correcte, vu que php arrive très bien à causer à sendmail lorsque je l'utilise en ligne de commande...
Je suis un peu perdu... :/
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: php.ini
Posté par nakan (site web personnel) . Évalué à 2.
[^] # Re: php.ini
Posté par Thomas Debesse (site web personnel) . Évalué à 2.
# find /etc -name "php.ini"
/etc/php.ini
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: php.ini
Posté par clearstream . Évalué à 0.
Il y a aussi évidement /etc/httpd/conf.d/php.conf pour la prise en compte par apache de php.
Ce que peut faire Thomas Debesse, c'est lancer "phpinfo()" pour la version cgi (ligne de commande) et la version mod_php et regarder la différence.
Pour la version mod_php, il faut parfois renseigner "sendmail_from" dans la configuration.
[^] # Re: php.ini
Posté par Thomas Debesse (site web personnel) . Évalué à 2.
Dans le tableau "PHP-Core" :
Directive => Local Value => Master Value
sendmail_from => no value => no value
sendmail_path => /usr/sbin/sendmail -t -i -f ladresse@lesite.com => /usr/sbin/sendmail -t -i
Dans le tableau "Standard" :
Path to sendmail => /usr/sbin/sendmail -t -i -f ladresse@lesite.com
----------------------------
Ce que renvoie phpinfo() en ligne de commande :
Dans la table PHP-Core :
Directive => Local Value => Master Value
sendmail_from => no value => no value
sendmail_path => /usr/sbin/sendmail -t -i => /usr/sbin/sendmail -t -i
Dans le tableau "Standard" :
Path to sendmail => /usr/sbin/sendmail -t -i
----------------------------
Il y a une petite différence, je ne sais pas si ça change grand chose, en tout cas, oui, en effet, ça sort pas la même chose que ce soit en cgi ou en module.
Pour résumer : ça marche en root en cgi, ça ne marche pas en user en cgi.
Ça ne marche pas en user en module, et en root en module, je ne peux pas essayer. ^^
La solution doit sûrement se trouver du côté des droits !
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: php.ini
Posté par clearstream . Évalué à 0.
Donc tous les sites tournent sous le même compte (probablement le compte apache) et donc ce n'est pas un problème de droit de fichier (puisque apache lit les fichiers).
> Path to sendmail => /usr/sbin/sendmail -t -i -f ladresse@lesite.com
> Path to sendmail => /usr/sbin/sendmail -t -i
Le "-f", c'est sendmail_form.
> Pour résumer : ça marche en root en cgi, ça ne marche pas en user en cgi.
Sendmail va utilise "from: root@host" pour root (qui a peut-être le droit d'envoyer du courrier selon la conf de sendmail), et sendmail va utiliser "from: user@host" pour user (qui n'a peut-être pas le droit d'envoyer du courrier selon la conf de sendmail). Car sendmail_form n'est pas renseigné en mode cgi.
Puisqu'il y a un site qui marche, regardes ce qui est utilisé dans "sendmail_form" (ou l'option "-f" de sendmail).
> La solution doit sûrement se trouver du côté des droits !
Quels droits ?
Droits des fichiers ? Je ne crois pas.
Je suis assez persuadé que tu as un problème de sendmail_form mal configuré.
[^] # Re: droits d'exécution sendmail
Posté par Thomas Debesse (site web personnel) . Évalué à 2.
Sur la machine il y a plusieurs sites hébergés dessus (c'est pas la mienne), je suppose qu'apache tourne avec le compte du propriétaire des fichiers...
Je me suis loggé sous ce compte, et là mon script me renvoie un gros NOK !
Donc voilà, ce compte n'a pas le droit de causer à sendmail.
Donc maintenant : comment faire pour que le compte puisse s'entendre avec sendmail ?
De plus, comme dit plus haut, il y a plusieurs sites hébergés, il faudrait résoudre le problème pour tout le monde, évidemment avec la solution la plus propre et la plus sécurisée possible.
Pour info, voici les droits, groupe et user de sendmail :
# ls -l /usr/sbin/sendmail.sendmail
-rwsr-sr-x 1 root smmsp 779096 mar 22 2006 /usr/sbin/sendmail.sendmail
(/usr/sbin/sendmail est un symlink vers /etc/alternatives/mta qui est un symlink vers /usr/sbin/sendmail.sendmail , ne me demandez pas pourquoi, c'est pas moi qu'ai fait l'install, ça se trouve c'est même la distrib qu'est comme ça)
Suffirait-il que j'ajoute les comptes de sites internet au groupe smnp ? *
Tiens d'ailleurs, qu'est ce que la permission s ? je connais r, w et x, mais s c'est quoi ?
Merci d'avance !
* Je préfère être sûr de la solution, que de la trouver en tatonnant, on m'a demandé de trouver la solution au problème, et de fournir une solution à faire valider, je veux pas prendre la liberté de toucher aux systême sans un aval préalable (machine en prod). Donc je suis peut être très demandeur, mais si vous aviez une procédure bien précise à me donner, ça m'aiderai beaucoup !
Merci beaucoup !
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: droits d'exécution sendmail
Posté par nakan (site web personnel) . Évalué à 2.
Oui, en ajoutant un user au groupe, il aura le droit d'executer sendmail en setuid, à voir les permissions, ca devrait marcher.
[^] # Re: droits d'exécution sendmail
Posté par clearstream . Évalué à 0.
Je doute beaucoup.
Je comprend le setgid de sendmail, mais je ne comprend pas pourquoi il y a un setuid sur root.
Thomas Debesse, pourrais-tu faire "rpm -V sendmail" ?
[^] # Re: droits d'exécution sendmail
Posté par clearstream . Évalué à 1.
Regardes aussi ce qu'il y a dans /var/log/maillog.
[^] # Re: droits d'exécution sendmail
Posté par Thomas Debesse (site web personnel) . Évalué à 2.
S.5....T c /etc/mail/access
..?..... c /etc/mail/domaintable
S.5....T c /etc/mail/local-host-names
..?..... c /etc/mail/mailertable
S.5....T c /etc/mail/sendmail.cf
S.5....T c /etc/mail/sendmail.mc
SM5....T c /etc/mail/submit.cf
S.5....T c /etc/mail/virtusertable
S.5....T c /usr/lib/sasl2/Sendmail.conf
.M...... /usr/sbin/sendmail.sendmail
S.5....T c /var/log/mail/statistics
ça peut aider ?
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: droits d'exécution sendmail
Posté par clearstream . Évalué à 1.
Je m'en doutais. Selon rpm :
Quelqu'un a changer le mode du fichier. Il y a peut-être de bonnes raisons à ça, ni touche pas à la légère.
Pour avoir le mode à l'installation, fait rpm -q -l -v sendmail | grep /usr/sbin/sendmail.sendmail
[^] # Re: droits d'exécution sendmail
Posté par Thomas Debesse (site web personnel) . Évalué à 2.
La commande que tu m'as donné c'est pour rétablir comme à l'install' par défaut c'est ça ?
En d'autres termes c'est une commande que je peux proposer comme solution, mais qu'il ne faut pas que je lance moi même ?
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: droits d'exécution sendmail
Posté par Thomas Debesse (site web personnel) . Évalué à 2.
Plutôt, ta commande elle me donne (== m'affiche) les permissions originales c'est ça ?
Je peux la faire sans crainte ?
Et que donc pour rétablir, la solution que je peux proposer serait quelquechose comme :
# chmod `ta_commande` /usr/sbin/sendmail.sendmail
(ou autre, dans ce même esprit)
c'est ça ?
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: droits d'exécution sendmail
Posté par clearstream . Évalué à 0.
0 conséquence sur le système.
> # chmod `ta_commande` /usr/sbin/sendmail.sendmail
non, ça ne marchera pas.
> > donc il y a eu une modification de faite qui a tout cassé.
Oui, mais quelles modifications ? Là est le problème. Il ne faut pas annuler ses modifications sans en connaitre les tenants et aboutissants.
As-tu regardé ce qu'il y a dans /var/log/maillog ? CECI EST IMPORTANT !
[^] # Re: droits d'exécution sendmail
Posté par Thomas Debesse (site web personnel) . Évalué à 2.
# cat /var/log/maillog | grep adressedetest
Oct 10 17:45:02 lamachine sendmail[673]: k9AFj2Lp000673: to=adressedetest@yahoo.fr, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30186, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (k9AFj2J3000674 Message accepted for delivery)
Oct 10 17:45:05 lamachine sendmail[676]: k9AFj2J3000674: to=<adressedetest@yahoo.fr>, delay=00:00:03, xdelay=00:00:03, mailer=esmtp, pri=120421, relay=mx1.mail.yahoo.com. [4.79.181.14], dsn=2.0.0, stat=Sent (ok dirdel)
Oct 10 17:48:35 lamachine sendmail[786]: k9AFmZ3f000786: to=adressedetest@yahoo.fr, ctladdr=ladresse@monsite.com (48/48), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30186, relay=[127.0.0.1] [127.0.0.1], dsn=5.6.0, stat=Data format error
Oct 10 18:01:04 lamachine sendmail[1139]: k9AG140C001139: to=adressedetest@yahoo.fr, ctladdr=ladresse@monsite.com (48/48), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30186, relay=[127.0.0.1] [127.0.0.1], dsn=5.6.0, stat=Data format error
Oct 10 18:08:22 lamachine sendmail[1364]: k9AG8MKD001364: to=adressedetest@yahoo.fr, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30186, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (k9AG8MXP001365 Message accepted for delivery)
Oct 10 18:08:23 lamachine sendmail[1367]: k9AG8MXP001365: to=<adressedetest@yahoo.fr>, delay=00:00:01, xdelay=00:00:01, mailer=esmtp, pri=120421, relay=mx3.mail.yahoo.com. [4.79.181.12], dsn=2.0.0, stat=Sent (ok dirdel)
Oct 10 18:09:15 lamachine sendmail[1395]: k9AG9F57001395: to=adressedetest@yahoo.fr, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30192, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (k9AG9Fiq001396 Message accepted for delivery)
Oct 10 18:09:19 lamachine sendmail[1398]: k9AG9Fiq001396: to=<adressedetest@yahoo.fr>, delay=00:00:04, xdelay=00:00:04, mailer=esmtp, pri=120427, relay=mx3.mail.yahoo.com. [4.79.181.12], dsn=2.0.0, stat=Sent (ok dirdel)
Oct 10 18:10:00 lamachine sendmail[1427]: k9AGA0U7001427: to=adressedetest@yahoo.fr, ctladdr=ladresse@monsite.com (48/48), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30192, relay=[127.0.0.1] [127.0.0.1], dsn=5.6.0, stat=Data format error
Oct 10 18:23:20 lamachine sendmail[1855]: k9AGNJSN001855: to=adressedetest@yahoo.fr, ctladdr=ladresse@monsite.com (48/48), delay=00:00:01, xdelay=00:00:00, mailer=relay, pri=30192, relay=[127.0.0.1] [127.0.0.1], dsn=5.6.0, stat=Data format error
sachant que ladresse@monsite.com est de la forme proprietaireDuCompteDansLeSystemeDeFichier@lenomdusite.com
On remarque que ça marche lorsque ctladdr=root
Je ne m'y connais pas vraiment en sendmail, mais à priori, à ce que je vois, c'est le compte de celui qui envoie le mail, je ne sais pas si ça apporte grand chose à part une confirmation que seul root arrive à envoyer un mail, ce qu'on sait déjà.
Quoique, \o/ Lumière \o/ , Ça marche pas en user, mais le user il y accède quand même.... donc il arrive à causer à sendmail quand même il faut croire...
Sinon, comparaison des droits originaux et actuels :
# rpm -q -l -v sendmail | grep /usr/sbin/sendmail.sendmail && ls -l /usr/sbin/sendmail.sendmail
-rwxr-sr-x 1 root smmsp 779096 mar 22 2006 /usr/sbin/sendmail.sendmail
-rwsr-sr-x 1 root smmsp 779096 mar 22 2006 /usr/sbin/sendmail.sendmail
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: droits d'exécution sendmail
Posté par Thomas Debesse (site web personnel) . Évalué à 2.
en user en cgi j'obtiens cela dans le maillog :
Oct 10 23:58:12 lamachine sendmail[8836]: k9ALwCT5008836: to=adressedetest@yahoo.fr, ctladdr=NomDuCompte (517/512), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30083, relay=[127.0.0.1] [127.0.0.1], dsn=5.6.0, stat=Data format error
Pour récapituler les différences visibles dans maillog :
en module en user, ctladdr=user@lesite.com [marche pas]
en cgi en user, ctladdr=user [marche pas]
en cgi en root, ctladdr=root [marche]
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: droits d'exécution sendmail
Posté par clearstream . Évalué à 0.
Un "chmod u-s /usr/sbin/sendmail.sendmail" devrait faire l'affaire.
Pour annuler, utiliser un "chmod u+s /usr/sbin/sendmail.sendmail".
[^] # Re: droits d'exécution sendmail
Posté par clearstream . Évalué à 0.
Tu pourrais voir ce que ça donne avec les fichiers d'origine.
Voilà une procédure possible.
[root@here ~]# cd /tmp/
[root@here tmp]# mkdir sendmail
[root@here tmp]# cd sendmail
[root@here sendmail]# rpm2cpio /var/fedora/core/i386/sendmail-8.13.8-2.i386.rpm | cpio -i -m -d
2578 blocks
[root@here sendmail]# mv etc/mail /etc/mail.default
[root@here sendmail]# cd /etc
[root@here etc]# mv mail mail.bak
[root@here etc]# ln -s mail.default mail
[root@here etc]# /etc/init.d/sendmail restart
Arrêt de sm-client : [ OK ]
Arrêt de sendmail : [ OK ]
Démarrage de sendmail : [ OK ]
Démarrage de sm-client : [ OK ]
[root@here etc]# rm -r -f /tmp/sendmail
[root@here etc]#
Si ça marche avec la configuration par défaut, alors tu as fort probablement un problème de configuration de sendmail.
Désolé, mais je ne connais pas sendmail.
Pour revenir à la configuration d'avant :
[root@here ~]# cd /etc
[root@here etc]# rm mail
rm: détruire lien symbolique `mail'? y
[root@here etc]# mv mail.bak mail
[root@here etc]# rm -r -f mail.default
[root@here etc]# /etc/init.d/sendmail restart
Arrêt de sm-client : [ OK ]
Arrêt de sendmail : [ OK ]
Démarrage de sendmail : [ OK ]
Démarrage de sm-client : [ OK ]
[root@here etc]#
[^] # Re: droits d'exécution sendmail
Posté par Thomas Debesse (site web personnel) . Évalué à 2.
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: droits d'exécution sendmail
Posté par clearstream . Évalué à 0.
Le système est à peine touché. Tout ce qu'il y a sur le système n'est pas modifié ou supprimé. Il y a que le répertoire /etc/mail qui est renomé /etc/mail.bak.
> je ne peux pas me permettre de mon propre avis...
C'est toi le reponsable de tes actes. Fais selon ta conscience.
Je ne peux plus d'aider, je n'ai plus d'idée. Bonne courage.
[^] # Re: droits d'exécution sendmail
Posté par clearstream . Évalué à 0.
Misère.
Bon courage.
[^] # Re: droits d'exécution sendmail
Posté par Thomas Debesse (site web personnel) . Évalué à 2.
Merci beaucoup en tout cas de tes conseil et de ta patience.
Sinon, j'ai fait la manip du chmod u-s, j'ai fais un essai, puis chmod u+s pour restaurer après, et en effet ça n'a rien changé.
Menfin, j'ai déjà bien avancé dans ma recherche ! Merci !
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: droits d'exécution sendmail
Posté par clearstream . Évalué à 0.
Donc, tu utilises fort probablement le cgi de php et non mod_php (ou peut-être mod_suphp).
Il se peut aussi que la configuration php change par site (on peut avoir un php.ini spécifique).
Donc, j'"insiste" à nouveau, regardes ce que te donnes la sortie de phpinfo().
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.