You need to enable JavaScript to run this app. WordPress站点垃圾邮件未触发wp_mail钩子 如何记录msmtp执行日志
优惠活动
大模型
产品
解决方案
定价
更多

WordPress站点垃圾邮件未触发wp_mail钩子 如何记录msmtp执行日志

问题根因

你碰到的钩子不触发的核心原因是:这些垃圾邮件根本没有走WordPress原生的邮件发送流程,你日志里高频请求的/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Google/Service/Pagespeedonline/Resource/table.php是攻击者上传的webshell,该脚本直接调用系统msmtp命令发送邮件,没有加载WordPress核心,自然无法触发phpmailer_init、wp_mail这类WP原生钩子。

msmtp执行情况记录方案

  • 方案1:修改msmtp原生配置输出日志

    编辑全局msmtp配置文件/etc/msmtprc,追加以下配置即可开启原生日志记录,日志会包含发件人、收件人、邮件发送结果、服务器返回信息等内容:
    # 日志存储路径,需提前创建目录并给www-data读写权限
    logfile /var/log/msmtp/msmtp.log
    # 同时输出到系统syslog
    syslog LOG_MAIL
    # 记录邮件头信息
    from_header on
    
    执行以下命令创建日志目录并配置权限:
    mkdir -p /var/log/msmtp
    chown www-data:www-data /var/log/msmtp
    chmod 750 /var/log/msmtp
    
  • 方案2:使用wrapper脚本记录全量调用信息

    要获取调用msmtp的进程、来源IP、请求路径等溯源信息,可以替换msmtp二进制为自定义包装脚本:
    1. 重命名原msmtp二进制文件:mv /usr/bin/msmtp /usr/bin/msmtp.orig
    2. 新建/usr/bin/msmtp脚本,内容如下:
      #!/bin/bash
      LOG_PATH="/var/log/msmtp/exec.log"
      MAIL_CONTENT_LOG="/var/log/msmtp/mail.log"
      # 记录基础调用信息
      echo "===== $(date '+%Y-%m-%d %H:%M:%S') =====" >> $LOG_PATH
      echo "调用UID: $UID" >> $LOG_PATH
      echo "父进程ID: $PPID" >> $LOG_PATH
      echo "当前工作目录: $(pwd)" >> $LOG_PATH
      echo "调用参数: $*" >> $LOG_PATH
      # 提取当前请求的IP、URI、UA等信息
      cat /proc/$PPID/environ | tr '\0' '\n' | grep -E "REMOTE_ADDR|REQUEST_URI|HTTP_USER_AGENT" >> $LOG_PATH
      echo -e "\n" >> $LOG_PATH
      # 可选:记录完整邮件内容
      cat - | tee -a $MAIL_CONTENT_LOG | /usr/bin/msmtp.orig "$@"
      
    3. 给脚本加执行权限:chmod +x /usr/bin/msmtp
  • 方案3:用auditd审计所有msmtp调用

    安装auditd后添加监控规则,可持久化记录所有msmtp的执行行为:
    apt install auditd
    auditctl -a exit,always -F path=/usr/bin/msmtp -F perm=x -k msmtp_exec
    
    后续需要查询时执行ausearch -k msmtp_exec即可调出所有调用记录。

紧急修复建议

你当前的入侵特征非常明确,先做以下操作止损:

  1. 直接删除/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Google/Service/Pagespeedonline/Resource/table.php这个恶意文件
  2. 下载对应版本的google-site-kit官方插件包,全量对比插件目录,清除所有篡改、新增的异常文件
  3. Nginx配置层禁止插件目录下PHP文件执行,添加规则:
    location ~* ^/wp-content/plugins/.*\.php$ {
        deny all;
    }
    
    若有插件确实需要执行PHP,单独给对应路径加白名单即可
  4. 全站点扫描webshell,升级所有插件、主题、WordPress核心到最新版本

内容的提问来源于stack exchange,提问作者controlol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 08:45:06