Ubuntu、Postfix、Mailman用のDKIM(DomainKeys)のセットアップ


22

PostfixとMailmanを使用してUbuntu 12.04を実行しています。DKIMをセットアップしたい。DomainKeys Identified Mail、またはDKIMは、Yahooの「DomainKeys」の後継です。シスコの識別メールが組み込まれています。

これを設定する手順は何ですか?

opendkimはお勧めですか?

私が持っている唯一の参照はHowToForgeですが、私はここで助けを求めることを好みます(たとえそれがそのリンクでのステップの確認であっても)。実際、HowToForgeの情報は、opendkimではなくdkim-filterに言及しているため古くなっていると思います。

回答:


39

Ubuntu Server 12.04LTS上のopenDKIMおよびPostfix

私は戻ってこれをより良くフォーマットしようとします。しかし、回答を投稿するリクエストがあったので、適切にフォーマットする時間があるまで待つのではなく、今すぐ投稿したかったのです。時間がないため、回答全体をブロック引用で囲みました。このソリューションが役立つことを願っています。

これらは私の参考です:

そして、ウィキペディアには、件名に優れたエントリを持っています

最低限必要なもの:

  • メールサーバーへのルートアクセス
  • ドメインのDNSレコードを更新するためのアクセス

リポジトリからopendkimをインストールします。

# sudo apt-get install opendkim opendkim-tools

使用する「セレクタ」を決定する必要があります。セレクターは基本的に、使用するキーを説明するための単語です。ここでは、キーが2012年5月に有効になったときに、セレクタ201205を使用します(ずるいですか?)。多様性の例を2つ挙げますが、明快さが増すことを願っています。1つのキーを生成するだけです。ただし、比較できるように両方の例を示しています。

  • 201205(1番目のキー)
  • my_selector(2番目のキー)

ドメインはになりますがexample.com、2番目の例ではサブドメインを使用します。

  • example.com(1番目のキー)
  • mail.example.com(2番目のキー)

私は次のディレクトリで働くことにしました:

# mkdir /etc/opendkim/
# cd /etc/opendkim

選択したセレクタとドメインを使用して、現在のディレクトリにキーを生成します。

# opendkim-genkey -s 201205 -d example.com

所有権を変更する必要がある場合としない場合があります。所有権とアクセス許可については、以下の2番目のキーの例で詳細を参照してください。

最初に、opendkimユーザーがいるかどうかを確認する必要があります(ユーザー/グループIDは異なる場合があります)。

# grep opendkim /etc/passwd
opendkim:x:108:117::/var/run/opendkim:/bin/false

そしておそらくあなたはこれをする必要があります:

# chmod 700 /var/run/opendkim

注:これらの次の2つのコマンドは、Ubuntu 12.04では必要ありません。ただし、上記のコマンドでユーザーopendkimが適切に設定されていなかった場合は、次のように実行してください。

# useradd -r -g opendkim -G mail -s /sbin/nologin -d /var/run/opendkim -c "OpenDKIM" opendkim
# chown opendkim:opendkim 201205.private   
# cat 201205.private 
-----BEGIN RSA PRIVATE KEY-----
ABCCXQ...[long string]...SdQaZw9
-----END RSA PRIVATE KEY-----

ここで公開鍵を確認し、バグがあることに注意してください(Ubuntu 12.04のopenDKIM 2.5.2にあります)!が含まれている場合;=rsa;、を含む必要があります;k=rsa;k不足しています。挿入してください。

# cat 201205.txt
201205._domainkey IN TXT "v=DKIM1;=rsa; p=WIGfM..[snip]..QIDIAB" ; ----- DKIM 201205 for example.com

修正後、次のようになります。

201205._domainkey IN TXT "v=DKIM1;k=rsa; p=WIGfM..[snip]..QIDIAB" ; ----- DKIM 201205 for example.com

さらに、おそらくこのようなセミコロンをエスケープする必要があります。最後のコメントが必要ない場合は、削除してください。また、t = yフラグを追加して、DKIMをテストしているがまだアクティブに使用していないことを受信側サーバーに示す必要があることに注意してください。実行可能なリソースレコードが残っています。

201205._domainkey IN TXT "v=DKIM1\;k=rsa\;t=y\;p=WIGfM..[snip]..QIDIAB"

上記の公開キーのコンテンツを権限のあるDNSサーバーに公開する必要があります。TXTレコードの使用をお勧めします。SPFレコードを使用するか、両方のタイプを使用するかについては、少し議論の余地があるようです。少し読んだ後、TXTレコードタイプのみを使用することにしましたが、これがこのトピックの最後の言葉だとは思いません。

DNSを介して伝播するのに年齢を待たずにキーを変更できるように、短いTTL(存続時間)を使用する必要があります。180秒使用しました。

