Supprimer apache @ localhost des en-têtes de courrier électronique?

11

Ma configuration: j'exécute un site Web Magento sur un serveur Amazon Linux (qui semble être essentiellement CentOS) avec un serveur Web Apache. J'utilise également Google Apps pour gérer le courrier de mydomain.com.

J'ai réussi à configurer les enregistrements MX, SPF et DKIM pour le serveur et à les faire fonctionner, de sorte que je reçois un "Pass" pour SPF et DKIM lorsque j'envoie des e-mails. Cependant, j'ai rencontré un problème étrange que je n'arrive pas à surmonter --- une partie de l'en-tête des e-mails que j'envoie semble toujours dire:

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

J'ai cherché haut et bas un moyen de changer cela pour utiliser "[email protected]" à la place, mais je n'arrive pas à le comprendre.

Parmi les choses que j'ai essayées:

  • Changer le php.ini pour dire: / usr / sbin / sendmail -t -i -f [email protected]
  • Ajout à l'hôte virtuel de mydomain.conf de la ligne: ServerAdmin [email protected]
  • Définir le chemin de retour sur "Oui" dans le backend Magento (Système -> Configuration -> Avancé -> Système -> Paramètres d'envoi de courrier.

Si cela peut aider, le contenu de mon fichier / etc / hosts est le suivant:

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

Pour la dernière ligne du fichier hosts, j'ai également essayé la variante ...

127.0.0.1   localhost.localdomain mydomain.com

... mais ça n'a toujours pas fonctionné.

J'ai pensé que cela pourrait aussi aider si j'ajoutais les en-têtes de l'e-mail, au cas où cela pourrait donner des indices sur ce qui pourrait se passer (j'ai changé beaucoup de valeurs pour le garder généralisé).

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

Une partie de moi ne sait pas si c'est normal, et je suppose que je ne suis pas sûr de ce qui pourrait faire apparaître apache @ localhost, mais si quelqu'un a une idée, ce serait très apprécié, merci!

Modifier Le MTA que j'utilise est Sendmail. Voici les modifications de configuration que j'ai apportées au fichier sendmail.mc pour s'adapter à mon site.

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

Modifier Je ne sais pas si cette question a de nouveau été marquée comme doublon, j'ai donc pensé que je devrais souligner le raisonnement pour lequel elle n'est pas basée sur la question référencée et pourquoi elle ne l'est pas. Passer à Postfix n'est pas une solution, mais une solution de contournement. Je détesterais déraciner toute la configuration que j'ai faite avec Sendmail jusqu'à présent uniquement pour rencontrer d'autres problèmes potentiels en essayant de faire fonctionner Postfix à la place. J'ai également mentionné la modification de la commande sendmail dans php.ini, si vous lisez les points mentionnés ci-dessus.

Modifier J'ai pensé que je pourrais aussi bien mentionner certaines des autres choses que j'ai essayé de faire qui n'ont pas fonctionné. J'ai ajouté à mon sendmail.mc les lignes suivantes:

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

J'ai ensuite créé un fichier générique-domaines avec la seule ligne "mydomain.com" à l'intérieur. Ensuite, j'ai créé un fichier genericstable avec la seule ligne "apache [email protected]" à l'intérieur. J'ai exécuté make dans le répertoire de messagerie, recréé le fichier cf et redémarré sendmail, mais pas de dés.

J'ai essayé d'éditer le fichier / etc / aliases. J'ai essayé de changer la ligne "apache: root" pour dire "apache: root, mail @ mydomain.com", ainsi que "apache: [email protected]", mais cela n'a rien fait non plus.

J'ai également essayé d'ajouter au fichier / etc / mail / virtuserstable la ligne unique "apache @ localhost [email protected]". Cela n'a rien fait non plus.

Je suis surpris de voir à quel point il est frustrant de faire fonctionner cela correctement. Je suis si près de l'avoir là où j'en ai besoin, mais honnêtement, je ne sais pas où chercher pour remplacer la ligne "apache @ localhost".

Zero Wing
la source
Eh bien pour commencer, les solutions à ces questions ne fonctionnent pas pour moi. La première solution se résume à "Je ne pouvais pas comprendre comment faire fonctionner sendmail, alors j'ai abandonné et je suis passé à Postfix à la place". Ce n'est pas une solution au problème, c'est une solution de contournement. La deuxième solution, pour ajouter le nom du serveur au fichier hosts, ne fonctionnait pas non plus pour moi --- donc essentiellement le problème que je rencontre doit être différent. Et ce n'est pas comme si je pouvais attendre que quelqu'un ajoute d'autres solutions pratiques aux questions qui ont plus de 2 ans.
Zero Wing

Réponses:

4

L'adresse e-mail de l'expéditeur est l'utilisateur du démon qui a demandé l'envoi du message (apache) @ le nom de domaine configuré dans votre MTA (sendmail ou postfix).

Si votre MTA local est postfixé, vous devez modifier le paramètre myorigin (qui prend par défaut le nom d'hôte configuré. Localhost dans cet exemple). Ce paramètre se trouve dans le fichier main.cf (l'emplacement par défaut dans la plupart des distributions est /etc/postfix/main.cf). Modifiez simplement le nom de domaine à partir duquel vous souhaitez qu'il envoie. Redémarrez ensuite postfix.

