Ergebnis 1 bis 6 von 6

Thema: Kein Mailversand ab 2.8.x wenn PHP des Servers auf fastcgi läuft

  1. #1
    Contao-Nutzer
    Registriert seit
    02.09.2009.
    Ort
    Oelde
    Beiträge
    30
    Partner-ID
    5490

    Standard Kein Mailversand ab 2.8.x wenn PHP des Servers auf fastcgi läuft

    Hallo zusammen

    ich habe ein witziges Problem mit TL 2.8.3 (ich nehme aber an es sind alle 2.8.xer Versionen betroffen). Wenn man dort ein Formular verwendet, das man über Mail versenden will, klappts bei mir auf einem Server nicht, auf einem anderen schon (identisches TL, 1:1 kopiert und lediglich Kleinigkeiten angepasst wie der Domainname des Einstiegspunktes in der Webseite usw.).

    Die Server waren soweit fast identisch, der Unterschied war lediglich das ich auf dem einen System PHP über das fastcgi Modul des Apache als php-cgi verwende (hier versendet er keine Mails), auf dem anderen per mod_php es direkt an den Apache gebunden habe.

    Ich habe das Problem auch im Quellcode verfolgt, aber habe lediglich festgestellt das das Mailobject, welches an die neue Swiftmail-Library Komponente übergeben wird, seites TL wohl gut aussieht.

    Also: Mailversand aus TL von Formularen wenn PHP per fastcgi verwendet wird: keine Reaktion, wenn man es per mod_php verwendet: geht sofort.

    Ich habe auf dem fastcgi System dann auch mal nen simples PHP Skript geschrieben was einfach nen mail(); aus PHP macht - auch das geht. Ebenso habe ich in das 2.8.3 auf der fastcgi Kiste die Mailfunktionen von 2.7.9 (also die Email.php aus dem system/modules Verzeichnis) als auch die "alte" phpmailer Library einkopiert und damit probiert: Geht ebenfalls.

    Ich habe es auch schon als Bugticket eingericht ( http://https://contao.org/issues/1998 ), allerdings wurde es als Invalid markiert da es kein reiner TL Fehler scheinbar ist (sehe ich ein).

    Hat irgendjemand da schon Erfahrung gesammelt mit Typolight auf per fastcgi gebundenem PHP auf dem Webserver oder hat irgend eine Idee woran der Spass nun liegen könnte ? Das es ein reines Konfigurationsproblem ist, glaube ich noch nicht (da simples Mail() im Skript sowie 2.7.9 Mailfunktionen ja gehen).

    Danke für jede Anregung!

  2. #2
    Contao-Urgestein Avatar von jan.theofel
    Registriert seit
    23.06.2009.
    Ort
    Berlin
    Beiträge
    1.846

    Standard

    Hi,

    nicht direkt Erfahrungen aber eine Idee, wie man das Problem ggf. weiter eingrenzen kann: Hast du Zugriff auf die Mailserverlogs? Dort könnten sich zusätzliche Hinweise auf das Problem finden lassen.

    Z.B.: Vielleicht prüft der neue Server Mail-Absenderadressen strikter und du hast dort (aus Sicht des Servers) unzulässige E-Mail-Adressen im TYPOlight eingerichtet. So etwas sollte dann im Maillog auslesbar sein.

    Jan
    Jan Theofel
    Barcamp-Moderator für Corporate-Barcamps und öffentliche Barcamps

  3. #3
    Contao-Nutzer
    Registriert seit
    02.09.2009.
    Ort
    Oelde
    Beiträge
    30
    Partner-ID
    5490

    Standard

    Der Ansatz war gut, aber die Mailserverlogs sagen in dem Fall gar nichts.

    Ich habe das Problem aber inzwischen eingekreist und zumindest bei mir gelöst.
    Problem ist der Aufruf des mail() Kommandos, dieser übergibt als 5. Parameter der Funktion ein sogenanntes $params Feld. Das sind, in diesem Fall, Parameter die an den Aufruf von sendmail angehängt werden.

    Hier wird, unter anderem, auch der Parameter -f generiert, nämlich aus der eingestellten Absenderadresse im Typolight. Hier ist bei mir aber natürlich Emailadresse (noreply@domain.de) nicht mit dem Benutzer von Linux identisch, denn der -f Parameter erwartet einen angelegten Benutzer, der im Sendmail als Trusted User eingetragen ist, damit man per -f da ein eigenes Envelope forcieren kann.

    Das geht, wie beschrieben, bei mod_php gut. Ich nehme an, ohne da als verlässliche Quelle genannt werden zu wollen, da der Prozess bei mod_php als www-data oder letztendlich zumeist als root rennt (der ganz erste Parent-Prozess zumindest, die darunterliegenden haben ja einen eigenen) stört sich sendmail nicht dran (oder an irgendwas anderes nicht mehr weil es als mod_php Teil des Apache ist, was auch immer - ich hätte erwartet das es aufgrund der Unterprozesse mit eigenen Nutzer dort genauso wenig gehen sollte, aber bei mod_php kein Problem).

    Wie in meinem Fall aber als fastcgi wirklich direkt nur auf dem Benutzerkonto läuft, hat er sich wohl an diesem -f Parameter verschluckt. Dadurch wurde die sendmail Binary gar nicht wirklich mit dem Mailinfos gefüttert, ne saubere Fehlermeldung konnte ich aber auch nirgendwo entdecken.

    Gelöst habe ich es übrigens mit dem mail.force_extra_parameters Setting von PHP. Dieses überschreibt die params überhabe hart, dann klappt es auch unter fastcgi (also mailer wäre dann "/usr/sbin/sendmail" bei mir und der genannnte Parameter steht nun auf "-f linuxuser -t -i").

    Schickt man dann etwas aus dem Kontaktformular los, erscheint auch prompt wieder was im Maillog ;-)
    Geändert von STB (20.05.2010 um 12:39 Uhr)

  4. #4
    Contao-Fan Avatar von varix
    Registriert seit
    26.03.2010.
    Ort
    Berlin
    Beiträge
    626

    Standard

    Hallo STB,

    ich habe das gleiche Problem.
    Bei mir kommt die Mail an, allerdings nach dem Absenden erscheint diese Fehlermeldung

    Code:
    Warning: mail() [function.mail]: Policy restriction in effect. The fifth parameter is disabled on this system in /customers/cnl-online.de/cnl-online.de/httpd.www/plugins/swiftmailer/classes/Swift/Transport/SimpleMailInvoker.php  on line 50
    
    #0 [internal function]: __error(2, 'mail() [<12...', '-fvarix21@gmx.d...')
    #2 /customers/cnl-online.de/cnl-online.de/httpd.www/plugins/swiftmailer/classes/Swift/Transport/MailTransport.php(173): Swift_Transport_SimpleMailInvoker->mail('varix21@gmx.de', 'Kontakformular', 'Anrede: Frau?Na...', 'Message-ID: <12...', '-fvarix21@gmx.d...')
    #3 /customers/cnl-online.de/cnl-online.de/httpd.www/plugins/swiftmailer/classes/Swift/Mailer.php(77): Swift_Transport_MailTransport->send(Object(Swift_Message), Array)
    #4 /customers/cnl-online.de/cnl-online.de/httpd.www/system/libraries/Email.php(429): Swift_Mailer->send(Object(Swift_Message), Array)
    #5 /customers/cnl-online.de/cnl-online.de/httpd.www/system/modules/frontend/Form.php(386): Email->sendTo(Array)
    #6 /customers/cnl-online.de/cnl-online.de/httpd.www/system/modules/frontend/Form.php(206): Form->processFormData(Array)
    #7 /customers/cnl-online.de/cnl-online.de/httpd.www/system/modules/frontend/Hybrid.php(150): Form->compile()
    #8 /customers/cnl-online.de/cnl-online.de/httpd.www/system/modules/frontend/Form.php(72): Hybrid->generate()
    #9 /customers/cnl-online.de/cnl-online.de/httpd.www/system/modules/frontend/ContentModule.php(70): Form->generate()
    #10 /customers/cnl-online.de/cnl-online.de/httpd.www/system/libraries/Controller.php(364): ContentModule->generate()
    #11 /customers/cnl-online.de/cnl-online.de/httpd.www/system/modules/frontend/ModuleArticle.php(170): Controller->getContentElement('85')
    #12 /customers/cnl-online.de/cnl-online.de/httpd.www/system/modules/frontend/Module.php(127): ModuleArticle->compile()
    #13 /customers/cnl-online.de/cnl-online.de/httpd.www/system/modules/frontend/ModuleArticle.php(69): Module->generate()
    #14 /customers/cnl-online.de/cnl-online.de/httpd.www/system/libraries/Controller.php(297): ModuleArticle->generate(false)
    #15 /customers/cnl-online.de/cnl-online.de/httpd.www/system/libraries/Controller.php(184): Controller->getArticle('16', false, false, 'main')
    #16 /customers/cnl-online.de/cnl-online.de/httpd.www/system/modules/frontend/PageRegular.php(68): Controller->getFrontendModule('0', 'main')
    #17 /customers/cnl-online.de/cnl-online.de/httpd.www/index.php(188): PageRegular->generate(Object(DB_Mysql_Result))
    #18 /customers/cnl-online.de/cnl-online.de/httpd.www/index.php(311): Index->run()
    #19 {main}
    Die info.php zeigt mir an, dass bei Server API:CGI/FastCGI steht und ich habe TL 2.8.3.

    Da ich kein Programmierer bin, wollte ich wissen, ob es tatsächlich das gleiche Problem ist?
    Laut Ticket:http://https://contao.org/issues/1998
    scheint es ja ein Swiftmailer-Problem zu sein.

    Würde mir deine Lösung helfen? Wenn ja, kannst du mir sie vielleicht so erklären, dass ich das auch hinbekomme? Oder gibt es eine grundsätzliche Alternative?

    Vielen Dank!
    Christian
    Geändert von varix (20.05.2010 um 16:02 Uhr)

  5. #5
    Contao-Nutzer Avatar von Mischa
    Registriert seit
    10.03.2010.
    Ort
    Dresden
    Beiträge
    149
    User beschenken
    Wunschliste

    Standard

    Hallo Ihr,

    bei mir das gleiche Drama. Ich habe nun die Mail-Adressen im Startpunkt der Webseite und in den Einstellungen jeweils auf eine lokale Adresse (selbe Domain, selber Server) umgestellt.

    Jetzt funktioniert der Versand. Das Thema ist etwas nervig weil man als "Webseiten-Administrator" und als System-Admin keine "externe" Adresse nutzen kann. Das bedeutet für mich als freier Webdesigner, ich muss beim Kunden extra einen Mailaccount für diesen Kram einrichten. Und an die Apache-Konfiguration komme ich auch nicht heran, weil es sich meistens um gemieteten Webspace handelt.

    Gibt es da keine bessere Lösung?

    Liebe Grüße, Mischa

  6. #6
    Contao-Nutzer
    Registriert seit
    02.09.2009.
    Ort
    Oelde
    Beiträge
    30
    Partner-ID
    5490

    Standard

    Zitat Zitat von varix Beitrag anzeigen
    Code:
    Warning: mail() [function.mail]: Policy restriction in effect. The fifth parameter is disabled on this system in /customers/cnl-online.de/cnl-online.de/httpd.www/plugins/swiftmailer/classes/Swift/Transport/SimpleMailInvoker.php  on line 50
    Die info.php zeigt mir an, dass bei Server API:CGI/FastCGI steht und ich habe TL 2.8.3.

    Da ich kein Programmierer bin, wollte ich wissen, ob es tatsächlich das gleiche Problem ist?
    Laut Ticket:http://https://contao.org/issues/1998
    scheint es ja ein Swiftmailer-Problem zu sein.

    Würde mir deine Lösung helfen? Wenn ja, kannst du mir sie vielleicht so erklären, dass ich das auch hinbekomme? Oder gibt es eine grundsätzliche Alternative?
    Hallo Christian

    ich fürchte, zumindest soweit ich jetzt die Fehlermeldung interpretieren kann, das du dasselbe Problem hast + noch ein weiteres obendrauf.
    Die Struktur ist ja wie folgt: Du hast TL, welches Mails generiert indem es sich der SwitfMailer Bibliothek bedient. Diese liefert die Mails dann nach der jeweils gewählten Methode aus, also letztendlich z.B. über das Mail() Kommando von PHP oder aber halt selbst mit einer SMTP Verbindung auf einen Mailserver (wie ein Mailprogramm).
    Soweit, so gut. Du scheinst die Variante wohl verbreitetste Varianten zu benutzen, also so das die Swiftmail Bibliothek letztendlich den mail() Befehl von PHP nimmt.

    Dieser mail() Befehl akzeptiert als 5. Übergabewert Parameter für den Mailserver.
    Hier ist dein erstes Problem: Mit den Sicherheitseinstellungen auf dem Server, den du benutzt, darfst du an mail() keinen 5. Parameter übergeben (das ist diese Policy Meldung, die du verletzt).
    Der 5. Übergabewert von mail() wird deaktiviert, wenn der safe mode im PHP aktiviert wurde. Kannst du ggf. mal prüfen ob dies der Fall ist ?
    Hierzu steht nämlich in der PHP Changelog zu der Funktion steht für seit PHP 4.2.3:
    Der additional_parameters-Parameter ist im safe_mode deaktiviert; mail() gibt eine Warnung aus und gibt FALSE zurück, wenn Sie den Parameter trotzdem verwenden.
    Das zweite Problem was du kriegen wirst ist wieder der -f Parameter. Hier steht wieder die Adresse drin, die du wahrscheinlich so direkt für den -f Parameter nicht benutzen kannst (warum auch immer, denn in der PHP Doku steht das man dem -f Parameter die Absenderadresse geben kann:
    Der additional_parameters-Parameter kann benutzt werden, um zusätzliche Parameter an das Programm zu senden, das für den E-Mail-Versand konfiguriert ist (wenn die sendmail_path-Einstellung verwendet wird). Zum Beispiel kann hiermit die "envelope sender address" (Absenderadresse) gesetzt werden, wenn sendmail mit der -f-Option benutzt wird.

    Der Benutzer, unter dem der Webserver läuft, sollte als bekannter Benutzer in der sendmail-Konfiguration eingetragen werden, um zu verhindern, dass ein 'X-Warning'-Header zu den E-Mails hingefügt wird, wenn mit dieser Methode (-f) der Absender gesetzt wird. Sendmail-Benutzer finden diese Datei hier: /etc/mail/trusted-users.
    Ich habe des wie gesagt gelöst, in dem ich die mail.force_extra_parameters gesetzt habe für den Account, auf den das TL läuft. Das überschreibt dann radikal die params Wert, egal was du dort an mail() mal übergeben hast, als -f gebe ich dem Benutzer, auf dem das Skript läuft, obwohl dort laut Doku eben die Absenderadresse wohl reingehört. Hier will ich aber selbst noch was testen, ich habe bei meinem Problem noch 2-3 andere Dinge angepasst und will nicht ausschließen das das überschreiben der Params unnötig war. Nachdem es ging, habe ich es erstmal zur Seite gelegt.

    Deine Aufgabe wäre also folgendes um es ans laufen zu kriegen: Rausfinden, ob SafeMode aktiviert ist (ich wüßte grade keine andere Methode den params Wert anders zu deaktivieren), dies abschalten (das löst wahrscheinlich dein erstes Problem) und dann noch möglicherweise diesen anderen Parameter (mail.force_extra_parameters) passend zu setzen.

    Für beides brauchst du Zugriff auf die Konfigurationsdatei für das PHP-CGI, was deine PHP Skripte abarbeitet. Für beides wirst du Zugriff auf die Serverkonfiguration brauchen. Wenn es nen Shared Webspace ist, hoffe ich jetzt für dich das du es über deine Verwaltungsoberfläche konfigurieren kannst oder aber du nen guten (und hilfswilligen) Support bei deinem Anbieter hast. Wir haben nicht ohne Grund für genau sowas eigene Server...
    Geändert von STB (21.05.2010 um 15:30 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 27.03.2011, 09:55
  2. Layout-Vererbungslehre wenn Startseite kein Standardlayout erhält
    Von Ria im Forum Layout / Templates / Holy Grail
    Antworten: 7
    Letzter Beitrag: 18.01.2011, 17:19
  3. Kein Scrollen wenn Mediabox geöffnet ist
    Von ees im Forum Bilder/Dateien
    Antworten: 6
    Letzter Beitrag: 18.10.2010, 10:59
  4. Wenn nur Titel vorhanden, dann kein Link?
    Von chr.flader im Forum Nachrichten/Events/FAQ
    Antworten: 2
    Letzter Beitrag: 02.08.2010, 17:46

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •