如何配置Maldetect在暂停cPanel账户时发送通知邮件?
实现Maldetect暂停cPanel账户时自动发送通知邮件
嘿,这个需求完全可以搞定!Maldetect本身没有直接内置向被暂停用户发通知的功能,但我们可以通过配置钩子脚本的方式来实现,步骤很清晰:
1. 确认Maldetect的自动暂停功能已开启
首先检查Maldetect的配置文件,确保它会在检测到恶意文件时自动暂停对应cPanel账户:
编辑/usr/local/maldetect/conf.maldet,找到以下配置项并设置为1:
quarantine_suspend_user="1"
2. 创建自定义通知脚本
我们需要写一个bash脚本,让Maldetect在暂停用户时触发它,发送通知邮件。
创建脚本文件/usr/local/maldetect/suspend_notify.sh,内容如下:
#!/bin/bash # 接收Maldetect传递的参数:$1是用户名,$2是动作(如suspend) USER="$1" ACTION="$2" # 仅处理账户暂停的动作 if [ "$ACTION" != "suspend" ]; then exit 0 fi # 获取用户的cPanel联系邮箱(通过uapi命令) USER_EMAIL=$(uapi --user="$USER" ContactInformation get_contact_info | grep -E 'email: ' | awk '{print $2}') # 如果没获取到用户邮箱, fallback到管理员邮箱 if [ -z "$USER_EMAIL" ]; then USER_EMAIL="admin@yourdomain.com" fi # 构建邮件内容 SUBJECT="您的cPanel账户已被暂时暂停 - 安全预警" BODY="您好, 我们的服务器安全系统(Maldetect)在您的账户目录中检测到恶意文件,为了防止恶意程序扩散、保护服务器及其他用户的安全,您的账户已被暂时暂停。 请您尽快联系服务器管理员,提供您的账户信息以核实情况,我们会协助您清理恶意文件并恢复账户访问。 感谢您的理解与配合! 服务器管理团队" # 发送邮件(使用sendmail,也可以根据服务器环境调整为postfix或其他邮件工具) echo -e "$BODY" | sendmail -f "admin@yourdomain.com" -t "$USER_EMAIL" -s "$SUBJECT"
3. 配置脚本权限与Maldetect钩子
给脚本设置合适的权限,确保Maldetect能执行它:
chown root:root /usr/local/maldetect/suspend_notify.sh chmod 700 /usr/local/maldetect/suspend_notify.sh
然后回到Maldetect的配置文件/usr/local/maldetect/conf.maldet,找到quarantine_hook项,设置为我们刚创建的脚本路径:
quarantine_hook="/usr/local/maldetect/suspend_notify.sh"
4. 测试验证
可以手动触发脚本测试邮件发送是否正常:
/usr/local/maldetect/suspend_notify.sh 你的测试用户名 suspend
检查对应邮箱是否收到通知邮件,确认没问题后,Maldetect下次自动暂停账户时就会自动触发这个脚本发送通知了。
注意:如果服务器邮件发送有问题,可能需要先配置好sendmail/postfix服务,或者改用cPanel自带的邮件发送接口来确保通知能正常送达。
内容的提问来源于stack exchange,提问作者Amruta Gaikwad
相关产品推荐
相关产品推荐

