iRedMail批量创建邮箱

2024-02-18T03:57:47

需求

来活儿了!开通500个邮箱!约摸2年前自建的iRedMail邮箱服务器闪亮登场!

这要是从后台届面手动注册,没个一天估计点不完,需求方没有给出用户名列表,光想出500个用户名也是不小的工作量,经过沟通,简单提取了一下需求,邮箱主要用来注册某某平台帐号,收一下验证码或验证邮件,所以容量方便应该没有太多要求,为减少被平台风控,尽量不要用太有规律的用户名,比如user001-user500之类的,如果用随机字符串做用户名也感觉像机器人搞出来的,是不是也会增加被风控的风险呢,如果能随机一些单词做为用户名就再好不过了。

经过一番搜索发现Debian系统自带了一个字典/usr/share/dict/words,此字典内包含了一些法语字母,脚本中正则过滤掉法语。随机数可能出现重复的情况,利用循环处理一下得到500个邮箱地址。

脚本

#!/bin/bash

#iredmail脚本路径
#https://raw.yanyong.cc/sh/create_mail_user_SQL.sh
sh='/home/yan/iRedMail-1.3.2/tools/create_mail_user_SQL.sh'

#利用系统自带字典生成长度4-12的小写单词字典,-P 以perl-regexp模式很重要,不然会匹配到法语字母
grep -P '^[a-z]{4,12}$' /usr/share/dict/words > /tmp/words.txt
wordsPath='/tmp/words.txt'  #字典文件路径
wordsLines=$(wc -l $wordsPath | awk '{print $1}')  #字典单词总数,我这里是59386

#保存邮箱地址
mailList='mail.txt'
#保存邮箱密码,与用户名行数一一对应
passwordList='password.txt'
#要生成单词数量,也就是要创建邮箱的数量
count=500

#随机数$RANDOM范围0-32767,$prime最好是质数,尽可能让结果覆盖1-59386
prime=13
rand() { rand=$(($RANDOM * $prime % $wordsLines + 1)); }


domain=mydomain.com
username='显示名称'
language='zh_CN'
settings='timezone:Asia/Hong_Kong;'
quota='256'  #邮箱大小,单位MB

#随机数$rand可能出现相同的数字,利用while循环检测去重后的数量,生成$count个不重复的邮箱地址
touch /tmp/.temp.txt && > /tmp/.temp.txt
while [[ $(sort -u /tmp/.temp.txt | wc -l) -lt $count ]]; do
    rand  #调用rand()函数
    word=$(sed -n "$rand"p $wordsPath)
    echo "$word"@"$domain" >> /tmp/.temp.txt
done
sort -u /tmp/.temp.txt > $mailList
rm /tmp/.temp.txt

mail_array=(`cat $mailList`)  #存入数组mail_array
for ((i=0; i<$count; i++)); do
    mail=${mail_array[i]}
    password="$(tr -dc '[:digit:][:alpha:]' < /dev/urandom | head -c 10)"  #大小写母数字10位
    echo $password >> $passwordList
    sudo bash $sh $mail $password $username $language $settings $quota >> adduser.20220615.sql
done

执行脚本会在当前目录生成三个文件adduser.20220615.sql,mail.txt,password.txt。

三个文件输出部分示例如下:

$ tail adduser.20220615.sql 
INSERT INTO mailbox (username, password, name,
                     language, settings,
                     storagebasedirectory,storagenode, maildir,
                     quota, domain, active, passwordlastchange, created)
             VALUES ('[email protected]', '{SSHA512}+uaG/k7jRMxp9aB66PcO7n/lWLHUMtgOtBPcPUQ0mprIKZp7M3exKlMQ2ASGsXHqDFsIPcS/SIoo+YtcWQgYmdOWGF0=', '显示名称',
                     'zh_CN', 'timezone:Asia/Hong_Kong;',
                     '/var/vmail','vmail1', 'mydomain.com/zodiac-2022.06.15.14.48.03/',
                     '256', 'mydomain.com', '1', NOW(), NOW());
INSERT INTO forwardings (address, forwarding, domain, dest_domain, is_forwarding)
                 VALUES ('[email protected]', '[email protected]','mydomain.com', 'mydomain.com', 1);

$ nl password.txt | tail
   491  G8qjEsHjZU
   492  jLcP0zmBYE
   493  LCYZO8JuX7
   494  8GwTSdn1Mo
   495  4UXgp5fEZY
   496  DDYH962JF9
   497  3JP8JdDunV
   498  2XhVcDyxTS
   499  rwnxjDeDPI
   500  5Wg7jLpFs4

创建邮箱

准备工作已做好,开始创建500个邮箱!

passwd=123456
mysql -uroot -p$passwd vmail < adduser.20220615.sql

收集邮箱信息

mail.txt和password.txt直接复制文本,粘帖到excel表格即可,excel表格会自动分行!

via.https://yanyong.cc/post/iredmail-create-mail-user/ 

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »