レンタルサーバー・自宅サーバー設定・構築のヒント
レンタルサーバー・自宅サーバー設定・構築のヒント - レンタルサーバー・自宅サーバーの設定・構築情報を公開しています。

Postfix で dkim-milter(dkim-filter) を使ってDKIM に対応する(Debian/Ubuntu編)

2012年5月30日 2015年5月14日
postfix spf dkim

以前の記事
postfix で postfix-policyd-spf-python ( or postfix-policyd-spf-perl ) を使ってSPF認証する(Debian/Ubuntu編) では、SPFの送受信側の対処について記述しました。
Postfix で dk-milter(dk-filter) を使ってDomainKeys に対応する(Debian/Ubuntu編) では、DomainKeysの対処について記述しました。

今回は、DomainKeys そっくりの DKIM に対応してみたいと思います。

CentOS/ScientificLinux 編は、
Postfix で dkim-milter(dkim-filter) を使ってDKIM に対応する(CentOS/ScientificLinux編) を参照してください。
DomainKeysとは、
SPFと同様に送信ドメイン名が正しい送信元から発信されているかを確認(認証)するための技術です。 SPFが、IPアドレス(HOST名)から、その確認(認証)を行うのに対して DomainKeysは、電子署名から、その確認(認証)を行うものです。
DKIM(DomainKeys Identified Mail)とは、
DomainKeysとCisco Systemsが提案したIIM ( Identified Internet Mail )という規格をあわせたものになっていて、 DomainKeysにそっくりになっています。しかし、別物です。

よく混同されるのは、この生い立ちにもあります。

違いとして多く取り上げられているのが、
DomainKeysがサポートしていたのがドメイン単位での認証だったのに対して、 DKIMはIIMと同じく送信者アドレス単位での認証も可能としている点でしょう。

その他にもいろんな詳細な点で違いが見られます。

逆に、このような細かい点での違いはあるものの大きな仕組みでは、ほぼ同じと言ってよいと思います。ただ、何度も言いますがDomainKeys , DKIMは別のものです。

DomainKeys と同じように、やるべきことは、以下のとおりです。

  • メールの送信時
    • メールの送信時にメールヘッダ情報に電子署名を付加する
    • DNSサーバーに電子認証公開キーを設定する
  • メールの受信時
    • メールの受信時にメールヘッダ情報にDomainKeys , DKIM の電子署名があれば、DNSサーバーへ問い合わせて電子認証公開キーを取得し、認証作業を行う

これを実現するために、dkim-milter(dkim-filter) を使って Postfix で実現してみます。
現在では、今までDomainKeysに対応していたサーバーもDKIMへの対応へと流れています。大きな流れとしては、DomainKeysからDKIMへの流れは変わりそうもありません。
この流れからも DKIMは、DomainKeys 以上に対応すべきものであるでしょう。ここでは、DKIMについて、簡単に解説してみます。

Postfix で dkim-milter(dkim-filter) を使ってDKIM に対応する

dkim-milter(dkim-filter) をインストールする

dkim-milter(dkim-filter) は、Debian 、Ubuntu いずれも、バイナリパッケージが提供されていますので、ここでは、単純にaptを使ってインストールするだけです。

$ apt-get install dkim-filter
...

これだけです。簡単ですね。


署名用 の秘密キー、公開キーを作成する

署名に必要な公開キーと秘密キーを作成します。
dkim-milter(dkim-filter) をインストールすると、dkim-genkey というスクリプトファイルも同時にインストールされます。キーファイルを作成する再には、これを活用します。
※メール送信時、DKIMの署名を行わない場合は、以降の作業は不要です。

# 署名用のディレクトリを作成します。
$ mkdir /etc/dkim
$ cd /etc/dkim

# dkim-milter同梱のdkim-genkeyを使って、署名に必要な公開キーと秘密キーを作成します。
[/etc/dkim]$ dkim-genkey -s example_com_selector -d exmaple.com

# 作成された公開キーと秘密キーファイルを確認します。
[/etc/dkim]$ ls 
example_com_selector.private  example_com_selector.txt
dkim-genkey は、引数に セレクター名(-s )、ドメイン名(-d )を指定することができます。(ドメイン名は省略可)

ここでの例では、
example_com_selector.private : 秘密キーファイル
example_com_selector.txt : 公開キーファイル(DNSのレコードイメージになります)
となります。

以降で使用します。

