So konfigurieren Sie einen echten Domainnamen für die Absenderadresse


10

Ich habe versucht, eine E-Mail mit der PHP- mail()Funktion zu versenden, aber es ist irgendwie fehlgeschlagen und ich habe mich beschwert, dass ein echter Domainname erforderlich ist. Im Maillog wird folgendes beobachtet:

sendmail 4984 r25984: from = Apache, Größe = 273, Klasse = 0, nrcpts = 1, msgid = <201.r25@localhost.localdomain>, Relay = Apache @ localhost
sendmail 4985 r25985: Regelsatz = check_mail, arg1 =, Relay = mydomain.com [127.0.0.1], ablehnen = 553 5.5.4 ... Realer Domainname für Absenderadresse erforderlich
sendmail 4984 r25984: to=external@server.com, ctladdr = apache (48/48), delay = 00: 00:01, xdelay = 00: 00: 00, Mailer = Relay, pri = 30273, Relay = [127.0.0.1] [127.0.0.1], dsn = 5.6.0, stat = Datenformatfehler
sendmail 4984 r25984: r25984: DSN: Datenformatfehler

cron kann bei Problemen mit logrotate eine E-Mail an external@server.com senden. Ich bin mir nicht sicher, warum PHP dazu nicht in der Lage ist. Ich habe versucht, Änderungen an der Standardkonfiguration in `sendmail.mc wie folgt vorzunehmen:

MASQUERADE_AS(`mydomain.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(localhost)dnl
MASQUERADE_DOMAIN(localhost.localdomain)dnl
MASQUERADE_DOMAIN(mycom)dnl

Aber es scheint keine Wirkung zu haben. Der Header von Adresse in PHP Mail-Funktion wurde bereits gesetzt. Ich habe auch sichergestellt, dass SELinux httpd_can_sendmailaktiviert ist. Was muss ich noch tun, um die Post zuzustellen?


Sie haben das bearbeitet sendmail.mc, die Zeilen localhost.localdomainund localhostetwas Sinnvolles geändert und die mc-Datei in kompiliert sendmail.cf?
Fboaventura

@fboaventura, nein, ich habe die beiden Zeilen auskommentiert, indem ich sie dnlvor ihnen entfernt habe.
Frage Überlauf

Können Sie den relevanten Teil Ihres PHP-Skripts hinzufügen, den Sie aufrufen mail()? Und das sendmail.mcist nicht die richtige Konfigurationsdatei, diese Datei muss mit der kompiliert sendmail.cfwerden m4.
Fboaventura

@fboaventura, danke, ich weiß, dass ich in Bezug auf die Kompilierungsanforderungen jetzt in der Lage bin, es zum Laufen zu bringen. Siehe meine Antwort unten. Vielen Dank für Ihre Hilfe :)
Frage Überlauf

Antworten:


10

Ich glaube, ich habe es gerade gelöst. Ich habe folgendes in / etc / hosts :

127.0.0.1 www.mydomain.com test.mydomain.com
127.0.0.1 cdn.mycdn.com
127.0.0.1 localhost.localdomain localhost myserver.com

Was ich brauche, ist, myserver.com vor die Zeile mit zu stellen, localhost.localdomaindamit sendmail denkt, dass es eine echte Domain zum Versenden der E-Mail verwendet.


3
Sie könnten definitiv Ihre eigene Antwort akzeptieren, das war die Lösung ... Als Nebenbemerkung ist es normalerweise /etc/hosts(mit einem "s") anders als das: gute Antwort!
Levite

2

Sie müssen in Ihren Skripten die Header Ihrer E-Mail konfigurieren, um sie zu haben From: sender@domain.com.


Entschuldigung, ich hätte erwähnen sollen, dass dies bereits in den Headern festgelegt wurde.
Frage Überlauf

1

In Ihrem sendmail.mcAdd:

LOCAL_CONFIG
Djmyserver.com

Kompilieren Sie neu sendmail.cf, starten Sie sendmail neu und Sie sollten in Ordnung sein


1

In meinem Fall musste unter Ubuntu 16.04 auf einer AWS-Instanz Folgendes hinzugefügt werden /etc/mail/sendmail.mc:

define(`confDOMAIN_NAME', `mydomainname.com')dnl

in einer Zeile vor der MAILER_DEFINITIONSZeile gegen Ende der Datei UND fügen Sie dieselbe Zeile am Ende von hinzu /etc/mail/submit.mc. Geben Sie dann sudo suRoot-Berechtigungen ein und kompilieren Sie die Konfiguration mit:

m4 sendmail.mc > sendmail.cf
m4 submit.mc > submit.cf

... dann exitsudo. Um sudo service sendmail restartsendmail neu zu starten, wurden E-Mails angezeigt, die vom Domainnamen gesendet wurden. Weder die anderen Befehle FEATURE oder MASQUERADE waren erforderlich, noch ein Eintrag in der /etc/hostsDatei.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.