at_yasu's blog

ロード的なことを

複数の人と一緒に一つのメールディレクトリを共有する

又、長いタイトルだけどご了承をお願いしま。中身は、タイトル通り。


CyrusImapは、有名なImap/POPサーバです。いれちゃうだけで、Imap{,s}/Pop{,s}が動かせちゃうウハウハな(ry

欠点として、メールの保存にデータベースを使ってて、courierと違って生のファイルで保存していません。データベースのデットロックとかそこらへんにバグが有ったら困るなーという欠点有り。まぁ、そのかわり、Imap/popが同時に動かせちゃうという嬉しいことができます。鯖移行の時とか。

Imapでのディレクトリ単位のアクセス権限があり、この機能はさり気なくImapV4であるそうです。で、今回はその権限の付け方。

とりあえず、ドキュメントに書かれている分の権限リスト。他にも色々有るけど何を意味するかは不明。

l
lookup - ユーザがメールボックスが有るかどうか確認する事ができます
r
read - メールボックスを読む事ができます。ユーザは、メールボックスからメールをコピーしたり、検索をしたり、データを取得したり、メールボックスを選ぶことができます。
s
seen - 1ユーザあたりの見ている状態を維持します。"Seen"と"Recent"フラグは、ユーザが保持します。
w
write - ユーザは、"Seen"や"Deleted"以外のキーワード(他の権限の設定による)やフラグの変更ができます。
i
insert - メールボックスに新たにメールを入れることができます。
p
post - ユーザは、メールボックスから"Submission"アドレスからメールの送信ができます。insert権限とは違い、送信したメッセージの状態のメッセージを入れます。
c
creaet - ユーザは、メールボックスに新たにメールボックスを作ることができ、削除や作業しているメールボックスの名前の変更をする事ができます。
d
delete - ユーザは、"Deleted"フラグを立て、削除をすることができます。
a
administer - ユーザはメールボックスの"ACL"を変更することができます。

とまぁ、こんな感じです*1。頭半分寝ぼけているので、訳変鴨*2

権限を追加した場合、クライアントからそのメールボックスを見る事ができる様になります。

cyradmで権限をつける場合は、samコマンドを使います。
下記の例は、「yasui」というユーザに対する「user.test1.aaa」というメールボックスの権限を設定しています。

[top: /usr/ports/mail/cyrus-imapd23/work/cyrus-imapd-2.3.8][1:20] $ cyradm --user cyrusAdm localhost
Password: 

localhost.a-yasui.info> lam user.test1.aaa
cyradm lrsipkxtecda
test1 lrswipkxtecda
root lrsipkxtecda

localhost.a-yasui.info> sam help
usage: setaclmailbox mailbox id rights [id rights ...]

localhost.a-yasui.info> sam user.test1.aaa yasui lrsipkxtecda

localhost.a-yasui.info> lam user.test1.aaa                   
cyradm lrsipkxtecda
test1 lrswipkxtecda
root lrsipkxtecda
yasui lrsipkxtecda

localhost.a-yasui.info> 

例えばここで「user.test1」に対する権限を取った場合どうなるか気になったのでやってみました。
「dam」コマンドは、権限を取り払うコマンドです。権限を削除する、例えば「s」だけを消す等と云ったコマンドではなく、ユーザのアクセス権自体を消します。

localhost.a-yasui.info> dam user.test1 yasui

localhost.a-yasui.info> lam user.test1
cyradm lrsipkxtecda
test1 lrswipkxtecda
root lrsipkxtecda

localhost.a-yasui.info> lam user.test1.aaa
cyradm lrsipkxtecda
test1 lrswipkxtecda
root lrsipkxtecda
yasui lrsipkxtecda

localhost.a-yasui.info> 

この状態で「user.test1.aaa」にアクセスした場合、アクセスや書き込みなどはできました。しかし、「user.test1」への読み込みはできませんでした。そりゃそうだけど。

クライアント側は、特に設定はいらないはずです。少なくとも、Apple Mailでは勝手に読み取って来てくれます。ただ、権限を変更した場合、Mailの再起動が必要ですけど。他のメーラは分かりません。


明日のメモ書きは、CyrusImapでVirtualHostかな。

余談:フランス兄さん最高ー

*1:Cyrusのページには

*2:中国語みたいだな。訳変鴨って。