시작은 이렇게 하자. nslookup 을 사용할 것이다.
(use '[clojure.java.shell :only [sh]]) (sh "notepad" "a.txt") (sh "notepad" "/a.txt") (sh "pwd") (sh "nslookup") (sh "nslookup" "-query=mx" "google.com")
뭔가 보이는 것 같다.
(defn find-mx [hostname] (letfn [(nslookup [hostname] (sh "nslookup" "-query=mx" hostname))] (nslookup hostname))) (find-mx "google.com")자세히 보아하니 뭔가 엄청 나오는 거 같다.
좀 더 정리해보자. 보아하니 내가 찾으려는 내용에는 mail이라는 거와 exchanger라는게 붙어 있는 것 같다.
일단 해보자.
(defn find-mx [hostname] (letfn [(nslookup [hostname] (sh "nslookup" "-query=mx" hostname))] (remove nil? (map #(re-matches #"(.+)mail\sexchanger(.+)" %) (clojure.string/split (second (second (nslookup hostname))) #"\r\n"))))) (find-mx "google.com") (["google.com\tMX preference = 10, mail exchanger = aspmx.l.google.com" "google.com\tMX preference = 10, " " = aspmx.l.google.com"] ["google.com\tMX preference = 30, mail exchanger = alt2.aspmx.l.goog le.com" "google.com\tMX preference = 30, " " = alt2.aspmx.l.google.com"] ["google.com\tMX preference = 20, mail exchanger = alt1.aspmx.l.google.com" "google.com\tMX preference = 20, " " = alt1.aspmx.l .google.com"] ["google.com\tMX preference = 50, mail exchanger = alt4.aspmx.l.google.com" "google.co m\tMX preference = 50, " " = alt4.aspmx.l.google.com"] ["google.com\tMX preference = 40, mail exchan ger = alt3.aspmx.l.google.com" "google.com\tMX preference = 40, " " = alt3.aspmx.l.google.com"])
나온 거 같다. 다른 테스트도 해보자.
user=> (count (find-mx "google.com")) 5 user=> (count (find-mx "google33.com")) 0 user=> (count (find-mx "naver.com")) 3
MX레코드가 있는지 없는지만 확인하고 싶다면
(count (find-mx hostname)) 0) true false) (mx-exist? "google.com") true (mx-exist? "google3134.com") false