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-сервер текущего компьютера. Все еще возможно, что ни один из них фактически не будет работать для отправки электронной почты, но это нормально для моих целей.

В реальном мире я буду использовать набор, а не список, чтобы избежать дублирования записей.

Как это выглядит?

Другие вопросы по тегам