本日はサーバのメール環境について。今まではqmailとqmail-vidaを利用していた。しかし、今回のサーバから64bit OSに変更した為か、qmail-vidaのコンパイルが通らなくなった。殆どバージョンアップのないqmail(作者のポリシーもあるだろけど)を使い続けることにそろそろ疑問を感じ始めていた時期でもあったので、最近流行のpostfixにトライすることにした。他の機能で何度も触れている通り、なるべくデータはMySQLに格納するように設定する。ウェブで調べた結果、以下の構成が理想的。
- cyrus-sasl (MySQLを使ったSMTP認証)
- dovecot (MySQLを使った認証およびpop3, pop3s, apop, imap, imaps)
- postfix (SMTP over SSL)
- postfixadmin (ブラウザによるアカウントやエイリアス管理)
更に加えるとdovecotでは、MySQLによるバーチャルユーザー認証だけでなくOS認証もサポートする。今回はMTAの話なので細かい事は後日にするが、複数のメールアカウントが存在している為(この点については皆さん共通の悩みだよね)OSユーザーに全てのメールを集約している。実際にメールを読み出すのは、OSユーザーで認証を通したり、またはターミナル上でCUIツールを利用する事になる。
さて、処理の流れとしてはpostfixadminでブラウザにてアカウント作成やエイリアスの転送設定などを行う。そこで作成したアカウントを利用してpostfix + cyrus-saslにてSMTP認証を行う。更に同一のアカウントに対して、dovecotがpop認証やimap認証を行う。旧環境との互換性のためにapopを引き続きサポートするのと、SMTPもpop & imapも暗号化通信(SSL)ができる事とする。可能であれば、MySQL上に格納するパスワードを不可逆の暗号化したかったが、これはdovecotが対応していなかったので諦める。いつの間にかパスワードを忘れていたりするから、フラットに読めた方が助かったりするんだけどねw
セットアップ自体は割りとスムーズに進んだ。はまったのはやはりpop & imapにてMySQL認証とOS認証を併存させる事と、MySQLのテーブル上にあるパスワード情報を不可逆暗号化させようとした事だけ。前者はコツコツ調べて実現、後者はいろいろ試したけどやはり実現できなかった。作ってみた結果としては、めちゃめちゃカスタマイズ余地のあるpostfixに変更して大正解という感想だ。メルマガみたいな一括送信はqmailが強いというのが一般的だが、いつかメルマガを書けるような身分になるまではpostfixで充分そうだw
以下、参考までに。
cyrus-saslのインストールと構築dovecotのインストールと構築postfixのインストールと構築postfixadminのインストールと構築