有没有办法在Linux机器上运行程序或脚本,以查看从mail
或mailx
发送外发电子邮件时默认使用哪些MX记录?我正在编写一个将在大型随机Linux机器上运行的实用程序,我希望该实用程序能够在mail
时自动找出实际在每台机器上使用的MX主机或mailx
被使用。
我知道我可以查看机器的邮件服务器的配置文件,看看外发电子邮件的设置是什么,但每个主机可能正在使用不同的电子邮件服务器(sendmail
,postfix
,{{ 1}}等等,我不想编写一个实用程序来搜索每一个,然后尝试解析它可能找到的任何配置文件。
如果我知道exim
和mail
用于决定用于外发邮件的服务器的算法,那么我可以在我自己的实用程序中复制该算法。
mailx
和mail
只需尝试mailx
吗?或者他们是否做了类似获取当前主机名,然后使用DNS查询查找该主机的MX记录,或者如果不存在,则使用A记录中的信息?或者他们只是使用127.0.0.1
程序(在这种情况下,我需要找出sendmail
选择哪个传出服务器)? ......还是什么?
非常感谢。
答案 0 :(得分: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地址列表。仍然有可能这些都不会真正用于发送电子邮件,但这对我来说是可以的。
在现实世界中,我将使用集合而不是列表来避免重复输入。
这看起来如何?