0

修补验证几个域,发现手动过程相当乏味。我的 DNS 控制器提供 API 访问,所以我想为什么不对整个事情编写脚本。

诀窍是当我打卡时,我无法弄清楚如何从 boto 访问所需的 TXT 和 CNAME 记录以进行 DKIMS 验证

dkims = conn.verify_domain_dkim('DOMAIN.COM')

它将 DOMAIN.COM 添加到等待验证的域列表中,但不提供所需的记录,dkims 的返回值为

{'VerifyDomainDkimResponse': {
    'ResponseMetadata': {'RequestId': 'REQUEST_ID_STRING'},
    'VerifyDomainDkimResult': {'DkimTokens': {
        'member': 'DKIMS_TOKEN_STRING'}}}}

是否有一些未记录的方式来获取 REQUEST_ID 或 TOKEN_STRING 来提取这些记录?


更新

如果您有 aws 帐户,您可以在以下位置查看我所追求的记录

https://console.aws.amazon.com/ses/home?region=us-west-2#verified-senders:domain

选项卡:详细信息::记录类型:TXT(文本)

选项卡:DKIM:: DNS 记录 1、2、3

这些是添加到 DNS 控制器以验证和允许 DKIM 签名发生所需的记录

4

2 回答 2

2

这就是我用python做的方式。

DOMINIO = 'mydomain.com'

from boto3 import Session
session = Session(
    aws_access_key_id=MY_AWS_ACCESS_KEY_ID,
    aws_secret_access_key=MY_AWS_SECRET_ACCESS_KEY,
    region_name=MY_AWS_REGION_NAME)
client = session.client('ses')

# gets VerificationToken for the domain, that will be used to add a TXT record to the DNS
result = client.verify_domain_identity(Domain=DOMINIO)
txt = result.get('VerificationToken')

# gets DKIM tokens that will be used to add 3 CNAME records
result = client.verify_domain_dkim(Domain=DOMINIO)
dkim_tokens = result.get('DkimTokens')  # this is a list

在代码的最后,您将拥有“txt”和“dkim_tokens”变量,分别是一个字符串和一个列表。

您需要将 TXT 记录添加到您的 dns,其中主机名是“_amazonses”,值是“txt”变量的值。

此外,您需要将 3 个 CNAME 记录添加到您的 dns,一个用于“dkim_tokens”列表中存在的每个令牌,其中每个记录的主机名的形式为[dkimtoken]._domainkey,目标是[dkimtoken].dkim .amazonses.com

添加 dns 记录后,几分钟(可能几个小时)后,亚马逊将检测并验证域,并向您发送电子邮件通知。之后,您可以通过执行以下调用来启用 D​​kim 签名:

client.set_identity_dkim_enabled(Identity=DOMINIO, DkimEnabled=True)

这里使用的方法是verify_domain_identityverify_domain_dkimset_identity_dkim_enabled。您可能还想看看get_identity_verification_attributesget_identity_dkim_attributes

于 2016-03-08T11:52:14.070 回答
0

我认为get_identity_dkim_attributes方法将返回您正在寻找的信息。您传入您感兴趣的域名,它会返回该身份的状态以及 DKIM 令牌。

于 2013-05-02T14:06:12.173 回答