・配送された
・dovecot, SQLite をいれて
・dovecot に sqlite 使わせて受信してみた
ざっとこんな風。
o main.cf に下記設定 (ここでは example.jp とした)
virtual_mailbox_domains = example.jp
virtual_mailbox_base = /home/vmailbox
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = hash:/etc/postfix/virtual
uid_maps,gid_mapsはめんどいのでstaticに。値は適当。
ユーザ、グループは存在しない。
/home/vmailbox は umask 027, chown 5000:5000で作っておいた。
・/etc/postfix/{vmailbox,virtual} は以下
- vmailbox
hoge@example.jp example.jp/hoge/Maildir/
- virtual (ほかに転送しないならいらない)
hoge@example.jp hoge@example.jp,fuga@example.com
Maildir 形式をつかうのでケツに/
作ったあとは postmap を忘れずに。
o dovecot いれ
sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d
o sqlite いれ
sudo apt-get install sqlite3 sqlite3-doc
o dovecot 設定
みたところ
・PasswordDatabase
・Authentication/PasswordSchemes
・デフォルト設定のdovecot.conf,dovecot-sql.conf
まずdovecot.conf
protocols = pop3 pop3s imaps
(pop3 は手で確認するため用.できたら削除)
passdb sql {
#Path for SQL configuration file
args = /etc/dovecot/dovecot-sql.conf
}
userdb sql {
#Path for SQL configuration file
args = /etc/dovecot/dovecot-sql.conf
}
passdb sql, userdb sql の箇所はコメントアウト -> コメントインしただけ。
次dovecot-sql.conf
driver = sqlite
connect = /etc/dovecot/authdb.sqlite
default_pass_scheme = SSHA
password_query = SELECT userid as user, password FROM users WHERE userid = '%u' AND active = 'Y'
user_query = SELECT home, uid, gid FROM users WHERE userid = '%u' AND active = 'Y'
を記述
sqliteをつかうぜ、な設定
connect でデータベースファイル設定.例のまま.
default_pass_scheme は なんとなく SSHAで (Salted SHA1)。SHA256 は 1.1系かららしいので使えず。。
password_query と user_query は書かれていたものほとんどそのまま。
で、dovecot 再起動。
o sqliteで受信用ユーザ設定
パスワードは sqliteにぶちこむので
をして sha1 した文字列を作成しておく。
dovecotpw で ssha なやつを作成しておく。
/etc/dovecot 以下でごそごそ
# touch authdb.sqlite
# chmod 640 authdb.sqlite
# chgrp mail authdb.sqlite
(sqliteつかう場合、まずtouchするのがフツーなんだろうか?ワカラン。)
# sqlite3 authdb.sqlite
以下sqlite3 のプロンプト
CREATE TABLE users (
userid VARCHAR(128) NOT NULL,
password VARCHAR(64) NOT NULL,
home VARCHAR(255) NOT NULL,
uid INTEGER NOT NULL,
gid INTEGER NOT NULL,
active CHAR(1) DEFAULT 'Y' NOT NULL
);
insert into users values (
'hoge@example.jp',
'ぱすわーどをsalted sha1した文字列',
'/home/vmailbox/example.jp/hoge',
5000,
5000,
'Y'
);
select * from users;
.quit
あとはtelnet で 110 たたいて確認。
telnet localhost 110
user hoge@example.jp
pass ぱすわーど
list なり
retr [数字]なり
dele [数字]なり
SQLite を使ったワケ: 個人用なので MySQL,Postgres をつかうのは大袈裟。SQLite がピッタリ。
0 件のコメント:
コメントを投稿