go - 如何在golang中进行spf记录查找和检查?

标签 go spf

我需要进行域 spf 查找并返回“通过”/“失败” 如果失败,我需要返回 SPF 记录以进行进一步诊断

github上似乎有很多用于SPF检查的golang模块,但它们似乎都没有维护 另外,要使用的“官方”支持模块是什么

这是我的代码,请评论

package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "net"
    "os"

    "github.com/mileusna/spf"
)

func main() {
    domain := os.Args[1]
    log.SetOutput(ioutil.Discard)   // If I dont do this there are a lot of debug logs 
    ip := net.ParseIP("1.2.3.4")
    r := spf.CheckHost(ip, domain, "", "")
    fmt.Printf("Domain = %s\nSPF=%s", domain, r.String())   // I need to return the value , 
                                                           // How do I get the spf record 

}

如果我下载 github 模块并进行源代码更改是个好主意吗??

最佳答案

您可以引用这篇文章进行 SPF 查找。

https://ashish.one/gist/spf-lookup-in-go/

在此,它使用此 DNS 库:

https://github.com/miekg/dns

SPF 查找只不过是获取TXT 记录 并搜索字符串v=spf1,正如您在问题中提到的那样。它也做同样的事情。

您可以使用任何适合您要求的模块,并且可以对其进行更改。如果您发现您的更改也对其他人有帮助并且更通用,那么您应该针对您的更改针对特定 git 存储库提出 PR(拉取请求)。

如果您的更改仅满足您的要求,那么您应该仅将该代码用于您的用途。最好采用 fork,您可以通过更改来维护自己的存储库。

如果您没有进行任何分支并仍在使用原始项目,那么将来将很难更新特定的库。

关于go - 如何在golang中进行spf记录查找和检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61092275/

相关文章:

mysql - 使用golang在mysql中创建数据库

email - SPF、DKIM 和 DMARC 都已设置,但 dmarc-reports 一直在说相反的

php - 正则表达式仅从文本中提取 IPv4 地址

docker - Docker 容器连接中的服务器被拒绝,我应该在测试中添加 time.Sleep(100 * time.Millisecond) 吗?

firebase - 需要Docker Firestore项目ID

http - 在Golang中为http请求指定网络接口(interface)

azure - 如何使用 Microsoft Azure 服务器设置有效的 SPF 记录?

email - Gmail 发送名称错误的电子邮件

email - PermError SPF 永久错误 : Too many DNS lookup

go - 设置整个const block 的类型