在我的专用服务器上,我安装了用于通过网站发送电子邮件的Postfix。 我的一个客户托pipe他们的电子邮件与第三方,所以我们在域上设置MXlogging。
但是,从服务器发送任何Postfix电子邮件时,他们不会收到电子邮件。 我认为,因为域指向服务器本身,它会尝试发送邮件给自己,但服务器上没有任何处理该域的电子邮件。 (有其他域的邮件帐户工作正常。)
如何让Postfix使用域名的MXlogging发送电子邮件? 服务器是带有标准LAMP堆栈的Ubuntu 8.10。 我安装了Webmin,主机提供了一个名为“Matrix”的控制面板。
编辑 :如果我尝试从我自己的地址发送电子邮件,我收到来自邮件传递系统的错误电子邮件,出现此错误:
<[email protected]>: user unknown. Command output: Invalid user specified. Final-Recipient: rfc822; [email protected] Action: failed Status: 5.1.1 Diagnostic-Code: x-unix; Invalid user specified.
这里是日志条目:
Jan 6 18:06:52 localhost postfix/pickup[29006]: 0329D3F69: uid=33 from=<[email protected]> Jan 6 18:06:52 localhost postfix/cleanup[30495]: 0329D3F69: message-id=<[email protected]> Jan 6 18:06:52 localhost postfix/qmgr[22461]: 0329D3F69: from=<[email protected]>, size=611, nrcpt=2 (queue active) Jan 6 18:06:52 localhost postfix/pipe[30497]: 0329D3F69: to=<[email protected]>, relay=maildrop, delay=0.15, delays=0.1/0/0/0.04, dsn=5.1.1, status=bounced (user unknown. Command output: Invalid user specified. ) Jan 6 18:06:52 localhost postfix/smtp[30498]: 0329D3F69: to=<[email protected]>, relay=gmail-smtp-in.l.google.com[209.85.227.27]:25, delay=0.61, delays=0.1/0.01/0.06/0.45, dsn=2.0.0, status=sent (250 2.0.0 OK 1294337212 o18si30528441wbo.103) Jan 6 18:06:52 localhost postfix/cleanup[30495]: 868723F75: message-id=<[email protected]> Jan 6 18:06:52 localhost postfix/bounce[30500]: 0329D3F69: sender non-delivery notification: 868723F75 Jan 6 18:06:52 localhost postfix/qmgr[22461]: 868723F75: from=<>, size=2553, nrcpt=1 (queue active) Jan 6 18:06:52 localhost postfix/qmgr[22461]: 0329D3F69: removed Jan 6 18:06:52 localhost postfix/pipe[30497]: 868723F75: to=<[email protected]>, relay=maildrop, delay=0.06, delays=0.01/0/0/0.05, dsn=2.0.0, status=sent (delivered via maildrop service) Jan 6 18:06:52 localhost postfix/qmgr[22461]: 868723F75: removed
所以,我对工作感到无聊,以为我会提到以下几点。 我从来没有使用过这个网站,所以,原谅我。
对于其中的一个答案,你之后评论说:
“好的,我有virtual_mailbox_domains = $ transport_maps和transport_maps = hash:/ etc / postfix / transport。该文件中有一行说condorproperties.co.uk maildrop: – 我应该删除该行吗? – DisgruntledGoat昨天”
然后跟着它:
“@Devdas:我已经尝试删除该行,并重新启动Postfix,它不能解决问题,我需要改变”maildrop“到其他东西? – DisgruntledGoat昨天”
你的第一个问题的答案是“是的”。 / etc / postfix / transport中的这一行强制本地maildelivery(通过maildrop)发送给condorproperties.co.uk的电子邮件。 删除它是最合适的。 问题是简单地重新启动后缀不足以应用更改。
问题是,configuration文件中configuration的映射是散列:/ etc / postfix / transport。 文件/ etc / postfix / transport是文件的可读版本,并且应该有一个对应的/etc/postfix/transport.db – 编译的hashmap文件。 您可以使用命令postmap将可读的版本编译为哈希版本。 Postfix会检查修改时间,并且应该在日志文件中大声抱怨/etc/postfix/transport.db过期。 所有你需要做的就是运行postmap / etc / postfix / transport,这样你之前所做的更改(使用condorproperties.co.uk删除行)才能生效。 事实上,我不相信你一旦发布了postmap命令,你甚至不得不做一个postfix重新加载更改,直到发布,但它不会伤害。
长话短说,运行postmap / etc / postfix / transport然后postfix重载。
干杯。
顺便说一句,你的日志文件中的巨大线索是这一行:1月6日18:06:52 localhost后缀/pipe道[30497]:0329D3F69:到=,继电器= maildrop,延迟= 0.15,延迟= 0.1 / 0/0 / 0.04, dsn = 5.1.1,status = bounced(用户未知。命令输出:指定的用户无效。)
注意,一半通过,它说继电器= maildrop?
你可以在这里粘贴postconf -n吗?
我敢打赌,你有mydomain.co.uk明确列出的一个mydestination,virtual_mailbox_domains或relay_domains与maildrop运输。
ring0有想法的权利,但我已经理解错误地parsing了这个问题。 我们的目标是让服务器上的其中一个域名的电子邮件去其他地方,但它留在Postfix。
任何邮件服务器将有本地configuration覆盖DNS。 因此,如果您的MTA不在DNS中,则您的本地configuration中有该域。
postfix遵循标准并执行一个域名的MX条目parsing,以便找出下一个要联系的服务器来传送邮件。
由于域名(区域)的TTL,您可能会遇到问题,例如您更新了注册服务商的MX条目,但该域的TTL使先前parsing的条目停留在域名服务器的caching中。
此外,目标服务器上的域名可能不会被声明为本地 ,使服务器拒绝邮件(请参阅日志,例如/var/log/mail.log ),考虑到您的发送服务器试图通过中继(垃圾邮件)目标服务器( /etc/postfix/main.cf mydestination )。
尝试一个dig +nocmd mydomain.tld mx +noall +answer以便轻松读取包含您所关注的域的TTL信息。
另外请检查您是否没有为您打算发送邮件的远程域以某种方式定义的任何自定义传输或传输地图。