mail/mailx: запрашивать используемые по умолчанию записи MX?
Есть ли способ запустить программу или сценарий в окне Linux, чтобы увидеть, какие записи MX используются по умолчанию при отправке исходящей электронной почты с mail
или же mailx
? Я пишу утилиту, которая будет запускаться на большом случайном наборе Linux-машин, и я хотел бы, чтобы эта утилита автоматически определяла хосты MX, которые будут фактически использоваться на каждой машине, когда mail
или же mailx
используются.
Я знаю, что могу взглянуть на файл конфигурации почтового сервера машины, чтобы увидеть, каковы настройки для исходящей электронной почты, но каждый хост может использовать свой почтовый сервер (sendmail
, postfix
, exim
и т. д.), и я не хочу писать утилиту, которая ищет каждую из них, а затем пытается проанализировать любые файлы конфигурации, которые она может найти.
Если бы я знал алгоритм, mail
а также mailx
использовать для решения, какой сервер использовать для исходящей почты, я мог бы затем повторить этот алгоритм в моей собственной утилите.
Делать mail
а также mailx
просто попробуй 127.0.0.1
? Или они делают что-то вроде получения текущего имени хоста, а затем с помощью DNS-запроса, чтобы найти записи MX для этого хоста, или, если таковые не существуют, использовать информацию из записи A? Или они просто используют sendmail
программа (в этом случае мне нужно выяснить, какой исходящий сервер sendmail
выбирает)? ... или что?
Большое спасибо.
1 ответ
Я нашел исходный код для 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
будет содержать список IP-адресов, которые, вероятно, будет прослушивать SMTP-сервер текущего компьютера. Все еще возможно, что ни один из них фактически не будет работать для отправки электронной почты, но это нормально для моих целей.
В реальном мире я буду использовать набор, а не список, чтобы избежать дублирования записей.
Как это выглядит?