mail/mailx: 查询默认使用的MX记录?

mail/mailx: querying the default MX records that are used?

有没有办法 运行 linux 框上的程序或脚本来查看从 mail 或 [=12] 发送外发电子邮件时默认使用的 MX 记录=]?我正在编写一个实用程序,它将 运行 在一组大型随机 linux 机器上运行,我希望该实用程序能够自动找出将实际使用的 MX 主机使用 mailmailx 时的每台机器。

我知道我可以查看机器的邮件服务器的配置文件以查看外发电子邮件的设置,但每个主机可能使用不同的电子邮件服务器(sendmailpostfixexim,等等),而且我不想编写一个实用程序来搜索每个文件,然后尝试解析它可能找到的任何配置文件。

如果我知道 mailmailx 用于决定使用哪个服务器发送邮件的算法,我就可以在我自己的实用程序中复制该算法。

mailmailx 试试 127.0.0.1?或者他们会做一些事情,比如获取当前主机名,然后使用 DNS 查询来查找该主机的 MX 记录,或者如果 none 存在,则使用 A 记录中的信息?或者他们只是使用 sendmail 程序(在这种情况下,我需要弄清楚 sendmail 选择哪个传出服务器)? ...或者什么?

非常感谢。

我找到了 mailmailx 版本的源代码,mail 似乎只使用了 sendmail 可执行文件,mailx 允许 SMTP 服务器的可选规范,或者如果不存在,它也使用 sendmail 可执行文件。

这对我帮助不大,所以我想我需要使用我自己的算法。这是我想出的(伪代码)。有人看到这有什么问题吗? ...

set `mxs` = list of IP addr(s) of current hostname's MX record(s)
if `mxs` cannot be determined
    set `mxs` = one-element list of IP addr of current hostname's A record
    if `mxs` cannot be determined
        set `mxs` = one-element list of current host's IP address
        if for some reason `mxs` still can't be determined
            set `mxs` = one-element list containing '127.0.0.1'
        end if
    end if
end if

最后,mxs 将包含一个 IP 地址列表,当前计算机的 SMTP 服务器可能正在侦听这些地址。其中 none 仍然有可能真正用于发送电子邮件,但这对我来说没问题。

在现实世界中,我将使用集合而不是列表,以避免重复条目。

这个看起来怎么样?