キーペアを生成する2番目の例は、私にとって少し面倒でした。私がしたことを説明します。最初の要素は、キーが「mail.example.com」に使用される場合でも、ドメイン値「example.com」を使用したことです。私は試行錯誤でこれに到達しました。動作しますが、「mail.example.com」の使用は動作しませんでした。残念ながら、この背後にある理由は知りません。これは実際に私が遭遇した唯一の違いですが、サブドメインを使用した経験を文書化する必要があると感じたのは十分に厄介でした。私が見つけた他の初級レベルのチュートリアルはこれをしませんでした。2番目のキーを生成します。

opendkim-genkey -s my_selector -d example.com

上記のように、秘密鍵の所有権と許可を確認してください。これらは次のようになります。

# ls -la /etc/opendkim
-rw-------  1 opendkim opendkim  891 May 10 07:44 my_selector.private

DNSレコードを公開したら、で確認しdigます。リソースレコード(RR)に入力した内容を正確に返す必要があります。

$ dig 201205._domainkey.example.com txt +short
"v=DKIM1\;k=rsa\;t=y\;p=WIGfM..[snip]..QIDIAB"

次に、キーをテストします。以下のコマンドは、キーが存在するディレクトリ(私にとっては/ etc / opendkim)にいることを前提としています。

# opendkim-testkey -d example.com -s 201205 -k 201205.private -vvv
opendkim-testkey: key loaded from /etc/opendkim/201205.private
opendkim-testkey: checking key '201205._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK

これらの結果は期待されています。「キーが安全ではありません」はエラーを示していません。DNSSSECを使用しない場合に予想される結果です。DNSSECが近づいていますが、私の読書によると、まだプライムタイムの準備ができていません。

2番目のキーを持つ例:

# opendkim-testkey -d example.com -s my_selector -k /etc/opendkim/my_selector.private -vvvv
opendkim-testkey: key loaded from /etc/opendkim/my_selector.private
opendkim-testkey: checking key 'my_selector._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK

opendkimはキーが安全でないことを報告していることに注意してください。これは、DNSSECがDNSサーバーに実装されておらず、理論的にはだれかがDNSルックアップをインターセプトして独自のキーに置き換えることができるという事実に関連しています。

OpenDKIM構成ファイルを編集します。

# nano /etc/opendkim.conf
# cat /etc/opendkim.conf
# This is a basic configuration that can easily be adapted to suit a standard
# installation. For more advanced options, see opendkim.conf(5) and/or
# /usr/share/doc/opendkim/examples/opendkim.conf.sample.
#
Domain                  example.com
KeyFile                 /etc/opendkim/201205.private
Selector                201205
#
# Commonly-used options
Canonicalization        relaxed/simple
Mode                    sv
SubDomains              yes
# Log to syslog
Syslog                  yes
LogWhy                  yes
# Required to use local socket with MTAs that access the socket as a non-
# privileged user (e.g. Postfix)
UMask                   022
UserID                  opendkim:opendkim
#
KeyTable                /etc/opendkim/KeyTable
SigningTable            /etc/opendkim/SigningTable
ExternalIgnoreList      /etc/opendkim/TrustedHosts
InternalHosts           /etc/opendkim/TrustedHosts
#
Socket                  inet:8891@localhost
#EOF

ターゲットドメイン「mail.example.com」で2番目の重要な例を使用している場合、エントリは依然としてメインドメインのみを参照します。

Domain                  example.com
KeyFile                 /etc/dkim/my_selector.private
Selector                my_selector 
-----

私のソースのいずれかからのメモ:Postfixの複数のインスタンスを実行する場合、各インスタンス(またはopendkimを使用するインスタンス)のopendkim.confにこれを追加する必要があります

テキストエディターでファイルを作成します/etc/opendkim/TrustedHosts

OpenDKIMで処理するドメイン、ホスト名、IPを追加します。localhostを忘れないでください。

127.0.0.1
localhost
example.com
mail.example.com
192.168.1.100 #(IP address of your server, if applicable)

(上記の最後の行はおそらく必要ありません。追加するIPアドレスがある場合は、上記の例ではなく、独自のものを使用してください。)

編集/etc/default/opendkim

この行のコメントを解除して、ポート8891を使用します。

SOCKET="inet:8891@localhost" # listen on loopback on port

ファイアウォール(iptables)がローカルホストでループバックを許可していることを確認してください。

sudo iptables -A INPUT -i lo -j ACCEPT

次に、テキストエディターでファイルを作成/etc/opendkim/KeyTableし、KeyTableにドメインを追加します

行を追加:

#EXAMPLE showing my 2nd key:
my_selector._domainkey.example.com example.com:my_selector:/etc/opendkim/my_selector.private

次に、テキストエディターでファイルを作成/etc/opendkim/SigningTableし、SigningTableにドメインを追加します

