配置 sendmail 以“example.com”的身份发送电子邮件,但将实际发送到“example.com”的电子邮件转发到另一台服务器

配置 sendmail 以“example.com”的身份发送电子邮件,但将实际发送到“example.com”的电子邮件转发到另一台服务器

第三方设置的基于云的服务器正在使用 sendmail 发送电子邮件。

现在,sendmail 已配置,以便来自www-data@localhost[1] 的电子邮件将作为 发送[email protected]。例如,这些电子邮件大多发送到第三方电子邮件[email protected](注意不同的目标域)。

但是,现在我们还需要发送电子邮件至[email protected]。但是,尝试这样做会导致。550 5.1.1 <[email protected]>... User unknown

我对配置 sendmail 严重茫然。

有人能提供一些关于如何正确做到这一点的指点吗?

[1] 这ServerAdmin/etc/apache2/sites-available/default


@MadHatter 询问:

“sendmail 已配置,以便来自 www-data@localhost 的电子邮件作为[电子邮件保护]“。具体怎么做呢?

思考通过以下几行/etc/mail/sendmail.mc

dnl # Replace sender's domain
MASQUERADE_AS(`example.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(`example.com')dnl

(再说一次,我不是 sendmail.mc 文件制作者;如果有某行需要查找,我很乐意将其发布在这里)。


以下是其他信息:

root@webserver:/etc/mail# grep '^Fw' sendmail.cf
Fw/etc/mail/local-host-names %[^\#]
root@webserver:/etc/mail# cat local-host-names
localhost
webserver

答案1

是否example.com列在本地电子邮件域列表中?要获取本地电子邮件域列表,请以 root 身份执行以下命令:

echo '$=w' | sendmail -Am -bt

Sendmail 默认将自动检测到的本地电子邮件域添加到 列出的域中/etc/mail/local-host-names。可以使用以下命令关闭它confDONT_PROBE_INTERFACES在 sendmail.mc 中

define(`confDONT_PROBE_INTERFACES',`True')

sendmail.mc 必须重新编译为 sendmail.cf,并且必须重新启动 sendmail 守护进程或者执行 HUP 才能查看新的 sendmail.cf。

答案2

感谢您尝试回答我的问题!

周末,最初设置服务器的人终于做了sendmail.mc如下修改(我今天早上刚刚收到他的电子邮件):

  • 删除以下行:
define(`confDOMAIN_NAME', `example.com')dnl
  • 在之前发布的4行之后添加一行:
MASQUERADE_AS(`example.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(`example.com')dnl
define(`MAIL_HUB', `mailgw.example.com.')dnl

现在,电子邮件将@example.com被正确路由到实际的邮件服务器@example.com

谢谢大家的帮助!

相关内容