1 最后由 dannil (2011-04-30 19:59:43) 编辑

主题: 使用phpLDAPadmin配置Mail List后,用户无法发送邮件到给邮件列表。

我是按照http://www.iredmail.org/wiki/index.php?title=IRedMail/FAQ/LDAP/Add.Maillist.with.phpLDAPadmin
配置的邮件列表,内容如下。

dn: mail=demolist@example.com,ou=Groups,domainName=example.com,o=domains,dc=exapmle,dc=com
accessPolicy: domain
accountStatus: active
cn: demolist
enabledService: mail
enabledService: deliver
enabledService: displayedInGlobalAddressBook
mail: demolist@example.com
objectClass: mailList

但是配置完成无法发送邮件到邮件列表的用户。提示如下的错误信息,是不是accessPolicy=domain填错了。

SMTP错误(554):添加收件人失败“demolist@exapmle.com”(Recipient addresss rejected:Not Authorized) 

这是为什么?

回复: 使用phpLDAPadmin配置Mail List后,用户无法发送邮件到给邮件列表。

你为这个列表添加了成员么?

3 最后由 dannil (2011-04-30 20:31:37) 编辑

回复: 使用phpLDAPadmin配置Mail List后,用户无法发送邮件到给邮件列表。

在ou=users中的用户添加了memberOfGroup=demolist@example.com

2011-04-30 18:54:34 INFO webmaster@example.com -> demolist@example.com, REJECT Not Authorized.
2011-04-30 19:34:13 INFO Response from plugin (ldap_maillist_access_policy): REJECT Not Authorized. Access policy: domain.

回复: 使用phpLDAPadmin配置Mail List后,用户无法发送邮件到给邮件列表。

dannil 写道:

在ou=users中的用户添加了memberOfGroup=demolist@example.com

2011-04-30 18:54:34 INFO webmaster@example.com -> demolist@example.com, REJECT Not Authorized.
2011-04-30 19:34:13 INFO Response from plugin (ldap_maillist_access_policy): REJECT Not Authorized. Access policy: domain.

这里显示你定义的访问权限是 accessPolicy=domain,只有同一个域内的用户才能发送邮件到这个列表。你给出的日志里的两个邮件地址是同一个域内的,是不是贴上来之前处理过了?

回复: 使用phpLDAPadmin配置Mail List后,用户无法发送邮件到给邮件列表。

只替换了公司的域名为example.com其他的都没有变。创建邮件列表的域是虚拟域。

回复: 使用phpLDAPadmin配置Mail List后,用户无法发送邮件到给邮件列表。

将 iRedAPD 的 log_level 参数设置为 debug 并重启 iredapd 服务,再观察 /var/log/iredapd.log 里的日志。应该会有详细的记录。

回复: 使用phpLDAPadmin配置Mail List后,用户无法发送邮件到给邮件列表。

我试试。:)

回复: 使用phpLDAPadmin配置Mail List后,用户无法发送邮件到给邮件列表。

2011-05-02 20:03:08 DEBUG Apply plugin (ldap_maillist_access_policy).
2011-05-02 20:03:08 DEBUG (ldap_maillist_access_policy.pyc) Error while fetch domainAliasName: global name 'ldap' is not defined
2011-05-02 20:03:08 DEBUG (ldap_maillist_access_policy.pyc) Recipient domain and alias domainss:
2011-05-02 20:03:08 DEBUG (ldap_maillist_access_policy.pyc) Sender: webmaster@example.com
2011-05-02 20:03:08 DEBUG (ldap_maillist_access_policy.pyc) Recipient: ad@example.com
2011-05-02 20:03:08 DEBUG (ldap_maillist_access_policy.pyc) Policy: domain
2011-05-02 20:03:08 DEBUG Response from plugin (ldap_maillist_access_policy): REJECT Not Authorized. Access policy: domain.
2011-05-02 20:03:08 INFO Response from plugin (ldap_maillist_access_policy): REJECT Not Authorized. Access policy: domain.
2011-05-02 20:03:08 DEBUG Final action: REJECT Not Authorized. Access policy: domain..
2011-05-02 20:03:08 INFO webmaster@example.com -> ad@example.com, REJECT Not Authorized. Access policy: domain.
2011-05-02 20:03:08 DEBUG Connection closed

回复: 使用phpLDAPadmin配置Mail List后,用户无法发送邮件到给邮件列表。

dannil 写道:

2011-05-02 20:03:08 DEBUG (ldap_maillist_access_policy.pyc) Error while fetch domainAliasName: global name 'ldap' is not defined

1:将 /opt/iredapd/src/plugins/ldap_maillist_access_policy.pyc 文件删除。
2:打开 /opt/iredapd/src/plugins/ldap_maillist_access_policy.py,找到字符串 ldap.SCOPE_ONELEVEL,将它替换为数字1。保存后重启 iredapd 即可。

回复: 使用phpLDAPadmin配置Mail List后,用户无法发送邮件到给邮件列表。

我的做法应该没有错吧。
ldap_maillist_access_policy.py

qr = ldapConn.search_s(
                ldapBaseDn,
                1,
                "(&(objectClass=mailDomain)(|(domainName=%s)(domainAliasName=%s)))" % (recipient_domain, recipient_domain),
                ['domainName', 'domainAliasName',]
            )

问题依旧呀。log如下:

2011-05-02 20:23:07 DEBUG Apply plugin (ldap_maillist_access_policy).
2011-05-02 20:23:07 DEBUG (ldap_maillist_access_policy.py) Recipient domain and alias domainss:
2011-05-02 20:23:07 DEBUG (ldap_maillist_access_policy.py) Sender: webmaster@example.com
2011-05-02 20:23:07 DEBUG (ldap_maillist_access_policy.py) Recipient: ad@example.com
2011-05-02 20:23:07 DEBUG (ldap_maillist_access_policy.py) Policy: domain
2011-05-02 20:23:07 DEBUG Response from plugin (ldap_maillist_access_policy): REJECT Not Authorized. Access policy: domain.
2011-05-02 20:23:07 INFO Response from plugin (ldap_maillist_access_policy): REJECT Not Authorized. Access policy: domain.
2011-05-02 20:23:07 DEBUG Final action: REJECT Not Authorized. Access policy: domain..
2011-05-02 20:23:07 INFO webmaster@example.com -> ad@example.com, REJECT Not Authorized. Access policy: domain.
2011-05-02 20:23:07 DEBUG Connection closed

回复: 使用phpLDAPadmin配置Mail List后,用户无法发送邮件到给邮件列表。

汗,发现另外一个bug。

你在刚才修改 ldap.SCOPE_ONELEVEL 这一行的下面第4行,可以找到这行:

if len(qr) == 0:

将这里的 == 改为 >

重启 iredapd 应该就ok了。

12 最后由 dannil (2011-05-02 20:42:43) 编辑

回复: 使用phpLDAPadmin配置Mail List后,用户无法发送邮件到给邮件列表。

exapmle.com这个域的用户是可以正常发送和接收邮件的。好像论坛不能贴图。可不可以将LDAP的截图发送到你的邮箱?

回复: 使用phpLDAPadmin配置Mail List后,用户无法发送邮件到给邮件列表。

OK,问题解决。谢谢啊。

回复: 使用phpLDAPadmin配置Mail List后,用户无法发送邮件到给邮件列表。

我得多谢你帮忙反馈和测试才是。 big_smile

回复: 使用phpLDAPadmin配置Mail List后,用户无法发送邮件到给邮件列表。

呵呵。