[PHP] problemen met mail(); functie.

Pagina: 1
Acties:

  • enveekaa
  • Registratie: September 2003
  • Laatst online: 13-02 15:53
Ik heb problemen met het versturen van een email mbv een php script. Ik heb al meerede werkende mailscripts, maar die lijken dus niet te werken op mijn eigen Gentoo server (kernel 2.4).

Ik heb sendmail erop staan, en het pad naar sendmail klopt, dat heb ik gecontroleerd met phpinfo();, het pad staat op /usr/sbin/sendmail -i -t, wat klopt.

Het is dus waarschijnlijk geen PHP probleem maar een sendmail probleem, maar aangezien in dit subforum mensen zitten met zowel php kennis als ervaring met sendmail leek me dit de beste plek voor deze post.

Ik heb het volgende eenvoudige mail script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
    $mailNaar       = "mijn-email-adres@chello.nl";
    $mailOnderwerp  = "subject";
    $inhoudMail     = "Hi,\n\nHow are you?";
    if (mail($mailNaar, $mailOnderwerp, $inhoudMail))
    {
        echo("<p>Message sent!</p>");
    }
    else
    {
        echo("<p>Message delivery failed...</p>");
    }

En die geeft dus aan dat het niet gelukt is.

Nu krijg ik een vage error van sendmail in de logs van mijn server, namelijk het volgende.
code:
1
2
Jan 12 22:16:07 [sSMTP] Unable to connect to "Zeus" port 25._
Jan 12 22:16:07 [sSMTP] Cannot open Zeus:25

Lijkt inderdaad een duidelijke error, hij kan sendmail simpelweg niet bereiken, maar Zeus staat in het hosts file als localhost, en ssh'en naar Zeus werkt wel, dus de host Zeus bestaat. Het vreemde vind ik, dan de error vanaf sSMTP afkomt, en het lijkt er dus op dat sendmail er geheel buitenstaat?

Sendmail draait automatisch (staat in startup) en heeft zover ik weet niet veel config nodig, op de hostname van de server na dan, en die staat -- goed.

Iemand suggesties? of zie ik iets over het hoofd?

Ter informatie: ik werk met PHP4 en Apache 2 op een Gentoo Linux 2.4 bak.

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 14-02 16:23
en als je gewoon eens een socket opent naar zues met fsockopen op poort 25?

Icons are overrated


  • enveekaa
  • Registratie: September 2003
  • Laatst online: 13-02 15:53
Hmm, refused...

Lijkt er dus op dat de daemon niet (of niet goed iig) draait. Meer een ssmtp probleem dus.
Dat ik daar niet aan heb gedacht.

Deze post kan beter naar Non Windows denk ik?

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 14-02 10:41

Pelle

🚴‍♂️

-> NOS :)

  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024

froggie

Kwaaak

Als ik het me goed herinner moet je ssmtp eerst unmergen en daarna pas sendmail mergen. Raar dat je geen block hebt gekregen bij het mergen van sendmail.
Is er trouwens een speciale reden dat je sendmail gebruikt? Want ik vind Qmail veel makkelijker te configureren, is out-of-the-box wat veiliger en werkt prima met PHP

Oh, denk aan je firewall. Ik ben heel lang aan het prutsen geweest terwijl ik achteraf port 25 niet had geforward. Omdat jij een connection refused krijgt op port 25 zou ik hier ook even naar kijken.

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 12-02 10:50

killercow

eth0

sendmail is op gentoo een symlink naar ssmtp.

Waarschijnlijk connect php dus wel naar ssmtp, maar kan die daarna z'n delivery host niet vinden. in je config files (ssmtpd enzo) kun je wel vinden waar ssmtp z'n mail probeert af te leveren.

(ik heb zelf ook behoorlijk ruzie gehad met de mail functie in php op een gentoo bak, zie mijn topic en oplossing)

[ Voor 15% gewijzigd door killercow op 13-01-2005 12:12 ]

openkat.nl al gezien?


  • Wilke
  • Registratie: December 2000
  • Laatst online: 19:41
Werkt 'telnet zeus 25' vanaf dezelfde host als waarop het echte PHP script werkt, dan?

offtopic:
Een hoofdletter in de hostname? Interessant...

