由于公司的审计邮箱在windows下运行一直不太稳定,为此我将邮箱移植到linux Iredmail下(具体的Iredmail安装方法我就不过多介绍文档很多),我们的用户名和密码都是如下形式
test1:123456
test2:234566
但是我们有将近2万的用户需要导入,于是问了一下Iredmail的管理员批量导入用户的问题,得知只可以批量创建用户但是没有批量导入用户名和密码这个功能。于是就找到了批量创建用户的脚本,做了修改,可以成功实现想要的功能,具体脚本如下:
这里说明一下这个脚本的原作者是Zhang Huangbin,我是做了二次功能修改实现的。(这脚本执行过后就生成了一个output.sql文件里面是所有用户的标准SQL语句,你只需执行导入到相应的库里就可以了)
-
#!/usr/bin/env bash
-
#Auther:YooMa
-
STORAGE_BASE_DIRECTORY="/var/vmail/vmail1"
-
-
# Password setting.
-
# Note: password will be crypted in MD5.
-
DEFAULT_PASSWD='88888888'
-
USE_DEFAULT_PASSWD='NO' # If set to 'NO', password is the same as username.
-
-
# Default mail quota.
-
DEFAULT_QUOTA='100' # 100 -> 100M
-
-
# -------------- You may not need to change variables below -------------------
-
# Mailbox format: mbox, Maildir.
-
MAILBOX_FORMAT='Maildir'
-
-
MAILDIR_STYLE='hashed' # hashed, normal.
-
-
# Time stamp, will be appended in maildir.
-
DATE="$(date +%Y.%m.%d.%H.%M.%S)"
-
-
STORAGE_BASE="$(dirname ${STORAGE_BASE_DIRECTORY})"
-
STORAGE_NODE="$(basename ${STORAGE_BASE_DIRECTORY})"
-
-
# Path to SQL template file.
-
SQL="output.sql"
-
echo '' > ${SQL}
-
-
# Cyrpt the password.
-
generate_sql()
-
{
-
# Get domain name.
-
DOMAIN="test.net.cn" #要进行哪个邮箱域的导入
-
UserList=/root/iRedMail-0.8.3/tools/user10.txt #这里是存放用户和密码的用户列表
-
cat $UserList | while read line
-
do
-
arr=($line)
-
username=${arr[0]}
-
pswd=${arr[1]}
-
mail="${username}@${DOMAIN}"
-
-
export CRYPT_PASSWD="$(openssl passwd -1 ${pswd})"
-
-
# Different maildir style: hashed, normal.
-
if [ X"${MAILDIR_STYLE}" == X"hashed" ]; then
-
length="$(echo ${username} | wc -L)"
-
str1="$(echo ${username} | cut -c1)"
-
str2="$(echo ${username} | cut -c2)"
-
str3="$(echo ${username} | cut -c3)"
-
-
if [ X"${length}" == X"1" ]; then
-
str2="${str1}"
-
str3="${str1}"
-
elif [ X"${length}" == X"2" ]; then
-
str3="${str2}"
-
else
-
:
-
fi
-
-
# Use mbox, will be changed later.
-
maildir="${DOMAIN}/${str1}/${str2}/${str3}/${username}-${DATE}"
-
else
-
# Use mbox, will be changed later.
-
maildir="${DOMAIN}/${username}-${DATE}"
-
fi
-
-
# Different maildir format: maildir, mbox.
-
if [ X"${MAILBOX_FORMAT}" == X"Maildir" ]; then
-
# Append slash to make it 'maildir' format.
-
maildir="${maildir}/"
-
else
-
# It's already mbox format.
-
:
-
fi
-
-
cat >> ${SQL} <
-
INSERT INTO mailbox (username, password, name, storagebasedirectory,storagenode, maildir, quota, domain, active, local_part, created)
-
VALUES ('${mail}', '${CRYPT_PASSWD}', '${username}', '${STORAGE_BASE}','${STORAGE_NODE}', '${maildir}', '${DEFAULT_QUOTA}', '${DOMAIN}', '1','${username}', NOW());
-
INSERT INTO alias (address, goto, domain, created, active) VALUES ('${mail}', '${mail}','${DOMAIN}
-
generate_sql
阅读(4572) | 评论(0) | 转发(0) |