Toon posts:

[Sendmail+PHP] De functie mail() werkt niet

Pagina: 1
Acties:
  • 278 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hoi,

Sinds kort moet ik mijn eigen sites uit geldgebrek zelf hosten. Kheb nu een Fedora Core3 server, en alles werkt netjes... behalve sendmail! Ik ben al weer een paar dagen er mee bezig, maar zonder succes. Als ik een heel simpel scriptje run, doet ie het nog niet eens!

Het scriptje wat ik probeer te runnen:
code:
1
2
3
4
5
6
<?php
$message = 'some text';
mail('info@openstyledesign.nl', 'test', $message);
print $message;
phpinfo();
?>


en phpinfo() geeft:
code:
1
2
sendmail_from   info@openstyledesign.nl info@openstyledesign.nl
sendmail_path   /usr/sbin/sendmail -t -i    /usr/sbin/sendmail -t -i


Wat heb ik al geprobeert?
- Zoeken hoe ik sendmail kan configuren... niet gevonden.
- Zoeken op GOT
- Virtual server naar mijn server op poort 25(smtp)
- Mijn ISP-smtp server gebruiken in mijn PHP.INI:
SMTP = mail.planet.nl
smtp_port = 25

en later toch maar weer:
SMTP = localhost
smtp_port = 25


Wat zou er mis kunnen zijn. Misschien ziet het spam filter van planet dit als spam?

[ Voor 10% gewijzigd door Verwijderd op 05-04-2005 17:46 ]


Verwijderd

En werkt het wel als je gewoon telnet naar je ip op poort 25? Misschien gewoon niet goed geconfigureerd :)

Verwijderd

Topicstarter
Ik krijg dan connection refused... mmm, hoe config ik die sendmail-server dan?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Hier komt geen regel code bij kijken, dus je hebt een configuratieprobleem. * NMe schopt dit topic naar het goeie forum. :)

Programming & Webscripting >> Non-Windows Operating Systems

