Apache @ localhost aus E-Mail-Headern entfernen?

11

Mein Setup: Ich betreibe eine Magento-Website auf einem Amazon Linux-Server (der im Grunde CentOS zu sein scheint) mit einem Apache-Webserver. Ich verwende Google Apps auch zum Verwalten der E-Mails von mydomain.com.

Ich konnte die MX-, SPF- und DKIM-Einträge für den Server erfolgreich einrichten und zum Laufen bringen, sodass ich beim Senden von E-Mails einen "Pass" für SPF und DKIM erhalte. Ich bin jedoch auf ein seltsames Problem gestoßen, an dem ich scheinbar nicht vorbeikomme. Ein Teil des Headers für die von mir gesendeten E-Mails scheint immer zu sagen:

Received: (from apache@localhost) by mydomain.com 

Ich habe hoch und niedrig nach einer Möglichkeit gesucht, dies zu ändern und stattdessen "[email protected]" zu verwenden, aber ich kann es einfach nicht herausfinden.

Unter anderem habe ich versucht:

  • Ändern Sie die php.ini in: / usr / sbin / sendmail -t -i -f [email protected]
  • Fügen Sie dem virtuellen Host von mydomain.conf die folgende Zeile hinzu: ServerAdmin [email protected]
  • Setzen Sie den Rückweg im Magento-Backend auf "Ja" (System -> Konfiguration -> Erweitert -> System -> Mail-Sendeeinstellungen.

Wenn es hilft, ist der Inhalt meiner / etc / hosts-Datei wie folgt:

127.0.0.1   www.mydomain.com
127.0.0.1   mydomain.com
127.0.0.1   localhost localhost.localdomain

Für die letzte Zeile der Hosts-Datei habe ich auch die Variation ausprobiert ...

127.0.0.1   localhost.localdomain mydomain.com

... aber es hat immer noch nicht funktioniert.

Ich dachte, es könnte auch hilfreich sein, wenn ich die Überschriften der E-Mail hinzufüge, falls dies Hinweise darauf geben könnte, was möglicherweise vor sich geht (ich habe viele Werte geändert, um sie verallgemeinert zu halten).

Delivered-To: [email protected]
Received: by 123.123.123.123 with SMTP id abcdefg123456790;
        Fri, 3 Apr 2015 08:35:04 -0700 (PDT)
X-Received: by 456.456.456.456 with SMTP id asdfqwerhjkl234hjkl.789.78909876789;
        Fri, 03 Apr 2015 08:35:03 -0700 (PDT)
Return-Path: <[email protected]>
Received: from mydomain.com (ec2-11-11-111-11.amazonaws.com. [66.66.777.77])
        by mx.google.com with ESMTPS id asdkfjhkjdfha839383.105.2015.04.03.08.35.02
        for <[email protected]>
        (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
        Fri, 03 Apr 2015 08:35:03 -0700 (PDT)
Received-SPF: pass (google.com: domain of [email protected] designates 66.66.777.77 as permitted sender) client-ip=66.66.777.77;
Authentication-Results: mx.google.com;
       spf=pass (google.com: domain of [email protected] designates 66.66.777.77 as permitted sender) [email protected];
       dkim=pass [email protected]
Received: from mydomain.com (www.mydomain.com [127.0.0.1])
    by mydomain.com (8.14.4/8.14.4) with ESMTP id t33FZ29p004251
    for <[email protected]>; Fri, 3 Apr 2015 15:35:02 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mydomain.com;
    s=default; t=fjIFDJF9049;
    bh=fjO4J4f09j409JF04J909f4j904JF940F9/Y=;
    h=To:Subject:From:Date;
    b=F4J90FJ490j09j490FJ094J0j94f90j409j490Jf90j904JF09j490fj904jf094J
     f09J40F9J904fj049J099j49J049J0FJijffjdlfjldkDLFJKLdjflEJFOIJFOEIEO
     JF9JF049j409j0F094J09FJ049jf049j=
Received: (from apache@localhost) <----------- THIS IS WHAT I'M TRYING TO CHANGE
    by mydomain.com (8.14.4/8.14.4/Submit) id fkdjfljlfsra39393;
    Fri, 3 Apr 2015 15:35:01 GMT
Message-Id: <[email protected]>
To: =?utf-8?B?Sm9lIEdhcmNpYQ==?= <[email protected]>
Subject: =?utf-8?B?VGVzdCBOZXdzbGV0dGVyLCBwbGVhc2UgaWdub3Jl?=
X-PHP-Originating-Script: 48:Sendmail.php
From: "mydomain.com" <[email protected]>
Date: Fri, 03 Apr 2015 15:35:01 +0000
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
MIME-Version: 1.0

Ein Teil von mir ist sich nicht sicher, ob dies normal ist, und ich glaube, ich bin nicht sicher, was dazu führen könnte, dass der Apache @ localhost erscheint, aber wenn jemand eine Idee hat, wäre er sehr dankbar, danke!

Bearbeiten Der von mir verwendete MTA ist Sendmail. Hier sind die Konfigurationsänderungen, die ich an der Datei sendmail.mc vorgenommen habe, um sie für meine Site zu berücksichtigen.

MASQUERADE_AS(`mydomain.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
INPUT_MAIL_FILTER(`opendkim', `S=inet:[email protected]')
define(`confCW_FILE', `/etc/mail/local-host-names')dnl
dnl define(`confDOMAIN_NAME', `mydomain.com')dnl

Bearbeiten Ich bin mir nicht sicher, ob diese Frage erneut als Duplikat markiert wurde. Daher dachte ich, ich sollte die Argumentation hervorheben, warum sie nicht auf der genannten Frage basiert, warum dies nicht der Fall ist. Der Wechsel zu Postfix ist keine Lösung, sondern eine Problemumgehung. Ich würde es hassen, all das Setup, das ich bisher mit Sendmail gemacht habe, zu entwurzeln, nur um auf andere potenzielle Probleme zu stoßen, die versuchen, Postfix zum Laufen zu bringen. Ich habe auch bereits erwähnt, dass der Befehl sendmail in der php.ini bearbeitet wird, wenn Sie die oben genannten Aufzählungspunkte lesen.

Bearbeiten Ich dachte, ich könnte genauso gut einige der anderen Dinge erwähnen, die ich versucht habe und die nicht funktionierten. Ich habe meiner sendmail.mc die folgenden Zeilen hinzugefügt:

FEATURE(`genericstable',`hash -o /etc/mail/genericstable.db')dnl
GENERICS_DOMAIN_FILE(`/etc/mail/generics-domains')dnl

Ich habe dann eine Generics-Domains-Datei mit der einzelnen Zeile "mydomain.com" erstellt. Dann habe ich eine genericstable-Datei mit der einzelnen Zeile "apache [email protected]" erstellt. Ich habe make im Mail-Verzeichnis ausgeführt, die CF-Datei neu erstellt und sendmail neu gestartet, aber keine Würfel.

Ich habe versucht, die Datei / etc / aliases zu bearbeiten. Ich habe versucht, die Zeile "apache: root" in "apache: root, mail @ mydomain.com" sowie nur "apache: [email protected]" zu ändern, aber das hat auch nichts bewirkt.

Ich habe auch versucht, der Datei / etc / mail / virtuserstable die einzelne Zeile "apache @ localhost [email protected]" hinzuzufügen. Das hat auch nichts gebracht.

Ich bin überrascht, wie frustrierend es ist, wenn dies richtig funktioniert. Ich bin so nah dran, es dort zu haben, wo ich es brauche, aber ich weiß ehrlich gesagt nicht, wo ich suchen soll, um die Zeile "apache @ localhost" zu ersetzen.

Nullflügel
quelle
Zum einen funktionieren die Lösungen für diese Fragen bei mir nicht. Die erste Lösung lautet: "Ich konnte nicht herausfinden, wie sendmail zum Laufen gebracht werden kann, also habe ich aufgegeben und stattdessen auf Postfix umgestellt." Das ist keine Lösung für das Problem, sondern eine Problemumgehung. Die zweite Lösung zum Hinzufügen des Servernamens zur Hosts-Datei hat bei mir ebenfalls nicht funktioniert - daher muss das Problem, auf das ich stoße, im Wesentlichen anders sein. Und es ist nicht so, dass ich darauf warten kann, dass jemand andere praktikable Lösungen für Fragen hinzufügt, die älter als 2 Jahre sind.
Zero Wing

Antworten:

4

Die Absender-E-Mail-Adresse ist der Benutzer des Dämons, der das Senden der Nachricht (Apache) unter dem in Ihrem MTA konfigurierten Domänennamen (entweder sendmail oder postfix) angefordert hat.

Wenn Ihr lokaler MTA Postfix ist, müssen Sie die myorigin-Einstellung ändern (in diesem Beispiel standardmäßig der konfigurierte Hostname. Localhost). Diese Einstellung befindet sich in der Datei main.cf (Standardspeicherort in den meisten Distributionen ist /etc/postfix/main.cf). Ändern Sie dies einfach in den Domainnamen, von dem es gesendet werden soll. Starten Sie dann postfix neu.

Natürlich kann es für Sie einfacher sein, den Hostnamen des Servers so zu ändern, dass er mit der gewünschten sendenden Domäne übereinstimmt.

Beachten Sie, dass Sie, wenn Sie E-Mails von diesem Server für diese Domain senden möchten, einen SPF-DNS-Eintrag hinzufügen möchten, der dies zulässt. Andernfalls werden Ihre Nachrichten wahrscheinlich von Spam-Filtern gelöscht.

Joe
quelle
Hallo, mein MTA ist eigentlich sendmail, obwohl ich denke, dass ich alle möglichen Anpassungen vorgenommen habe, die vorgenommen werden können (ich werde versuchen, einige dieser Änderungen zu meiner Frage hinzuzufügen). Könnten Sie auch klarstellen, wie Sie den Hostnamen des Servers so ändern, dass er mit der gewünschten sendenden Domäne übereinstimmt? Wenn Sie meinen, ich sollte es so machen, dass, wenn ich "Hostname" in die Befehlszeile eingebe, damit es mydomain.com ausgibt, ich das bereits eingerichtet habe. Außerdem habe ich einen SPF-Datensatz für die Domain festgelegt. Ich habe in der Frage erwähnt, dass SPF und DKIM eingerichtet sind und erfolgreich funktionieren (ich sehe einen Pass für beide in meinen E-Mail-Headern).
Zero Wing
Es wurde ein Beitrag gefunden, der möglicherweise Folgendes vorschlägt: Um die Umschlagadresse "von" unter Unix zu ändern, geben Sie für Ihre sendmail-Binärdatei die Option "-r" an. Sie können dies global in der php.ini tun, indem Sie der Befehlszeile "sendmail_path" die Option "-r" hinzufügen. Quelle: stackoverflow.com/questions/5666312/…
Joe
Ich habe versucht, "-r" zum "sendmail_path" in meiner php.ini hinzuzufügen, aber dies schien etwas zu beschädigen, da die E-Mail plötzlich nicht mehr vom Server gesendet wurde. Insbesondere habe ich die Zeile in --- sendmail_path = / usr / sbin / sendmail -t -i -r [email protected] geändert, aber es hat immer noch nicht funktioniert (ich habe es mit und ohne Anführungszeichen versucht und auch gemacht sicher, dass der Server neu gestartet wird, aber keine Würfel, und ich bin nicht sicher, was ihn daran gehindert hat, nach diesem Zeitpunkt E-Mails senden zu können.
Zero Wing
3

Beim Durchsuchen Ihrer Konfiguration scheinen ein paar Bits zu fehlen (und ich entschuldige mich für meine Syntax, ich poste nicht oft):

Sie möchten wahrscheinlich die Konfigurationsoption MASQUERADE_DOMAIN hinzufügen, die zu MASQUERADE_AS passt, und die MASQUERADE_DOMAIN mit dem FQDN des Hosts abgleichen (Hostname -f auf den meisten Linux-Plattformen). Ich habe es seltsame Dinge tun lassen, wenn sie nicht beide da sind, also wäre es:

MASQUERADE_AS(`mydomain.com')dnl
MASQUERADE_DOMAIN(`fqdnname.internal')dnl

und dann diese Zeile:

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

Sollte wirklich sein

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

oder es wird von den Befehlen make / hash ignoriert, wenn Sie die Datei sendmail.cf aktualisieren. Dieser Typ gibt eine großartige Erklärung, warum Was ist der Unterschied zwischen "dnl" und "dnl #" in einer sendmail.mc-Datei?

Ich versuche immer noch, den "Apache" -Teil auf meinem eigenen Server loszuwerden, aber ich hoffe, das bringt dich ein bisschen näher!

LiquidLight
quelle
1

System -> Konfiguration -> Erweitert -> System -> Rückgabepfad festlegen -> Ja

oder setzen Sie es auf E-Mail, die Sie verwenden möchten. Ich habe das heute gefunden - anscheinend wurden einige der E-Mails von Mailservern mit strengen Regeln (.edu, .gov ... usw.) abgelehnt.

Kalvin Klien
quelle
Verschwendete Stunden, um herauszufinden, warum unsere SPF-Datensätze ignoriert wurden und E-Mails immer noch als gefälscht gekennzeichnet wurden, wenn sie von unserer Website an uns gesendet wurden. Ich hatte eine Ahnung, dass es der Received-From-Header war, der mich hierher führte. Ihre 30-Sekunden-Lösung funktionierte sofort und beendete stundenlange Frustrationen! Einfachste Lösung für dieses Problem & Magento auf dieser Seite. Es wird empfohlen, dies zuerst zu versuchen, bevor Sie Ihre Serverkonfiguration ändern.
Ashley Swatton
Ich empfehle, den serverbasierten E-Mail-Dienst vollständig auszuschalten und einfach das Sparkpost + smtpPro-Plugin zu verwenden. Funktioniert wie ein Zauber mit 100.000 E-Mails / Monat kostenlos.
Kalvin Klien
1

Hinzufügen, define(`confRECEIVED_HEADER', `internal info removed')dnlum submit.mcdann eine .cfDatei zu generieren und sendmailwie gewohnt neu zu starten .

Wichtig: Die Datei, die bearbeitet werden sollte, damit dies funktioniert, ist submit.mcund NICHT sendmail.mc. Wenn Sie sendmail.mcstattdessen die Datei bearbeiten , wird der ReceivedHeader über dem von Ihnen erwähnten geändert (dh Received: from mydomain.com (www.mydomain.com [127.0.0.1])).

Hinweis: Anstelle der Zeichenkette internal info removedSie zur Verfügung gestellt einige der Informationen wieder verwenden können , während die empfindlichen ein Versteck, zum Beispiel: by $j id $i; $bzu erhalten by DOMAIN id ID; TIMESTAMP.

Das Obige entfernt / ersetzt die Informationen nach dem von ReceivedIhnen erwähnten Header:

Received: (from apache@localhost) <----------- THIS IS WHAT I'M TRYING TO CHANGE
by mydomain.com (8.14.4/8.14.4/Submit) id fkdjfljlfsra39393;
Fri, 3 Apr 2015 15:35:01 GMT

Siehe auch ähnliche Frage: So entfernen Sie Received: (von apache @ localhost) und sendmail-Version aus Headern

Chris Dev
quelle