PHP mail() einrichten unter Plesk (1blu vServer)

konze

New Member
Hallo zusammen,

ich habe folgendes Problem, ich möchte gerne die PHP "mail()"-Funktion nutzen.

ich habe manuel in der php.ini den sendmail_path gesetzt auf sendmail -t -i.

Leider scheint sendmail von Haus aus nicht zu funktionieren, da ich es über die Konsole versucht habe und nichts bei mir ankam.

Code:
# sendmail -t -i
Subject: test
To: xxx@xxx.tld
Body

Ctrl+D

Dann habe ich versucht die Sache über qmail ins laufen zu bringen, aber leider finde ich das qmail Binary nicht (/var/qmail/bin <- "bin" existiert nicht).

Ich stehe total auf dem Schlauch. Ich hoffe ihr könnt mir helfen die PHP "mail()"-Funktion zum laufen zu bringen.

Vielen Dank und viele Grüße,

konze
 
Leider scheint sendmail von Haus aus nicht zu funktionieren, da ich es über die Konsole versucht habe und nichts bei mir ankam.
Wenn sendmail installiert ist, funktioniert es von Haus aus. ;)
Steht irgendwas im Maillog drin wenn was nicht klappt?


Dann habe ich versucht die Sache über qmail ins laufen zu bringen, aber leider finde ich das qmail Binary nicht
Wenn bei dir qmail installiert ist.
Lass doch mal in der Shell ein find / -name "qmail-inject" laufen.
 
Sendmail selbst ist wohl vorhanden. Sonst hätte der Aufruf von "sendmail -t -i" einen Fehler geworfen. Der voreingestellte Sendmail-Path von PHP ist i.d.R. OK.
Ich tippe eher darauf, das ein ganz anderes Problem vorliegt.

Die Eingabe für die Commandozeile ist übrigens Fehlerhaft. So eine Email sollte gar nicht raus gehen.

PS: Bitte klären, ob Qmail oder Postfix als MTA installiert ist.
 
Steht irgendwas im Maillog drin wenn was nicht klappt?

Ich habe die Mail nun ein weiteres Mal versendet, mit dem folgenden Inhalt (Email-Adressen wurden geändert):

Code:
Date: Fri, 6 Apr 2012 12:30:00 +0100 (CET)
Subject: Test
From: noreply@xxx.tld
To: konze@xxx.tld
Content-Type: text/plain; charset=ISO-8859-1

Dies ist eine test Email

Code:
sendmail -t < mail.txt

in /var/log/mail.warn steht:
Code:
Apr  6 12:12:39 vServer postfix-local[26393]: cannot chdir to mailname dir konze: No such file or directory
Apr  6 12:12:39 vServer postfix-local[26393]: Unknown user: konze@xxx.tld

Lass doch mal in der Shell ein find / -name "qmail-inject" laufen.
Die Suche bleibt Ergebnislos

Die Eingabe für die Commandozeile ist übrigens Fehlerhaft. So eine Email sollte gar nicht raus gehen.
Habe die Email wie oben geschrieben verändert.

PS: Bitte klären, ob Qmail oder Postfix als MTA installiert ist.
Laut dem Logfile ist hier Postfix an der Arbeit (siehe oben).
 
Last edited by a moderator:
Bisschen mehr Außenrum bitte. Am Besten aus /usr/local/psa/var/log/maillog.
...

Auszug aus /usr/local/psa/var/log/maillog nach dem Sendeversuch (sendmail -t < mail.txt):
Code:
Apr 11 16:33:49 {meinserver} postfix/pickup[5250]: 02EDE9120444: uid=0 from=<root>
Apr 11 16:33:49 {meinserver} postfix/cleanup[5361]: 02EDE9120444: message-id=<20120411143349.02EDE9120444@{meinserver}.1blu.de>
Apr 11 16:33:49 {meinserver} postfix/qmgr[1823]: 02EDE9120444: from=<root@{einandererserver}.1blu.de>, size=351, nrcpt=1 (queue active)
Apr 11 16:33:49 {meinserver} postfix/smtpd[5366]: connect from localhost.localdomain[127.0.0.1]
Apr 11 16:33:49 {meinserver} postfix/smtpd[5366]: 155F99120443: client=localhost.localdomain[127.0.0.1]
Apr 11 16:33:49 {meinserver} before-remote[5365]: check handlers for addr: root@{einandererserver}.1blu.de
Apr 11 16:33:49 {meinserver} before-remote[5365]: check handlers for addr: konze@xxx.tld
Apr 11 16:33:49 {meinserver} postfix/cleanup[5361]: 155F99120443: message-id=<20120411143349.02EDE9120444@{meinserver}.1blu.de>
Apr 11 16:33:49 {meinserver} postfix/qmgr[1823]: 155F99120443: from=<root@{einandererserver}.1blu.de>, size=539, nrcpt=1 (queue active)
Apr 11 16:33:49 {meinserver} postfix/smtp[5363]: 02EDE9120444: to=<konze@xxx.tld>, relay=127.0.0.1[127.0.0.1]:10027, delay=0.12, delays=0.02/0.01/0.06/0.04, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 155F99120443)
Apr 11 16:33:49 {meinserver} postfix/qmgr[1823]: 02EDE9120444: removed
Apr 11 16:33:49 {meinserver} postfix/smtpd[5366]: disconnect from localhost.localdomain[127.0.0.1]
Apr 11 16:33:49 {meinserver} postfix-local[5369]: postfix-local: from=root@{einandererserver}.1blu.de, to=konze@xxx.tld, dirname=/var/qmail/mailnames
Apr 11 16:33:49 {meinserver} postfix-local[5369]: hook_dir = '/opt/psa/handlers/before-local'
Apr 11 16:33:49 {meinserver} postfix-local[5369]: recipient[3] = 'konze@xxx.tld'
Apr 11 16:33:49 {meinserver} postfix-local[5369]: handlers dir = '/opt/psa/handlers/before-local/recipient/konze@xxx.tld'
Apr 11 16:33:49 {meinserver} postfix-local[5369]: cannot chdir to mailname dir konze: No such file or directory
Apr 11 16:33:49 {meinserver} postfix-local[5369]: Unknown user: konze@xxx.tld
Apr 11 16:33:49 {meinserver} postfix/pipe[5368]: 155F99120443: to=<konze@xxx.tld>, relay=plesk_virtual, delay=0.05, delays=0.04/0/0/0, dsn=2.0.0, status=sent (delivered via plesk_virtual service)
Apr 11 16:33:49 {meinserver} postfix/qmgr[1823]: 155F99120443: removed

