我们为会员提供 zimbra 邮件服务器,所有会员都有电子邮件地址,我们会将电子邮件地址提供给他们,以便他们使用我们的服务,例如登录无线网络等。会员资格是临时的。每六个月我们都会迎来新会员和离职会员。目前,我们已经创建了当前会员,并从 .csv 文件上传了他们的信息。六个月后,我们将不得不禁用当前邮件帐户并添加新帐户。
我想做的是使用 PHP 完成这些任务。我找到了一些示例Zimbra 的维基页面。他们展示了如何使用 Perl 创建从 .csv 文件读取的帐户。
#!/usr/bin/perl
# Lookup the valid COS (Class of Service) ID in the interface or like this
my $cosid = `su - zimbra -c 'zmprov gc Default |grep zimbraId:'`;
$cosid =~ s/zimbraId:\s*|\s*$//g;
while (<>) {
chomp;
# CHANGE ME: To the actual fields you use in your CSV file
my ($email, $password, $first, $last) = split(/\,/, $_, 4);
my ($uid, $domain) = split(/@/, $email, 2);
print qq{ca $uid\@$domain $password\n};
print qq{ma $uid\@$domain zimbraCOSid "$cosid"\n};
print qq{ma $uid\@$domain givenName "$first"\n};
print qq{ma $uid\@$domain sn "$last"\n};
print qq{ma $uid\@$domain cn "$uid"\n};
print qq{ma $uid\@$domain displayName "$first $last"\n};
print qq{ma $uid\@$domain zimbraPasswordMustChange TRUE\n};
print qq{\n};
}
如何使用 PHP 文件运行这些 zimbra 命令?我想从 .csv 文件中读取列表并在服务器上创建和/或禁用帐户。
答案1
几年前,我们为 6.0.8 版 Zimbra 帐户管理开发了自己的界面。当时,soap 支持文档并不完善,需要反复试验。
Google code 和 GIThub 上有一些可用的 PHP 类。
看http://www.plymouth.edu/webapp/code/zimbra.class.phps或者https://github.com/libersoft/zcs-php
答案2
Zimbra:创建 1000 个用户并以批处理模式自动将其添加到 Zimbra
您好,在我使用 Zimbra 的实验室中,我多次需要创建随机用户,并且他们有一个清晰的帐户,以执行迁移或执行备份等。显然,手动创建 10、50 或 1000 个用户可能会花费我们很长时间,而且不会带来利润或效率,所以今天我在这里给您留下这个建议,希望对您有所帮助:
我们要做的第一件事是使用用户 zimbra 进入 /var/tmp
su - zimbra
cd /var/tmp
然后我们将创建一个名为 usercreation.sh 的文件
touch usercreation.sh
在这个脚本中我们将介绍以下内容,请根据您的域进行调整,并根据需要进行一些自定义:
vi usercreation.sh
#!/bin/bash
# Zimbra Collaboration user creation
cd /var/tmp
x=0
while [ $x -lt 1000 ]
do
echo "ca [email protected] 'Password$' sn 'Demo User${x}' givenName 'Demo' zimbraPrefFromDisplay 'Demo User${x}'" >> userlist.zmp
x=`expr $x + 1`
done
我们将添加权限以便能够执行它
chown zimbra:zimbra /var/tmp/user*
chmod 777 /var/tmp/user*
最后我们启动它,它需要几秒钟才能完全运行
./usercreation.sh
现在我们可以查看 userlist.zmp 文件的内容,例如最后几行:
ca [email protected] 'Password$' sn 'Demo User995' givenName 'Demo' zimbraPrefFromDisplay 'Demo User995'
ca [email protected] 'Password$' sn 'Demo User996' givenName 'Demo' zimbraPrefFromDisplay 'Demo User996'
ca [email protected] 'Password$' sn 'Demo User997' givenName 'Demo' zimbraPrefFromDisplay 'Demo User997'
ca [email protected] 'Password$' sn 'Demo User998' givenName 'Demo' zimbraPrefFromDisplay 'Demo User998'
ca [email protected] 'Password$' sn 'Demo User999' givenName 'Demo' zimbraPrefFromDisplay 'Demo User999'
最后,我们将以 zimbra 用户身份启动命令,将包含所有账户的文件导入 Zimbra
zmprov -f userlist.zmp
此过程将需要几秒钟到几分钟,具体取决于要导入的账户数量:
prov> b99e183e-02e1-455b-9140-75957382a720
prov> c25f464d-7a5d-4316-ab7d-123b1949ebff