使用phpLDAPadmin添加邮件列表

使用系统包管理安装phpldapadmin软件包,然后使用个nginx加载该功能。

设置完成nginx对phpldapadmin的访问在新版本的iredmail系统中会出现如下错误:

Notice: Undefined variable: _SESSION in /usr/share/phpldapadmin/lib/page.php on line 379

Fatal error: Call to a member function getValue() on a non-object in /usr/share/phpldapadmin/lib/page.php on line 379

使用该链接增加该内容到htdocs/index.php文件的59行下面:https://github.com/leenooks/phpLDAPadmin/commit/73b7795bc0b232491de35dd91ad9ea86ad34eae8

if (! is_readable($app['config_file'])) {    
	if (ob_get_level()) ob_end_clean();    
	die(sprintf("Missing configuration file %s - have you created it?",$app['config_file']));    
}

更改/etc/phpldapadmin/config.php的内容如下, 并更改该文件权限为nginx可读:

397  $servers->setValue('login','attr','dn');

398  // $servers->setValue('login','attr','uid');


  • 登录phpLDAPadmin(httpS:// [your_server] / phpldapadmin /)

  • 在左侧面板中展开LDAP树,ou=Groups在您的域dn下找到。

  • 单击ou=Groups左侧面板,然后单击Create a child entry右侧面板。

  • mailListObjectClasses列表中选择,然后单击Proceed

  • 选择mail为RDN,填写必要的属性值:

dn: [email protected],ou=Groups,domainName=mydomain.com,o=domains,dc=iredmail,dc=org
accountStatus: active
cn: demolist
enabledService: mail
enabledService: deliver
enabledService: displayedInGlobalAddressBook
mail: [email protected]
objectClass: mailList

现在切换到ou=Users左侧面板中的域LDAP dn下。

  • ou=Users在左侧面板中展开。

  • 查找要分配给我们上面创建的新邮件列表的用户帐户。

  • 单击左侧面板中的用户帐户。

  • 如果memberOfGroup右侧面板中存在属性:

    • 点击Add value它下面并填写我们新邮件列表的邮件地址。例如:[email protected]

    • 单击Update Object以保存设置。

  • 如果memberOfGroup右侧面板中不存在属性:

    • 单击Add new attribute右侧面板

    • memberOfGroup在下拉列表中选择。

    • 填写我们新邮件列表的邮件地址。

    • 单击Update Object以保存设置。

您可以根据memberOfGroup=xxx需要添加任意数量,这意味着该用户被分配到许多邮件列表。

以下是将外部用户添加为邮件列表成员的示例:

dn: [email protected],ou=Externals,domainName=mydomain.com,o=domains,dc=iredmail,dc=org
accountstatus: active
enabledservice: mail
enabledservice: deliver
mail: [email protected]
mail: [email protected]
memberofgroup: [email protected]
objectclass: mailExternalUser

重要说明:如果您没有任何邮件列表成员,Postfix将报告如下错误:

Aug  1 15:45:42 mail postfix/smtpd[6024]: NOQUEUE: reject: RCPT from unknown[1.1.1.1]: 550 5.1.1
: Recipient address rejected: User unknown in virtual mailbox table; from=
 to= proto=ESMTP helo=<[2.2.2.2]>

邮件列表访问策略

您可以通过添加LDAP属性来限制谁可以向此邮件列表发送电子邮件accessPolicy。例如:

dn: [email protected],ou=Groups,domainName=mydomain.com,o=domains,dc=iredmail,dc=org
accesspolicy: domain
...

可用的访问策略包括:

  • public: 无限制。

  • domain:允许同一域下的所有用户向此邮件列表发送电子邮件。

  • subdomain:允许相同域和子域下的所有用户向此邮件列表发送电子邮件。

  • membersonly:只允许此邮件列表的成员。

  • moderatorsonly:只允许此邮件列表的版主。版主是存储在SQL列中的电子邮件地址alias.moderators。使用iRedAPD-1.4.5,可以*@domain.com在邮件域“domain.com”下为所有用户使用(一个)主持人。

  • membersandmoderatorsonly:只允许此邮件列表的成员和版主。

访问限制在iRedAPD(一个简单的Postfix策略服务器)中实现,iRedMail默认启用它。你最好检查一下它的配置文件 /opt/iredapd/settings.py,以确保ldap_maillist_access_policy参数中启用了插件plugins = []