...
Dem Logfile entsprechend ist xxx.tld eine Domain auf dem Server?
Ja.
 
Kläre uns bitte über "{meinserver}" und "{einandererserver}" auf. Ich verstehe nämlich nicht warum es plötzlich zwei Server sind.

Und Du bist Dir sicher, dass alles korrekt angelegt wurde? Die Email-Funktion ist im Plesk für diese Domain aktiviert, die MX-Records sind korrekt gesetzt, das Verzeichnis /var/qmail/mailnames/xxx.tld/konze/ (alles klein geschrieben?) existiert?

huschi.
 
Kläre uns bitte über "{meinserver}" und "{einandererserver}" auf. Ich verstehe nämlich nicht warum es plötzlich zwei Server sind.
Bei 1Blu läuft der Email-Verkehr über einen Server von 1Blu.
Und Du bist Dir sicher, dass alles korrekt angelegt wurde?
Ich habe an den Standart-Einstellungen von der 1Blu-Installation nichts geändert
Die Email-Funktion ist im Plesk für diese Domain aktiviert,
Ja
die MX-Records sind korrekt gesetzt,
hier musst du mir etwas auf die Sprünge helfen. Wo sehe ich das?
das Verzeichnis /var/qmail/mailnames/xxx.tld/konze/ (alles klein geschrieben?) existiert?
Nein das Verzeichnis existiert nicht

Bei einer früheren Installation hatte ich kein Plesk installiert da hat der Email-Versand über PHP problemlos funktioniert.
 
Bei 1Blu läuft der Email-Verkehr über einen Server von 1Blu.
Wollen wir mal nicht generalisieren. Ist bei Dir halt so eingestellt. Diese Info hättest Du aber auch ruhig mal früher bringen können. Denn die ist essentiell.

Aber welcher ist "{meinserver}" und "{einandererserver}"?
Ich denke mal "{meinserver}" ist Deiner und "{einandererserver}" der 1Blue-Email-Server?
Aber wenn Du den Sendmail-Befehl wie oben auf Deinem Server eintippst, warum wird als Versender "root@{einandererserver}.1blu.de" generiert?

Soweit ich die Sachlage richtig sehe und verstehe, passiert Folgendes:
Grundsätzlich sind Deine Emails extern (also auf einem 1blue-Email-Server) gelagert. Der MX (siehe Wikipedia) zeigt sicherlich auf den 1Blue-Server.
Durch die Anlage der Domain im Plesk wird gleichzeitig ein Nameserver-Eintrag auf der lokalen Maschine inkl. MX vorgenommen.
Wenn nun eine Email von Deinem Server (!!!!) an diese Domain verschickt werden so, so löst er den MX auf sich selbst auf. Der Grund dazu liegt auf der Hand: Er fragt immer erst seinen eigenen Nameserver. Erst wenn der die Domain nicht kennt, wird ein externer Nameserver angefragt.
Er versucht also die Email lokal zuzustellen. Da Du die Adresse im Plesk aber nicht angelegt hast (warum auch, liegt ja nicht auf dem Server) kommt es zu den Fehlern im Logfile.

Lösung:
Deaktiviere die Email-Funktionalität für diese Domain im Plesk.
Das sollte eigentlich alle Einstellungen aufheben und dafür sorgen dass die Emails der Domain an den externen MX zugestellt werden.

huschi.
 
Vielen Dank nun funktioniert es! zumindest über sendmail in der Konsole und auch der mail()-Befehl funktioniert.

Sorry das ich das mit dem externen Server nicht schon früher angemerkt habe.

kurzer Nachtrag: ich bekomme nun wenn ich eine Mail über PHP versende eine Mail vom Cron Job mit der Mitteilung:

Code:
/bin/sh: /usr/lib/plesk-9.0/postfix-poplockdb-clea: No such file or directory

Ich weis was er von mir will aber ich weis nicht wie ich das abstelle.
 
Last edited by a moderator:
Beim Versand per PHP eine Email vom Cronjob? Das klingt schon sehr unwahrscheinlich, oder?
Wie wäre es mit mehr Infos. Z.B. wieder Logfiles und die vollständige Cronjob-Email.

huschi.
 
Back
Top