2013年8月20日火曜日

dovecot dbox形式

Dovecotには、独自のメールBOXフォーマットが存在します。
※Maildir形式のように1通のメッセージを1つのファイルとして保存するsdbox形式、mbox形式のように複数のメッセージを1つのファイルとして保存するmdbox形式(ただし、ある程度のサイズで複数のファイルに分割されます)の2種類です。


設定は特に難しいところはなく、sdbox形式の場合を例にするとmail_locationに以下のよう指定するだけで利用できます。
※評価はCentOS6.4(x86_64) + dovecot2.2.4 + システムアカウントで行っています

mail_location = sdbox:~/dbox


実際にメールを格納するとMaildir形式とは異なりメールそのものは、u.1やu.2のような名前で保存され、メールが未読でも既読でもSeenフラグなどが付くことがありません。

# find ~user01/dbox/
/home/user01/dbox/
/home/user01/dbox/mailboxes
/home/user01/dbox/mailboxes/INBOX
/home/user01/dbox/mailboxes/INBOX/dbox-Mails
/home/user01/dbox/mailboxes/INBOX/dbox-Mails/u.3
/home/user01/dbox/mailboxes/INBOX/dbox-Mails/u.1
/home/user01/dbox/mailboxes/INBOX/dbox-Mails/dovecot.index.log
/home/user01/dbox/mailboxes/INBOX/dbox-Mails/dovecot.index.cache
/home/user01/dbox/mailboxes/INBOX/dbox-Mails/u.2
/home/user01/dbox/dovecot-uidvalidity
/home/user01/dbox/dovecot-uidvalidity.51ac2f97
#

1通のメールは以下のようになります。
Maildir形式と比較するとメッセージの前後に追加の情報が付くようです。

# cat /home/user01/dbox/mailboxes/INBOX/dbox-Mails/u.5
2 M1e C51ac33f6
N          0000000000000277

Return-Path: <user101@mail.example.com>
X-Original-To: user01@mail3.example.com
Delivered-To: user01@mail3.example.com
Received: from mail.example.com (R-538.mshome.net [192.168.137.1])
        by mail3.example.com (Postfix) with SMTP id 8AD6E3FF6B
        for <user01@mail3.example.com>; Mon,  3 Jun 2013 15:13:08 +0900 (JST)
From: user101 <user101@mail.example.com>
To: user01@mail3.example.com
Subject: test
Date: Mon, 03 Jun 2013 15:13:08 +0900
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <E1CE60216AB962user101@mail.example.com>
test

R51ac33f6
V288
G87ca8705f633ac51190a000048c9b678

#


今回の最終的なdovecotの設定は以下になります。
# doveconf -n
# 2.2.4: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-358.14.1.el6.x86_64 x86_64 CentOS release 6.4 (Final)
disable_plaintext_auth = no
listen = *
mail_debug = yes
mail_location = sdbox:~/dbox
passdb {
  driver = pam
}
protocols = pop3
ssl = no
userdb {
  driver = passwd
}
#


またMTAにpostfixを利用する場合は、そのままだとメールBOXに配送ができないので、DovecotのLDAかLMTPなどを利用して配送を実施する必要があります。
※LDAとLMTPについては、今後書きたいと思います

一例を挙げておきます。
システムアカウントを利用してDovecotのLDAで配送をするなら、以下のように設定します。

mailbox_command = /usr/libexec/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT"


0 件のコメント:

コメントを投稿