DKIMは任意のドメインからの送信メールに署名します(PostfixとUbuntuを使用)


40

メールサーバー(postfixおよびubuntu)でDKIMをセットアップしたため、送信メールに署名します。私はこれらの指示を使用しました:https : //help.ubuntu.com/community/Postfix/DKIM

ただし、自分のドメインだけでなく、任意のドメイン(差出人アドレス)からのメールに署名するために必要です。私はメールニュースレターサービスを構築しており、クライアントはサーバーを介して独自のメールを送信します。

まず、/ etc / dkim-filter.confで「Domain *」を設定します。これにより、ドメインに関係なく、すべての送信メールにDKIMヘッダーが含まれるようになりました。

ただし、gmail(私のドメイン(およびDNSレコード)ではなく、差出人アドレスのドメインをチェックしているため)の確認チェックは失敗します。誰もこれを行う方法を知っていますか?

回答:


41

OK私は自分でこれを理解することができましたが、これについてのドキュメントがなく(見つけることができた)、事実上推測して確認したので、後世のためにここに手順を投稿したかったのです。

上記のように「Domain *」を設定すると、次のように署名されます。

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=clientdomain.com;
    s=main; t=1250005729;
    bh=twleuNpYDuUTZQ/ur9Y2wxCprI0RpF4+LlFYMG81xwE=;
    h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type;
    b=kohI7XnLlw/uG4XMJoloc4m9zC13g48+Av5w5z7CVE0u3NxsfEqwfDriapn7s7Upi
     31F3k8PDT+eF57gOu2riXaOi53bH3Fn/+j0xCgJf8QpRVfk397w4nUWP/y8tz4jfRx
     GhH21iYo05umP0XflHNglpyEX02bssscu2VzXwMc=

「d = clientdomain.com」に注意してください。電子メールの送信元アドレスに基づいてこれを生成していました。送信元アドレスは「contact@clientdomain.com」のようなものでした。明らかに、クライアントのドメインをチェックし、私のドメインではない場合、DNS TXTレコードは存在せず、検証は失敗します。

とにかく、このドキュメントでは、KeyListパラメーターを設定できることを知りました。 http://manpages.ubuntu.com/manpages/hardy/man5/dkim-filter.conf.5.html

それは私が何をしたいのかを実際に説明していませんでしたが、私はそれで遊ぶと思いました。KeyFileをコメントアウトし、KeyListを「/etc/mail/dkim_domains.key」に設定しました。これは、作成した任意のファイル名です。次に、そのファイルを作成し、これを「*:feedmailpro.com:/etc/mail/dkim.key」に入れました。これにより、すべてのクライアントドメインに対して通知され、自分のドメイン(feedmailpro.com)で署名し、dkim.keyファイルを使用します。

再起動されたDKIMおよびpostfix

sudo /etc/init.d/dkim-filter restart
sudo /etc/init.d/postfix restart

これは、テストメールを送信したときに生成されたキーです。

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=feedmailpro.com;
    s=dkim.key; t=1250005729;
    bh=twleuNpYDuUTZQ/ur9Y2wxCprI0RpF4+LlFYMG81xwE=;
    h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type;
    b=kohI7XnLlw/uG4XMJoloc4m9zC13g48+Av5w5z7CVE0u3NxsfEqwfDriapn7s7Upi
     31F3k8PDT+eF57gOu2riXaOi53bH3Fn/+j0xCgJf8QpRVfk397w4nUWP/y8tz4jfRx
     GhH21iYo05umP0XflHNglpyEX02bssscu2VzXwMc=

改善すると、d =が私のドメインに設定されていることがわかります(電子メールの送信元アドレスが私のドメインではない場合でも)。ただし、s =は、dkim-filter.confで選択したセレクタではなく、「dkim.key」に変更されました。元のセットアップ手順では、セレクターを「メール」に設定しました。それは奇妙でしたが、キーのファイル名dkim.keyに変更されていることに気付きました。

そこで、「/ etc / mail / dkim.key」の名前を「/ etc / mail / mail」に変更しました。また、「/ etc / mail / dkim_domains.key」の参照を更新しました。

上記と同じようにdkim-filterとpostfixを再起動すると、動作を開始しました。右のセレクタを使用して正しく署名する最後のヘッダーを次に示します(明らかにキーのファイル名に基づいています)。

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=feedmailpro.com;
    s=mail; t=1250006218;
    bh=tBguOuDhBDlhv0m4KF66LG10V/8ijLcAKZ4JbjpLXFM=;
    h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type;
    b=c9eqvd+CY86BJDUItWVVRvI3nibfEDORZbye+sD1PVltrcSBOiLZAxF3Y/4mP6vRX
     MUUNCC004oIH1u7FYafgF32lpuioMP1cd7bi6x3AZ5zH4BYETNBnnz4AhAPBtqlIh/
     FFMz8jkhhLhcM2hDpwJkuKjAe3LzfNVDP8kD11ZI=

これで、s = mailは正しく、d = feedmailpro.comは正しいです。できます!

全体的にこれは予想よりもはるかに難しく、これを行う方法(すべての発信ドメインに署名する)に関するドキュメントはゼロのように見えましたが、私は文句を言わないオープンソースソフトウェアだと思います。

