标签: dkim

Postfix milters 的正确顺序

我将以下 Milters 与 Postfix 一起使用:

ClamAV、OpenDKIM、OpenDMARC、Rspamd

这也是通过 调用它们的顺序smtpd_milters

对于他们来说,关于性能、资源和垃圾邮件防护的最佳顺序是什么?

postfix dkim clamav milter dmarc

4
推荐指数
1
解决办法
1829
查看次数

DKIM:“未通过身份验证”但“验证成功”

一个问题,这是否是正常的 DKIM 行为。当从 mydomain 发送电子邮件时,它会添加一个签名,看起来不错。但是当收到来自外部的电子邮件时,比如outlook.com,我得到以下信息:

“未经过身份验证”是正常行为吗?它确实说 DKIM 验证成功,但我有点担心它前面的消息。

Aug 13 09:39:37 www opendkim[13789]: 50CDC63F63: mail-
oln040092065020.outbound.protection.outlook.com [40.92.65.20] not internal
Aug 13 09:39:37 www opendkim[13789]: 50CDC63F63: not authenticated
Aug 13 09:39:37 www opendkim[13789]: 50CDC63F63: failed to parse 
authentication-results: header field
Aug 13 09:39:37 www opendkim[13789]: 50CDC63F63: DKIM verification successful
Aug 13 09:39:37 www postfix/qmgr[14386]: 50CDC63F63: from=
<me@outlook.com>, size=5304, nrcpt=1 (queue active)
Run Code Online (Sandbox Code Playgroud)

postfix dkim

4
推荐指数
1
解决办法
1712
查看次数

安装 DKIM 后,我还能从 gmail 为我的域发送电子邮件吗?

假设我拥有example.com,我在我的服务器上安装和配置了 dkimapt-get install opendkim opendkim-tools等等),并且我将相关的公钥添加到域的 DNS 记录中。

然后当从我的服务器发送电子邮件时(例如:使用 PHPmail(...)或 postfix),它将具有 DKIM 签名。

但我也contact@example.com从 Gmail发送电子邮件,使用Sendgrid SMTP 的“将邮件发送为”功能。

但是我在 Gmail 中没有看到 DKIM 的设置。 从 Gmail 发送的邮件是否会因为未使用 DKIM 签名而被禁止/无法正确发送?

如何使用 DKIM 从 Gmail 为我的域发送电子邮件?(使用发送邮件作为功能)


注意:这是我所说的“将邮件发送为”功能:

在此处输入图片说明

email smtp gmail dkim sendgrid

4
推荐指数
1
解决办法
1728
查看次数

opendkim-testkey 返回“无效的数据集类型”,而如果我指定域和选择器,我会得到“Key OK”

我遇到的问题是 opendkim testkey 返回错误“无效的数据集类型”,除非我将域和选择器传递给命令。为什么会发生这种情况?详情如下:

没有域和选择器:

root@condor1796 /etc/opendkim # sudo -u opendkim opendkim-testkey -vvvv
opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: invalid data set type
root@condor1796 /etc/opendkim # 
Run Code Online (Sandbox Code Playgroud)

指定域和选择器:

root@condor1796 /etc/opendkim # sudo -u opendkim opendkim-testkey -vvvv -d numbeo.com -s mail
opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: checking key 'mail._domainkey.numbeo.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK
Run Code Online (Sandbox Code Playgroud)

正如我在另一个线程中了解到的,关键的不安全输出是:

“密钥不安全”并不表示有错误。这是不使用 DNSSSEC 的预期结果。

这是我的配置文件:

root@condor1796 /etc/opendkim # cat /etc/opendkim.conf
OversignHeaders     From
TrustAnchorFile       /usr/share/dns/root.key

AutoRestart             Yes
AutoRestartRate         10/1h
UMask                   002
Syslog                  yes
SyslogSuccess           Yes …
Run Code Online (Sandbox Code Playgroud)

dkim opendkim

4
推荐指数
1
解决办法
1787
查看次数

如何正确配置 postfix 和 opendkim 并让接收服务器知道签名者邮寄的所有详细信息?

我想要实现的目标 - 底线:邮件进入收件箱而不是垃圾邮件文件夹。

我有一台运行 postfix(邮件服务器)的服务器,我有 3 个域。邮件服务器用于传入和传出邮件。

我正在使用 opendkim 进行签名并拥有 DNS 记录。

经过长时间的观察,我意识到由于不正确的邮寄者和签名者分配,邮件成为垃圾邮件。

考虑一下,我的邮件服务器是 mailserver.example.com,其他 3 个域是 example1.com、example2.com 和 example3.com

当有人从 admin@example1.com 发送电子邮件时,它应该显示:

admin@example1.com 通过 mailserver.example.com

邮寄者:mailserver.example.com

签名:example1.com

我观察到 mailjet 和 amazon 电子邮件几乎不会进入垃圾邮件,事实是,“可能”是因为原始主机名 / ip 反向解析为邮寄者和签名者。

配置文件:

/etc/opendkim/Keytable

mvs._domainkey.example1.com example1.com:selc:/etc/opendkim/keys/example1_com/selc.private
mvs._domainkey.example2.com example2.com:selc:/etc/opendkim/keys/example2_com/selc.private
Run Code Online (Sandbox Code Playgroud)

/etc/opendkim.conf

Domain          example1.com
KeyFile     /etc/opendkim/keys/example1_com/selc
Selector        selc

Domain          example2.com
KeyFile     /etc/opendkim/keys/example2_com/selc
Selector        selc

Canonicalization    simple
Mode            sv
Syslog                  yes
LogWhy                  yes
UMask                   022
UserID                  opendkim:opendkim
KeyTable           /etc/opendkim/KeyTable
SigningTable       /etc/opendkim/SigningTable
ExternalIgnoreList /etc/opendkim/TrustedHosts
InternalHosts      /etc/opendkim/TrustedHosts
Socket                  inet:34562@localhost
X-Header        no
Run Code Online (Sandbox Code Playgroud)

最后 …

email-server postfix dkim domainkeys

3
推荐指数
1
解决办法
8379
查看次数

带有 Postfix 的 OpenDKIM milter

我刚刚配置了 opendkim 和 postfix,它被认为会签署我的电子邮件,但事实并非如此。

我使用/usr/sbin/opendkim-testkey来测试密钥,它们似乎没问题,但我发送到check-auth@verifier.port25.com的邮件一直说:

==========================================================
Summary of Results
==========================================================
SPF check:          pass
DomainKeys check:   pass
DKIM check:         neutral
Sender-ID check:    pass
SpamAssassin check: ham
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我得到了这样的后缀配置文件

# OpenDKIM
milter_default_action = accept
milter_protocol = 6
smtpd_milters = , inet:127.0.0.1:8891, inet:127.0.0.1:12768
non_smtpd_milters = $smtpd_milters
Run Code Online (Sandbox Code Playgroud)

我确实检查了我的日志文件很多次,但似乎没有任何问题。我正在使用 Centos 6。

这也是我的opendkim.conf

## BASIC OPENDKIM CONFIGURATION FILE
## See opendkim.conf(5) or /usr/share/doc/opendkim/opendkim.conf.sample for more

## BEFORE running OpenDKIM you must:

## - make your MTA (Postfix, Sendmail, etc.) aware …
Run Code Online (Sandbox Code Playgroud)

email postfix centos dkim opendkim

3
推荐指数
1
解决办法
4471
查看次数

转发时只启用 SRS 以启用 DMARC

我正在我的 VPS 上设置邮件服务器,为了防止垃圾邮件和被标记为垃圾邮件,我启用了 SPF、DKIM 和 DMARC。但是,我不想托管自己的邮箱,因此我将收到的邮件转发到外部邮件帐户,例如 Gmail。转发的问题在于它破坏了 SPF 检查。这可以通过使用 SRS 来解决,它会重写发件人地址以匹配邮件服务器的地址。

发送邮件时,我已将 Gmail 配置为通过我的邮件服务器发送邮件。在这种情况下SPF、DKIM和DMARC都会通过,但前提是SRS被禁用,否则SRS会导致发送地址域不再与FROM头域匹配,这是DMARC通过的要求。

所以我的问题是,如何在转发时启用 SRS,但在发送时阻止它启用?

这里有更多的上下文。邮件服务器运行 Ubuntu 12.04 LTS 并使用以下软件:

  • 后缀 2.9.6
  • OpenDKIM 2.6.8
  • OpenDMARC 1.3.1
  • PostSRSD(来自 GitHub 的最新大师)

据我了解,有些邮件客户端需要 PTR、MX、EHLO 和邮件横幅来引用同一个域。因为我的 VPS 不仅仅用于邮件服务器,所以我选择将这些设置为我的 VPS 的主机名,比如说 vps.tld。

要启用 PostSRSD,您必须将以下行添加到/etc/postfix/main.cf

sender_canonical_maps = tcp:127.0.0.1:10001
sender_canonical_classes = envelope_sender
recipient_canonical_maps = tcp:127.0.0.1:10002
recipient_canonical_classes = envelope_recipient, header_recipient
Run Code Online (Sandbox Code Playgroud)

但这将在一般情况下启用 SRS,而不仅仅是在转发时。似乎这是邮件服务器的常见用例,所以我希望有一个解决方案。

编辑:

这是postconf -n按要求的输出:

alias_maps = hash:/etc/postfix/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
milter_default_action = accept …
Run Code Online (Sandbox Code Playgroud)

postfix spf dkim dmarc

3
推荐指数
1
解决办法
2603
查看次数

在实施DKIM时,我应该先发布DNS还是先开始签名?

我即将在我的域上实施 DKIM 签名,但找不到有关首先启动哪个的信息:发布 DNS 或开始签名密钥。

解释得更好:

考虑到 DNS 传播所需的时间,因此:

  • 如果我先开始签名,人们会先看到我签名的消息,然后才能看到我的 DNS 条目。
  • 如果我先发布,人们会看到我的 DNS 条目,但不会对消息进行签名。

哪个不会导致邮件被拒绝?

dkim

3
推荐指数
1
解决办法
75
查看次数

拆分的 TXT 记录以什么顺序组装?

根据RFC4408 3.1.3,可以用引号将 TXT 记录拆分并正确重新组合 - 这是绕过记录大小 255 个字符限制的一种方法。

IN TXT "v=spf1 .... first" "second string..."
Run Code Online (Sandbox Code Playgroud)

必须被视为等同于

IN TXT "v=spf1 .... firstsecond string..."
Run Code Online (Sandbox Code Playgroud)

如果一个记录有 3 个或更多部分,什么决定了记录连接的顺序?

domain-name-system dkim txt-record

3
推荐指数
1
解决办法
2927
查看次数

有效的 DKIM 签名随机无法验证

场景:

我有几台电子邮件服务器在防火墙后面的 Debian 上运行,有一个公共 IP,并且我已经正确设置了我的 DNS 记录(MCX、DMARC、DKIM、SPF)。

这是我的 DNS 记录示例(由 dig 命令输出):

DKIM
customselector._domainkey.domain.com. 3600 IN TXT  "v=DKIM1\; h=rsa-sha256\; k=rsa\; s=email\; " "p=MII...

SPF:
domain.com.           3599    IN      TXT     "v=spf1 mx -all"

MX:
domain.com.           3599    IN      MX      1 mailsystem.domain.com.

DMARC:
_dmarc.domain.com.    3599    IN      TXT     "v=DMARC1\;p=quarantine\;sp=reject\;rua=mailto:dmarc@domain.com\; ruf=mailto:dmarc@domain.com\; fo=1\; adkim=r\; aspf=r\; pct=100\; rf=afrf\; ri=86400"
Run Code Online (Sandbox Code Playgroud)

尝试了几个公共测试系统,我的整个设置得到了 100% 的验证。但是后来我开始收到这些奇怪的报告,显示有很多来自我的公共 IP 的不良电子邮件以及一些电子邮件得到了相同域的完美验证。下一个片段来自谷歌报告:

<record>
    <row>
      <source_ip>0.0.0.0</source_ip>
      <count>6</count>
      <policy_evaluated>
        <disposition>none</disposition>
        <dkim>pass</dkim>
        <spf>pass</spf>
      </policy_evaluated>
    </row>
    <identifiers>
      <header_from>domain.com</header_from>
    </identifiers>
    <auth_results>
      <dkim>
        <domain>domain.com</domain>
        <result>pass</result>
        <selector>customselector</selector>
      </dkim>
      <spf>
        <domain>domain.com</domain>
        <result>pass</result>
      </spf>
    </auth_results> …
Run Code Online (Sandbox Code Playgroud)

domain-name-system dkim opendkim

3
推荐指数
1
解决办法
3196
查看次数