両方の例を示します。2番目のキーには、完全なドメイン名「mail.example.com」を使用する必要があることに注意してください。

example.com 201205._domainkey.example.com
mail.example.com my_selector._domainkey.example.com

OpenDKIM 2.0.1では、ドメイン名は大文字と小文字が区別されることに注意してください。この例では、OpenDKIMの新しいバージョンを使用していますが、これは問題ではないようです。

後置を構成します。/etc/postfix/main.cfを編集し、行を最後に追加します

milter_default_action = accept
milter_protocol = 2
smtpd_milters=inet:localhost:8891
non_smtpd_milters=inet:localhost:8891

ホスト名も変更します。

#myhostname = localhost         #original
myhostname = mail.example.com

/ etc / hostsの対応するエントリも変更する必要があります。これらの変更は、再起動後に有効になります(ただし、次のコマンドですぐに設定できますhostname NEW_NAME)。

再起動しなかった場合、postfixとopendkimを再起動します。

# service opendkim restart
Restarting OpenDKIM: opendkim.
# service postfix restart
 * Stopping Postfix Mail Transport Agent postfix   [ OK ]
 * Starting Postfix Mail Transport Agent postfix   [ OK ] 

テスト中

署名済みメールが認証されていること、およびDNSレコードが適切に設定されていることを確認する最良の方法は、無料のテストサービスのいずれかを使用することです。私はこれらを使用しました:

  • Brandon Checketts Email Validator- http: //www.brandonchecketts.com/emailtest.php (私のお気に入り)
  • 署名済みメールをcheck-auth@verifier.port25.comに送信します(私のお気に入りも)
  • 署名済みメールをsa-test@sendmail.netに送信します(すべてのテストメールアドレスを、テストする1つの送信メッセージの[宛先]フィールドに入力できます)

  • 署名済みメールをautorespond+dkim@dk.elandsys.comに送信<--- BROKEN !!! これは使用しないでください。

これらはそれぞれ、物事が適切に機能しているかどうかを示し、必要に応じてトラブルシューティングの指針を示します。

Gmailアカウントをお持ちの場合は、署名されたメッセージをそこに送信して、すばやく簡単にテストすることもできます。

すべてがうまくいったことを確認したら、DNS TXTレコードのテストフラグを削除して、TTLを増やすことができます。

できた!


正確に完璧に動作します。良いウォークスルーありがとう。
アキ

-b 1024を使用して、1024ビットのキーを生成します。それは私のGmailに署名するために必要です!
プラッサントシン

1
opendkim.confでは、「SigningTable」および「KeyTable」を使用する場合、3つのパラメーター「Domain」、「KeyFile」、および「Selector」が無視されることに注意してください。わからない、これはいくつかの点で変更されたがどうかの言及する価値(opendkim.org/opendkim.conf.5.html
billynoah

0

これは良いガイドです。

opendkim 実際に推奨され、dkim署名を実装する手順はdkim-filterの場合と同じであることを説明しています。

dkim-milterは開発されていません。元の作者はソースを分岐し、現在opendkimを開発しています。Lucid以降のリリースでは、dkim-filterよりもopendkimが優先されます。このページの手順は同じである必要があります(必要に応じてパッケージ名を調整します)。

BTW Domainkeysは、DKIMの非推奨の前身です。SPFおよびDKIMのDNSゾーンにTXTレコードを追加しますが、ドメインキーを気にする必要はもうありません。


リンクした記事は古くなっています。opendkimは現在使用するパッケージです。私は...それを設定して取り組んでいる
モニカチェッリオためMountainXを

サーバーをExim4からPostfix-Dovecotに切り替えようとしており、最新のガイダンスを探しているので、私はあなたの経験からの更新を高く評価します。
iainH

ソリューションを投稿しましたが、フォーマットする時間がありませんでした。あなた(または他の誰か)はフォーマットを歓迎します。しかし、私のメモは非常に広範囲であるため、遅滞なくそれらにアクセスできるようにしてほしいと思います。彼らが役に立てば幸いです。
Monica CellioのMountainX

-1

http://wiki.zimbra.com/wiki/Configuring_for_DKIM_Signing

私は常に、いくつかのガイドを相互参照してください。セットアップに関するこのタットは機能します。私はそれを検証し、これを検証しました。ただし、ドメインレコードの詳細なTXTの例を表示することもできます。人々は混乱し、キー自体のすべてを明示的にp値に入れるかもしれません。すなわち、... ----- BEGIN PUBLIC KEY -----および----- END PUBLIC KEY -----を含みます。そのため、一部の人が混乱する可能性があります。マーカーではなく暗号化部分のみを配置するようにしてください。


3
Ask Ubuntuへようこそ!これは理論的には質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
ブライアム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.