dkim-milter をmakeする
dkim-milter のソースコードをダウンロードする
$ wget http://sourceforge.net/projects/dkim-milter/files/latest/download
|
最新版は、現在(2011.12)では、dkim-milter-2.8.3.tar.gz となります。
dk-milter のソースコードをダウンロードする
$ wget http://sourceforge.net/projects/dk-milter/files/latest/download
|
最新版は、現在(2011.12)では、dk-milter-1.0.2.tar.gz となります。
dkim-milter , dk-milter のソースコードを解凍する
$ tar xfz dkim-milter-2.8.3.tar.gz -C /usr/local/src
$ tar xfz dk-milter-1.0.2.tar.gz -C /usr/local/src
|
ここでは、わかりやすいように
/usr/local/src 配下へソースコードを展開しています。
dkim-milter へ dk-milter の libdk を組み込みます
$ cd /usr/local/src/dkim-milter-2.8.3
[dkim-milter-2.8.3]$ ln -s ../dk-milter-1.0.2/libdk/ .
|
ここでは、無駄にディスクを使用しないようにリンクファイルを作成していますが、
/usr/local/src dk-milter-1.0.2/libdk ディレクトリをまるごとコピーでもOKです。
dkim-milter のmakeための設定ファイルを編集します
Domainkeys の認証を行うように dkim-milter のmakeファイルを編集します。
/usr/local/src/dkim-milter-2.8.3/devtools/Site/site.config.m4 を編集します。
site.config.m4.distというサンプルファイルがありますから、それをコピーして編集します。
$ cd /usr/local/src/dkim-milter-2.8.3
[dkim-milter-2.8.3]$ cp site.config.m4.dist devtools/Site/site.config.m4
|
...
define(`bld_VERIFY_DOMAINKEYS', `true')
...
define(`confMANROOT', `/usr/share/man')
|
bld_VERIFY_DOMAINKEYS は、DomeinKeysの認証を有効にすしています。
confMANROOT は、manコマンドのrootディレクトリを設定します。
これは、デフォルトのLinuxの設定に誤りがあるので、修正してくために設定しています。
本来は、
/usr/local/src/dkim-milter-2.8.3/devtools/OS/
Linux を編集します。
9
10
11
|
define(`confMANROOT', `/usr/share/man')
|
ここでは、devtools/Site/site.config.m4 の設定が優先されることを利用して、ここの設定で済ませています。
dkim-milter をmakeします
$ cd /usr/local/src/dkim-milter-2.8.3
[dkim-milter-2.8.3]$ make
|
特にエラーが出力されなければOKです。
dkim-milter をインストールする
dkim-milter をインストールするには、make installでも良いですが、ここでは、checkinstall を使ってrpmパッケージ化を行ってrpmで管理したいと思います。
checkinstall に関しては、makeでインストールしたものをrpmパッケージに作成できる checkinstall をインストールする を参照してください。
dkim-milterのrpmパッケージを作成します
$ cd /usr/local/src/dkim-milter-2.8.3
[/usr/local/src/dkim-milter-2.8.3/]$ /usr/local/sbin/checkinstall
checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran
このソフトウェアはGNU GPLの下でリリースしています。
The checkinstallrc file was not found at:
/usr/local/sbin/./../checkinstallrc
デフォルトの内容を使うものとします
The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs? [y]: y
パッケージのドキュメンテーションを準備..OK
*** No known documentation files were found. The new package
*** won't include a documentation directory.
使用するパッケージ方式を選んでください。
Slackwareなら[S], RPMなら[R], Debianなら[D]を入力 R
このパッケージの説明を書いてください
説明の末尾は空行かEOFにしてください。
>> dkim-milter 2.8.3
>>
**************************************
**** RPM package creation selected ***
**************************************
このパッケージは以下の内容で構成されます:
1 - Summary: [ checkinstall 1.6.2 ]
2 - Name: [ sbin ]
3 - Version: [ 20111202 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ Applications/System ]
7 - Architecture: [ x86_64 ]
8 - Source location: [ sbin ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
11 - Provides: [ sbin ]
変更するものの番号を入力してください。Enterで続行します:
Installing with make install...
...
|
dkim-milterのrpmからインストールします
$ rpm -i /usr/src/redhat/RPMS/x86_64/dkim-milter-2.8.3-1.x86_64.rpm
|
32 bit OS : /usr/src/redhat/RPMS/i386/dkim-milter-2.8.3-1.x86_64.rpm
64 bit OS : /usr/src/redhat/RPMS/x86_64/dkim-milter-2.8.3-1.x86_64.rpm
とディレクトリが異なります。
上記は、64 bit OS での例です。
dkim-milter を動かす
dkim-milter を実際に機能させるには、以下の手順で行います。
電子認証のための認証キー作成とDNS登録
DKIMには、自己署名証明書が必要になります。まずは、その証明書を作成します。
$ mkdir /etc/pki/dkim-milter
$ cd /etc/pki/dkim-milter
[dkim-milter]$ dkim-genkey -s sexample_com -d example.com
[dkim-milter]$ dkim-genkey -s sexample_net -d example.net
|
dkim-genkey の使い方は、以下のようになります。
dkim-genkey -s セレクタ名 -d ドメイン名
セレクタ名 : 任意の文字列
ドメイン名 : 証明書を作成するドメイン名
このコマンドで作成されるファイルは、以下の2つです。
セレクタ名.private : 秘密鍵ファイル
セレクタ名.txt : 公開鍵ファイル ( DNSに設定する情報になります。)
ここでは、複数のドメインを扱いたいので、秘密鍵ファイルをセレクタ名に変更しておきます。
[dkim-milter]$ cp sexample_com.private sexample_com
[dkim-milter]$ cp sexample_net.private sexample_net
|
最後にDNSサーバーにTXTレコードとして、公開キー情報を設定します。
公開キーは、セレクタ名.txtの内容を設定します。
以下は、設定イメージです。以下の公開キー情報は、各ドメインによって異なりますので、セレクタ名.txtで確認しましょう。
sexample_net._domainkey IN TXT "v=DKIM1; g=*; k=rsa; t=s; p=公開キー情報"
|
sexample_com._domainkey IN TXT "v=DKIM1; g=*; k=rsa; t=s; p=公開キー情報"
|
dkim-milterのサービス実行と登録
- dkim-milterのサービスを実行するユーザを作成します
dkim-milterを実行するユーザをmilterと指定作成します。
$ useradd -g mail -m -d /var/milter -s /sbin/nologin milter
|
milterのホームディレクトリを/var/milterとしていますから、このディレクトリを公開しておきます。
$ chmod 755 /var/milter
|
- dkim-milterの設定ファイルを編集します
dkim-milterの設定ファイルは、サンプルがありますので、それをコピーして編集します。
$ cp /usr/local/src/dkim-milter-2.8.3/dkim-filter/dkim-filter.conf.sample /etc/mail/dkim-filter.conf
|
/etc/mail/dkim-filter.conf の編集箇所は、以下のとおりです。
156 行あたり コメントアウトします
### del
#Domain example.com
|
196 行あたり 追加します
### add
InternalHosts /etc/mail/dkim-hosts
|
212 行あたり コメントアウトします
### del
#KeyFile /var/db/dkim/example.private
|
228 行あたり 追加します
### add
KeyList /etc/mail/dkim-keys
|
434 行あたり コメントアウトします
### del
#Selector my-selector-name
|
489 行あたり 変更します
### rep
Socket local:/var/milter/dkim-milter.socket
|
ここでは、慣例に沿って、
設定ファイル関連は、/etc/mail の配下へ
実行ファイル関連は、/var/milter の実行ユーザのホームディレクトリ配下へ
設定しています。
- dkim-milterのDKIM Signatureを設定するホストを編集します
dkim-milterの設定ファイルで設定した
InternalHosts /etc/mail/dkim-hosts
に相当します。
/etc/mail/dkim-hosts を編集します。
127.0.0.1
192.168.1.0/24
host.example.com
.example.com
|
ここで指定したIPアドレス(Host名)に関して一致するものからのメール送信時は、メールのヘッダ情報にDKIM Signature を付加して送信します。
上記のようにホスト名の一部やIPアドレスのセグメント指定でも設定できます。
- dkim-milterのDKIM Signatureを設定するホストを編集します
dkim-milterの設定ファイルで設定した
KeyList /etc/mail/dkim-keys
に相当します。
/etc/mail/dkim-keys を編集します。
*@exmaple.net:exmaple.net:/etc/pki/dkim-milter/sexmaple_net
*@exmaple.com:exmaple.com:/etc/pki/dkim-milter/sexmaple_com
|
上記のフォーマットは、以下のとおりです。
適用アドレス:ドメイン:秘密鍵
ここでは、ドメイン名と秘密鍵ファイルとを結び付けます。
複数のドメインを管理する場合、
セレクタ名=秘密鍵ファイル
となることに注意してください。
- dkim-milterのサービスを実行するスクリプトを作成します
dkim-milterを起動するためのスクリプトファイルを作成します。
ここでは、 /etc/init.d/dkim-milter の名前でスクリプトファイルを作成します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
| #!/bin/bash
#
#
# dkim-milter:
#
# chkconfig: 2345 75 35
# processname: dkim-milter
# description: dkim milter
source /etc/rc.d/init.d/functions
PROG=/usr/sbin/dkim-filter
PID=/var/run/milter/dkim-milter.pid
SOCKET=/var/milter/dkim-milter.socket # Socketの場合
CONF="/etc/mail/dkim-filter.conf"
RETVAL=0
start() {
echo -n $"Starting dkim-milter: "
daemon --user milter \
"umask 117; $PROG -p local:$SOCKET -x $CONF -P $PID"
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/dkim-milter
return $RETVAL
}
stop() {
echo -n $"Shutting down dkim-milter: "
killproc $PROG
RETVAL=$?
echo
[ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/dkim-milter
return $RETVAL
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status $PROG
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
RETVAL=1
esac
exit;
|
ここの設定では、以下の項目に関して各自の環境に合わせる必要があるでしょう。
PROG=/usr/sbin/dkim-filter : 実行ファイルのフルパスです。
PID=/var/run/milter/dkim-milter.pid : dkim-milterのプロセスID保存ファイルです。
SOCKET=/var/milter/dkim-milter.socket : dkim-milterのソケットファイルです。
CONF=”/etc/mail/dkim-filter.conf” : dkim-milterの設定ファイルです。
daemon –user milter : 実行ユーザ名です。
このページと同じように設定している方は、そのままでOKのはずです。
sendmailの設定を行います
sendmailの設定は、sendmail.mcへ以下の1行を追加します。
INPUT_MAIL_FILTER(`dkim-filter', `S=unix:/var/milter/dkim-milter.socket, F=T')
|
sendmail.cfへ変換して完了です。
$ m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
|
dkim-milterを起動し、sendmailの再起動
全ての設定を終えたら、dkim-milterを起動し、sendmailの再起動で終了です。
$ /etc/init.d/dkim-milter start
Starting dkim-milter: [ OK ]
$ /etc/init.d/sendmail restart
sendmail を停止中: [ OK ]
sendmail を起動中: [ OK ]
|
システム再起動してもdkim-milterが自動で起動するようにcheckconfig を設定
$ chkconfig --add dkim-milter
$ chkconfig --list dkim-milter
dkim-milter 0:off 1:off 2:on 3:on 4:on 5:on 6:off
|
dkim-milterの動作確認をします
送信時のSignature と DNS 設定による認証を確認するには、Yahoo! や GMailへメールを送信するのが最も簡単な方法です。
実際に送信した後、Yahoo! や GMailで受信したメールのヘッダ情報を確認してみてください。
GMailの場合
Authentication-Results: mx.google.com; spf=pass (google.com: domain of hoge@exmaple.com designates 11.22.33.44 as permitted sender) smtp.mail=hoge@exmaple.com; dkim=pass header.i=@exmaple.com
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=exmaple.com; s=sexmaple_com; t=1323065988; bh=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy=; h=Message-ID:Date:From:MIME-Version:To:Subject:Content-Type: Content-Transfer-Encoding; b=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Yahoo!の場合
Authentication-Results: mta551.mail.kks.yahoo.co.jp from=exmaple.com; domainkeys=neutral (no sig); dkim=pass (ok) header.i=@exmaple.com
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=exmaple.com; s=sexmaple_com; t=1323065988; bh=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy=; h=Message-ID:Date:From:MIME-Version:To:Subject:Content-Type: Content-Transfer-Encoding; b=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Yahoo!の場合は、domainkeysを必ず認証するらしく、その情報が必ず出力されます。
受信時の認証確認は、Yahoo! や GMailへメールからメールを受信するのが最も簡単な方法です。
Authentication-Results: mail.example.com; dkim=pass (1024-bit key) header.i=@yahoo.co.jp; x-dkim-adsp=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.co.jp; s=yj20110701; t=1322809116; bh=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
また、DomainKeysの認証確認は、DKIMに対応していなくて、DomainKeysのみ対応しているサーバーからメールを受信することで確認することができます。
現在では、ほとんどのDomainKeys対応サーバーは、DKIMへの対応も行っています。そのため、DKIMの認証が優先され、DomainKeysの認証結果が出力されません。
以下は、DomainKeysのみに対応しているサーバーからメールを受信した際のメールヘッダ情報です。
Authentication-Results: mail.example.com; domainkeys=pass header.from=hoge@example.org
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=new; d=example.org; h=Message-ID:Date:From:User-Agent:X-Accept-Language:MIME-Version:To:Subject:Content-Type; b=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
どうでしょうか、SPFに関しても、DomainKeysもDKIMも送信者詐称のスパムメールに関して対応できるものです。
送信者詐称のスパムがいかに多いかがよくわかるというものです。
ただ、昨今では、ちゃんと認証できるスパムも少なくなくなっている点からもDomainKeysもDKIMが絶対ではないことがわかります。
Yahoo! , GMailの主要なフリーメールで利用されているので、それなりに普及しそうですが、
これでスパム対策が万全でもないことから、一般的なメールサーバーでは、それほど普及していないのも実情のようです。
ただ、会社のメールサーバーは、間違いなく設定すべきでしょう。変に詐称されてお客さんへ迷惑メールが届きかねません。少なくとも自社のドメインに関して詐称されるケースが減ることは間違いありません。
スパムに詐称されて困っておられる方には、絶対、おすすめです。
コメントを投稿 :