0

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

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

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

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

非常感谢。

4

1 回答 1

0

我找到了 的源代码mail和版本mailx,它似乎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 地址列表。仍然有可能这些都不能真正用于发送电子邮件,但这对于我的目的来说是可以的。

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

这看起来怎么样?

于 2017-12-05T16:39:18.527 回答