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

时间:2017-12-04 16:45:23

标签: dns outgoing-mail

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

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

如果我知道eximmail用于决定用于外发邮件的服务器的算法,那么我可以在我自己的实用程序中复制该算法。

mailxmail只需尝试mailx吗?或者他们是否做了类似获取当前主机名,然后使用DNS查询查找该主机的MX记录,或者如果不存在,则使用A记录中的信息?或者他们只是使用127.0.0.1程序(在这种情况下,我需要找出sendmail选择哪个传出服务器)? ......还是什么?

非常感谢。

1 个答案:

答案 0 :(得分:0)

我找到了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将包含当前计算机的SMTP服务器可能正在侦听的IP地址列表。仍然有可能这些都不会真正用于发送电子邮件,但这对我来说是可以的。

在现实世界中,我将使用集合而不是列表来避免重复输入。

这看起来如何?