2017-12-04 16 views
0

mail 또는 mailx에서 보내는 전자 메일을 보낼 때 기본적으로 사용되는 MX 레코드를 확인하려면 Linux 상자에서 프로그램이나 스크립트를 실행하는 방법이 있습니까? 나는 크고 무작위로 설치된 리눅스 머신에서 실행될 유틸리티를 작성하고 있으며, 유틸리티가 실제로 012 호스트 시스템을 사용하기 위해 실제로 각 호스트에서 사용될 것인지를 알아 내고 싶다. mail 또는 mailx이 사용된다. . 돈을mail/mailx : 사용 된 기본 MX 레코드를 쿼리하고 있습니까?

는 내가 설정이 보내는 이메일이 무엇인지 확인하기 위해 기계의 메일 서버의 설정 파일을 볼 수 있습니다 알고 있지만, 각 호스트는 다른 이메일 서버 (sendmail, postfix, exim 등)를 사용하여 수 있습니다, 그리고 각각을 검색하고 찾을 수있는 설정 파일을 구문 분석하려고하는 유틸리티를 작성하려고합니다.

mailmailx이 나가는 메일에 사용할 서버를 결정하는 알고리즘을 알고 있다면 내 자신의 유틸리티 내에서 해당 알고리즘을 복제 할 수 있습니다.

mailmailx 그냥 시도 127.0.0.1? 또는 현재 호스트 이름을 얻은 다음 DNS 쿼리를 사용하여 해당 호스트의 MX 레코드를 찾거나 존재하지 않는 경우 A 레코드의 정보를 사용하는 것과 같은 작업을 수행합니까? 또는 그들은 단순히 sendmail 프로그램을 사용합니까 (이 경우 sendmail이 선택하는 보내는 서버를 알아야합니까?)? ... 또는 무엇을?

대단히 감사합니다.

답변

0

나는 mailmailx 버전의 소스 코드를 발견하고, 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 주소 목록을 포함합니다. 이들 중 어느 것도 실제로 이메일을 보내는 데는 작동하지 않을 수도 있지만 내 용도에는 괜찮습니다.

실제로는 중복 된 항목을 피하기 위해 목록이 아닌 집합을 사용합니다.

어떻게 보이나요?