Dovecot

為什麼 dovecot 2.2.13 沒有將電子郵件從 new/ 移動到 cur/?

  • December 5, 2014

我在 gentoo 64 位上使用 dovecot 2.2.13。

當新電子郵件到達時,它會保留在 new/ 目錄中,而不是移動到 cur/ 目錄中。我讀到maildir_empty_new = yes已添加/etc/dovecot/conf.d/10-mail.conf但不起作用。我是否還必須取消註釋其他內容才能使其正常工作(或評論其他內容)?

這對我很重要,因為只有當我使用郵件客戶端檢查新電子郵件時,dovecot-uidlist 才會更新為下一個 UID。我有一些 procmail 管道腳本,我需要下一個 uid(我通過解析 dovecot-uidlist 得到)。

也許我可以doveadm與我的管道腳本一起使用,以便從 new/ 移動到 cur/,然後更新 dovecot-uidlist。

這是我的dovecot -n

# 2.2.13: /etc/dovecot/dovecot.conf
# OS: Linux 3.16.5-gentoo x86_64 Gentoo Base System release 2.2
auth_mechanisms = plain login digest-md5
first_valid_gid = 500
last_valid_gid = 2000
last_valid_uid = 2000
login_greeting = Santa server is ready.
mail_gid = vmail
mail_location = /var/vmail/%d/%n/:INDEX=/var/vmail/%d/%n/indexes
mail_uid = vmail
maildir_empty_new = yes
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave duplicate
namespace inbox {
 inbox = yes
 location =
 mailbox Drafts {
   special_use = \Drafts
 }
 mailbox Junk {
   special_use = \Junk
 }
 mailbox Sent {
   special_use = \Sent
 }
 mailbox "Sent Messages" {
   special_use = \Sent
 }
 mailbox Trash {
   special_use = \Trash
 }
 prefix =
}
passdb {
 args = /etc/dovecot/dovecot-sql.conf.ext
 driver = sql
}
plugin {
 sieve = ~/.dovecot.sieve
 sieve_dir = ~/sieve
}
service auth-worker {
 user = vmail
}
service auth {
 unix_listener /var/spool/postfix/private/auth {
   group = postfix
   mode = 0666
   user = postfix
 }
 unix_listener auth-userdb {
   group = vmail
   mode = 0666
   user = vmail
 }
}
service lmtp {
 unix_listener /var/spool/postfix/private/dovecot-lmtp {
   group = postfix
   mode = 0666
   user = postfix
 }
}
ssl_ca = </etc/ssl/dovecot/server.in.crt
ssl_cert = </etc/ssl/dovecot/server.csr.rapid
ssl_key = </etc/ssl/dovecot/server.key.rapid
ssl_key_password = pass
userdb {
 args = /etc/dovecot/dovecot-sql.conf.ext
 driver = sql
}

更新

我在 dovecot 網站上找到了這個:

~/Maildir/new、~/Maildir/cur 和 ~/Maildir/tmp 目錄包含收件箱的消息。tmp 目錄在投遞過程中使用,新消息以 new 到達,讀取的消息將由客戶端移動到 cur。

因此,將新消息移動到 cur 似乎不是預設的鴿舍行為。

如果我能以某種方式手動執行此操作,但會更新 dovecot-uidlist,那就太好了。

如果要使用 maildir 格式,則需要在配置中指定。嘗試改變:

mail_location = /var/vmail/%d/%n/:INDEX=/var/vmail/%d/%n/indexes

到:

mail_location = maildir:/var/vmail/%d/%n/:INDEX=/var/vmail/%d/%n/indexes

我使用 procmail 並將 MAILDIR 指定為$HOME/Maildir/. 郵件$HOME/Maildir/new1417748317.25141_1.myhost. 當我拿起 dovecot 的郵件時,將它們移動到文件名$HOME/Maildir/new並附:2,加到文件名中。當文件被讀取時,附加標誌。我不需要知道 dovecot 的 uid 來處理消息。我有 procmail 將郵件過濾到其他郵箱中,並且在不知道該文件夾的 dovecot 的 UID 的情況下處理得很好。

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