我试图让 sendmail 将邮件传输到 MX 记录中指定的服务器,因此当服务器向 me@domain.com 发送电子邮件时,我希望它跳过 localhost 并直接转到 gmail。
我已经浏览了 sendmail 文档,但不太明白如何解释我的情况。本质上,我的服务器的主机名是“www.domain.com”,但是当我向“me@domain.com”发送电子邮件时,它最终会出现在本地邮件池中。
当我在调试模式下运行 sendmail 时:
sendmail -bt
> $=w
Run Code Online (Sandbox Code Playgroud)
我得到:
www.domain.com
www.domain.com.
domain.com
localhost
[54.245.___.___]
Run Code Online (Sandbox Code Playgroud)
因此,它正在拦截所有发往domain.com
. 我不希望它到达localhost
. 我希望它转到 gmail 服务器。
绑定到其他地址的所有邮件都可以正常工作。我也将 sendmail 配置为使用 DKIM。
我已经向 mailertable 添加了一条记录(并重建了 mailertable.db 并重新编译了 mc>cf 文件),但我不确定这是否是我需要做的,或者我是否做得正确。
domain.com esmtp:[aspmx.l.google.com]
Run Code Online (Sandbox Code Playgroud)
如何让它允许绑定到 users@domain.com 的邮件离开服务器?
附加信息:这是我的 sendmail.mc 文件:
divert(-1)dnl
include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setup for linux')dnl
OSTYPE(`linux')dnl
define(`confDEF_USER_ID', ``8:12'')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST', `True')dnl
define(`confDONT_PROBE_INTERFACES', `True')dnl
define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
define(`STATUS_FILE', `/var/log/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl
define(`confTO_IDENT', `0')dnl
FEATURE(`no_default_msa', `dnl')dnl
FEATURE(`smrsh', `/usr/sbin/smrsh')dnl
FEATURE(`mailertable', `hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
FEATURE(local_procmail, `', `procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
FEATURE(`accept_unresolvable_domains')dnl
FEATURE(`relay_based_on_MX')dnl
FEATURE(`relay_entire_domain')dnl
LOCAL_DOMAIN(`localhost.localdomain')dnl
MASQUERADE_AS(`domain.com')dnl
MASQUERADE_DOMAIN(`localhost.localdomain')dnl
EXPOSED_USER(`root')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@localhost')
MAILER(smtp)dnl
MAILER(procmail)dnl
Run Code Online (Sandbox Code Playgroud)
我终于在这里找到了一个相当全面的解决方案。总而言之,有许多选项(其中大部分已在其他答案中提到,但无论出于何种原因在我的特定情况下都不起作用)。
选项 1:从 /etc/mail/local-host-names 中删除条目
对我来说这个文件已经是空的
选项 2:删除 mc 文件中的任何 LOCAL_DOMAIN 条目
我没有
选项 3:告诉 sendmail 不要探测接口
define(`confDONT_PROBE_INTERFACES', `true')dnl
Run Code Online (Sandbox Code Playgroud)
在我的情况下,这是设置的,但有问题的主机仍然存在于 sendmail 的 w 类中
选项 4:重命名服务器。上面提供的外部链接甚至特别指出,“如果我想从 w 类中删除whipple.org,我可以将服务器重命名为 frodo.whipple.org、www.whipple.org、elvis.whipple.org,例如。”
对我来说这还不够。主机名为www.domain.com, sendmails 类 w 仍然包含 www.domain.com 和 domain.com (即使在重新启动后)
选项 5:这对我有用 将 LOCAL_RULE_0 添加到 sendmail mc 文件
LOCAL_RULESETS
LOCAL_RULE_0
R$* < @domain.com. > $* <tab>$#esmtp $@ mail.domain.com $: $1<@domain.com.>$2
Run Code Online (Sandbox Code Playgroud)
这需要放在文件的末尾并且<tab>
需要是一个实际的制表符
归档时间: |
|
查看次数: |
20715 次 |
最近记录: |