Postfix+Dovecot+Vpopmail+ezmlm
一応懸念点はあるものの動いたのでメモ。
勘違い、間違いがあるかもしれないけど、メモ書きってことでお許しを。
やりたいことは
・フロントはPostfixがいい
・Postfixはバーチャルドメイン運用をする
・DovecotでPOPなりIMAPなり制御したい
・vpopmailでアカウント(主にパスワード)を管理したい
・ezmlmが使いたい
OSはCentOS5.6で試した。
ezmlmとかvpopmailってqmailベッタリなんでqmailは必須なんで、
とりあえずは慌てず騒がずqmail+vpopmail+ezmlmの環境を作る。
この辺はいろんなサイトにあるからそっちにお任せ。
動作を確認したら一度qmail落としておこう。
問題なく動くようならPostfixとDovecotをインストールするんだけど、
yumから入れたDovecotはvpopmail使えないので、srpmを取ってきて
--with-vpopmail
を追記してビルドしてやる。
srpmを取ってくるやり方もいくつかサイトがあるからそっちにお任せ。
流れを書いとくとyum-utilsをyumからインストールして、
srpm用repoファイルを設置してダウンロードする感じ。
Postfixについては基本的にデフォルトのままで下記のようにする。
: inet_interfaces = all : mydestination = $myhostname, localhost.$mydomain, localhost : relay_domains = $mydestination, $virtual_alias_domains : disable_vrfy_command = yes virtual_transport = virtual transport_maps = pcre:/etc/postfix/virtual_pcre virtual_mailbox_domains = example.com virtual_mailbox_base = /home/vpopmail/domains virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_minimum_uid = 7008 virtual_uid_maps = static:7008 virtual_gid_maps = static:7003 virtual_alias_maps = hash:/etc/postfix/virtual smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_mynetworks, reject_non_fqdn_recipient, permit_sasl_authenticated, reject_unauth_destination
vpopmailは/home/vpopmailにインストールしたので、こんなパス。
virtual_minimum_uidとvirtual_uid_mapsとvirtual_gid_mapsの値はvpopmail用に作った
ユーザのuidとgidを設定する。
Dovecotについても余計なことしないで、vpopmailを使うようにするだけ
: mail_location = maildir:/home/vpopmail/domains/%d/%n/Maildir : first_valid_uid = 7008 : first_valid_gid = 7003 : auth default { : passdb vpopmail { } : userdb vpopmail { } : socket listen { : client { path = /var/spool/postfix/private/auth user = postfix group = postfix } }
こんな感じになってれば平気でしょう。他は全部デフォルトのまま。
uidとgidについては先程と同じようにvpopmailのユーザIDとグループIDをセット。
ユーザのメールボックスは例えばhoge@example.comだとしたら、
/home/vpopmail/domains/example.com/hoge/Maildir
に落ちるようにしてある。
SSLとか使いたければ、適宜変更するといいでしょう。
ここでDovecotだけ起動して認証の確認をする。
既にvadddomainとvadduserしてパスワードも設定してるならそれを利用する。
次に問題のPostfixからezmlmに流す部分。
通常のメールアカウントであれば上記の設定に従って/etc/postfix/vmailboxに
メールアドレスと落とし先を記述してpostmapしてあげれば動く。
# cat /etc/postfix/vmailbox hoge@example.com example.com/hoge/Maildir/ # postmap /etc/postfix/vmailbox
Maildirの最後の'/'を忘れずに。
同じようにezmlmのメールアドレスもvmailboxに記載しないと、門前払いされてしまう。
ただ、ezmlmは(ML名)-subscribeみたいな拡張アドレスをふんだんに利用するので、
全部記述するのは面倒といえば面倒。
ここが懸念点ではあるが、とりあえずは
@example.com example.com/gomi/Maildir
と設定しておいて、通常のメールアドレス以外は別のユーザに落とす設定にしておく。
さらにMLに流れてきたメールを全部qmailに流して処理させるようにする。
Postfixの設定で
transport_maps = pcre:...
という箇所があるが、これがそれに当たる。中身はML名をtest-ml@example.comとするならば
# cat /etc/postfix/virtual_pcre /^test\-ml(\-.*)?@example\.com$/ qmail:
となる。
これはtest-ml-subscribe@example.comなどのコマンドメールにも対応するような正規表現。
正規表現で記述したマッピングについてはpostmapの必要はない。
末尾のqmail:はqmailに渡しますよってもので、定義はmaster.cfに記載する。
# cat /etc/postfix/master.cf : qmail unix - n n - - pipe flags=R user=qmailq argv=/var/qmail/bin/sendmail $recipient
これでtest-ml@example.com関連のメールは全てqmailのsendmailに引き渡されて、
ezmlmで作成されたMLについての.qmail-test-ml関連の処理が可能になる。
ここまでやってPostfixと共にqmailを起動させる。
qmailは起動しなくていいって話だったんだけど、queueにたまったままになっちゃったんで起動した。
当然だけどqmail-smtpdやqmail-pop3dは必要ない。
懸念点であるvmailboxの記載をもうちょっと工夫したい。
コマンドメールを使わせないのであれば、ML名だけ書けばいいけども。
virt-managerを起動してインストール後の設定をする
virt-installはインストールが一段落すると落ちてしまう。
このあとvirt-managerを起動して対象の仮想サーバのコンソールを開いてやると
続きができる。
# virt-manager &
virt-installを使ってWindowsServerをインストールする
さきほどxtermを呼び出したターミナルでvirt-installする。
先にrootになっておく。
$ su - # virt-install --name=win2008 --ram=1024 --vcpus=1 --hvm --cdrom=/path/to/windows2008server.iso --file=/var/lib/xen/images/win2008.image --file-size=10 --nonsparse --network=network:default --vnc
CygwinのXサーバを動かすクライアントPCとXenサーバで信頼関係を結ぶ(xauth)
Cygwinインストール後にできたショートカットアイコンをダブルクリックしてCygwinを起動する。
"startx"コマンドを打ってXサーバ起動。
対象サーバへのsshログインを確認しておく。
$ xauth list XXXXX/unix:0 MIT-MAGIC-COOKIE-1 ????????????????????????? XXXXX.setup:0 MIT-MAGIC-COOKIE-1 ?????????????????????????
とすると、自ホストのCookieが表示されるが、これを対象サーバにおいてやる
$ xauth nextract - XXXXX/unix:0 | ssh (対象サーバのIP) xauth nmerge - *ssh接続してみる >|| $ ssh -Y (対象サーバのIP)
Xenが稼働してるサーバ側でX転送を許可する
# vi /ets/ssh/sshd_config X11Forwarding yesにする
cygwinのインストール
インストーラをダウンロードしてくる。
http://cygwin.com/setup.exe
後からいろいろ入れるのが面倒なので全部入れちゃう。(結構時間かかる)