Функция net.LookupMX
Функция net.LookupMX выполняет DNS-запрос для получения MX-записей (Mail Exchange) указанного домена. В первый параметр функция принимает строку с доменным именем. Она возвращает срез структур *net.MX и ошибку. Каждая структура содержит поле Host с адресом почтового сервера и поле Pref с числовым приоритетом записи. Чем меньше значение приоритета, тем выше приоритет сервера.
Синтаксис
mxs, err := net.LookupMX(domain)
Пример
Давайте получим MX-записи для домена "example.com":
package main
import (
"fmt"
"net"
)
func main() {
mxs, err := net.LookupMX("example.com")
if err != nil {
fmt.Println("Error:", err)
return
}
for _, mx := range mxs {
fmt.Printf("Host: %s, Pref: %d\n", mx.Host, mx.Pref)
}
}
Результат выполнения кода:
"Host: mx.example.com., Pref: 10"
Пример
Давайте обработаем ситуацию, когда домен не имеет MX-записей:
package main
import (
"fmt"
"net"
)
func main() {
mxs, err := net.LookupMX("domain-without-mx.com")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("MX records found:", len(mxs))
for _, mx := range mxs {
fmt.Printf("Host: %s, Pref: %d\n", mx.Host, mx.Pref)
}
}
Результат выполнения кода:
"Error: lookup domain-without-mx.com: no such host"
Пример
Давайте отсортируем MX-записи по приоритету и выведем их в порядке предпочтения:
package main
import (
"fmt"
"net"
"sort"
)
func main() {
mxs, err := net.LookupMX("gmail.com")
if err != nil {
fmt.Println("Error:", err)
return
}
sort.Slice(mxs, func(i, j int) bool {
return mxs[i].Pref < mxs[j].Pref
})
for _, mx := range mxs {
fmt.Printf("Host: %s, Pref: %d\n", mx.Host, mx.Pref)
}
}
Результат выполнения кода:
"Host: gmail-smtp-in.l.google.com., Pref: 5"
"Host: alt1.gmail-smtp-in.l.google.com., Pref: 10"
"Host: alt2.gmail-smtp-in.l.google.com., Pref: 20"
"Host: alt3.gmail-smtp-in.l.google.com., Pref: 30"
"Host: alt4.gmail-smtp-in.l.google.com., Pref: 40"
Смотрите также
-
функцию
net.LookupHost,
которая возвращает IP-адреса для указанного домена -
функцию
net.LookupIP,
которая возвращает IP-адреса с возможностью фильтрации по версии протокола -
функцию
net.LookupNS,
которая возвращает NS-записи для указанного домена -
функцию
net.LookupTXT,
которая возвращает TXT-записи для указанного домена