引数のドメイン名は、上記の秘密キー、公開キーとは無関係で、DNSレコードイメージを出力するためのコメント部分にのみに用いられています。(ほどんど無意味です

example_com_selector.txt の出力イメージを署名するドメインのDNSレコードに追加します。

example_com_selector._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=xxx(公開キー)xxxx" ; ----- DKIM example_com_selector for example.com
DNSのレコードは、概ね以下のような設定を行います。
...
_policy._domainkey 7200 IN TXT "t=y\; o=~\;"
example_com_selector._domainkey 900 IN TXT "v=DKIM1\; g=*\; k=rsa\; t=y\; p=xxx(公開キー)xxxx"
...
_policy._domainkey
ドメインのDKIMに対するポリシーを設定します。

→ 詳しくは、DKIMの仕組み DKIMのポリシー情報の設定 を参照してください。
DomainKeyとの違いは、名前の先頭に_policyを付けるか否かの違いでしょう。
ここでの設定例は、以下のような意味になります。

  • t=y : テストモード
  • o=~ : 全てのメールが署名されているとは限らない。(署名されるメールもされないメールも存在する。)
<セクター名>._domainkey
ドメインのDomainKeyの公開キー情報を設定します。

→ 詳しくは、DKIMの仕組み DKIMの公開鍵情報の設定 を参照してください。 DomainKeyとの違いは、DKIMのバージョン情報の有無でしょう。(以下の項目参照)
ここでの設定例は、以下のような意味になります。

  • v=DKIM1 : DKIMのバージョン(この情報はDomainKeyにはない)
  • g=* : 鍵の適用条件パターン (未設定なので、すべてに適用)
  • k=rsa : 鍵の形式は、RSAを用います。
  • t=y : テストモード
  • p=xxx… : 公開キー情報
t=y : は、とりあえず何か署名に問題があってもREJECT(破棄) してはいけないことになっています。 設定の誤りやサーバーがダウンした時などを考えて?t=y の方が良いかもしれません。

dkim-milter(dkim-filter) の設定を行う

dkim-milter(dkim-filter) の設定ファイル には、dkim-filter用として2つの設定ファイルがあります。
1つは、dk-filter と同じように /etc/default/dkim-filter のように /etc/default/ 配下にあるデフォルト設定ファイルになります。

もう一つは、/etc/dkim-filter.conf で、dkim-filter の通常の設定ファイルになります。 一般的には、このファイルを編集して使用します。Postfixとの連携上、ソケットを使用するため /etc/default/dkim-filter の編集は行う必要があります。

ここでは、dk-filter との対比も兼ねたいので、/etc/default/dkim-filter の編集を行ってみます。

以下は、その設定例です。


設定ファイル (/etc/default/dkim-filter )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Command-line options specified here will override the contents of
# /etc/dkim-filter.conf. See dkim-filter(8) for a complete list of options.
#DAEMON_OPTS=""
#

DAEMON_OPTS="-l"
DAEMON_OPTS="$DAEMON_OPTS -d example.com -k /etc/dkim/example_com_selector.private -s example_com_selector"
SOCKET="inet:8891@127.0.0.1"

# Uncomment to specify an alternate socket
# Note that setting this will override any Socket value in dkim-filter.conf
#SOCKET="local:/var/run/dkim-filter/dkim-filter.sock" # default
#SOCKET="inet:54321" # listen on all interfaces on port 54321
#SOCKET="inet:12345@localhost" # listen on loopback on port 12345
#SOCKET="inet:12345@192.0.2.1" # listen on 192.0.2.1 on port 12345
  • 6行目 : -l オプションは、syslogへログ情報を出力します。
  • 7行目 : メール送信時にDKIMの署名を行う場合に編集します。
    • -d オプション

      – メール送信時にDKIMの署名を追加するドメイン名を列挙します。複数ドメインを指定する場合はカンマで区切ります。

    • -k オプション

      – 秘密鍵ファイル名を指定します。先の 署名用 の秘密キー、公開キーを作成する で作成した秘密キーファイルになります。

    • -s オプション

      – セレクター名を指定します。先の 署名用 の秘密キー、公開キーを作成する で作成した秘密キーファイルのセレクター名になります。

    ※署名しない場合は、10行目をコメントアウトすればOKです。
  • 8行目 : Postfixとの通信手順を指定したものです。

    IPアドレス(127.0.0.1)、ポート番号(8891)、ソケット種別(inet)の3種をそれぞれ設定しています。
    dk-filterなどの別のソケットを使う場合は、そのポート番号とは異なるポート番号を使用するようにします。

設定を終えたら、ここで設定した秘密鍵ファイルの所有者を dkim-filter (実行ユーザ)へ変更しておきます。

$ chown dkim-filter. /etc/dkim/example_com_selector.private

Postfix の設定を行う

ここまで、dkim-milter(dkim-filter) の設定を終えたら、Postfix の設定を行います。 Postfix の設定は、/etc/postfix/main.cf にて行います。

$ vim /etc/postfix/main.cf
...

# DKIM
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = inet:127.0.0.1:8891
上記で設定している inet:127.0.0.1:8891 は、 dkim-milter(dkim-filter) の設定を行う で設定した SOCKET=”inet:8891@127.0.0.1″ にあわせる必要があります。
設定する項目の順番と記述方法が異なりますが、IPアドレス(127.0.0.1)、ポート番号(8891)、ソケット種別(inet)の3種をそれぞれ設定するだけです。
DomainKeys と同時にしようする場合は、先のとおりポート番号に気をつけます。また、/etc/postfix/main.cf は、以下のような設定になります。
$ vim /etc/postfix/main.cf
...

# DomainKeys/DKIM
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:8891 inet:127.0.0.1:8892
non_smtpd_milters = inet:127.0.0.1:8891 inet:127.0.0.1:8892
ブランクをはさんで列挙する点に注意してください。ここでは、DomainKeys のポート番号 : 8892 , DKIM のポート番号 : 8891 としています。

dkim-milter(dkim-filter) 起動、Postfixの再起動を行う

全ての設定を終えたら、dkim-milter(dkim-filter) 起動、Postfixの再起動を行います。

$ /etc/init.d/dkim-filter start
Starting DKIM Filter: dkim-filter.
$ /etc/init.d/postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.

これで、全ての設定が完了です。


dkim-milter(dkim-filter) の動作確認を行う

最後にテストしてみましょう。

Yahoo!のフリーメールを使っての動作確認を行う


以下は、Yahoo!のフリーメールを使って、送信、受信のテストを実施した結果です。いずれも DomainKeys , DKIM 両方の設定、判定が行われています。

Yahoo!へのメール送信の場合

Authentication-Results: xxxx.mail.kks.yahoo.co.jp from=exmaple.com; domainkeys=pass (ok); dkim=pass (ok) header.i=@exmaple.com;
DomainKey-Signature: a=rsa-sha1; s=example_com_selector; d=exmaple.com; c=simple; q=dns; b=xxxx(公開キー);
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=exmaple.com; s=srinfun; t=1338345264; bh=WUs/S8aSRC/sQWX+teNDq9/P/VwCR9oY/5V1Qr4x5rI=; h=To:Subject:Message-Id:Date:From; b=xxxx(公開キー);

Yahoo!からのメール受信の場合

Authentication-Results: mail.example.com; dkim=pass (1024-bit key) header.i=@yahoo.co.jp; dkim-adsp=none
Authentication-Results: mail.example.com from=test@yahoo.co.jp; domainkeys=pass
Received: (qmail 92883 invoked by uid 60001); 30 May 2012 02:14:11 -0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.co.jp; s=yj20110701; t=1338344051; bh=sgeDMsCFY/fqRH9AFEKt6uISCBqq8oqGqd/WfoxdJIQ=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=yyyy(公開キー)
DomainKey-Signature:a=rsa-sha1; q=dns; c=nofws;
  s=yj20110701; d=yahoo.co.jp;
  h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type:Content-Transfer-Encoding;
  b=yyyy(公開キー);

ちゃんと pass になったでしょうか?
もし、異なる判定結果となった場合は、
Yahoo!へのメール送信の場合、DNSの設定をも直してみましょう。また、DKIM-Signature もヘッダ情報に正しく付加されているかも確認しましょう。
Yahoo!からのメール受信の場合、Postfix, dkim-milter(dkim-filter) の設定を直してみましょう。



どうでしょうか、DomainKeysとほとんど同じです。DKIMの場合は、キーファイルを複数指定することもできます。その場合、ファイル指定(-Kオプションを使います)になります。

SPF,DomainKeys,DKIM と設定を行ってきました。この3つの設定で、少なくとも管理している独自ドメインのほとんどの詐称は見抜くことができるようになるでしょう。
この設定は、フリーメールからの詐称メール、自管理の独自ドメインの詐称メールに関しては、かなりの効果があります。もちろん、メール中継をしっかり管理していれば・・・の話ですが。

いずれにせよ、SPF,DomainKeys,DKIM の設定は、間違いなくおすすめです。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない検索ができないことがあります。


関連記事 :

Postfix で dkim-milter(dkim-filter) を使ってDKIM に対応する(CentOS/ScientificLinux編)

以前の記事 postfix で postfix-policyd-spf-python ( or postfix-policyd-spf-pe ...

Postfix で dk-milter(dk-filter) を使ってDomainKeys に対応する(CentOS/ScientificLinux編)

以前の記事 postfix で postfix-policyd-spf-python ( or postfix-policyd-spf-pe ...

Postfix で dk-milter(dk-filter) を使ってDomainKeys に対応する(Debian/Ubuntu編)

以前の記事 postfix で postfix-policyd-spf-python ( or postfix-policyd-spf-p ...

DomainKeys Identified Mail (DKIM) の仕組み

今回は、DomainKeys Identified Mail (以降、DKIM) の仕組みについて簡単に解説してみます。 以前に Sender ...

sendmail で dkim-milter を使ってDomainKeys ,DKIM の対応する

以前の記事 評判のさくらのVPSでSMTP(Sendmail)を公開する時にやっておきたいこと では、SPFの送信側の対処 sendmai ...



コメントを投稿 :

お名前 *

メールアドレス *
( メールアドレスが公開されることはありません。)

サイトアドレス

コメント *

* 印の項目は、入力が必要な項目です。




最近投稿の記事

[ 画像提供元 : Amazon ] 先日、1TBのディスクの入れ替え時にバックアップをとろうとディスクコピーを行いました。 その際 ...

Windows で Linux ファイルシステム Ext4 のディスクをマウントするには? Ext3Fsd が、おそらく、最も簡単なツール ...

今回は、Windows で Compass を使ってみました。 Compass とは、 Sass(サス、Syntactica ...

今回は、Anti Adblock を使ってみました。 Anti Adblock とは、 そもそも Adblock という ウェブ ...

デスクトップ環境でない サーバーで、Webページのキャプチャー画像をコマンドで撮る には、wkhtmltoimage, CutyCapt ...


さくらのVPS 全プラン リニューアルです。(石狩(北海道)も選択可)


root権限ありで ¥685 / 月 ~ と非常にリーズナブルな CPU 1(core)の 512 プランから、 最高 CPU 10(core), メモリ 32(GB), SSD容量 800(GB) までとプランが充実。
ディスクは、SSDとHDDの選択が可能になった他、データセンターは人気の東京、石狩(北海道)となりました。

また、どのプランでも好きなOSが選べます
( CentOS, Fedora, Scientific Linux, FreeBSD, Ubutu, Debian )

管理人もおすすめのVPSです。
試用期間がありますから、一度、お試しを!!

詳しくは、http://vps.sakura.ad.jp/さくらのVPSのサイトへ へどうぞ!!

カテゴリ


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。
最近、スワップにも対応した Serverman@VPS は、かなりリーズナブルかもです。

  • メモリ1GB~2GBのEntryプラン :月額:490円
  • メモリ2MB~4GBのStandardプラン :月額:980円
  • メモリ4GB~8GBのProプラン :月額:1,980円

新規申し込みで1ヶ月間完全無料となるキャンペーンを実施中です。
Serverman@VPSの特徴は、安さとIPv6対応です。また、初期設定費0円もポイントです。

IPv6でちょっと遊んでみたい方には、おすすめかもしれませんね。最低利用期間もありませんから、気に入らないときは即解約もできます。

Serverman@VPSの詳細については、 http://dream.jp/vps/ Serverman@VPSのサイトへへどうぞ。



KVM採用 ConoHa VPSは、時間単位で借りれる便利なVPSです。


ConoHa VPS は、初期設定費0円最低利用期間無し時間単位で清算可能、 さらに、Web APIを使って自動化を図ることもできる便利なVPSです。

海外サーバー設置も可能で、ローカル接続にも対応と、かなり、機能豊富なサーバーです。

新規ユーザ登録で、クーポンもらえますから、まずは、お試しですね。

ConoHa VPSの詳細については、
http://www.conoha.jp/ へどうぞ。

KVM採用 お名前.com VPS(KVM) 2G プラン 初期設定費無料 キャンペーン 実施です。


メモリ2GBプラン CPU:3core、Disk:200GB
月額:1,153円から (初期設定:1,680円0円)

さくらのVPSがリニューアルされてもなんのその。
1GBメモリ / 2Core を ¥834 – の格安価格で提供中です!
間違いなくスペックからすると割安感ありです。
年間割引時の途中解約で返金がないのは、 ちょっと残念ですが、それでもこの割安感は魅力です。

まずは、お試しですね。

お名前.com VPS(KVM)の詳細については、
http://www.onamae-server.com/vps/ へどうぞ。(お試し期間が15日あります。)



  • ソーシャルブックマーク

  • はてなブックマークへ追加するはてな登録数
ページトップへ
Time : 0.2646 [s]