[ Voor 26% gewijzigd door Wilke op 13-01-2005 12:48 ]


  • WHiZZi
  • Registratie: Januari 2001
  • Laatst online: 12-02 14:28

WHiZZi

Museumdirecteurtje

wat staat er in je /etc/ssmtp/ssmtp.conf ?

code:
1
mailhub=Zeus

Gok ik :P
Vul daar even de SMTP-server van je provider of indien je zelf een mailserver draait, localhost

HomeComputerMuseum - Interactief computermuseum waar wij de geschiedenis van de thuiscomputer preserveren. Centraal gelegen in de Benelux.


  • enveekaa
  • Registratie: September 2003
  • Laatst online: 13-02 15:53
Wat is nu precies de bedoeling?

Als ik dus via mail.chello.nl wil verzenden weigert de mailserver het bericht (err: 500).

Moet sendmail nou als daemon draaien oid? of ssmtp..

ben een beetje de draad kwijt nu :)

  • SvMp
  • Registratie: September 2000
  • Niet online
Ik had hetzelfde en was Sendmail zo zat (ik wilde enkel een mailtje kunnen sturen en dan zo'n uitgebreid pakket als Sendmail nodig hebben |:( ) dat ik aan de hand van verschillende voorbeelden op internet de volgende functie heb samengesteld:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function stuur_mail($ToName, $ToEmail, $FromName, $FromEmail, $Subject, $Body, $Header) {
   $smtp = fsockopen("zet_hier_je_smtp_server_neer.nl",25);
   $InputBuffer = fgets($smtp, 1024);
   fputs($smtp, "HELO mijnwebsite\n");
   $InputBuffer = fgets($smtp, 1024);
   fputs($smtp, "mail From: $FromEmail\n");
   $InputBuffer = fgets($smtp, 1024);
   fputs($smtp, "RCPT To: $ToEmail\n");
   $InputBuffer = fgets($smtp, 1024);
   fputs($smtp, "DATA\n");
   $InputBuffer = fgets($smtp, 1024);
   fputs($smtp, "$Header");
   fputs($smtp, "From: $FromName <$FromEmail>\n");
   fputs($smtp, "To: $ToName <$ToEmail>\n");
   fputs($smtp, "Subject: $Subject\n\n");
   fputs($smtp, "$Body\r\n.\r\n");
   fputs($smtp, "QUIT\n");
   $InputBuffer = fgets($smtp, 1024);
   fclose($smtp);
}

[ Voor 18% gewijzigd door SvMp op 13-01-2005 14:47 ]


  • enveekaa
  • Registratie: September 2003
  • Laatst online: 13-02 15:53
svdmeer schreef op donderdag 13 januari 2005 @ 14:46:
Ik had hetzelfde en was Sendmail zo zat (ik wilde enkel een mailtje kunnen sturen en dan zo'n uitgebreid pakket als Sendmail nodig hebben |:( ) dat ik aan de hand van verschillende voorbeelden op internet de volgende functie heb samengesteld:
Ok dankje, wel een behoorlijke workaround maar ik ga het zeker proberen.

Ik zal toch dat sendmail aan de praat krijgen!!:)

  • SvMp
  • Registratie: September 2000
  • Niet online
enveekaa schreef op donderdag 13 januari 2005 @ 14:48:
[...]


Ok dankje, wel een behoorlijke workaround maar ik ga het zeker proberen.

Ik zal toch dat sendmail aan de praat krijgen!!:)
Het is geen workaround, maar een functie die email-gegevens naar een SMTP-server stuurt net als wat Sendmail doet. Ik vind Sendmail gebruiken heel omslachtig als je Sendmail niet voor iets anders nodig hebt, wat bij mijn project het geval is. Het enige wat de functie enigszins laat lijken op een work-around is dat er geen enkele foutafhandeling in zit.

  • enveekaa
  • Registratie: September 2003
  • Laatst online: 13-02 15:53
Hmm nou ik bedoelde meer een workaround voor mij, ik wilde het met sendmail doen, maar doe het nu met een php script, maar anyway, het werkt goed! dankje.

Maar ik hou alles graag zo standaard mogelijk, en dat sendmail moet gewoon werken, irriteert me dat het niet werkt :) begrijp je?

Evengoed, thanks voor je tip!


