送信サーバー側では、送出メールに電子署名を付与する設定と DNS サーバーの TXT レコードに公開鍵を公開する設定が必要です。ここでは送信サーバー側の設定について解説します。
電子署名を使用した送信ドメイン認証では自己署名証明書が必要です。Turbolinux 11 Server の dkim-milter には openssl コマンドを使用し 1024 ビットの秘密鍵、公開鍵、DNS の TXT レコードを自動生成する次のシェルスクリプトが用意されています。
# /usr/sbin/DKIMgenkey key2 |
key2に生成する鍵の名前を入力し実行すると /etc/mail/DKIM/ ディレクトリに以下が作成されます。
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" |
電子署名を施す対象のドメイン名を指定します。デフォルトではサブドメインまで含みます。
電子署名に使用する鍵のセレクタ名の指定です。DKIMgenkey (項11.6.1参照)で指定をした key2 を指定します。拡張子(.private や .public)は指定しません。
電子署名に使用する暗号鍵のパス指定です。セレクタ(${SELECTOR_NAME})は SELECTOR_NAME の値が代入されます。指定を省略した場合、/etc/mail/DKIM/key.private となります。鍵のセレクタ名を変更した場合は必ずコメント記号を削除し有効にします。
認証結果の処理方法についての指定です。result=action という書式で指定します。指定を省略した場合は、bad=r,dns=t,int=t,no=a,miss=r となります。
送出ドメインに電子署名を施す(yes)、施さない(no)を指定します。
受信メールの電子署名による認証を行う(yes)、行わない(no)を指定します。
dkim-filter デーモンに渡すその他のオプションを指定します。デフォルトでは “-h -l -D”が指定されています。それぞれメールヘッダに dkim-filter の情報を追加、ログ出力あり、署名対象ドメインにサブドメインを含むという指定です。"-i ilist" は、ilist にリストしたネットワークやホストからのメールに電子署名を付与する指定です。その他のオプションは dkim-filter のオンラインマニュアル等で確認してください。
その他の項目の設定内容は以下の通りです。
表 11-13.
| パラメータ | 説明 |
|---|---|
| USER | プロセスの実行ID。通常は変更の必要はありません。 |
| SOCKET | postfix や sendmail と通信するソケットの指定。postfix や sendmail の設定ファイルでのソケットの指定と合わせます。通常は変更の必要はありません。 |
| CANON | 正規化方法の指定です。 |
| SIGALG | 電子署名に使用するアルゴリズムの指定です。デフォルトは rsa-sha1 です。 |
設定変更後は dkim-filter を再起動し変更を反映してください。
/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" を追記する必要があります。 |
/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 の 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=”以降が公開鍵であり必須指定項目です。
セキュリティ面を考慮し定期的に鍵を更新することを推奨します。その場合には以下の手順で実行してください。
DKIMgenkey (項11.6.1参照)を使用して鍵を生成します。このとき、前回と異なるセレクタ名を key2 に指定します。
DNS サーバーに新しく作成した鍵の情報(/etc/mail/DKIM/new-key2.dns)を追加し公開します。
/etc/sysconfig/dkim-milter の以下部分を編集します。DKIMgenkey で key2 に指定した新しいセレクタ名を指定します。
SELECTOR_NAME=new-key2 |
デーモンを再起動します。
# /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 |
しばらく運用をしてから、古い DNS レコードを削除します。