Hallo allemaal!
Ik zit met een ontzettend frustrerend probleem, waar ik nou al ruim 5 uur mijn hoofd op aan het breken ben
Ik heb sinds een tijdje een VPS waar ik een aantal websites op draai. Voornamelijk wat "uitprobeer" sites, maar ook 1 productiesite. De VPS draait Debian 6.
Nou kwam ik er vandaag achter dat er geen mailtjes meer verzonden worden vanuit de productiesite sinds de verhuizing naar de VPS. Hierdoor kunnen gebruikers zich niet meer registreren op de betreffende website. De website maakt gebruik van de PHPMailer class.
De error log gaf het volgende aan:
Er zat niks anders op dan goed debuggen. Dus als test-case heb ik even een aparte website opgezet die alleen maar een mailtje probeert te versturen en eventuele fouten rapporteert.
Gebruikte code is als volgt:
Dit levert de volgende foutmelding op:
Ik vermoed dat het iets met permissions te maken heeft, maar /usr/sbin/sendmail (de wrapper voor exim4) heeft voor world executable, read en write rechten, en /usr/sbin dir heeft voor world read en executable rechten.
Heeft iemand meer ervaring met dit soort dingen en suggesties? De PHP mail() functie werkt, maar is minder betrouwbaar volgens zowel de makers van PHPMailer als bijv. de makers van Swiftmailer (andere PHP mail class). Bovendien zou mailen via sendmail (in dit geval exim4) toch moeten werken?
Mailen via de command line werkt overigens ook. Zowel als normale user en als root.
edit: Omdat een collega er naar vroeg, zet ik het ook even hier: exim4 heeft logbestanden, maar die leveren in dit geval niks op, omdat de binary uberhaupt niet aangeroepen kan worden, laat staan de machtiging krijgen om te loggen
Ik zit met een ontzettend frustrerend probleem, waar ik nou al ruim 5 uur mijn hoofd op aan het breken ben
Nou kwam ik er vandaag achter dat er geen mailtjes meer verzonden worden vanuit de productiesite sinds de verhuizing naar de VPS. Hierdoor kunnen gebruikers zich niet meer registreren op de betreffende website. De website maakt gebruik van de PHPMailer class.
De error log gaf het volgende aan:
Googlen levert op dat sendmail de Mail Transfer Agent is. Sendmail schijnt moeilijk te configureren te zijn en op een aantal plekken werd postfix als alternatief aangewezen. Dat zou volgens een aantal bronnen de fout op moeten lossen. EenSending mail failed: Language string failed to load: execute/usr/sbin/sendmail
Bash:
en een 1
| apt-get remove --purge sendmail |
Bash:
later was ik nog geen stap verder in het probleem. Postfix levert, net als de meeste andere MTA's een sendmail-wrapper, zodat sendmail gebruikt kan worden om postfix aan te roepen, zoals PHPMailer verwacht. Maar de fout bestaat nog steeds.1
| apt-get install postfix |
Er zat niks anders op dan goed debuggen. Dus als test-case heb ik even een aparte website opgezet die alleen maar een mailtje probeert te versturen en eventuele fouten rapporteert.
Gebruikte code is als volgt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| <?php require_once('PHPMailer/class.phpmailer.php'); $mail = new PHPMailer(); $mail->IsSendmail(); $to = 'debie.daan@gmail.com'; $subject = 'the subject'; $message = '<h1>hello</h1>'; $from = 'webmaster@example.com'; $replyto = 'webmaster@example.com'; $mail->AddReplyTo($replyto); $mail->SetFrom($from); $mail->AddAddress($to); $mail->Subject = $subject; $mail->MsgHTML($message); if (!$mail->Send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message sent!"; } ?> |
Dit levert de volgende foutmelding op:
Postfix er maar afgegooid, en exim4 geprobeerd. Deze schijnt goed icm Debian te werken. Nog steeds dezelfde foutmelding echterMailer Error: Could not execute: /usr/sbin/sendmail
Heeft iemand meer ervaring met dit soort dingen en suggesties? De PHP mail() functie werkt, maar is minder betrouwbaar volgens zowel de makers van PHPMailer als bijv. de makers van Swiftmailer (andere PHP mail class). Bovendien zou mailen via sendmail (in dit geval exim4) toch moeten werken?
Mailen via de command line werkt overigens ook. Zowel als normale user en als root.
edit: Omdat een collega er naar vroeg, zet ik het ook even hier: exim4 heeft logbestanden, maar die leveren in dit geval niks op, omdat de binary uberhaupt niet aangeroepen kan worden, laat staan de machtiging krijgen om te loggen
[ Voor 3% gewijzigd door Kajel op 01-08-2011 10:02 ]