从电子邮件标题中删除 apache@localhost?

从电子邮件标题中删除 apache@localhost?

我的设置:我在 Amazon Linux 服务器(基本上是 CentOS)上运行 Magento 网站,并使用 Apache 网络服务器。我还使用 Google Apps 来管理 mydomain.com 的邮件。

我能够成功为服务器设置 MX、SPF 和 DKIM 记录并使其正常工作,这样当我发送电子邮件时,SPF 和 DKIM 都会收到“通过”的通知。但是,我遇到了一个奇怪的问题,我似乎无法解决 --- 我发送的电子邮件的标题的一部分似乎总是显示:

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

我到处寻找方法将其更改为使用“[电子邮件保护]“而是,但我似乎无法弄清楚。

我尝试过的方法包括:

  • 将 php.ini 更改为:/usr/sbin/sendmail -t -i -f[电子邮件保护]
  • 在 mydomain.conf 的虚拟主机中添加以下行:ServerAdmin[电子邮件保护]
  • 在 Magento 后端将返回路径设置为“是”(系统 -> 配置 -> 高级 -> 系统 -> 邮件发送设置。

如果有帮助的话,我的 /etc/hosts 文件的内容如下:

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

对于 hosts 文件的最后一行,我也尝试了变体......

127.0.0.1   localhost.localdomain mydomain.com

...但它仍然不起作用。

我认为如果我添加电子邮件的标题也可能会有所帮助,以防万一这可能会提供一些可能发生的事情的线索(我已经改变了很多值以使其保持通用性)。

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

我有点不确定这是否正常,我想我不确定是什么原因导致 apache@localhost 出现,但如果有人知道的话将不胜感激,谢谢!

编辑 我使用的 MTA 是 Sendmail。以下是我对 sendmail.mc 文件所做的配置更改,以适应我的网站。

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

编辑我不确定这个问题是否再次被标记为重复,所以我认为我应该强调为什么它不是基于所提及的问题。切换到 Postfix 不是一个解决方案,而是一个变通方法。我不想彻底放弃迄今为止对 Sendmail 所做的所有设置,而只是在尝试让 Postfix 工作时遇到其他潜在问题。如果您阅读了我上面提到的要点,我也已经提到过在 php.ini 中编辑 sendmail 命令。

编辑我想我也可以提一下我尝试过但不起作用的其他一些事情。我在 sendmail.mc 中添加了以下几行:

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

然后我创建了一个 generics-domains 文件,里面只有一行“mydomain.com”。然后,我创建了一个 genericstable 文件,里面只有一行“apache[电子邮件保护]“在里面。我在邮件目录中运行了 make,重新创建了 cf 文件,并重新启动了 sendmail,但没有任何效果。

我尝试编辑 /etc/aliases 文件。我尝试将“apache: root”行改为“apache:root,[电子邮件保护]",以及只是“apache:[电子邮件保护]“,但这也没有任何作用。

我还尝试在 /etc/mail/virtuserstable 文件中添加一行“apache@localhost[电子邮件保护]“。那也没什么作用。

我很惊讶让它正常工作是多么令人沮丧。我离我需要它的地方已经很近了,但老实说,我不知道在哪里可以找到“apache@localhost”行的替换。

答案1

发件人电子邮件地址是调用要发送消息的守护进程 (apache) 的用户 @ 您在 MTA (sendmail 或 postfix) 中配置的域名。

如果您的本地 MTA 是 postfix,则需要更改 myorigin 设置(默认为配置的主机名。本例中为 localhost)。此设置位于 main.cf 中(大多数发行版中的默认位置为/etc/postfix/main.cf)。只需将其更改为您希望它从中发送的域名即可。然后重新启动 postfix。

当然,您可能只需更改服务器的主机名以匹配所需的发送域就会更容易。

请记住,如果您要从该服务器为该域发送电子邮件,您将需要添加允许这样做的 SPF DNS 记录,否则您的邮件可能会被垃圾邮件过滤器丢弃。

答案2

在查看您的配置时,似乎缺少了几点(抱歉我的语法,我并不经常发帖):

您可能希望添加 MASQUERADE_DOMAIN 配置选项以配合 MASQUERADE_AS,将 MASQUERADE_DOMAIN 与主机的 FQDN 相匹配(大多数 Linux 平台上的主机名 -f)。如果它们不在那里,我会让它做一些奇怪的事情,所以它会是:

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

然后是这一行:

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

确实应该

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

或者当您更新 sendmail.cf 文件时它将被 make/hash 命令忽略。这个家伙很好地解释了为什么sendmail.mc 文件中的“dnl”和“dnl #”有什么区别?

我仍在尝试摆脱我自己的服务器中的“apache”部分,但我希望这能让你更接近一点!

答案3

系统 -> 配置 -> 高级 -> 系统 -> 设置返回路径 -> 是

或者将其设置为您想要使用的电子邮件。今天才发现这一点 - 显然有些电子邮件被具有严格规则的邮件服务器拒绝(.edu、.gov...等)

答案4

添加define(`confRECEIVED_HEADER', `internal info removed')dnl然后submit.mc生成.cf文件并sendmail照常重新启动。

重要的:为了实现此目的,需要编辑的文件是submit.mc,而不是sendmail.mc。如果您改为编辑sendmail.mc文件,则Received您提到的文件上方的标题将是被修改的标题(即Received: from mydomain.com (www.mydomain.com [127.0.0.1]))。

笔记:您可以重用所提供的一些信息,同时隐藏敏感信息,而不是文字字符串internal info removed,例如:by $j id $i; $b获取by DOMAIN id ID; TIMESTAMP

Received以上操作将删除/替换您提到的标题后的信息:

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

另请参阅类似问题:如何从标题中删除已接收:(来自 apache@localhost)和 sendmail 版本

相关内容