目次
はじめに
PMailServer2の機能にメール送信時のメールヘッダーに電子署名(DKIM署名)を施す機能が実装されておりこれを有効にしてみた。
設定に伴い,秘密鍵と公開鍵が必要となる。
OpenSSLで秘密鍵を発行できるが,Apacheの秘密鍵が既にあるのでそれを利用してみる。
Apacheの秘密鍵は,以前の記事にも書いたがインストールフォルダーの「\md\domains\ドメイン名」に「privkey.pem」のファイル名で保存されている。
このファイルはPMailServer2では扱えない形式(PKCS#8)のためPKCS#1に変換後,公開鍵を発行する。
PKCS#1に変換
コマンドプロンプトを立ち上げてApacheの証明書フォルダーに移動後,Apacheの秘密鍵をOpenSSLコマンドでPKCS#1に変換する。
cd /D "D:\Program Files\Apache24\md\domains\ドメイン名"
openssl pkey -in privkey.pem -traditional > privkey_PKCS#1.pem
Apacheの証明書フォルダー「\md\domains\ドメイン名」に「privkey_PKCS#1.pem」の秘密鍵が作成される。
公開鍵の発行
上記の秘密鍵「privkey_PKCS#1.pem」から公開鍵「public_PKCS#1.pem」を発行する。
openssl rsa -in privkey_PKCS#1.pem -out public_PKCS#1.pem -pubout -traditional
Apacheの証明書フォルダー「\md\domains\ドメイン名」に「public_PKCS#1.pem」の公開鍵が作成される。
公開鍵の編集
上記で作成された公開鍵「public_PKCS#1.pem」をメモ帳等のエディタで開いて不要箇所を削除する。
削除箇所
・先頭行「—–BEGIN PUBLIC KEY—–」と最終行「——END PUBLIC KEY—–」を削除
・改行を削除して1行で保存する。
上記の9行を下記のように1行に編集する。
(登録するDNSサーバー仕様で255文字/1行のケースあり)
DNSサーバーへ公開鍵登録
DNSサーバーへ登録する際にセレクタという任意の文字列を指定する。
このセレクタは,複数のDKIM設定時に秘密鍵と公開鍵を紐づける目的で使用される。
セレクタを含めたFQDNは「セレクタ._domainkey.ドメイン名」で表す。
下記はセレクタを「default」とした時の設定例でセレクタに続けて「_domainkey」とドメイン名を記載する。
完全修飾ドメイン名(FQDN)「default._domainkey.na-3.com」
エイリアス名「default._domainkey」
Mydnsの設定例
Hostname : default._domainkey
Type : TXT
Content : v=DKIM1;k=rsa;p=MIIBI........... 公開鍵.............
バッチファイルで作成
あまり必要性は無いかもしれないが,2ステップ分を自働作成できるバッチファイルを作ってみた。構成が同じ複数のサーバー運用をしている分には多少時間節約になる。ただし公開鍵の編集は必要。
rem Apacheサーバー証明書を変換してスDKIM署名用証明書作成 dkimcreate.bat
cd /D "D:\Program Files\Apache24\md\domains\ドメイン名"
rem Apacheの秘密鍵(PKCS#8)をPKCS#1に変換
openssl pkey -in privkey.pem -traditional > privkey_PKCS#1.pem
timeout /t 5 /nobreak
rem 秘密鍵から公開鍵を発行
openssl rsa -in privkey_PKCS#1.pem -out public_PKCS#1.pem -pubout -traditional
timeout /t 5 /nobreak
作成されるファイル
秘密鍵 privkey_PKCS#1.pem
公開鍵 public_PKCS#1.pem 編集必要
PMailServer2の設定
基本設定
DKIM署名を行う・正規化(simple/simple)・署名アルゴリズム(rsa-sha256)・追加処理(ピリオドエスケープ)・署名Body長(0)・署名に含めるヘッダ(from,to,subject,date)・追加ヘッダ(タイムスタンプを付与)
ドメイン別設定
ドメイン設定 ドメイン名(hoge.com)・セレクタ(任意の文字列 例:default)・プライベートキー(pem)へのフルパス(D:\Program Files\Apache24\md\domains\ドメイン名\privkey_PKCS#1.pem)
署名テスト
考察
googleのDKIMチェックは管理コンソールから有効にしないとワーニングが消えないようだが,gmailには届くので様子見とする。
参考
- DKIM Record Checker(DKIMレコードの登録・パラメーター確認)
- DKIMCore(DKIMレコードの登録・有効性確認)