Chinaunix首页 | 论坛 | 博客
  • 博客访问: 311345
  • 博文数量: 32
  • 博客积分: 215
  • 博客等级: 入伍新兵
  • 技术积分: 936
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-25 11:21
个人简介

一个靠社会发展推动我不懈努力的人!

文章分类

全部博文(32)

文章存档

2017年(3)

2016年(4)

2015年(8)

2013年(10)

2012年(7)

分类: LINUX

2013-04-22 12:00:47

由于公司的审计邮箱在windows下运行一直不太稳定,为此我将邮箱移植到linux Iredmail下(具体的Iredmail安装方法我就不过多介绍文档很多),我们的用户名和密码都是如下形式
test1:123456
test2:234566
但是我们有将近2万的用户需要导入,于是问了一下Iredmail的管理员批量导入用户的问题,得知只可以批量创建用户但是没有批量导入用户名和密码这个功能。于是就找到了批量创建用户的脚本,做了修改,可以成功实现想要的功能,具体脚本如下:
这里说明一下这个脚本的原作者是Zhang Huangbin,我是做了二次功能修改实现的。(这脚本执行过后就生成了一个output.sql文件里面是所有用户的标准SQL语句,你只需执行导入到相应的库里就可以了)

  1. #!/usr/bin/env bash
  2. #Auther:YooMa
  3. STORAGE_BASE_DIRECTORY="/var/vmail/vmail1"

  4. # Password setting.
  5. # Note: password will be crypted in MD5.
  6. DEFAULT_PASSWD='88888888'
  7. USE_DEFAULT_PASSWD='NO' # If set to 'NO', password is the same as username.

  8. # Default mail quota.
  9. DEFAULT_QUOTA='100' # 100 -> 100M

  10. # -------------- You may not need to change variables below -------------------
  11. # Mailbox format: mbox, Maildir.
  12. MAILBOX_FORMAT='Maildir'

  13. MAILDIR_STYLE='hashed' # hashed, normal.

  14. # Time stamp, will be appended in maildir.
  15. DATE="$(date +%Y.%m.%d.%H.%M.%S)"

  16. STORAGE_BASE="$(dirname ${STORAGE_BASE_DIRECTORY})"
  17. STORAGE_NODE="$(basename ${STORAGE_BASE_DIRECTORY})"

  18. # Path to SQL template file.
  19. SQL="output.sql"
  20. echo '' > ${SQL}

  21. # Cyrpt the password.
  22. generate_sql()
  23. {
  24.     # Get domain name.
  25.     DOMAIN="test.net.cn" #要进行哪个邮箱域的导入
  26.     UserList=/root/iRedMail-0.8.3/tools/user10.txt #这里是存放用户和密码的用户列表
  27.     cat $UserList | while read line
  28.     do
  29.         arr=($line)
  30.         username=${arr[0]}
  31.         pswd=${arr[1]}
  32.         mail="${username}@${DOMAIN}"

  33.         export CRYPT_PASSWD="$(openssl passwd -1 ${pswd})"

  34.         # Different maildir style: hashed, normal.
  35.         if [ X"${MAILDIR_STYLE}" == X"hashed" ]; then
  36.             length="$(echo ${username} | wc -L)"
  37.             str1="$(echo ${username} | cut -c1)"
  38.             str2="$(echo ${username} | cut -c2)"
  39.             str3="$(echo ${username} | cut -c3)"

  40.             if [ X"${length}" == X"1" ]; then
  41.                 str2="${str1}"
  42.                 str3="${str1}"
  43.             elif [ X"${length}" == X"2" ]; then
  44.                 str3="${str2}"
  45.             else
  46.                 :
  47.             fi

  48.             # Use mbox, will be changed later.
  49.             maildir="${DOMAIN}/${str1}/${str2}/${str3}/${username}-${DATE}"
  50.         else
  51.             # Use mbox, will be changed later.
  52.             maildir="${DOMAIN}/${username}-${DATE}"
  53.         fi

  54.         # Different maildir format: maildir, mbox.
  55.         if [ X"${MAILBOX_FORMAT}" == X"Maildir" ]; then
  56.             # Append slash to make it 'maildir' format.
  57.             maildir="${maildir}/"
  58.         else
  59.             # It's already mbox format.
  60.             :
  61.         fi

  62.         cat >> ${SQL} <
  63. INSERT INTO mailbox (username, password, name, storagebasedirectory,storagenode, maildir, quota, domain, active, local_part, created)
  64.     VALUES ('${mail}', '${CRYPT_PASSWD}', '${username}', '${STORAGE_BASE}','${STORAGE_NODE}', '${maildir}', '${DEFAULT_QUOTA}', '${DOMAIN}', '1','${username}', NOW());
  65. INSERT INTO alias (address, goto, domain, created, active) VALUES ('${mail}', '${mail}','${DOMAIN}
  66. generate_sql


阅读(4405) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~