如何configurationsendmail通过MXlogging发送邮件而不是本地主机?

我试图让sendmail将邮件传输到MXlogging中指定的服务器,所以当服务器发送邮件[email protected]我希望它跳过本地主机,并直接到Gmail。

我已经阅读了sendmail文档,但不太了解如何解释我的情况。 本质上,我的服务器的主机名为“www.domain.com”,但是当我发送邮件到“[email protected]”时,它会在本地邮件缓冲区中结束。

当我在debugging模式下运行sendmail时:

sendmail -bt > $=w 

我得到:

 www.domain.com www.domain.com. domain.com localhost [54.245.___.___] 

所以,它拦截所有发送到domain.com邮件。 我不希望它到达localhost 。 我希望它去gmail服务器。

所有邮件绑定到其他地址工作正常。 我也有sendmailconfiguration使用DKIM。

我已经添加了一个loggingmailertable(和重buildmailertable.db并重新编译mc> cf文件),但我不知道这是我需要做的,或者如果我正确地做。

 domain.com esmtp:[aspmx.l.google.com] 

我如何获得它允许邮件到[email protected]离开服务器?

其他信息:这是我的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 

    更改服务器的主机名。 主机名永远不会等于裸露的域名是没有道理的。

    我终于find了一个相当全面的解决scheme。 总而言之,有很多select(其中大部分都是在其他答案中提到的,但是由于某些原因,在我的特定情况下不起作用)。

    选项1:从/ etc / mail / local-host-names中删除条目

    对我来说这个文件已经是空的了

    选项2:删除mc文件中的任何LOCAL_DOMAIN条目

    我没有

    选项3:告诉sendmail不要探测接口

     define(`confDONT_PROBE_INTERFACES', `true')dnl 

    在我的情况下,这是确定的,但是有问题的主机仍然在sendmail的w类中

    选项4:重命名服务器。 上面提供的外部链接更具体地说:“如果我想从w类移除whipple.org,我可以将服务器重命名为frodo.whipple.org,www.whipple.org,elvis.whipple.org。”

    对我来说这是不够的。 与主机名为http://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 

    这需要在文件的末尾, <tab>需要是一个实际的制表符

    这是我对你的问题的理解:

    1. 您安装了Sendmail,以便您可以使用它从您的网站发送电子邮件。

    2. 您将Sendmailconfiguration为公用DNS名称空间的授权电子邮件服务器。

    3. 您不希望Sendmail对您的公共DNS名称空间具有权威性。 您希望将发送到您的公共DNS名称空间的电子邮件发送到您的Google托pipe电子邮件。

    解决scheme:重新configurationSendmail,使其对您的公共DNS名称空间不具有权威性。

    我对sendmailconfiguration并不是很熟悉,但是我觉得应该对MXlogging做正确的事情。 不过,我想可能在DNS查找的优先级上,在使用它的DNS服务器之前,sendmail首先查询大多数基于Unix操作系统的本地主机文件/etc/hosts 。 如果是这种情况,并且主机文件中有一个条目将您的机器指定为domain.com,如果将其设置为主机名,则可能是发生了什么事情。 您可以通过修改条目或添加新条目来编辑主机文件以适应您在这种特定情况下的需要。

    或者您可以configurationsendmail来parsingurl时忽略本地系统hosts文件。 我不知道该怎么做。

    1)Sendmail自动填写本地电子邮件域列表( $=w )。

    你无法closures你的sendmail.mc中使用以下行:

     define(`confDONT_PROBE_INTERFACES',`True') 

    您可以在/etc/mail/local-host-names文件中手动添加本地电子邮件。
    (它需要HUPing或重启后的sendmail守护进程)

    2)Sendmail可以添加(自动configuration)“这个主机的电子邮件名”( $j )到本地电子邮件域的列表。

    你可以定义“这个主机的电子邮件名称”

     define(`confDOMAIN_NAME',`hostname.example.net') 

    3) mailertable 不是 consultede交付到$=w列出的域名。

    发送邮件的代码是使用完整的电子邮件地址,还是只通过本地帐户将邮件发送出去? 因为:

    这是告诉sendmail将所有邮件发送到本地的[email protected]

     LOCAL_DOMAIN(`localhost.localdomain')dnl 

    这是告诉sendmail重写本地地址domain.com域,但不会改变本地交付

     MASQUERADE_AS(`domain.com')dnl MASQUERADE_DOMAIN(`localhost.localdomain')dnl 

    好吧。 或者,向我解释,如果我只想从服务器发送电子邮件而不是发送给我,我会怎么做。

    第1步:返回到默认configuration。
    步骤2:使用默认configuration。