postfix,dovecot,dovecot-sasl,ldap和用于NFS共享电子邮件存储的静态UID

我正在尝试构build一个Ubuntu 12.04邮件服务器。

必须:对现有的Open-LDAP服务器进行身份validation。 存储在现有NFS服务器上的Maildirs中,所有内容都是8:8(邮件:邮件)。 auth是smtp和imap所必需的。

应该(我认为):Postfix使用Dovecot SASL。

事情工作正常除了,当我使用ldap的userdb:

userdb { driver = ldap args = /etc/dovecot/ldap-userdb.conf.ext } 

…然后将maildir文件作为来自LDAP的UID:GID读取/写入。 但邮件必须由8:8拥有(因为其他邮件服务器)我得到的错误如:

 Error: open(/var/mail/...) ... failed: Permission denied (euid=1193(<...>) egid=555(<...>) missing +r perm .... dir owned by 8:8 ... 

但如果我使用静态userdb:

 userdb { driver = static args = uid=8 gid=8 home=/var/mail/%u } 

…然后当发送邮件从一个LDAP用户到新的邮件服务器上的另一个LDAP用户,然后我得到一个错误:(电子邮件到[email protected]

 postfix/local[32371]: C6F7561735: to=<[email protected]>, relay=local, delay=0.04, delays=0.02/0.01/0/0.01, dsn=5.1.1, status=bounced (unknown user: "timmytester") 

…但在本地域以外的电子邮件工作正常。

这对我来说,使用静态userdb会干扰提供SASL的Dovecot。 所以我试图只是在8:8滑入ldap userdbconfiguration:(我使用相同的configuration文件为passdb和userdb ldap,符号链接)

 uris = ldap://ldapserver.domain.com dn = cn=admin,dc=domain,dc=COM dnpass = secretPW auth_bind = no ldap_version = 3 base = ou=Users, dc=DOMAIN, dc=COM pass_attrs = uid=user,userPassword=password user_attrs = uid=8,gid=8 # <--- here i tried to cheat. pass_filter = (&(objectClass=mailUser)(|(mailDestination=%u)(uid=%n))) default_pass_scheme = SSHA 

…这复制静态userdb问题。 未知用户。 但至less我似乎可以在这里做静态的任务。

如果我的邮件可能属于真正的用户:gid,那么我会很好。 Postfix虚拟用户,虚拟域名,所有这些东西似乎都很好。 就在Dovecot 8:8的时候,postfix会得到不好的SASL答案? 要清楚,当我去静态uid:gid文件访问问题消失。 当我去正常的ldap userdb时,未知的用户问题就会消失。 我甚至可以chmod 777一个maildir,直到一个新的邮件被旧的邮件服务器处理并存储为600。

我需要使用不同的SASL包吗? 或者我可以让dovecot做文件访问8:8,同时还使postfix快乐?