获取域名的 MX 记录
另一个 DNS 请求常见的作用是获取域名的 MX 记录。MX 记录指定域名的邮件服务。MXrecords.go
工具将用 Go 履行这一任务。
MXrecords.go
工具的第一部分展示在下面的 Go 代码中:
package main
import (
"fmt"
"net"
"os"
)
func main() {
arguments := os.Args
if len(arguments) == 1 {
fmt.Println("Need a domain name!")
return
}
MXrecords.go
的第二部分包含如下 Go 代码:
domain := arguments[1]
MXs, err := net.LookupMX(domain)
if err != nil {
fmt.Println(err)
return
}
for _, MX := range MXs {
fmt.Println(MX.Host)
}
}
MXrecords.go
的工作方式与上节的NXrecords.go
类似。唯一的不同是使用 net.LookupMX()
函数替代 net.LookupNS()
函数。
执行 MXrecords.go
将产生如下输出:
$ go run MXrecords.go golang.com
aspmx.1.google.com.
alt3.aspmx.1.google.com.
alt1.aspmx.1.google.com.
alt2.aspmx.1.google.com.
$ go run MXrecords.go www.mtsoukalos.eu
lookup www.mtsoukalos.eu on 8.8.8.8:53: no such host
再次,您可以在 host(1)
工具的帮助下验证前面输出的有效性:
$ host -t mx golang.com
golang.com mail is handled by 2 alt3.aspmx.1.google.com.
golang.com mail is handled by 1 aspmx.1.google.com.
golang.com mail is handled by 2 alt1.aspmx.1.google.com.
golang.com mail is handled by 2 alt2.aspmx.1.google.com.
$ host -t mx www.mtsoukalos.eu
www.mtsoukalos.eu has no MX record