在通过1Panel部署Maddy Mail Server后如果想添加账户或者移除账户会比较麻烦,使用我写了一个适合Docker部署的Maddy的管理脚本。
脚本下载:maddy.sh
脚本内容:
#!/bin/bash
# 定义容器名称和邮件域名
CONTAINER_NAME="1Panel-maddy-mail-wMQC"
MAIL_DOMAIN="sfwww.cn" # 邮件的域名可以在这里修改
# 显示操作菜单
show_menu() {
echo "请选择操作:"
echo "1. 查看邮件列表"
echo "2. 添加邮件账户"
echo "3. 移除邮件账户"
echo "4. 更改密码"
echo "5. 退出"
}
# 查看邮件列表并合并输出
check_mail_list() {
# 获取并去重两个邮件列表
echo "执行命令: maddy creds list"
creds_list=$(docker exec -i $CONTAINER_NAME /bin/sh -c "maddy creds list" | sort | uniq)
echo "执行命令: maddy imap-acct list"
imap_list=$(docker exec -i $CONTAINER_NAME /bin/sh -c "maddy imap-acct list" | sort | uniq)
# 合并并去重两个列表
merged_list=$(echo -e "$creds_list\n$imap_list" | sort | uniq)
# 输出合并后的列表
echo "合并后的邮件账户列表:"
echo "$merged_list"
# 比较并找出缺失的账户
missing_in_creds=$(comm -23 <(echo "$imap_list" | sort) <(echo "$creds_list" | sort))
missing_in_imap=$(comm -13 <(echo "$imap_list" | sort) <(echo "$creds_list" | sort))
# 输出缺失的账户
if [ -n "$missing_in_creds" ]; then
echo "以下账户在 creds list 中缺失:"
echo "$missing_in_creds"
fi
if [ -n "$missing_in_imap" ]; then
echo "以下账户在 imap-acct list 中缺失:"
echo "$missing_in_imap"
fi
}
# 添加邮件账户
add_mail_account() {
# 提示并输入账户名
read -p "请输入邮件账户(例如 test): " email
echo "正在添加邮件账户..."
# 进入容器并手动输入密码
docker exec -it $CONTAINER_NAME /bin/sh -c "maddy creds create $email@$MAIL_DOMAIN"
docker exec -it $CONTAINER_NAME /bin/sh -c "maddy imap-acct create $email@$MAIL_DOMAIN"
# 完成账户添加后查看邮件列表
echo "账户添加完成,查看邮件列表..."
check_mail_list
}
# 移除邮件账户
remove_mail_account() {
# 提示并输入账户名
read -p "请输入要移除的邮件账户(例如 test): " email
# 提示确认移除
read -p "你确定要移除账户 $email@$MAIL_DOMAIN 吗?(y/n): " confirm
if [[ "$confirm" == "y" || "$confirm" == "Y" ]]; then
echo "正在移除邮件账户..."
# 执行移除操作
docker exec -it $CONTAINER_NAME /bin/sh -c "echo y | maddy creds remove $email@$MAIL_DOMAIN"
docker exec -it $CONTAINER_NAME /bin/sh -c "echo y | maddy imap-acct remove $email@$MAIL_DOMAIN"
# 完成账户移除后查看邮件列表
echo "账户移除完成,查看邮件列表..."
check_mail_list
else
echo "账户移除操作已取消。"
fi
}
# 更改邮件账户密码
change_password() {
# 提示并输入账户名
read -p "请输入要更改密码的邮件账户(例如 test): " email
echo "正在更改密码..."
# 执行更改密码命令,不再提示输入密码
docker exec -it $CONTAINER_NAME /bin/sh -c "maddy creds password $email@$MAIL_DOMAIN"
# 完成密码更改后查看邮件列表
echo "密码更改完成!"
echo "查看邮件列表..."
check_mail_list
}
# 主程序:展示菜单并执行选定操作
while true; do
show_menu
# 输入选项并处理
read -p "请输入选项: " option
case $option in
1) check_mail_list ;; # 查看合并后的邮件列表
2) add_mail_account ;; # 添加邮件账户
3) remove_mail_account ;; # 移除邮件账户
4) change_password ;; # 更改密码
5) echo "退出程序."; break ;; # 退出脚本
*) echo "无效的选项,请重新选择。" ;; # 无效输入
esac
done
注意事项
使用脚本前需将这两个变量更改一下,CONTAINER_NAME="1Panel-maddy-mail-wMQC"
MAIL_DOMAIN="sfwww.cn"
将1Panel-maddy-mail-wMQC
改为自己的Docker名或者地址。 将sfwww.cn
改为自己的Mail域名