11.5. 送信サーバー側の設定(電子署名 DomainKeys)

送信サーバー側では、送出メールに電子署名を付与する設定と DNS サーバーの TXT レコードに公開鍵を公開する設定が必要です。ここでは送信サーバー側の設定について解説します。

11.5.1. 自己署名証明書および DNS の TXT レコード生成

電子署名を使用した送信ドメイン認証を行うための準備として自己署名証明書の作成が必要です。Turbolinux 11 Server の dk-milter には openssl コマンドを使用し 512 ビットの秘密鍵、公開鍵、DNS の TXT レコードを自動生成する次のシェルスクリプトが用意されています。

# /usr/sbin/DKgenkey key1

key1に生成する鍵の名前を入力し実行すると /etc/mail/DomainKeys/ ディレクトリに以下が作成されます。

表 11-6. /etc/mail/DomainKeys 以下

ファイル名説明
key1.private秘密鍵
key1.public公開鍵
key1.dnsDNS サーバーの TXT レコード

注意

key1 は、/etc/sysconfig/dk-milter ファイルの "SELECTOR_NAME" に鍵のセレクタとして指定し識別されます(項11.5.2)。DKIM(項11.6)を利用する場合、同じセレクタ名を指定しないように注意してください。

11.5.2. dk-milter の設定ファイル

dk-milter で電子署名を施すメールの送出ドメイン指定や使用する鍵のファイル名、また判定結果の動作を指定するためのオプションを変更するには /etc/sysconfig/dk-milter ファイルを必要に応じ編集します。初期状態ですべてコメントとして記載されていますので、“#”(コメント記号)を削除して必要な編集を行ってください。

SIGNING_DOMAIN=example.com
SELECTOR_NAME=key1
KEYFILE=/etc/mail/DomainKeys/${SELECTOR_NAME}.private
REJECTION="bad=r,dns=t,int=t,no=a,miss=r"
SIGNER=yes
VERIFIER=yes
EXTRA_ARGS="-h -l -D -i /etc/mail/DomainKeys/ilist"

SIGNING_DOMAIN

電子署名を施す対象のドメイン名を指定します。デフォルトではサブドメインまで含みます。

SELECTOR_NAME

電子署名に使用する鍵のセレクタ名の指定です。DKgenkey (項11.5.1参照)で指定をした key1 を指定します。拡張子(.private や .public)は指定しません。

KEYFILE

電子署名に使用する暗号鍵のパス指定です。セレクタ(${SELECTOR_NAME})は SELECTOR_NAME の値が代入されます。指定を省略した場合、/etc/mail/DomainKeys/key.private となります。鍵のセレクタ名を変更した場合は必ずコメント記号を削除し有効にします。

REJECTION

認証結果の処理方法についての指定です。result=action という書式で指定します。指定を省略した場合は、bad=r,dns=t,int=t,no=a,miss=r となります。

表 11-7. result

説明
badメールに署名は存在したが認証失敗
dns送信元の DNS サーバーから公開鍵取得失敗
int内部エラー
noメールに署名が存在しない
missすべてのメールに署名を施すとしている DNS サーバーのドメインからのメールに署名が存在しない

表 11-8. action

説明
a受信
d受信して廃棄
t一時エラー
r拒否
SIGNER

送出ドメインに電子署名を施す(yes)、施さない(no)を指定します。

VERIFIER

受信メールの電子署名による認証を行う(yes)、行わない(no)を指定します。

EXTRA_ARGS

dk-filter デーモンに渡すその他のオプションを指定します。デフォルトでは “-h -l -D”が指定されています。それぞれメールヘッダに dk-filter の情報を追加、ログ出力あり、署名対象ドメインにサブドメインを含むという指定です。"-i ilist" は、ilist にリストしたネットワークやホストからのメールに電子署名を付与する指定です。その他のオプションは dk-filter のオンラインマニュアル等で確認してください。