edit
Ik krijg alleen geen sender te zien.

[ Voor 8% gewijzigd door enveekaa op 13-01-2005 14:55 ]


  • SvMp
  • Registratie: September 2000
  • Niet online
Uiteraard begrijp ik dat.
Heb zelf ook uren zitten kloten en lezen.

  • enveekaa
  • Registratie: September 2003
  • Laatst online: 13-02 15:53
Ik heb weinig ervaring met dat header gebeuren...

Wat moet ik daar inzetten?

En hoe kan ik met deze functie controleren of het gewerkt heeft??

[ Voor 31% gewijzigd door enveekaa op 13-01-2005 15:06 ]


  • SvMp
  • Registratie: September 2000
  • Niet online
enveekaa schreef op donderdag 13 januari 2005 @ 15:01:
Ik heb weinig ervaring met dat header gebeuren...

Wat moet ik daar inzetten?

En hoe kan ik met deze functie controleren of het gewerkt heeft??
In die header hoef je niks te zetten, eventueel kun je daar dingen aan toevoegen. De functie doet uit zich zelf alleen de meest noodzakelijke dingen, maar in headers van e-mailtjes staat meestal veel meer info.

Testen is simpel: Gewoon een mail sturen naar een adres waar je bij kunt komen en dan uitlezen. Of het gewerkt heeft? Lees de documentatie van de gebruikte functies eens door, dan kun je zelf wel foutafhandeling inbouwen, bv. door de functie een status-code terug te laten geven. Als het pakketje eenmaal naar de SMTP-server is gestuurd, valt er niks meer te controleren, maar dat is uiteraard altijd zo bij e-mail.

  • enveekaa
  • Registratie: September 2003
  • Laatst online: 13-02 15:53
Ok, dus er is een reply van de smtp server, of het al dan niet gelukt is..
Dat ga ik uitzoeken. Dank!

  • SvMp
  • Registratie: September 2000
  • Niet online
enveekaa schreef op donderdag 13 januari 2005 @ 15:17:
Ok, dus er is een reply van de smtp server, of het al dan niet gelukt is..
Dat ga ik uitzoeken. Dank!
Ik denk van wel, mijn functie doet het minimale maar als je die replies van de smtp server checkt dan kun je er volgens mij een volwaardige mailverzendfunctie mee maken.

  • enveekaa
  • Registratie: September 2003
  • Laatst online: 13-02 15:53
Ok, ga ik op verder, laat je het resultaat wel even zien, misschien heb je er wat aan.

Het feit blijft, ssmtp/sendmail weigert dienst, iemand tips?

Verwijderd

enveekaa schreef op donderdag 13 januari 2005 @ 16:44:
Ok, ga ik op verder, laat je het resultaat wel even zien, misschien heb je er wat aan.

Het feit blijft, ssmtp/sendmail weigert dienst, iemand tips?
Wat meldt de log van Sendmail?

Verwijderd

Dit geld alleen als je php zelf gecompiled hebt: Sendmail moet al geinstalleerd staan voor dat je php gaat compilen anders werkt het niet. Dan zegt tie wel doodleuk /usr/sbin/sendmail -i -t met phpinfo maar werken doet het niet.

Had laatst zon zelfde probleem maar dat kwam omdat ik dus later sendmail pas geinstalleerd had.

  • enveekaa
  • Registratie: September 2003
  • Laatst online: 13-02 15:53
sendmail: Cannot open 192.168.1.10:25

Er is dus geen smtp daemon, wat me niet verbaast.

Maar ik dacht dat sendmail daar zelf voor zorgde?

@nonutopia
Hmm nee dat is het niet, PHP vindt ssmtp/sendmail wel maar daar gaat het mis, ssmtp/sendmail werkt gewoon niet. :'(

[ Voor 32% gewijzigd door enveekaa op 13-01-2005 21:50 ]


  • enveekaa
  • Registratie: September 2003
  • Laatst online: 13-02 15:53
Heb ssmtp eindelijk werkend.

Het rewriteDomain gebeuren stond niet goed, de chello mailserver checked of de client wel een chello gebruiker is, moet dus 'gespoofed' worden. Dit kan in de config van SSMTP.

Bedankt voor de feedback.
Pagina: 1