
Ich verschiebe eine Site auf einen anderen Server und habe ein Problem mit PHP-Mail. Aber nur beim Senden von E-Mails an die Hostdomäne, z. B.[email geschützt].
mail($send_to, 'Web contact' ,$message,null,"-r [email protected]");
Die einzige Möglichkeit, E-Mails zu versenden, besteht darin, das Flag -r hinzuzufügen. Dabei scheint es keine Rolle zu spielen, welche E-Mail-Adresse nach dem Flag eingegeben wird.
Dies ist eine Migration von Centos 5 auf 6 und ich glaube, dass für E-Mails jetzt Postfix statt sendMail verwendet wird.
Gibt es eine Postfix-Einstellung, die ich ändern kann, damit ich dieses Flag nicht bei jedem Aufruf der Mail-Funktion hinzufügen muss?
Gibt es außerdem eine Möglichkeit, die Verwendung von sendMail anstelle von Postfix zu erzwingen, wenn ich das nicht beheben kann?
Ich hätte erwähnen sollen, dass ich weiß, dass die E-Mail intern weitergeleitet wird, wie aus dem Protokoll hervorgeht:
BEARBEITEN
Dies ist ein fehlgeschlagener Versuch ohne Flagge
May 14 16:13:12 test sendmail[10244]: t4EFDCLq010244: from=apache, size=169, class=0, nrcpts=1, msgid=<[email protected]>, relay=apache@localhost
May 14 16:13:12 test postfix/smtpd[10245]: connect from localhost[127.0.0.1]
May 14 16:13:12 test postfix/smtpd[10245]: 9EFB3256738: client=localhost[127.0.0.1]
May 14 16:13:12 test postfix/cleanup[10248]: 9EFB3256738: message-id=<[email protected]>
May 14 16:13:12 test sendmail[10244]: t4EFDCLq010244: [email protected], ctladdr=apache (48/48), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30169, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (Ok: queued as 9EFB3256738)
May 14 16:13:12 test postfix/qmgr[10102]: 9EFB3256738: from=<[email protected]>, size=592, nrcpt=1 (queue active)
May 14 16:13:12 test postfix/smtpd[10245]: disconnect from localhost[127.0.0.1]
May 14 16:13:12 test postfix/smtp[10249]: 9EFB3256738: to=<[email protected]>, relay=mail.example.com[748.31.105.444]:25, delay=0.1, delays=0.04/0.01/0.01/0.03, dsn=5.0.0, status=bounced (host mail.example.com[748.31.105.444] said: 550-Verification failed for <[email protected]> 550-No Such User Here" 550 Sender verify failed (in reply to RCPT TO command))
May 14 16:13:12 test postfix/cleanup[10248]: B47B625675D: message-id=<[email protected]>
May 14 16:13:12 test postfix/bounce[10250]: 9EFB3256738: sender non-delivery notification: B47B625675D
May 14 16:13:12 test postfix/qmgr[10102]: B47B625675D: from=<>, size=2524, nrcpt=1 (queue active)
May 14 16:13:12 test postfix/qmgr[10102]: 9EFB3256738: removed
May 14 16:13:12 test postfix/smtp[10249]: B47B625675D: to=<[email protected]>, relay=mail.example.com[748.31.105.444]:25, delay=0.03, delays=0/0/0.01/0.02, dsn=5.0.0, status=bounced (host mail.example.com[748.31.105.444] said: 550 No Such User Here" (in reply to RCPT TO command))
May 14 16:13:12 test postfix/qmgr[10102]: B47B625675D: removed
Und das ist mit der Flagge
May 14 16:13:23 test sendmail[10251]: t4EFDN45010251: Authentication-Warning: example.com: apache set sender to [email protected] using -r
May 14 16:13:23 test sendmail[10251]: t4EFDN45010251: [email protected], size=169, class=0, nrcpts=1, msgid=<[email protected]>, relay=apache@localhost
May 14 16:13:23 test postfix/smtpd[10245]: connect from localhost[127.0.0.1]
May 14 16:13:23 test postfix/smtpd[10245]: 3B3EF256738: client=localhost[127.0.0.1]
May 14 16:13:23 test postfix/cleanup[10248]: 3B3EF256738: message-id=<[email protected]>
May 14 16:13:23 test postfix/qmgr[10102]: 3B3EF256738: from=<[email protected]>, size=662, nrcpt=1 (queue active)
May 14 16:13:23 test sendmail[10251]: t4EFDN45010251: [email protected], [email protected] (48/48), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30169, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (Ok: queued as 3B3EF256738)
May 14 16:13:23 test postfix/smtpd[10245]: disconnect from localhost[127.0.0.1]
May 14 16:13:24 test postfix/smtp[10249]: 3B3EF256738: to=<[email protected]>, relay=mail.example.com[748.31.105.444]:25, delay=1.4, delays=0.03/0/0.01/1.3, dsn=2.0.0, status=sent (250 OK id=1Ysup9-0001Rr-Jv)
May 14 16:13:24 test postfix/qmgr[10102]: 3B3EF256738: removed
Das Problem scheint darin zu liegen, dass der Benutzer Apache von Postfix zurückgewiesen wird. Idealerweise würde ich es gerne sehen, wenn Postfix für diesen Benutzer trotzdem etwas sendet.
Postfix-Konfiguration
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = localhost
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = localhost.$mydomain
mydomain = example.com
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
unknown_local_recipient_reject_code = 550
Antwort1
Zuerst müssen Sie einen MTA entfernen. Zwei MTAs in einem System können zu unerwarteten Ergebnissen führen.Da ich nur Erfahrung mit Postfix habe, empfehle ich Ihnensendmail entfernen. Mit dieser Entfernung mail
verwendet der Befehl Postfix anstelle von Sendmail als Standardagent.
yum remove sendmail
Zweitens können Sie festlegenStandard-Sendmail-Parameter in php.inimitsendmail_path
Parameter zum Beispiel
sendmail_path = '/usr/sbin/sendmail -t -i -f [email protected]'
PS: lautdiese Manpage, -r
Flagge ist eine veraltete Form der -f
Flagge. Daher verwende ich lieber -f
.
Drittens bezüglichIhr Kommentar:
Aus dem Protokoll erkenne ich, dass es springt, weil[email geschützt]existiert nicht. Ich habe das hinzugefügt und das löst das Problem, aber gibt es eine Einstellung in Postfix, die ich hinzufügen kann, damit[email geschützt]muss nicht erstellt werden?
Diese Fehlermeldung
550-Verifizierung fehlgeschlagen für 550-Kein solcher Benutzer hier" 550 Absenderüberprüfung fehlgeschlagen
wurde nicht von Postfix geworfen. Die E-Mail wurde von Ihrem tatsächlichen Mailserver abgelehnt, mail.**z*.net
derExim. Sie müssen mit dem Exim-Administrator sprechen, warum es sich so verhält
Antwort2
In Ihrer main.cf
gibt es einen Parameter namens mydestination
. Entfernen Sie dort das Domänennamen-Formular, damit E-Mails an die Domäne nicht mehr lokal zugestellt werden.
Vor:
mydestination = $myhostname, $mydomain
Nach:
mydestination = $myhostname
$myhostname
sollte für die internen Mails (Cron, Apt, Fehlermeldungen usw.) in dieser Liste bleiben.