その他の項目の設定内容は以下の通りです。

表 11-9.

パラメータ説明
USERプロセスの実行ID。通常は変更の必要はありません。
SOCKETpostfix や sendmail と通信するソケットの指定。postfix や sendmail の設定ファイルでのソケットの指定と合わせます。通常は変更の必要はありません。
CANON正規化方法の指定です。

設定変更後は dk-filter を再起動し変更を反映してください。

11.5.3. 送信サーバー側の設定例(DomainKeys)

main.cf の編集

/etc/postfix/main.cf ファイルに以下を記述します。

smtpd_milters = unix:/var/run/dk-milter/dk-milter.sock
non_smtpd_milters = unix:/var/run/dk-milter/dk-milter.sock
鍵生成

次の例のように実行し公開鍵(key1.public)、秘密鍵(key1.private)、DNS の TXT レコード(key1.dns)を生成します。

# /usr/sbin/DKgenkey key1
# ls /etc/mail/DomainKeys/
key1.dns  key1.private key1.public
署名対象ホストの指定

次の例のようにエディタでリスト(例 /etc/mail/DomainKeys/ilist)を作成します。ここで指定したネットワークやホストからのメールには送出時に電子署名を付与します。

127.0.0.1
192.168.1.0/24
host.example.com
.example.com

注意

リストを有効にするには、/etc/sysconfig/dk-milter の EXTRA_ARGS に "-i /etc/mail/DomainKeys/ilist" を追記する必要があります。

dk-milter の設定ファイル編集

/etc/sysconfig/dk-milter の以下部分を編集します。電子署名を付与するドメイン(例は example.com)と DKgenkey で key1 に指定したセレクタ名を指定します。KEYFILE はコメント記号を削除し、EXTRA_ARGS には、-i "署名対象ホストを記述したリストのパス" を追記しコメント記号を削除します。

SIGNING_DOMAIN=example.com
SELECTOR_NAME=key1
KEYFILE=/etc/mail/DomainKeys/${SELECTOR_NAME}.private
EXTRA_ARGS="-h -l -D -H -i /etc/mail/DomainKeys/ilist"
デーモン起動

次のように実行し必要なデーモンを起動します。

# /etc/init.d/dk-milter start
Starting dk-filter:                                                      OK
# /etc/init.d/postfix start
Starting postfix:                                                         OK

既に起動されている場合には次のように必要なデーモンを再起動します。

# /etc/init.d/dk-milter restart
Stopping dk-filter:                                                      OK
Starting dk-filter:                                                      OK
# /etc/init.d/postfix restart
Shutting down postfix:                                                    OK
Starting postfix:                                                         OK

ティップ

/etc/mail/DomainKeys ディレクトリ以下に秘密鍵が存在しないと dk-milter のデーモンは起動されません。DKgenkey スクリプトで鍵を生成し、/etc/sysconfig/dk-milter の SELECTOR_NAME= を必要に応じて編集してから再度デーモンを起動してください。

ティップ

Turbolinux 11 Server の dk-milter は、指定ドメインの送出メールに電子署名を施します。dk-filter デーモンのオプションを変更したい場合は /etc/sysconfig/dk-milter を編集し(項11.5.2参照)デーモンを再起動します。

DNS ゾーンファイルの編集

DNS の TXT レコードに公開鍵を記載します。DKgenkey を実行した際に自動的に作成された /etc/mail/DomainKeys/key1.dns の内容を使用して次のように編集します。

key1._domainkey.example.com.      IN TXT "g=; k=rsa; t=y; p=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALy85S/l73D83mYBhsbIan80T2gjzwHIHDqLLMbCWhtiqBUz5qyrKV8mkS76/3e0W77lhurhcAbMedwpzD36+cUCAwEAAQ=="

Key は rsa “t=y”の指定があるのでテスト的な運用であるというオプションが設定されています。“p=”以降が公開鍵であり必須指定項目です。