% wget http://dovecot.org/releases/dovecot-0.99.14.tar.gz % gzip -cd dovecot-0.99.14.tar.gz | tar xf - % cd ddovecot-0.99.14/ # ./configure --with-vpopmail --with-pgsql --with-rawlog
Install prefix ...................... : /usr/local File offsets ........................ : 64bit Building with SSL support ........... : no Building with IPv6 support .......... : yes Building with pop3 server ........... : yes Building with user database modules . : static passwd passwd-file pgsql vpopmail (modules) Building with password lookup modules : passwd passwd-file shadow pgsql vpopmail (modules)
# make # make install-strip # make install # cp /usr/local/sbin/dovecot /usr/sbin/dovecot ※上記を行う場合は、オリジナルのdovecotを必ず退避しておくこと
# /usr/sbin/groupadd -g 21000 virtual # /usr/sbin/useradd -g 21000 -u 21000 virtual
$ su - postgres postgres$ /usr/bin/createuser virtual Shall the new user be allowed to create databases? (y/n) y Shall the new user be allowed to create more new users? (y/n) n CREATE USER
postgres$ /usr/bin/createdb virtual CREATE DATABASE
postgres $ psql virtual virtual=# grant all on virtual.* to virtual
$ su - virtual virtual$ psql virtual CREATE TABLE users ( userid VARCHAR(128) NOT NULL, password VARCHAR(64) NOT NULL, home VARCHAR(256) NOT NULL, uid INTEGER NOT NULL, gid INTEGER NOT NULL, active CHAR(1) DEFAULT 'Y' NOT NULL );
$SU -l postgres -c "$PGENGINE/postmaster -i -p ${PGPORT} -D '${PGDATA}' ${PGOPTS} &" >> $PGLOG 2>&1 /tmp/postmaster.log < /dev/null
host all all 192.168.0.0 255.255.255.0 trust
# /etc/rc.d/init.d/postgresql restart
auth_userdb = pgsql /usr/local/etc/dovecot-pgsql.conf auth_passdb = pgsql /usr/local/etc/dovecot-pgsql.conf
# バーチャルドメインユーザの管理データベース・テープルの接続先(virtual/virtual) # password は、virtualアカウントを指定する connect = dbname=virtual user=virtual password=xxxxxx # password を取得するsql文を指定 password_query = SELECT password FROM users WHERE userid = '%u' # バーチャルドメインユーザのディレクトリ、gid/uid を取得するsql文を指定 # Postfixで指定したディレクトリのuid/gidと同じ物にする # Postfixでは、gid/uid共に20001/20001としているので固定の値を返すようにした user_query = SELECT home, 20001 AS uid, 20001 AS gid FROM users WHERE userid = '%u' # passwdの格納方式 # DES, MD5 を使うのが良いがとりあえず生のパスワードで(^^ default_pass_scheme = PLAIN
# /etc/rc.d/init.d/dovecot restart
$ psql virtual virtual=> insert into users values ('hoge@sea-bird.org', 'hoge', '/home/vpopmail/domains/sea-bird.org/hoge', 0, 0);
項目 | 値 | 意味 |
userid | hoge@sea-bird.org | バーチャルメールアカウントを指定します |
password | hoge | passwordですが、default_pass_schemeに依存します |
home | /home/vpopmail/domains/sea-bird.org/hoge | バーチャルメールアカウントのメール保管左記を指定します |
uid | 0 | user_queryで、20001固定を返しているのでなんでもいいです |
gid | 0 | user_queryで、20001固定を返しているのでなんでもいいです |
active | Y | 有効なユーザの場合 'Y'を指定します。default='Y' |
$ psql virtual virtual=> insert into users values ('postmaster@sea-bird.org', 'hoge', '/home/vpopmail/domains/sea-bird.org/postmaster', 0, 0); virtual=> insert into users values ('postmaster@window-shop.biz', 'hoge', '/home/vpopmail/domains/window-shop.biz/postmaster', 0, 0);
$ perl -MDigest::MD5 -e 'printf "{PLAIN-MD5}%s\n", Digest::MD5::md5_hex("hoge")' {PLAIN-MD5}ea703e7aa1efda0064eaa507d9e8ab7e
virtual=> update users set password = '{PLAIN-MD5}ea703e7aa1efda0064eaa507d9e8ab7e' where userid = 'hoge@sea-bird.org';
コマンド | 用途 |
drop table テーブル名 | テーブルの削除 |
update テーブル名 set 項目名 = '内容' where 項目名 = '条件' | 項目の更新 |
select 項目名 from テーブル名 | テーブル項目内容の参照 |
delete from テーブル名 where 項目名 = '条件' | テーブル項目の削除 |
DES: mkpasswd perl -e 'printf "%s\n", crypt("pass", "two-letter-salt")' MD5: mkpasswd --hash=md5 perl -e 'printf "%s\n", crypt("pass", "\$1\$6-8-letter-salt\$")' PLAIN-MD5: perl -MDigest::MD5 -e 'printf "{PLAIN-MD5}%s\n", Digest::MD5::md5_hex("pass")' DIGEST-MD5: perl -MDigest::MD5 -e 'printf "{DIGEST-MD5}%s\n", Digest::MD5::md5_hex("user:realm:pass")'
hoge@window-shop.biz window-shop.biz/hoge/Maildir/
# /usr/sbin/postmap /etc/postfix/vmailbox
# /etc/rc.d/init.d/postfix restart