如何使用 Dovecot 为每个虚拟用户创建单独的邮箱配置?

如何使用 Dovecot 为每个虚拟用户创建单独的邮箱配置?

假设我有两个虚拟用户:[email protected][email protected]

我希望邮箱bugs配置如下……:

mailbox Sent {
  special_use = \Sent
}
mailbox Drafts {
  special_use = \Drafts
}
mailbox "Priority 1" {
  auto = subscribe
}
mailbox "Priority 2" {
  auto = subscribe
}
mailbox "Priority 3" {
  auto = subscribe
}
mailbox Unreplied {
  auto = subscribe
}
mailbox Resolved {
  auto = subscribe
}

...但邮箱admin配置了一些不同的文件夹:

mailbox Sent {
  special_use = \Sent
}
mailbox Drafts {
  special_use = \Drafts
}
mailbox System {
  auto = subscribe
}
mailbox DMARC {
  auto = subscribe
}
mailbox Archives {
  auto = create
  special_use = \Archive
}
mailbox Trash {
  special_use = \Trash
}
mailbox Spam {
  auto = create
  special_use = \Junk
}

希望将电子邮件的文件夹bugs复制到admin电子邮件中,反之亦然。

我尝试过使用命名空间,然后通过我的密码文件设置每个虚拟用户的收件箱命名空间名称,如下所示:

admin:<password>::::::userdb_mail=maildir:/home/mail/admin NAMESPACE=primary userdb_namespace/primary/inbox=yes userdb_namespace/primary/list=yes userdb_namespace/primary/prefix=primary/

bugs:<password>::::::userdb_mail=maildir:/home/mail/bugs NAMESPACE=bugs userdb_namespace/bugs/inbox=yes userdb_namespace/bugs/list=yes userdb_namespace/bugs/prefix=bugs/

但 Dovecot 的日志说:

namespace configuration error: Duplicate namespace prefix: "" in=0 out=408 deleted=0 expunged=0 trashed=0 hdr_count=0 hdr_bytes=0 body_count=0 body_bytes=0

我的完整15-mailboxes.conf

namespace bugs {
  list = no
  type = private
  mailbox Sent {
    special_use = \Sent
  }
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox "Priority 1" {
    auto = subscribe
  }
  mailbox "Priority 2" {
    auto = subscribe
  }
  mailbox "Priority 3" {
    auto = subscribe
  }
  mailbox Unreplied {
    auto = subscribe
  }
  mailbox Resolved {
    auto = subscribe
  }
}
namespace primary {
  list = no
  type = private
  mailbox Sent {
    special_use = \Sent
  }
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox System {
    auto = subscribe
  }
  mailbox DMARC {
    auto = subscribe
  }
  mailbox Archives {
    auto = create
    special_use = \Archive
  }
  mailbox Trash {
    special_use = \Trash
  }
  mailbox Spam {
    auto = create
    special_use = \Junk
  }
}

答案1

禁用并移开重复的前缀,然后从 还原这些更改userdb

虽然不能使用相同的前缀定义两个命名空间 - 但你不必定义如果你覆盖userdb无论如何,通过。

# in global configuration
namespace primary {
  disabled = yes
  prefix = /disable-namespace
  ...
}

# in userdb: newlines for readability
userdb_mail=maildir:/home/mail/admin
userdb_namespace=primary
userdb_namespace/primary/disabled=no
userdb_namespace/primary/prefix=
userdb_namespace/primary/inbox=yes

小心使用list=no,它不会阻止访问。它只是从LIST输出中删除文件夹,文件夹仍然存在(因此排除了具有匹配前缀的第二个文件夹!)

仍然可以通过明确请求来列出命名空间的文件夹。

注意:NAMESPACE=primary您的问题中这看起来不合适,为什么它在 userdb 中(但没有前缀 userdb_)?

相关内容