web-dev-qa-db-ja.com

有効なDKIM署名がランダムに検証に失敗する

シナリオ:

ファイアウォール、パブリックIPの背後にあるDebianでいくつかの電子メールサーバーを実行しており、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:[email protected]\; ruf=mailto:[email protected]\; fo=1\; adkim=r\; aspf=r\; pct=100\; rf=afrf\; ri=86400"

いくつかの公開テストシステムを試すと、私のセットアップ全体が100%正常に検証されます。しかし、私はこれらの奇妙なレポートを取得し始めました。私のパブリックIPから大量の不正な電子メールが送信されていること、および同じドメインによって完全に検証されている電子メールもいくつかあります。次のフラグメントは、Googleのレポートからのものです。

<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>
  </record>
  <record>
    <row>
      <source_ip>0.0.0.0</source_ip>
      <count>16</count>
      <policy_evaluated>
        <disposition>none</disposition>
        <dkim>fail</dkim>
        <spf>pass</spf>
      </policy_evaluated>
    </row>
    <identifiers>
      <header_from>domain.com</header_from>
    </identifiers>
    <auth_results>
      <dkim>
        <domain>domain.com</domain>
        <result>fail</result>
        <selector>customselector</selector>
      </dkim>
      <spf>
        <domain>domain.com</domain>
        <result>pass</result>
      </spf>
    </auth_results>
  </record>
  <record>

良いメール6通と悪いメール16通が届きましたが、すべて同じ内容のものでした。

テスト:

  • [email protected]>わかりました
  • Gmailヘッダー-> dkim = pass [email protected];
  • www.mail-tester.com-> DKIM_VALID
  • [email protected]> DKIM署名検証:合格
  • 複数のDNSサーバーで掘り出す->わかりました
  • mxtoolbox.com->すべて問題ありません
  • 異なるドメインのメールヘッダー-> OK

構成:

私はopendkimを使用していますが、これは私が関連すると考えるものです:

Canonicalization    relaxed/relaxed
Mode            sv
SubDomains      yes
3
Solrac

私のDKIMレコードは「有効」ですが、一部のバリデーターはDNSレコードのh=rsa-sha256;引数を受け入れず、DKIM署名を無効としてレンダリングします。 Googleがメールサーバーでいくつかの異なるLinuxディストリビューションを異なるバリデーターで使用していると思います。

この問題を解決するには、DKIMレコードの引数を削除するだけで、次のようになります。

v=DKIM1; k=rsa; s=email; p=MI...

この後、すべてのメールが適切に検証されます。

いくつかの調査を行っている間、私は http://dkimvalidator.com を横断しました。それは、かなり混乱するメッセージを生成する唯一のツールでした。

result = invalid
Details: public key: does not support hash algorithm 'sha256'

意外にもこのエラーは珍しいようですが、opendkimを使用してキーを生成すると、次のようなことが発生する場合があります。

opendkim-genkey -b 2048 -h rsa-sha256 -r -s customselector -d domain.com -v

これにより、不正な引数がtxt出力ファイルに書き込まれ、DKIMレコードが無効になります。

3
Solrac