是否有一种方法可以在linux盒上运行程序或脚本,查看在从mail或mailx发送发送出去的电子邮件时默认使用了哪些MX记录?我正在编写一个实用程序,它将在一大组随机的linux机器上运行,我希望该实用程序能够自动计算出当使用mail或mailx时,每台机器上实际使用的MX主机。
我知道我可以查看机器的邮件服务器的配置文件,看看发送电子邮件的设置是什么,但是每个主机都可能使用不同的电子邮件服务器(sendmail、postfix、exim等),我不想编写一个实用工具来搜索每个工具,然后尝试解析它可能找到的任何配置文件。
如果我知道mail和mailx用于决定用于发送邮件的服务器的算法,那么我就可以在自己的实用程序中复制该算法。
mail和mailx只是尝试127.0.0.1吗?或者他们会做一些事情,比如获取当前主机名,然后使用DNS查询来查找该主机的MX记录,或者如果不存在,则使用A记录中的信息?或者他们只是使用sendmail程序(在这种情况下,我需要弄清楚sendmail选择哪个传出服务器)?不然呢?
非常感谢。
发布于 2017-12-05 16:39:18
我已经找到了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地址列表。这些都不可能真正适用于发送电子邮件,但就我的目的而言,这是可以的。
在现实世界中,我将使用集合而不是列表来避免重复条目。
这个看上去怎么样?
https://stackoverflow.com/questions/47638065
复制相似问题