标签 iredmail 下的文章

使用 curl 批量向 iredmail 提交新邮箱用户和密码

需求:iredmail 免费版没有 api,除了官方带的工具外,有没其它方法可以批量创建账号呢?

尝试:可以使用 curl 来提交表单,用脚本循环提交。

##
# Configurations.
##

read -p "请输入iredmain管理台的登录网址URL,如 https://mail.anqun.org/iredadmin/login: " login_url
read -p "请输入iredmail的创建用户网址URL,如 https://mail.anqun.org/iredadmin/create/user: " create_url
read -p "请输入邮局的管理员用户名,如 postmaster@lan.anqun.org: " username
read -p "请输入邮局的管理员用密码: " password

read -p "请输入要添加用户的域名,如 lan.anqun.org: " domainname
read -p "请输入要添加用户的个数,如 100: " number

rm iredmail-users.txt
rm tmpcs.txt
rm cookie

# Path to temporary file which will store your cookie data.
cookie_path=cookie

action_url="$create_url/$domainname"

##
# Logic. Most likely you shouldn't change here anything.
##

curl -i -b $cookie_path -c $cookie_path -d "username=$username&password=$password" "$login_url"

curl -i -b $cookie_path -c $cookie_path -o tmpcs.txt --request GET "$action_url"

csrf_token=$(grep -oP '(?<=<input type="hidden" name="csrf_token" value=")[^"]*' tmpcs.txt)


for ((i=1; i<=$number; i++))
    do
        mailuser=$(strings /dev/urandom |tr -dc a-z0-9 | head -c8)
        mailpasswd=$(strings /dev/urandom |tr -dc a-z0-9 | head -c8)
        echo $mailuser@$domainname  $mailpasswd >> iredmail-users.txt

        data="csrf_token=$csrf_token&domainName=$domainname&username=$mailuser&newpw=$mailpasswd&confirmpw=$mailpasswd&cn=&preferredLanguage=en_US&mailQuota=1024&submit_add_user=Add"
        curl -i --cookie cookie --data "${data}" "$action_url"
done

参考:https://www.drupal.org/node/2045751

IRedMail - 批量创建用户 - urandom

需求:随机创建100个邮箱用户和密码。

尝试:可使用 /dev/urandom 生成随机字符的用户名和密码(八位),然后通过 create_mail_user_SQL.sh 生成SQL语句,最后导入到数据库。

#!/bin/bash
#For Loop to Read Three-expression

rm -rf /tmp/iredmail-users.txt
rm -rf /tmp/iredmail-users.sql

for ((i=1; i<=100; i++))
do
USER=$(strings /dev/urandom |tr -dc a-z0-9 | head -c8)
PWD=$(strings /dev/urandom |tr -dc a-z0-9 | head -c8)
DOMAIN="lan.anqun.org"

echo $USER@$DOMAIN $PWD >> /tmp/iredmail-users.txt
bash create_mail_user_SQL.sh $USER@$DOMAIN $PWD >> /tmp/iredmail-users.sql
done

参考:
https://docs.iredmail.org/sql.create.mail.user.html
https://www.runoob.com/linux/linux-shell-process-control.html

接收到的邮件 - Received Mails - 为空 - No incoming mails - content_filter - postfix - iRedMail

现象:用户将iRedMail升级到Pro版本后,在邮局管理后台面板里,“活动” --> “接收到的邮件”页面中,列表是空的。但“发送的邮件”页面却有。

尝试:检查postfix的配置文件main.cf,是否注释了 content_filter = smtp-amavis:[127.0.0.1]:10024 这一行。

“接收到的邮件”页面为空
“接收到的邮件”页面有内容了

感谢张老板指导。

iRedMail - 对指定用户设置限制 - 仅允许收信 不能发信 - iredapd

需求:因为主机商对滥发邮件管得严格,所以想对指定用户设置限制,设置为可以收到邮件,但不能发出邮件。

环境:iRedMail 1.6.2,ubuntu 20.02

尝试:

作用:将 liujia@example.com 用户加到不允许发信但可收信的列表
python3 /opt/iredapd/tools/wblist_admin.py --outbound --account liujia@example.com --add --blacklist @.

作用:列出当前的黑名单
python3 /opt/iredapd/tools/wblist_admin.py --outbound --account liujia@example.com --list --blacklist

作用:将 liujia@example.com 用户从不允许发信但可收信的列表移除
python3 /opt/iredapd/tools/wblist_admin.py --outbound --account liujia@example.com --delete --blacklist @.

参考:

iredmail - 手动删除用户的默认目录 - 批量删除邮件

需求:邮件塞满了磁盘的inodes。无需备份,直接强制删除所有用户的邮件。

尝试:

#!/bin/bash

# 先停止postfix
/usr/bin/systemctl stop postfix

# 导出用户名单到文件
doveadm user *@* > /run/mailtmp.txt
# 从文件每行读取用户名,再根据用户名得到用户默认存储目录,如 /var/vmail/vmail1/example.com/z/z/9/zz9976-2023.04.19.20.47.38/ ,最后删除相应的目录
cat /run/mailtmp.txt | while read LINE; do
    su -s /bin/bash vmail -c "rm -rf `doveadm user -f home $LINE`"
done

/usr/bin/systemctl start postfix

参考: