您现在的位置是:首页 > 折腾心得折腾心得

批量添加用户-iRedmail邮件服务器迁移

高晓波2023-02-14【折腾心得】人已围观

简介前面我们搭建了iredmail邮件服务器,现在开始将阿里邮箱迁移至自建的iRedMail邮件服务器中,本篇我们先对账户进行导入。

将阿里企业邮箱迁移至自建的iRedMail邮件服务器相对比较麻烦,因为牵扯到很多的邮箱账户和邮件,本篇我们先从账户的迁移开始。
 

1、将阿里邮箱用户导出

登录阿里邮箱管理账号后,打开用户管理,https://qiye.aliyun.com/admin/#/account-email/account-manage,将原有账户信息全部导出。

2、iRedMail批量创建用户

iRedMail批量创建用户官方有相关文档,因为我们邮件服务器使用的MariaDb,参考此篇文档:https://docs.iredmail.org/sql.create.mail.user.html


首先,修改/usr/local/src/iRedMail-1.6.2/tools目录下create_mail_user_SQL.sh相关参数,具体如下:
# 修改邮件保存路径
STORAGE_BASE_DIRECTORY="/data/vmail/vmail1"

# 修改默认邮箱大小,这里我改为10G
DEFAULT_QUOTA='10240'


考虑到密码安全问题,我们批量生产随机密码,用Excel简单的组织一下批量创建脚本,如下所示:
iredmail批量创建用户

在/usr/local/src/iRedMail-1.6.2/tools目录下创建batch_create_user.sh脚本,将上面的内容粘贴进去,添加执行权限后运行。执行完毕后会生成批量创建用户的sql脚本,再进入MariaDB执行users.sql脚本即可批量创建用户,操作步骤如下:
# root密码为安装iredmail时设置的密码
mysql -uroot -p

# 切换vmail数据库
user vmail

# 执行批量创建用户脚本
source /tmp/users.sql;

成功批量创建用户后,后台已经可以看到用户信息了,如下图所示:

iredmail用户创建成功

然鹅,display name是取的@前面的前缀,这样对用户管理非常不方便,于是批量将这些用户删掉,优化脚本重来。

3、批量创建用户脚本优化

查看生成的users.sql脚本,显示的用户姓名应该是mailbox表的name字段,如下所示:

INSERT INTO mailbox (username, password, name,
                     storagebasedirectory,storagenode, maildir,
                     quota, domain, active, passwordlastchange, created)
             VALUES ('tangx@xxxx.cn', '{SSHA512}uY2k+oiflLbW+r2HaL8Km8jFXPpQqKRCm2BijFjFpaLK0c2DnWW1ZYt17zo2AkM80win+HsDcZjdJCVa8fQbcAdEmAs=', 'tangx',
                     '/data/vmail','vmail1', 'xxxx.cn/t/a/n/tangx-2023.02.14.15.07.18/',
                     '10240', 'xxxx.cn', '1', NOW(), NOW());

修改create_mail_user_SQL.sh,添加姓名参数并添加至生成sql对应的地方,具体如下:
#参数校验修改
if [ X"$#" != X'3' ]; then
    echo "Invalid command arguments. Usage:"
    echo "bash create_mail_user_SQL.sh user@domain.ltd plain_password"
    exit 255
fi

# Read input
mail="$1"
plain_password="$2"
#添加姓名参数
full_name="$3"

#修改生成的sql语句
cat <<EOF
INSERT INTO mailbox (username, password, name,
                     storagebasedirectory,storagenode, maildir,
                     quota, domain, active, passwordlastchange, created)
             VALUES ('${mail}', '${CRYPT_PASSWD}', '${full_name}',
                     '${STORAGE_BASE}','${STORAGE_NODE}', '${maildir}',
                     '${DEFAULT_QUOTA}', '${domain}', '1', NOW(), NOW());
INSERT INTO forwardings (address, forwarding, domain, dest_domain, is_forwarding)
                 VALUES ('${mail}', '${mail}','${domain}', '${domain}', 1);
EOF
脚本优化完成后,再利用Excel重新组织一下批量生成用户语句,如下所示:



重复上面的操作,成功后如下所示:


舒服了。

 

Tags:iredmail

很赞哦! ()

文章评论