Bien sûr, il peut être plus facile pour vous de simplement changer le nom d'hôte du serveur pour qu'il corresponde au domaine d'envoi souhaité.

Gardez à l'esprit que si vous allez envoyer des e-mails depuis ce serveur pour ce domaine, vous voudrez ajouter un enregistrement DNS SPF le permettant, sinon vos messages seront probablement vidés par des filtres anti-spam.

Joe
la source
Salut, mon MTA est en fait sendmail, bien que je pense que j'y ai apporté tous les ajustements possibles (j'essaierai d'ajouter certaines de ces modifications à ma question). Pourriez-vous également clarifier "la modification du nom d'hôte du serveur pour qu'il corresponde au domaine d'envoi souhaité?" Si vous voulez dire que je devrais faire en sorte que lorsque je tape "hostname" sur la ligne de commande pour qu'il affiche mydomain.com, je l'ai déjà configuré. Et aussi, j'ai un jeu d'enregistrements SPF pour le domaine, j'ai mentionné dans la question que j'ai le SPF et le DKIM configurés et fonctionnant avec succès (je vois une passe pour les deux dans mes en-têtes de courrier électronique).
Zero Wing
Trouvé un message qui pourrait aider à suggérer ce qui suit: Pour changer l'enveloppe "de" l'adresse sous unix, vous spécifiez une option "-r" dans votre binaire sendmail. Vous pouvez le faire globalement dans php.ini en ajoutant l'option "-r" à la ligne de commande "sendmail_path". source: stackoverflow.com/questions/5666312/…
Joe
J'ai essayé d'ajouter "-r" au "sendmail_path" dans mon php.ini, mais cela a semblé casser quelque chose, car le courrier a soudainement cessé d'envoyer du serveur. Plus précisément, j'ai changé la ligne en --- sendmail_path = / usr / sbin / sendmail -t -i -r [email protected], mais cela n'a toujours pas fonctionné (j'ai essayé avec et sans guillemets, et j'ai également fait assurez-vous de redémarrer le serveur, mais pas de dés, et je ne sais pas ce qui l'empêchait de pouvoir envoyer des e-mails après ce point).
Zero Wing
3

En parcourant votre configuration, il semble qu'il manque quelques bits (et désolé pour ma syntaxe, je ne poste pas souvent):

Vous voudrez probablement ajouter l'option de configuration MASQUERADE_DOMAIN pour aller avec MASQUERADE_AS, en faisant correspondre MASQUERADE_DOMAIN à quel que soit le FQDN de l'hôte (hostname -f sur la plupart des plates-formes Linux). Je l'ai fait faire des choses étranges s'ils n'étaient pas tous les deux là, alors ce serait:

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

puis cette ligne:

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

Devrait vraiment être

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

ou il sera ignoré par les commandes make / hash lorsque vous mettrez à jour le fichier sendmail.cf. Ce gars donne une excellente explication de la raison pour laquelle Quelle est la différence entre "dnl" et "dnl #" dans un fichier sendmail.mc?

J'essaie toujours de me débarrasser de la partie "apache" de mon propre serveur, mais j'espère que cela vous rapprochera un peu!

LiquidLight
la source
1

Système -> Configuration -> Avancé -> Système -> Définir le chemin de retour -> Oui

ou définissez-le sur l'e-mail que vous souhaitez utiliser. Je viens de le trouver aujourd'hui - apparemment, certains des e-mails étaient rejetés par les serveurs de messagerie avec des règles strictes (.edu, .gov ... etc.)

Kalvin Klien
la source
Des heures perdues à essayer de comprendre pourquoi nos enregistrements SPF étaient ignorés et les e-mails étaient toujours marqués comme usurpés lorsqu'ils nous étaient envoyés depuis notre site. J'ai eu un pressentiment, c'est l'en-tête Received-From qui m'a conduit ici. Votre solution de 30 secondes a fonctionné instantanément et a mis fin à des heures de frustration! Solution la plus simple pour ce problème et Magento sur cette page. Je vous recommande d'essayer ceci avant de modifier la configuration de votre serveur.
Ashley Swatton
Je recommande de désactiver complètement le service de messagerie basé sur le serveur et d'utiliser simplement le plugin Sparkpost + smtpPro. Fonctionne comme un charme avec 100 000 e-mails / mois gratuits.
Kalvin Klien
1

Ajouter define(`confRECEIVED_HEADER', `internal info removed')dnlà submit.mcgénérer ensuite le .cffichier et redémarrer sendmailcomme d' habitude.

Important: le fichier qui doit être modifié pour que cela fonctionne est submit.mc, et NON sendmail.mc. Si vous modifiez le sendmail.mcfichier à la place, l' Receiveden-tête au-dessus de celui que vous avez mentionné sera celui modifié (c'est-à-dire Received: from mydomain.com (www.mydomain.com [127.0.0.1])).

Remarque: Au lieu de la chaîne littérale, internal info removedvous pouvez réutiliser certaines des informations fournies tout en masquant les informations sensibles, par exemple: by $j id $i; $bpour obtenir by DOMAIN id ID; TIMESTAMP.

Ce qui précède supprimera / remplacera les informations après l'en- Receivedtête que vous avez mentionné:

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

Voir aussi la question similaire: Comment supprimer Received: (de apache @ localhost) et la version sendmail des en-têtes

Chris Dev
la source