当前设置

当前设置

slapd 2.4.31-1我在 Ubuntu 14.04 ( )下安装了 openLDAP v3 phpldapadminsudo-ldap并安装了 和其他软件包。我正在尝试postfix与 LDAP 集成,以便可以发送电子邮件到[电子邮件保护]或者[电子邮件保护]例如。

当前设置

作为此设置的一部分,我host为允许用户访问的每个主机设置了属性(或者只是允许*访问所有主机)。我在 ldap 客户端上使用它来授予或拒绝对特定主机的访问。每个用户还与属性中的公司电子邮件地址相关联mail。下面给出了用户的示例 LDIF:

dn: uid=auser,ou=People,dc=example,dc=com
cn: A User
displayname: A User
gecos: A User
gidnumber: 1011
givenname: A
homedirectory: /home/auser
host: host1
host: host2
host: host3
host: host4
mailacceptinggeneralid: root
loginshell: /bin/bash
mail: [email protected]
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: shadowAccount
objectclass: hostObject
objectclass: postfixUser
objectclass: top
sn: User
uid: auser
uidnumber: 1001

LDAP 中用户电子邮件地址的 Postfix 查找

为了实现此目的,我有一个/etc/postfix/ldap-aliases.cf包含以下内容的文件:

server_host = ldap.example.com
search_base = dc=example, dc=com

# look for entries with this
query_filter = (|(uid=%s)(mailacceptinggeneralid=%s)(mail=%[email protected]))

# what attribute from the search result is returned
result_attribute = mail

# the format in which the result is returned
result_format = %s

此配置到目前为止有效,并通过以下postmap命令确认返回我期望的地址:

# A query using the uid of the user
postmap -q auser ldap:/etc/postfix/ldap-mail.cf
[email protected]

# A query using the corporate username
postmap -q a.user ldap:/etc/postfix/ldap-mail.cf
[email protected]

# A query for a user specified in mailacceptinggeneralid
postmap -q root ldap:/etc/postfix/ldap-mail.cf
[email protected]

Postfix 查找有权访问主机的用户

例如,我希望能够发送电子邮件到[email protected],并从 LDAP 中提取所有有权访问的用户的地址host2(即host属性设置为host2*。这是我需要一些帮助的地方。

到目前为止,我有一个/etc/postfix/ldap-host-users.cf包含以下内容的文件:

server_host = ldap.example.com
search_base = dc=example, dc=com
query_filter = (|(host=%3)(host=\*))
result_attribute = mail
result_format = %s

它假设查询包含 FQDN,但我认为postfix只使用username(可能是因为我使用alias_maps/etc/postfix/main.cf?)。无论如何,测试上述内容:

postmap -q [email protected] ldap:/etc/postfix/ldap-host-users.cf
[email protected]

# The following also returns a list of email addresses, but shouldn't:
postmap -q [email protected] ldap:/etc/postfix/ldap-host-users.cf
[email protected]

postconf -n 输出

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases, ldap:/etc/postfix/ldap-mail.cf, ldap:/etc/postfix/ldap-host-users.cf
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = all
inet_protocols = all
mailbox_size_limit = 0
mydestination = $myhostname, localhost.example.com, , localhost
myhostname = host2.example.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes

问题

  • 是否postfix仅使用本地查询username并且不包括查询中的 FQDN?
    • 这是因为我正在使用alias_maps/etc/postfix/main.cf
  • 我是否可以以某种方式检查username查询的部分是否为users其他部分,如果是其他部分则不返回任何内容?例如,query_filter我可以做类似的事情%u="users"吗?
  • 有没有更好/不同的方法来实现这一点?

答案1

一些部分答案:

1. postfix 是否仅使用本地用户名进行查询,而不在查询中包含 FQDN?这是因为我使用的是alias_mapsin/etc/postfix/main.cf吗?

是的, 根据alias_maps文档,我们需要参考man 5 别名了解语法细节。

该名称是本地地址(没有域部分)。当名称包含任何特殊字符(例如空格、#',:' 或 `@')时,请使用双引号。名称将转换为小写,以使数据库查找不区分大小写。

因此,这是 Postfix 的预期行为。


3. 有没有更好/不同的方法来实现这一点?

使用虚拟别名映射根据这个答案对 alias_maps 和 virtual_alias_maps 感到困惑virtual_alias_maps将“user@domain”作为输入。

相关内容