Sendmail 名称解析问题

Sendmail 名称解析问题

有人让我查看一台旧的 RedHat 服务器(旧的意思是uname -aLinux server 2.4.20-27.7 #1 Thu Dec 11 15:04:48 EST 2003 i686 unknown,它存在 问题sendmail。据我所知,该服务器于 2003 年建立,从那时起就没怎么动过。断电后,它需要 才能fsck启动,从那时起,用户就收不到邮件了。

我看了一下/var/log/maillog,发现有很多这样的行:

Aug 22 21:26:22 server sendmail[12250]: p7KIujl05665: to=<[email protected]>, delay=2+00:22:16, xdelay=00:00:20, mailer=esmtp, pri=4369005, relay=demons.murgent.com., dsn=4.0.0, stat=Deferred: Name server: demons.murgent.com.: host name lookup failure
Aug 22 21:27:22 server sendmail[12250]: p7KHujo05650: to=<[email protected]>, delay=2+00:27:53, xdelay=00:00:20, mailer=esmtp, pri=4404312, relay=sweclo-web02.driften.net., dsn=4.0.0, stat=Deferred: Name server: sweclo-web02.driften.net.: host name lookup failure
Aug 22 21:27:43 server sendmail[12435]: p7MJNuk12435: SYSERR: putoutmsg ([190.242.41.83]): error on output channel sending "250 2.1.5 <[email protected]>... Recipient ok (will queue)": Connection reset by [190.242.41.83]
Aug 22 21:27:43 server sendmail[12435]: p7MJNuk12435: lost input channel from [190.242.41.83] to MTA after rcpt
Aug 22 21:27:43 server sendmail[12435]: p7MJNuk12435: from=<[email protected]>, size=0, class=0, nrcpts=0, proto=ESMTP, daemon=MTA, relay=[190.242.41.83]
Aug 22 21:28:22 server sendmail[12250]: p7KIujm05665: to=<[email protected]>, delay=1+23:39:41, xdelay=00:00:20, mailer=esmtp, pri=4413757, relay=cgsociety.org., dsn=4.0.0, stat=Deferred: Name server: cgsociety.org.: host name lookup failure

ping但是,我尝试过的每个实用程序( 、、 ...)host都可以从命令行进行名称解析dig。服务器也在运行named,但它似乎在某个时候已转移到使用另一个名称服务器(/etc/resolv.conf列出了服务器 IP,但注释掉了,而是指向路由器,然后转发到 ISP 的 DNS 服务器)。是否sendmail有一些内部方式来进行名称解析?

今天之前我从未查看过sendmail.cf文件(看过的东西无法被忽略),但我无法从中得到太多信息。它似乎没有提到名称解析。有什么想法我应该检查什么吗?

编辑:请求的配置文件:

resolv.conf:(192.168.0.25是服务器,192.168.0.1是网关/路由器)

# nameserver 192.168.0.25
nameserver 192.168.0.1

named.conf

// generated by named-bootconf.pl

options {
        directory "/var/named";
        /*
         * If there is a firewall between you and nameservers you want
         * to talk to, you might need to uncomment the query-source
         * directive below.  Previous versions of BIND always asked
         * questions using port 53, but BIND 8.1 uses an unprivileged
         * port by default.
         */
        // query-source address * port 53;
};

// 
// a caching only nameserver config
// 
zone "." IN {
        type hint;
        file "named.ca";
};

zone "localhost" IN {
        type master;
        file "hosts.domain.com";
        allow-update { none; };
};

zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "db.192.168.0";
        allow-update { none; };
};
key "key" {
        algorithm hmac-md5;
        secret "secret-key-edited-out";
};

编辑2:我重新安排了resolv.conf文件,以便在发生故障时恢复到服务器本身,现在它正在缓慢但稳定地(700 MHz Celeron,哇!)处理邮件队列。我不确定它被注释掉了多久,但也许最近有人要求其他人查看它……无论如何,为什么它只有在使用自己的 DNS 时才能工作?

答案1

这也许有帮助。

https://stackoverflow.com/questions/43970/configuring-sendmail-behind-a-firewall

简而言之:

更新了 sendmail.mc:

 define(`confSERVICE_SWITCH_FILE',`/etc/mail/service.switch')dnl

然后配置mail.switch文件:

 # cat /etc/mail/service.switch
  hosts files

编辑:让我们看看 resolv.conf 的输出。另外,我们还能获得 named.conf 的输出吗?

编辑 2:看起来这台机器有自己的主 DNS 服务器,在“hosts.domain.com”中具有特定的区域记录,这些记录在重新启动之前已解析。我想,如果您查看该区域文件,您将看到该区域文件中的域与 sendmail 无法解析的域相匹配。当然,考虑到名称服务器在 /etc/resolv.conf 中被注释掉,这不太可能。但以防万一,请取消注释该行并查看 sendmail 是否会解析域。

答案2

我之前遇到过 sendmail 和不正确的名称解析问题......

问题是我的“公共” IP 地址没有分配给我的 sendmail 箱上的任何接口。Sendmail 会尝试解析我的电子邮件中的域以指向正确的邮件服务器...并会重新尝试将传入的消息转发到其公共 NAT 地址。唯一的解决办法是在本地设置绑定服务器,并为其提供解析到该箱上的私有地址的条目。

我刚刚读了 Rilindo 的回答... 听起来是个更好的解决方案。我可能得找个时间试试。

相关内容