Dovecot IMAP虚拟用户自定义文件夹存储位置咨询
解答:Postfix+Dovecot虚拟用户Maildir文件夹的存储位置
这是个很常见的疑惑——Dovecot对Maildir格式的IMAP文件夹(非INBOX)的存储方式和直观的文件系统结构不太一样,具体原因和解决方法如下:
1. 默认存储路径:隐藏的子目录
Dovecot默认会把你在IMAP客户端创建的非INBOX文件夹,以隐藏目录的形式存储在用户的Maildir根目录下(也就是/var/vmail/DOMAIN/USER/),命名规则是:
- 单个文件夹:
.文件夹名(比如你创建了Archive,对应的目录就是.Archive/) - 嵌套文件夹:
.父文件夹.子文件夹(比如Archive/Work会变成.Archive.Work/)
每个隐藏文件夹内部和INBOX一样,包含cur/、new/、tmp/三个标准Maildir子目录,你移动的那封邮件就应该在.你的文件夹名/cur/里面。
2. 如何查看这些隐藏目录
因为Linux下以.开头的目录默认是隐藏的,普通的ls命令看不到,你需要用带-a参数的命令:
ls -la /var/vmail/DOMAIN/USER/
执行后就能看到所有隐藏目录,找到你创建的那个文件夹对应的.XXX目录进去,就能找到移动的邮件了。
3. 自定义配置的情况(如果默认路径不对)
如果你修改过Dovecot的命名空间配置,文件夹的存储路径可能会变化。可以检查/etc/dovecot/conf.d/10-mail.conf里的相关设置:
- 查看
mail_location参数,确认Maildir的根路径是否正确 - 查看
namespace inbox段的配置,比如separator(文件夹分隔符)和prefix(前缀),这些会影响文件夹的命名和存储位置。比如如果separator = /,嵌套文件夹可能会以.Folder/Subfolder的形式存在(但这种情况较少,默认是.作为分隔符)。
4. 用Dovecot工具确认邮件位置
如果还是找不到,可以用doveadm命令直接查询邮件的存储位置,比如:
# 替换成你的虚拟用户邮箱地址和文件夹名 doveadm search -u user@domain mailbox "你的文件夹名" doveadm fetch -u user@domain mailbox "你的文件夹名" path
第二条命令会直接返回邮件的具体文件路径,帮你快速定位。
内容的提问来源于stack exchange,提问作者Martin B.




