获取域名的 MX 记录

另一个 DNS 请求常见的作用是获取域名的 MX 记录。MX 记录指定域名的邮件服务。MXrecords.go 工具将用 Go 履行这一任务。

MXrecords.go 工具的第一部分展示在下面的 Go 代码中:

  1. package main
  2. import (
  3. "fmt"
  4. "net"
  5. "os"
  6. )
  7. func main() {
  8. arguments := os.Args
  9. if len(arguments) == 1 {
  10. fmt.Println("Need a domain name!")
  11. return
  12. }

MXrecords.go 的第二部分包含如下 Go 代码:

  1. domain := arguments[1]
  2. MXs, err := net.LookupMX(domain)
  3. if err != nil {
  4. fmt.Println(err)
  5. return
  6. }
  7. for _, MX := range MXs {
  8. fmt.Println(MX.Host)
  9. }
  10. }

MXrecords.go 的工作方式与上节的NXrecords.go类似。唯一的不同是使用 net.LookupMX() 函数替代 net.LookupNS() 函数。

执行 MXrecords.go 将产生如下输出:

  1. $ go run MXrecords.go golang.com
  2. aspmx.1.google.com.
  3. alt3.aspmx.1.google.com.
  4. alt1.aspmx.1.google.com.
  5. alt2.aspmx.1.google.com.
  6. $ go run MXrecords.go www.mtsoukalos.eu
  7. lookup www.mtsoukalos.eu on 8.8.8.8:53: no such host

再次,您可以在 host(1) 工具的帮助下验证前面输出的有效性:

  1. $ host -t mx golang.com
  2. golang.com mail is handled by 2 alt3.aspmx.1.google.com.
  3. golang.com mail is handled by 1 aspmx.1.google.com.
  4. golang.com mail is handled by 2 alt1.aspmx.1.google.com.
  5. golang.com mail is handled by 2 alt2.aspmx.1.google.com.
  6. $ host -t mx www.mtsoukalos.eu
  7. www.mtsoukalos.eu has no MX record