You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Procmail按接收日期重命名保存附件并过滤邮件?

用Procmail实现附件日期命名与邮件过滤

我来帮你搞定Procmail的这两个需求——给附件按接收日期重命名保存,还有按发件人/主题过滤邮件。结合你现有的配置,咱们一步步调整:

一、先搞定邮件过滤:按发件人或主题筛选

Procmail的核心就是规则匹配,咱们可以给不同的过滤条件单独写规则:

1. 按发件人过滤(比如只处理foo@example.tld的邮件)

直接匹配邮件的From头,把符合条件的邮件单独处理:

:0
* ^From:.*foo@example\.tld
{
  # 这里放后续的附件提取操作
}
  • 解释::0是每条规则的起始标记;*开头的是条件行,用正则匹配From头里包含foo@example.tld的邮件;花括号里就是对这类邮件执行的操作。

2. 按主题过滤(比如只处理含"Daily Report"的邮件)

匹配Subject头就行,如果想忽略大小写(比如主题是daily report或Daily Report都能匹配),可以给规则加D标记:

:0 D
* ^Subject:.*Daily Report
{
  # 这里放后续的附件提取操作
}

二、给附件按接收日期重命名保存

你原来用ripmime提取附件的思路没问题,但默认会保留原文件名,咱们可以结合Procmail内置的$DATE变量(格式正好是YYYYMMDD,比如20180131),通过临时目录中转来重命名:

完整的附件重命名配置逻辑

先定义好目标目录和临时目录,然后提取附件到临时目录,再重命名移动到目标目录,最后清理临时文件:

# 先定义两个目录:最终保存附件的目录,和临时中转目录
ATTACH_DIR="/dir/to/save/attachment"
TEMP_DIR="/tmp/procmail_temp_attach"

:0 D
# 匹配带附件的邮件(D标记忽略大小写)
* ^Content-Type:.*attachment
{
  # 确保临时目录存在,不存在就创建
  :0 c
  | mkdir -p $TEMP_DIR

  # 用ripmime把附件提取到临时目录(保留你原来的参数)
  :0 fw
  | ripmime --overwrite --no-nameless -i - -d $TEMP_DIR

  # 遍历临时目录里的附件,重命名为「日期_原文件名」后移动到目标目录
  :0 c
  | for file in $TEMP_DIR/*; do
      if [ -f "$file" ]; then
        mv "$file" "$ATTACH_DIR/${DATE}_$(basename "$file")"
      fi
    done

  # 清理临时目录,避免占用空间
  :0 c
  | rm -rf $TEMP_DIR
}
  • 重点:$DATE是Procmail内置的变量,自动取邮件接收日期的YYYYMMDD格式,完美符合你要的命名规则。

三、把过滤和重命名结合起来

比如你只想处理来自foo@example.tld的带附件邮件,把过滤条件和附件处理逻辑合并就行:

ATTACH_DIR="/dir/to/save/attachment"
TEMP_DIR="/tmp/procmail_temp_attach"

# 只处理foo@example.tld发来的带附件邮件
:0 D
* ^From:.*foo@example\.tld
* ^Content-Type:.*attachment
{
  :0 c
  | mkdir -p $TEMP_DIR

  :0 fw
  | ripmime --overwrite --no-nameless -i - -d $TEMP_DIR

  :0 c
  | for file in $TEMP_DIR/*; do
      if [ -f "$file" ]; then
        mv "$file" "$ATTACH_DIR/${DATE}_$(basename "$file")"
      fi
    done

  :0 c
  | rm -rf $TEMP_DIR
}

一些小提醒

  • 注意正则里的转义:比如foo@example\.tld里的.要加反斜杠转义,不然会匹配任意字符;
  • 测试规则:可以用procmail -v命令测试你的配置,排查语法错误;
  • 权限问题:确保Procmail有目标目录和临时目录的读写权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:21:57