- blogs:
- cles::blog

CentOS 6 + Postfix + MySQL + postfixadmin + Dovecot をインストール(その2)



今日は電車に閉じ込められてしまったので、電車の中でセットアップを続行します。。。
postfixadmin は便利なのですが、認証として CRAM-MD5 を有効にしようとすると原理上パスワードは平文保存が必須になります。そうすると、ちょっとしたデータベースメンテナンスの時に平文のパスワードが見えてしまうという問題があります。気にしなければよいという話もありますが、やはりパスワードが見えてしまうのはイヤなので気持ちの問題かもしれませんが、AES を使ってパスワードを暗号化することにしました。
AES は対称暗号なので、MD5 などのハッシュと違って平文に戻すことができます。しかも MySQL にはビルトインで AES_ENCRYPT() / AES_DECRYPT()*1 という関数があるので、DB のレイヤーで透過的に暗号化・復号化を行うことができます。
実際に MySQL のコンソールで試すとこんな感じになります。
TO_BASE64() / FROM_BASE64()*2を使っているのは、AES_ENCRYPT() の戻り値がバイナリなので、文字列としてパスワードをフィールドに格納できるようにするためです。
以下、作業メモ。
† 設定ファイルの書き換え
config.inc.php に mysql_aes という設定と、AES のパスワードの設定部分を追加します。
####AES_PASS#### の部分は使用時にランダムな文字列に書き換えてください。
† 暗号化部分の追加
postfixadmin は md5crypt などのハッシュ化パスワードでも同じアルゴリズムが使えるように、プログラム中には「平文→暗号文」という処理しかありません。このため、暗号化の部分に手を入れてやるだけでパスワードの AES 化を行うことができます。そんなわけで、下記のような簡単なパッチで対応させることができました。
後は Dovecot で認証するときに SQL でパスワードが平文で取り出されるようにしてあげれば OK なはずです。
その3に続きます。
- *1: MySQL :: MySQL 5.6 Reference Manual :: 12.13 Encryption and Compression Functions
- *2: MySQL :: MySQL 5.6 Reference Manual :: 12.5 String Functions
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/6750
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110782)
3 . 年次の人間ドックへ(110376)
4 . 2023 年分の確定申告完了!(1つめ)(109924)
5 . 三菱鉛筆がラミーを買収(109823)