[ Voor 8% gewijzigd door NMe op 05-04-2005 18:14 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Verwijderd schreef op dinsdag 05 april 2005 @ 17:54:
Ik krijg dan connection refused... mmm, hoe config ik die sendmail-server dan?
Het zou heel goed kunnen dat je sendmail daemon alleen op localhost luistert.
Maar het is ook mogelijk om vanuit php direct de sendmail binary (/usr/sbin/sendmail) aan te spreken.
Dan hoeft er helemaal geen server te draaien.

Lees dit eens:
http://nl3.php.net/mail

[ Voor 10% gewijzigd door Verwijderd op 05-04-2005 18:21 ]


Verwijderd

Topicstarter
Ok gelezen, maar hoe stel ik hem zo in dat ie dat doet? Ik heb geen probleem met het draaien van een mailserver hoor, maar als dit lukt vind ik het ok... dus als het maar mailtjes stuurt zonder al te veel aanpassingen van de code.

Thnx in advance...

Verwijderd

heb je toevallig iptables draaien zonder dat je hebt aangezet dat de SMTP/POP3 poorten openstaan?

Verwijderd

Verwijderd schreef op dinsdag 05 april 2005 @ 18:31:
[...]

Ok gelezen, maar hoe stel ik hem zo in dat ie dat doet? Ik heb geen probleem met het draaien van een mailserver hoor, maar als dit lukt vind ik het ok... dus als het maar mailtjes stuurt zonder al te veel aanpassingen van de code.

Thnx in advance...
Ok.
Voor de duidelijkheid, het gaat hier niet over een netwerkverbinding.
En ook niet over het draaien van een complete mailserver.
Dit voor alle mensen die zeuren over telnet, poorten en firewalls.
PHP probeert gewoon een executable te draaien, namelijk sendmail om een mail te versturen, geheel en al vanaf de commandline.

Om te beginnen, is /usr/sbin/sendmail aanwezig?

Ik weet verder niet zoveel van PHP, maar uit http://nl3.php.net/manual/en/function.mail.php haal ik dit:
code:
1
2
3
4
5
6
7
8
9
10
<?php
$to      = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@' . $_SERVER['SERVER_NAME'] . "\r\n" .
   'Reply-To: webmaster@' . $_SERVER['SERVER_NAME'] . "\r\n" .
   'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?>


Dat lijkt precies op jouw scriptje, dus daar zal het niet aan liggen.

[ Voor 53% gewijzigd door Verwijderd op 05-04-2005 19:18 ]


Verwijderd

Topicstarter
Sendmail is geinstalleerd dus /usr/sbin/sendmail is aanwezig.

En die code is een langere variant.. het doet toch hetzelfde?

Verwijderd

Verwijderd schreef op dinsdag 05 april 2005 @ 19:18:
Sendmail is geinstalleerd dus /usr/sbin/sendmail is aanwezig.

En die code is een langere variant.. het doet toch hetzelfde?
Heb je een ls -l /usr/sbin/sendmail gedaan?
Het kan ook best dat hij in /usr/local/sbin/sendmail staat, of in /bin/sendmail, afhankelijk van je distributie en manier van installeren.

Heb je ook iets van een foutmelding ofzo?
PHP moet een status code teruggeven na het draaien van dat scriptje.
Weet je zeker dat de mail() functie meegecompiled is?
En onder welke user draait je PHP script? Heb je de permissies van de sendmail binary bekeken?

[ Voor 24% gewijzigd door Verwijderd op 05-04-2005 19:28 ]


Verwijderd

Topicstarter
[root@Server ~]# ls -l /usr/sbin/sendmail
lrwxrwxrwx 1 root root 21 mrt 17 15:43 /usr/sbin/sendmail -> /etc/alternatives/mta

En mijn PHP draait op Apache als gebruiker/groep: apache. Het is dus een Fedora Core 3 machine... alles is tijdens de install geinstalleerd

Verwijderd

Verwijderd schreef op dinsdag 05 april 2005 @ 20:11:
[root@Server ~]# ls -l /usr/sbin/sendmail
lrwxrwxrwx 1 root root 21 mrt 17 15:43 /usr/sbin/sendmail -> /etc/alternatives/mta

En mijn PHP draait op Apache als gebruiker/groep: apache. Het is dus een Fedora Core 3 machine... alles is tijdens de install geinstalleerd
En waar verwijst /etc/alternatives/mta naar?
"ls -l /etc/alternatives/mta"

Verwijderd

Topicstarter
[root@Server ~]# ls -l /etc/alternatives/mta
lrwxrwxrwx 1 root root 27 mrt 17 15:43 /etc/alternatives/mta -> /usr/sbin/sendmail.sendmail

[root@Server ~]# ls -l /usr/sbin/sendmail.sendmail
-rwxr-sr-x 1 root smmsp 732356 sep 1 2004 /usr/sbin/sendmail.sendmail


Moet ik dit laatste pad dan in mijn PHP.ini opnemen?

[ Voor 42% gewijzigd door Verwijderd op 05-04-2005 20:51 ]


  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 27-01 12:55

Bergen

Spellingscontroleur

Ik ben ook net aan 't proberen om mail() aan de praat te krijgen en ik vind 't ook een vage boel. Op mijn servertje draait natuurlijk sendmail om lokaal dingetjes te mailen naar users (berichten die niet via stderr worden getoond) en dat moet zo blijven, maar voor php moet sendmail de mail wel afleveren bij een externe host van mijn hoster. (Ik gebruik de mailserver van mijn hoster maar host de website thuis.) In php.ini staat:
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

; For Win32 only.
sendmail_from = me@example.com

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =
Hoezo Win32 only'? Ik moet blijkbaar elders aangeven dat sendmail een externe host moet gebruiken. Correct? Dan zou ik bij /etc/mail/ uitkomen maar de configfiles aldaar zien er ook niet bepaald straightforward uit. Ook als je googled naar bijvoorbeeld 'php configure mail sendmail external host' word je zo op het eerste gezicht niet veel wijzer.

* Bergen gaat maar eens wat TLDP-docs doorspitten.

Verwijderd

Topicstarter
Ok, nog een tijd lang mee door geprobeert. Het werkt echter niet, maar ik kan nu wel met telnet vanaf een andere computer connecten op poort 25. Maar het lukt niet om mijn mail te krijgen. Wat heb ik tot nu toe nog geprobeert?
- SELinux geheel uitschakelen
- poorten 25 en 110 doorverbinden naar mijn server met een virtual server.
- doorspitten van een aantal FAQ's, Guides, HOW-TO's en Forums, het zou in theorie moeten werken!

Heel raar, ik heb het in een heel vroeg stadium van mijn Linux kennis met RedHat 7.0 gewoon met router en al werkend gehad. Nu moet ik elk document doorzoeken en dan heb ik nog niks.

Ik heb dus nog een aantal vraagjes:
- Zou het aan het SPAM-filter liggen van mijn provider?
- Is er een betere sendmail variant? (het liefst met apache style configuratie :9)
- Zou ik met Webmin verder komen kwa configuratie... heb er eigenlijk niet zoveel zin om dat eens uit te proberen.
- Hoe zorg ik dat hij dan maar de SMTP server van mijn host gebruikt? Dus mail.planet.nl ipv apache@localhost.localdomain?
- Gaat dit ooit nog veilig draaien?

Verwijderd

Topicstarter
Is het bij iemand anders gelukt om via een adsl verbinding (kpn) een mail server op te zetten, met als provider Planet Internet?

  • HunterPro
  • Registratie: Juni 2001
  • Niet online
Bergen schreef op dinsdag 05 april 2005 @ 21:08:
Ik ben ook net aan 't proberen om mail() aan de praat te krijgen en ik vind 't ook een vage boel. Op mijn servertje draait natuurlijk sendmail om lokaal dingetjes te mailen naar users (berichten die niet via stderr worden getoond) en dat moet zo blijven, maar voor php moet sendmail de mail wel afleveren bij een externe host van mijn hoster. (Ik gebruik de mailserver van mijn hoster maar host de website thuis.) In php.ini staat:

[...]
Hoezo Win32 only'? Ik moet blijkbaar elders aangeven dat sendmail een externe host moet gebruiken. Correct? Dan zou ik bij /etc/mail/ uitkomen maar de configfiles aldaar zien er ook niet bepaald straightforward uit. Ook als je googled naar bijvoorbeeld 'php configure mail sendmail external host' word je zo op het eerste gezicht niet veel wijzer.

* Bergen gaat maar eens wat TLDP-docs doorspitten.
daar kun je een externe mailerclass danwel functie (zoek op google op bijv 'php smtp function' oid) voor maken of leechen :) gewoon een scriptje dat dus hardcore een smtp verbinding opent en de mail de deur uit doet.

