我有一个运行 Exim 4 的 Debian Jessie 服务器,将 GMail 设置为 Smarthost。如果我尝试使用外部地址(即 [email protected])发送邮件,它可以正常工作。如果我向root
or canadianluke
(本地用户名)发送邮件,我会收到两条消息:我发送的消息,以及 GMail 自动生成的一封电子邮件,说它无法将邮件发送到root@empty
. 我们正在使用 Google Apps for Non-Profits。
电子邮件通过了,所以我知道它不完全是 Exim4,但我并不完全相信它完全是 GMail。
我用来在终端上发送电子邮件的命令:mail root -s Test
Delivery to the following recipient failed permanently:
root@empty
Technical details of permanent failure:
DNS Error: Address resolution of empty. failed: Domain name not found
----- Original message -----
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=MYDOMAIN_COM.20150623.gappssmtp.com; s=20150623;
h=from:to:subject:message-id:date;
bh=YJWMysPl36audKpPjWIG/TOl/JVGuKuq1l4/HEAjxb8=;
b=eIIQpLxw5TFAwnKw4P3gQpKlKbnf9I1PRpzfElBK4m+g+8cu/3z3hBFxMIMdV2Heli
5CDCvVpaxbiqBJBcyeNnJubwyb8pir2CEnkiKaLJVJjTK3fZkpiI0KlTWkjilMnZeTLy
SSzJdu437Bo2ONDY960+SX4cZtUE2p2fMcY7zhm8OTPWvXuDJ+DMoLVMuMfBfR+000dL
ksNXGUD9teGOxYBV5a4c5/SPyeHXY++Pr8AOY+4lU9nt3OIocaozwMGfJOiV0MiiC4MZ
w1UaXPjygFkzywsgjRbGyh483J0r4pS522fTUvz0qzAtMoIWmNOTCzAIulxxSQXb+hlp
HG8Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20130820;
h=x-gm-message-state:from:to:subject:message-id:date;
bh=YJWMysPl36audKpPjWIG/TOl/JVGuKuq1l4/HEAjxb8=;
b=gBolH/1kEUPQVIVrhMhtsOHaBHc9CIbEfqtAru5aJKSgoCst11qOUFQHC+tPrjVuhH
s1JvVw7w6f05543JED9ak2SaQ5o5Iz6oWAkS3Z72MBwBaFlM144d/e4N64OYUG0Df4aR
UDo/ryRdFOZ1WInOrTaoF9BWI/glLCtUPoadpqJ1utk74qEuZE4Ff3as/GjKAE5LXM3O
Me27QYddAMMCdHi2DPtmkiM/3TosQjdaGv1QbGjk/ZS/q1HqdXCbZhjj65PwIiGDRxdk
kw49ybPDjyoIFR5IzHM/vI7P3lC6LkXZq4zEgitBGuafwB52Luvl1jCTxUXZbLiODXko
yDxQ==
X-Gm-Message-State: ALoCoQn4f0bfvp6Tk6pmiVZgxHs/bn8OVKale7+375O8j9UzvWgsYVSltXGIbvQQk5Fxi3DKGh5o
X-Received: by 10.140.94.116 with SMTP id f107mr417247qge.0.1447108430809;
Mon, 09 Nov 2015 14:33:50 -0800 (PST)
Return-Path: <[email protected]>
Received: from example.com ([93.184.216.34])
by smtp.gmail.com with ESMTPSA id 83sm102514qhw.27.2015.11.09.14.33.50
for <root@empty>
(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
Mon, 09 Nov 2015 14:33:50 -0800 (PST)
From: root <[email protected]>
X-Google-Original-From: root <root@empty>
Received: from root by example.com with local (Exim 4.84)
(envelope-from <root@empty>)
id 1Zvv0W-0006Lj-Tf
for root@empty; Mon, 09 Nov 2015 17:33:48 -0500
To: root@empty
Subject: Sup
Message-Id: <[email protected]>
Date: Mon, 09 Nov 2015 17:33:48 -0500
更新。我让它再次发送邮件,但它给出了一个新的错误。我将我的用户名添加到/etc/aliases
以 root 身份发送邮件的位置,并/etc/email-addresses
设置为将发往我的邮件发送到我的常规电子邮件帐户 ([email protected])。
# more exim4/update-exim4.conf.conf
dc_eximconfig_configtype='smarthost'
dc_other_hostnames=''
dc_local_interfaces='127.0.0.1'
dc_readhost='ex.com'
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='smtp.gmail.com::587'
CFILEMODE='644'
dc_use_split_config='true'
dc_hide_mailname='true'
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'
现在,电子邮件显示为来自 的错误[email protected]
,仍然是相同的 DNS 错误:Address resolution of server.example.com failed: Domain name not found
在 Google Apps 中。
下面是 my 的尾部/var/log/exim4/mainlog
,显示邮件实际上正在离开服务器:
2015-11-12 07:01:01 1ZwqYn-0001oN-2H <= [email protected] U=root P=local S=2598
2015-11-12 07:01:01 1ZwqYn-0001oN-2H gmail-smtp-msa.l.google.com [2607:f8b0:400c:c06::6d] Network is unreachable
2015-11-12 07:01:02 1ZwqYn-0001oN-2H => [email protected] R=smarthost T=remote_smtp_smarthost H=gmail-smtp-msa.l.google.com [74.125.141.108] X=TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128 DN="C=US,ST=California,L=Mountain View,O=Google Inc,CN=smtp.gmail.com" A=plain C="250 2.0.0 OK 1447329663 h144sm1989632vke.26 - gsmtp"
2015-11-12 07:01:02 1ZwqYn-0001oN-2H Completed
我的/etc/aliases
文件:
# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
root: canadianluke
canadianluke: [email protected]
电子邮件地址root@empty不是有效的电子邮件地址。远程服务器返回错误电子邮件是正确的。
一个电子邮件地址通常需要由三部分组成,由 at 符号 <@> 和一个点 <.> 分隔
第一部分通常是某种形式的用户名,但也可以是函数(销售、人力资源)或其他任何东西(只要您的 MTA 知道如何处理它),第二部分紧跟在 at 符号 <@ > 是域名,点 <.> 之后的最后一部分是 TLD 或顶级域。由于显而易见的原因,这些不能是任意的。
MTA 不知道将地址为 root@empty 的电子邮件发送到哪里。
当 MTA 知道如何处理该特定格式的电子邮件地址时,这可能适用于本地系统,但是一旦它离开您的本地系统,它就会被拒绝并且您会收到错误消息。
您需要做的是配置 exim 以在本地发送格式为 name@example 的电子邮件(其中 example 是您自己的域)而不尝试将它们发送出去,或者配置 exim 以使用正确的格式 name@example 重写此类电子邮件.com,然后将它们发送出去。
当您运行dpkg-reconfigure exim4-config时,会出现一个问题 接受邮件的其他目的地:如果您在那里添加了您希望系统成为最终目的地的域,那么您尝试做的事情应该可以工作. 但是您可以手动编辑配置文件。
由于您说您实际上收到了电子邮件并从远程 MTA 收到错误,您可能只需要重新配置 exim 以不发送此类电子邮件。我认为上面的内容可能会自动解决这个问题。
另见:
https://www.rfc-editor.org/rfc/rfc5321
https://www.rfc-editor.org/rfc/rfc2821
更新:从您更新的问题来看,您似乎需要使用[email protected]形式的电子邮件地址或在 google 应用程序上注册server.example.com 。我完全忘记了如何做到这一点,但我知道可以配置它。当然要确保 server.example.com 的 DNS 设置正确。
关于您的最后评论,您是否尝试将以下行添加到/etc/aliases
根:[email protected]
这将自动告诉 exim 将发往该系统上的 root 帐户的邮件重定向到 [email protected](如果您在别名中配置,甚至是 [email protected])。
您需要配置 exim 以将您的域添加到不合格的发件人和收件人地址(“不合格”意味着“还没有域”)。
在纯粹的 exim 中,这将是“qualify_domain”。由于您使用的是 debconf,我认为将 /etc/mailname 的内容设置为您的域应该可以。
那么问题来了,向外发邮件的用户的用户名要对应真实地址。您的“root”用户将发送邮件,您希望它去哪里?通常的解决方案是说服务器只为自己和自己接收邮件(myserver.example.com)。这样系统生成的邮件就保留在服务器上。对于发往外部的邮件,使用 MUA 或 MTA 强制源电子邮件地址。对于 Exim (MTA),它被称为sender rewriting,你想要类似的东西
我发现根本原因是感谢@aseq 上面的回答,但我想出了如何让它不从 Google Postmaster 发送额外的邮件消息。
我遵循了一个在 Debian 上使用 Exim4 设置 GMail 身份验证的教程,它要求我“[c]hoose
mail sent by smarthost; received via SMTP or fetchmail
”。这导致 Exim 期望本地帐户也可以发送邮件,但我想要的只是发送的邮件到我的主要电子邮件。这是我应该更加注意的XY 问题的经典示例。我通过将 exim4 设置
mail sent by smarthost; no local mail
为dpkg-reconfigure exim4-config
. 重启Exim4的服务,邮件正常!