我正在尝试为我的 Postfix 设置构建一个 ldap 过滤器,它充当下面的示例伪代码:
return uidNumber OF objectClass=posixAccount IF they have a ou=mail AND the mailAddress in this ou=mail IS EQUAL to test@Mydomain.TLD
更具体的是,当 %s 持有时,例如:test@Mydomain.TLD:
search_base = ou=people,dc=Mydomain,dc=TLD
query_filter = ( &(objectClass=posixAccount)(ou=mail)(mailAddress=%s) )
result_attribute = uidNumber
但是规则 (ou=mail) 不起作用,我不知道如何让它过滤这个 ou=mail。我的 LDAP 结构如下所示:
=> dc=MyDomain,dc=TLD
==> ou=People
===> uid=User-1
====> uidNumber=4035
====> ou=mail
=====> mailAddress=test@ Mydomain.TLD
===> uid=User-2
添加 posix 用户帐户
这就是我将常规用户添加到 LDAP 数据库的方式:
cat << EOF > ./add_user.ldif
dn: uid=User-1,ou=people,dc=MyDomain,dc=TLD
objectClass: top
objectClass: person
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uidNumber: 2001
gidNumber: 2001
homeDirectory: /home/User-1
loginShell: /usr/local/bin/bash
uid: User-1
userPassword: TopSecretPassword
displayName: User-1
givenName: User-1
mail: SomeMail@SomeDomain.TLD
telephoneNumber: 0123456
cn: User-1
sn: Surname
o: Some Corporation
jpegPhoto:< file://Picture.jpg
EOF
添加 ou=mail
然后我将添加 User-1 的邮件容器,其中包含所有邮件托管相关信息。
cat << EOF > ./add_users_mail_container.ldif
dn: ou=mail,uid=User-1,ou=people,dc=MyDomain,dc=TLD
objectclass: top
objectclass: organizationalUnit
ou: mail
EOF
添加邮件帐户
现在我将邮件帐户添加到 ou=mail 容器中。这个想法是,这可以用不同的邮件地址重复几次:
cat << EOF > /add_users_mail_account.ldif
dn: mailAddress=test@Mydomain.TLD,ou=mail,uid=User-1,ou=people,dc=MyDomain,dc=TLD
objectclass: mailAccount
mailAddress: test@Mydomain.TLD
MailPassword: {SSHA}TopSecretPasswordHash
MailAccountStatus: active
mailStorageDirectory: /home/User-1/mail
#mailAlias: NONE
mailDelivery: dovecot
mailSizeMax: 10240
mailReplyText: Nothing to reply here
mailQuotaSize: 10240
mailQuotaCount: 0
mailservice: smtp
mailservice: pop3
mailservice: imap
mailservice: managesieve
EOF