it-swarm.com.de

PHP Mail-Problem mit WWW-Daten

Ich versuche, sendmail über die Mail-Funktion von PHP mit folgendem Code aufzurufen:

$to      = '[email protected]';
    $subject = 'test';
    $message = 'test';
    $headers = 'From: [email protected]' . "\r\n" .
               'Reply-To: [email protected]' . "\r\n" .
                'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);

In meinem mail.log erhalte ich jedoch eine Nachricht, dass die Adresse nicht die Adresse ist, die ich im Header angegeben habe:

<[email protected]>: Sender address rejected: Domain not found

Warum ist das?? Ich verwende PHP's fast-cgi auf Ubuntu Warum verwendet sendmail nicht den Header, den ich über den PHP -Code angegeben habe?

21
aherlambang

Es sieht so aus, als wäre [email protected] Ihre Umschlagsadresse. Die "Von" -Adresse des Umschlags ist abweichend von der Adresse, die in Ihrem "Von:" -Header der E-Mail angezeigt wird. Dies ist, was sendmail in seinem "MAIL FROM/RCPT TO" -Austausch mit dem empfangenden Mail-Server verwendet. Der Hauptgrund dafür, dass es eine "Umschlag" -Adresse genannt wird, ist, dass außerhalb des Nachrichtenkopfs und -körpers in angezeigt wird der unformatierte SMTP-Austausch zwischen Mailservern.

Die voreingestellte "from" -Adresse des Umschlags hängt von der verwendeten sendmail-Implementierung ab. Normalerweise wird jedoch der Benutzername des laufenden Prozesses festgelegt, gefolgt von "@" und dem Hostnamen des Computers. In einer typischen Konfiguration sieht dies wie [email protected] aus.

Wenn Ihre E-Mails durch den Empfang von E-Mail-Servern abgelehnt werden oder wenn Sie ändern müssen, an welche E-Mails zum Versenden von Adressen Bounce gesendet wird, können Sie die Absenderadresse des Umschlags ändern, um Ihre Probleme zu lösen.

Um die "from" -Adresse des Umschlags unter Unix zu ändern, geben Sie Ihrer sendmail-Binärdatei eine "-r" -Option an. Sie können dies global in der php.ini tun, indem Sie der Befehlszeile "sendmail_path" die Option "-r" hinzufügen. Sie können dies auch programmgesteuert von PHP aus tun, indem Sie -r [email protected] als zusätzlicher Parameter-Argument an die mail () - Funktion (fünftes Argument) übergeben. Wenn Sie an beiden Stellen eine Adresse angeben, wird die sendmail-Binärdatei mit zwei "-r" -Optionen aufgerufen, die je nach Ihrer sendmail-Implementierung undefiniertes Verhalten aufweisen können. Mit dem Postfix-MTA überschreiben spätere "-r" -Optionen frühere Optionen unbemerkt, sodass Sie einen globalen Standard festlegen können und dennoch ein vernünftiges Verhalten erhalten, wenn Sie versuchen, ihn lokal zu überschreiben.

BEARBEITEN

Info zu optionalen Flags, die an sendmail übergeben werden können:-f setzt die Absenderadresse, -r überschreibt den von sendmail generierten Standard-Return-Pfad (normalerweise wird die Absenderadresse verwendet). Wenn Sie möchten, dass Ihre Bounce-Backs an eine andere Adresse als die von -Adresse gehen, verwenden Sie beide Flags gleichzeitig: -f [email protected] -r [email protected]

meine php.ini

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = [email protected]

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = On

; Log all mail() calls including the full path of the script, line #, to address and headers
;mail.log =
24
anubhava

Obwohl dies eine alte Frage ist, füge ich diese Antwort hinzu, falls sie jemandem helfen soll:

Ich hatte das gleiche Problem mit dem From:-Header, der in [email protected] umgeschrieben wurde. Ich habe es schließlich mit dem ssmtp-Brückendienst aufgespürt, der Mail von unserem Webserver an unseren Mailserver weiterleitete. Ich habe die Zeile FromLineOverride=YES in die Datei /etc/ssmtp/ssmtp.conf eingefügt und das Problem ist verschwunden.

7
David G

In meinem Fall habe ich einen gehosteten Server, daher musste ich diese Datei bearbeiten: 

/etc/ssmtp/ssmtp.conf

Dann kommentieren Sie diese Zeile:

FromLineOverride = YES

Sobald dies erledigt ist, funktionieren die Kopfzeilen der Kontaktanzeigen.

5
DependencyHell

Das hat für mich funktioniert: 

$mail->Sendmail = $mail->Sendmail.' -f '.$mail_errorsto; 
0
Martin

Ich hatte ein ähnliches Problem mit WWW-Daten, als alle meine Mails mit diesem Header gesendet und empfangen wurden:

From: www-data <[email protected]>

Ich habe das Flag -f [email protected] als fünftes Argument mit der Funktion PHP email () verwendet (wie in der akzeptierten Antwort erwähnt), aber ich erhielt meine E-Mails immer noch als:

From: www-data <[email protected]>

Also fügte ich ein weiteres Flag -f [email protected] -F info hinzu, um den vollständigen Namen der E-Mail festzulegen, und schließlich erhielt ich E-Mails, wie ich wollte:

From: info <[email protected]>

Ich poste diese Antwort, weil niemand sie hier erwähnt, und ich bin ein bisschen festgefahren.

0
Mirous