首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dovecot虚拟用户和用户域映射

Dovecot虚拟用户和用户域映射
EN

Server Fault用户
提问于 2012-04-24 00:19:38
回答 2查看 3.5K关注 0票数 2

我已经成功地编译、配置和运行了带有虚拟用户功能的Dovecot。

下面是我的/etc/dovecot.conf配置文件的一部分:

代码语言:javascript
复制
mail_location = maildir:/home/%d/%n/Maildir

auth default {
    mechanisms = plain login

    userdb passwd-file {
        args = /home/%d/etc/passwd
    }
    passdb passwd-file {
        args = /home/%d/etc/shadow
    }

    socket listen {
        master {
            path = /var/run/dovecot/auth-worker
            mode = 0600
        }
    }
}

我面临一个我自己无法解决的问题。在mail_location中是否存在创建用户域映射和提供用户名的功能?

示例: 1.目前我有/home/domain.com/user/Maildir 2,我希望有/home/USER/domain.com/user/Maildir

我能做到这一点吗?

你好,斯托伊科

EN

回答 2

Server Fault用户

发布于 2012-04-24 12:09:51

想一想你想要什么。您希望在mail_location中包括用户的主目录。表面上看,这似乎是一个合理的请求--但您必须问-- Dovecot如何知道用户的主目录?

系统用户存储在/etc/passwd -该文件包含

代码语言:javascript
复制
username:password:uid:gid:comment:home:shell

(注意:您可以将密码存储在/etc/ x中,而不是密码;或者使用*关闭帐户;注释实际上是“gecos场”)

如果Dovecot读取这个文件--它提供了用户的主目录--一旦它获得了该信息,它就可以在其他地方使用它(也就是说,它将能够使用‘~/to signify the home directory, and will set%h’)。

但是,如果您使用的是虚拟用户--而不是系统用户--基本思想之一是,并不是每个虚拟用户都必须是系统用户。在这种情况下,Dovecot无法知道与系统用户同名的虚拟用户是否真的是同一个用户(它也不能使用UID,因为可以让多个虚拟用户映射到同一个UID)。它不会假设用户数据库中提供的内容之外的任何内容。

用户数据库可以向Dovecot提供以下信息:

  • uid:用户的UID ( user ),覆盖全局mail_uid设置。
  • gid:用户的GID (UNIX )重写全局mail_gid设置。
  • home:用户的主目录,覆盖全局mail_home设置。尽管不是必需的,但它是强烈推荐的,即使是对虚拟用户。
  • 邮件:邮件位置,覆盖全局mail_location设置。
  • 在环境变量中传递给IMAP/POP3 3进程的可选额外字段。

在您的配置中,您使用的是passwd文件--即与系统passwd文件格式相同的文件,但您已经为此目的设置了该文件(即它不是系统passwd文件)。Dovecot接受以下passwd文件格式 (并忽略gecos和shell字段):

代码语言:javascript
复制
user:password:uid:gid:(gecos):home:(shell):extra_fields

您可以在每个用户的基础上覆盖某些默认值,方法是指定(空格分隔的) key=value额外字段(在大多数情况下以userdb_为前缀的键)。例如,userdb_mail=Maildir:~/mail将覆盖mail_location

重申一下,通过使用虚拟用户(而不是使用系统passwd文件),您已经告诉Dovecot,这些用户可能与系统用户没有任何关系,所以它只会使用您提供的信息,而不考虑任何其他情况。

最后,试着回答你的问题:

  • 您可以在mail_location中使用多个变量--这些变量是在Dovecot变量页上定义的。
  • 变量%h或(最好是~/ )可用于返回Dovecot从其UserDB查询中检索的主目录(并设置mail_home)。
  • 您应该为UserDB中的所有用户指定一个主目录。
  • 您可以通过从userdb查询返回mail_location来覆盖userdb_mail。

因此,基本上,如果您想使用Dovecot中的home目录,可以在userdb中设置主目录,因为它不知道您没有告诉它什么。

票数 1
EN

Server Fault用户

发布于 2012-04-24 06:06:29

根据此链接,您可以使用“mail_location设置中的多个变量”

代码语言:javascript
复制
%u: Full username.
%n: User part in user@domain, same as %u if there's no domain.
%d: Domain part in user@domain, empty if there's no domain.

例如:

代码语言:javascript
复制
mail_location = maildir:/home/%n/%d/%n/Maildir

应该指向/home/user/domain/user/Maildir

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/382434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档