Verwijderd

Verwijderd schreef op donderdag 07 april 2005 @ 11:44:
Ok, nog een tijd lang mee door geprobeert. Het werkt echter niet, maar ik kan nu wel met telnet vanaf een andere computer connecten op poort 25. Maar het lukt niet om mijn mail te krijgen. Wat heb ik tot nu toe nog geprobeert?
- SELinux geheel uitschakelen
- poorten 25 en 110 doorverbinden naar mijn server met een virtual server.
- doorspitten van een aantal FAQ's, Guides, HOW-TO's en Forums, het zou in theorie moeten werken!

Heel raar, ik heb het in een heel vroeg stadium van mijn Linux kennis met RedHat 7.0 gewoon met router en al werkend gehad. Nu moet ik elk document doorzoeken en dan heb ik nog niks.

Ik heb dus nog een aantal vraagjes:
- Zou het aan het SPAM-filter liggen van mijn provider?
- Is er een betere sendmail variant? (het liefst met apache style configuratie :9)
- Zou ik met Webmin verder komen kwa configuratie... heb er eigenlijk niet zoveel zin om dat eens uit te proberen.
- Hoe zorg ik dat hij dan maar de SMTP server van mijn host gebruikt? Dus mail.planet.nl ipv apache@localhost.localdomain?
- Gaat dit ooit nog veilig draaien?
Je hebt dus helemaal geen open poorten nodig voor wat jij wil.
PHP roept direct de binary aan en verstuurd daarmee de mail.
apache voor het @'tje krijg je altijd, dat is de user waar Apache onder draait.
localhost.localdomain komt omdat je nooit /etc/hosts goed ingevuld hebt.
En bij FC moet je nog wat extra files invullen, anders vernaait hij /etc/hosts bij elke boot.
/etc/sysconfig/nogwat geloof ik, ook een file die host heet oid.

Ik heb het zelf nooit met sendmail geprobeerd, dus ik heb geen idee waarom het niet werkt.
Je zou eens Qmail of Exim kunnen installeren, die hebben wat meer opties en betere documentatie dan Sendmail. Ik zou iig Sendmail niet toegankelijk maken van buitenaf, dat is nergens voor nodig.
Pagina: 1