我有一台运行 Exim 4 的 Debian Jessie 服务器,将 GMail 设置为智能主机。如果我尝试使用外部地址发送邮件(即[电子邮件保护]),它工作正常。如果我将邮件发送到root
或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
设置为将发给我的邮件发送到我的常规电子邮件帐户([电子邮件保护])。
# 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 中。
下面是我的尾部/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]
答案1
电子邮件地址根@空是无效电子邮件地址。远程服务器正确返回了错误电子邮件。
电子邮件地址通常需要由三部分组成,以符号 <@> 和点 <.> 分隔
第一部分通常是某种形式的用户名,但也可以是一个功能(销售、人力资源)或任何内容(只要您的 MTA 知道如何使用它),紧跟在符号 <@> 之后的第二部分是域名,紧跟在点 <.> 之后的最后一部分是 TLD 或顶级域名。出于显而易见的原因,这些不能是任意的。
[email protected]
MTA 不知道将您的电子邮件发送到地址为 root@empty 的何处。
当 MTA 知道如何处理特定格式的电子邮件地址时,这可能在本地系统上起作用,但一旦离开本地系统,它就会被拒绝,并且您会收到错误。
您需要做的是配置 exim,使其在本地传递格式为 name@example(其中 example 是您自己的域名)的电子邮件,而不是尝试将其发送出去,或者配置 exim 以正确的格式重写此类电子邮件[电子邮件保护]然后将其发送出去。
当你跑步时dpkg-重新配置 exim4-config有一个问题 接受邮件的其他目的地:如果您在其中添加了希望系统成为最终目的地的域,那么您尝试执行的操作应该可以正常工作。但您可能需要手动编辑配置文件。
由于您说您确实收到了电子邮件,但收到来自远程 MTA 的错误,因此您可能只需重新配置 exim 即可不发送此类电子邮件。我认为上述方法可能会自动解决该问题。
另请参阅:
https://www.rfc-editor.org/rfc/rfc5321
https://www.rfc-editor.org/rfc/rfc2821
更新:从您更新的问题来看,您似乎需要使用以下形式的电子邮件地址[电子邮件保护]或注册服务器.example.com在 google apps 上。我忘记具体怎么做了,但我知道可以配置。当然,请确保 server.example.com 的 DNS 设置正确。
关于你最后一条评论,你是否尝试将以下行添加到/etc/别名
根: [电子邮件保护]
这将自动告诉 exim 将发往该系统 root 帐户的邮件重定向至[电子邮件保护](甚至[电子邮件保护]如果您在别名中配置了它)。
答案2
您需要配置 exim 以将您的域添加到不合格的发件人和收件人地址(“不合格”的意思是“尚无域”)。
在纯 exim 中,该名称应为“qualify_domain”。由于您使用的是 debconf,我认为将 /etc/mailname 的内容设置为您的域应该可行。
然后,您就会遇到一个问题,即向外部发送邮件的用户的用户名应该与真实地址相对应。您的“root”用户将发送邮件,您希望它发送到哪里?通常的解决方案是让服务器只为自己接收邮件(myserver.example.com)。这样,系统生成的邮件就会保留在服务器上。对于向外部发送邮件,请使用 MUA 或 MTA 强制源电子邮件地址。对于 Exim (MTA),它称为发件人重写,你想要类似
begin rewrite
^mylogin@myserver$ my@email SFf`
答案3
我找到了根本原因,这要归功于@aseq回答以上,但我弄清楚了如何让它不发送来自 Google Postmaster 的额外邮件消息。
我曾关注过在 Debian 上使用 Exim4 设置 GMail 身份验证的教程,并要求我“选择” mail sent by smarthost; received via SMTP or fetchmail
。这导致 Exim 期望本地帐户也发送邮件,但我只想要将邮件发送到我的主要电子邮件中。
这是一个典型的例子XY问题我应该对此有更多了解。我通过mail sent by smarthost; no local mail
在其第一个屏幕上将exim4 设置为 解决了根本问题dpkg-reconfigure exim4-config
。重新启动 Exim4 的服务,邮件就可以正常工作了!