最後に、TXT DNSレコードが正しくセットアップされたかどうかを確認するには、ドメインで次のようなコマンドを実行します

dig mail._domainkey.feedmailpro.com TXT

digをインストールする必要がある場合があります(sudo apt-get install dig)。Slicehostマネージャーを使用してDNSエントリを追加する場合、このようにTXTレコードを入力します。

Type: TXT
Name: mail._domainkey
Data: k=rsa; t=s; p=M5GfMA0...YOUR LONG KEY...fIDAQAB
TTL seconds: 86400

「mail._domainkey.feedmailpro.com」のように、ピリオドやドメインなしで名前が「mail._domainkey」に設定されている理由がよくわかりません。とにかく、うまくいくようですので、嬉しいです。

これを複製しようとしている場合、私が始めた手順は次のとおりです:https : //help.ubuntu.com/community/Postfix/DKIM


2
これをここに置いてくれてありがとう、それは他の人(私のような)を助けてくれます:)
thomasrutter

ようこそトーマス!
ブライアンアームストロング

うわー、これは大いに役立ちました。あなたの投稿に出くわすまで、「s = dkim.key」のせいで頭を叩いていた!
モーロ

ubuntu.comのガイドで言及されていないことの1つは、いったん動作させたら、TXTレコードのt = yをt = nに変更して、テストではないことを示すことです。
モーロ

SigningTableなどを使用するための優れたリソースがいくつかあります。たとえば、blog.tjitjing.com / index.php / 2012/03 /…(優秀)、さらにはopendkim readme、opendkim.org / opendkim
rfay

15

ブライアンアームストロングのdkim-filterに対する答えに触発されて、OpenDKIMでこれを行った方法を次に示します。

/etc/opendkim.conf

Syslog          yes
UMask           002
KeyTable        /etc/mail/dkim_key_table
SigningTable    refile:/etc/mail/dkim_signing_table

SigningTableにはファイルがあることに注意してください。定義では、これはファイルに正規表現が含まれることを指定します。この場合、*ワイルドカード。

/ etc / mail / dkim_key_table

keyname  example.com:selector:/etc/mail/selector.key

ここで、keynameは、このファイルとdkim_signing_tableファイルの間のキーを一致させるために使用されます。実際のファイルでは、これをセレクターと同じ名前にしました。

example.comセレクターは、それぞれ署名のd =s =で使用したいドメインとセレクターに置き換える必要があります。

/ etc / mail / dkim_signing_table

*   keyname

このファイルは、From:ヘッダーにあるアドレスをdkim_key_tableのキーに単純にマップします。この場合、このサーバーを介して送信されるすべての電子メールに同じキーで署名する必要があるため、*ワイルドカードが使用されます。


「OpenDKIMに何の署名テーブルの一致」を取得しない人のためserverfault.com/q/569823/115907
kommradHomer

誰かがこの答え(素晴らしい答え、私が必要なことを教えてくれた)に到達し、異なるキーを持つ2つの異なるドメインから送信しようとしている場合、次のように実行できます:KeyTable file: "tagone._domainkey.firstdomain.com firstdomain .com:tagone:/etc/opendkim/keys/firstdomain.com/tagone tagtwo._domainkey.seconddomain.com seconddomain.com:tagtwo:/etc/opendkim/keys/seconddomain.com/tagtwo "SigningTable:" * @ firstdomain。 com tagone._domainkey.firstdomain.com *@seconddomain.com tagtwo._domainkey.seconddomain.com "各ファイルは2行です(コメントはここで改行を保存しません)
ショーンコロンボ

または:SigningTable csl:* = keyname KeyTable csl:keyname = example.com:selector:/etc/mail/selector.key
danblack

3

古いスレッドですが、おそらくこれを見つけた誰かは、opendkimの2.xバージョンがKeyListではなくKeyTableで動作することを知るために使用できます。

KeyListファイルは、opendkim-convert-keylistツール(http://manpages.ubuntu.com/manpages/lucid/man8/opendkim-convert-keylist.8.html)で変換できます

KeyTableの実装の詳細については、opendkimのマニュアルページをご覧ください:(http://www.opendkim.org/opendkim.conf.5.html


関連するコードセグメントまたは構成ブロックを引用して、リンクした記事を要約してください。サイトは、将来変更されるか、さまざまな理由でロードに失敗する可能性があります。
89c3b1b8-b1ae-11e6-b842-48d705

2

名前がピリオドなしで「mail._domainkey」に設定されている理由が本当にわかりません

DKIMフィルターのドキュメントは、通常、unix man形式でインストールされます。Googleだけがそれを知っています:-)私も問題を抱えていました。

man dkim-filter.conf
man dkim-filter
man dkim-genkey

man dkim-stats
man dkim-testkey
man dkim-testssp

Debianで試しました。実際に配布されていない場合は、ソースtarballと簡単に読めるドキュメントをダウンロードできます。

man dkim-milter-2.8.3/dkim-filter/dkim-filter.conf.5

-

名前がピリオドなしで「mail._domainkey」に設定されている理由が本当にわかりません

そのため、異なるドメインの両方のDNSレコードでまったく同じものを使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.