Dovecot

Dovecot 命名空間前綴與底層 Maildir 結構的關係

  • October 10, 2014

我試圖弄清楚文件系統結構和 dovecot 的命名空間前綴之間是否/什麼有聯繫。具體來說,在我的設置中,我沒有聲明任何命名空間,所以 dovecot 創建了一個預設命名空間。每當新使用者首次登錄時,其郵件目錄中的文件夾結構為:

Maildir/
  ...
  cur
  new
  .Sent Items
  .Drafts
  .Junk E-mail
  .Deleted Items
  ...

當我從電子郵件客戶端登錄時,我看到這些郵箱:

INBOX
Sent Items
Drafts
Junk E-mail
Deleted Items

我的問題是:

1.INBOX郵箱不應該是“.INBOX”目錄嗎?通過查看內容,我看到 INBOX 郵箱從“cur”目錄中獲取其項目。為什麼 INBOX 郵箱有這個例外?

2.如果我用inbox=yes 和prefix=FOO 定義了一個顯式的私有命名空間,如果有的話,這會對文件夾結構和客戶端郵箱顯示產生什麼影響?本質上,我無法弄清楚命名空間前綴的用途,以及它是否用於命名使用者 Maildir 中的實際目錄。

謝謝

編輯:閱讀答案並進行更多探勘後,我仍然遇到這個問題:IMAP 郵箱/文件夾在 Maildir 目錄中有相應的 fs 目錄,(例如,當使用者(從他們的 IMAP 客戶端)創建頂級文件夾/郵箱,比如說“Important”,在 Maildir 下創建了一個“.Important”目錄。因此,每個 IMAP 郵箱/文件夾的映射目錄都是 Maildir 的子目錄。除了 INBOX 郵箱:其對應的目錄是 Maildir 本身。我想將 INBOX 目錄設置為 Maildir 的子目錄,因為它適用於所有其他郵箱。我根本不使用 mbox。我想做的事情是否有意義,如果是,我該怎麼做?

INBOX郵箱不應該是“.INBOX”目錄嗎?

可能,但通常~/Maildir/[new|cur|tmp]是收件箱的組成部分。

與所有事情一樣,您可以對 Dovecot 進行不同的配置,以匹配您希望發送和儲存電子郵件的方式。~/Maildir/INBOX/[new|cur|tmp]是完全可能的。請注意,這應該與您的傳入 SMTP 伺服器(或 LDA)的配置方式相匹配,以將新電子郵件也儲存在磁碟上……

文件夾是原始Maildir 格式的擴展,稱為 Maildir++,如此所述。IMAP 文件夾被實現為具有命名約定的子目錄Maildir/.<Folder Name>Maildir/.<Folder Name>.<Sub Folder>.

IMAP 文件夾本身也是 Maildir 目錄,因為它們還包含 cur、new 和 tmp 子目錄,即Maildir/.<Folder Name>/[cur|new|tmp]/

根據您的需要,您可以通過在 Dovecot配置設置中Maildir/<Folder Name>/<Sub folder>包含該選項來更改它。儘管我真的不認為有必要,因為無論如何您都不應該通過文件系統管理您的郵件。LAYOUT=fs``mail_location

如果我使用 inbox=yes 和 prefix=FOO 定義顯式私有命名空間,如果有的話,這會對文件夾結構和客戶端郵箱顯示產生什麼影響?

在磁碟上的文件夾結構上,幾乎沒有,由mail_location命名空間中的設置和 layout=FS 選項的存在或不存在來配置。

使用 inbox=yes 創建命名空間會使該命名空間成為收件箱。一個使用者只能有一個收件箱。您需要確保收到的郵件也能在那裡投遞,這樣才有用。具有兩個命名空間的範例是經典的 mbox 文件,即 INBOX 和 Maildir,在使用者主目錄中以 Maildir 格式保存所有 IMAP 文件夾:

namespace {
 separator = /
 prefix = "#mbox/"
 location = mbox:~/mail:INBOX=/var/spool/mail/%u
 inbox = yes
 hidden = yes
 list = no
}
namespace {
 separator = /
 prefix =
 location = maildir:~/Maildir
}  

前綴用於來自 Dovecot 的 NAMESPACE 響應,其效果將取決於 IMAP 客戶端。有關名稱空間的用途,請參閱RFC 2342 。

本質上,我無法弄清楚命名空間前綴的用途,以及它是否用於命名使用者 Maildir 中的實際目錄。

Dovecot 對 IMAP 協議的命名空間擴展也有很多話要說。

引用自:https://serverfault.com/questions/634759