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

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

11.6.1. 自己署名証明書作成と DNS の TXT レコード生成

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

# /usr/sbin/DKIMgenkey key2

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

表 11-10. /etc/mail/DKIM 以下

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

注意

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

11.6.2. dkim-milter の設定ファイル

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

SIGNING_DOMAIN=example.com
SELECTOR_NAME=key2
KEYFILE=/etc/mail/DKIM/${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/DKIM/ilist"

SIGNING_DOMAIN

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

SELECTOR_NAME

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

KEYFILE

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

REJECTION

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

表 11-11. result

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

表 11-12. action

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

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

VERIFIER=yes

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

EXTRA_ARGS

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

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

表 11-13.

パラメータ説明
USERプロセスの実行ID。通常は変更の必要はありません。
SOCKETpostfix や sendmail と通信するソケットの指定。postfix や sendmail の設定ファイルでのソケットの指定と合わせます。通常は変更の必要はありません。
CANON正規化方法の指定です。
SIGALG電子署名に使用するアルゴリズムの指定です。デフォルトは rsa-sha1 です。

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

11.6.3. 送信サーバー側の設定例(電子署名 DKIM)

main.cf の編集

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

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

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

# /usr/sbin/DKIMgenkey key2
# ls /etc/mail/DKIM/
key2.dns  key2.private key2.public
署名対象ホストの指定

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

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

注意

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

dkim-filter の設定ファイル編集

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

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

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

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

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

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

ティップ

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

ティップ

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

DNS ゾーンファイルの編集

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

key._domainkey.example.com.       IN TXT "v=DKIM1; k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3KmXRLx0eLZYk6+17WLFExB7cju2bK/d4wNlxxLV6btNYjrpbwmH8OeZqnJKADg1WTvSBfeSaVY2SVdtyr5xYfUWxjGtyqPPMZzmLZ62bGJ5vmlnKCLPorGlkgXFcueCGeCvQ5+2b/Ti21dtiC2Ubp8qCH4xxZLx4AKfW4pQKowIDAQAB"

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

11.6.4. 定期的な鍵の更新

セキュリティ面を考慮し定期的に鍵を更新することを推奨します。その場合には以下の手順で実行してください。

  1. DKIMgenkey (項11.6.1参照)を使用して鍵を生成します。このとき、前回と異なるセレクタ名を key2 に指定します。

  2. DNS サーバーに新しく作成した鍵の情報(/etc/mail/DKIM/new-key2.dns)を追加し公開します。

  3. /etc/sysconfig/dkim-milter の以下部分を編集します。DKIMgenkey で key2 に指定した新しいセレクタ名を指定します。

    SELECTOR_NAME=new-key2
  4. デーモンを再起動します。

    # /etc/init.d/dkim-milter restart
    Stopping dkim-filter:                                                      OK
    Starting dkim-filter:                                                      OK
    # /etc/init.d/postfix restart
    Shutting down postfix:                                                    OK
    Starting postfix:                                                         OK
  5. しばらく運用をしてから、古い DNS レコードを削除します。