AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 660159
Accepted
jsf80238
jsf80238
Asked: 2015-01-17 11:40:52 +0800 CST2015-01-17 11:40:52 +0800 CST 2015-01-17 11:40:52 +0800 CST

带有捕获组的 Procmail 配方

  • 772

尝试根据正则表达式匹配直接发送电子邮件。

我知道我可以这样做:

echo | mail -s test1 me-route2

用这个食谱:

* ^To:.*me-route2\@
:0:
/home/me/folder-route2/afile

我想做的是这样的:

* ^To:.*me-(route\d)\@
:0:
/home/me/folder-$MATCH/afile

但我得到:

procmail: Lock failure on "/home/me/folder-/afile.lock"
procmail
  • 2 2 个回答
  • 353 Views

2 个回答

  • Voted
  1. Best Answer
    tripleee
    2015-01-20T01:36:53+08:002015-01-20T01:36:53+08:00

    您的序言行和条件顺序错误。但此外,Procmail 不识别 Perlism \d。(参见例如这里的一些正则表达式历史和奥秘。)试试这个:

    :0:
    * ^To:.*me-\/route[0-9]
    /home/me/folder-$MATCH/afile
    

    或者,如果您真的想验证匹配的表达式是否紧跟 @ 符号,

    :0:
    * ^To:.*me-\/route[0-9]@
    * MATCH ?? ^\/route[0-9]
    /home/me/folder-$MATCH/afile
    

    从输入To: [email protected]中,第一个条件捕获route2@并且第二个条件匹配通过route2以删除尾随@from MATCH。

    我的怀疑是不需要锁定文件,因此应该删除第二个冒号,但这取决于是什么afile。如果它是常规的 Berkely mbox 文件,则绝对应该使用锁定。如果它是 Maildir 文件夹,则不应。

    您可能还想考虑替换^To:.*me为^TO_me-- 它将匹配 onCc:和其他相关标题以及文字To:标题,并避免匹配 on reallynotme。

    • 1
  2. Craig Miskell
    2015-01-17T11:53:41+08:002015-01-17T11:53:41+08:00

    Procmail 不使用像普通正则表达式那样的捕获组,至少对于 MATCH。从手册页:

    每当 procmail 被告知从匹配的正则表达式中提取文本时,此变量都会分配给该变量。它将包含与正则表达式匹配的所有文本,超过 `/' 标记。

    所以以下应该有效(未经测试):

    * ^To:.*me-\/route\d
    

    MATCH然后将包含在 之后与正则表达式匹配的任何内容\/,因此“route\d”。

    [email protected]可悲的是,这可能会在地址为MATCH“route2”的情况下做一些意想不到的事情。但这对你来说可能是可以接受的。

    • 0

相关问题

  • 使用 spamassassin 作为网络论坛的外部过滤器

  • 使用 sendmail 的服务器上的垃圾邮件每日报告

  • 请给我一个反垃圾邮件措施配方

  • 有没有办法过滤远程 IMAP 帐户中的邮件?

  • 什么是允许POP邮箱用户打开和关闭Vaction AutoReply的快速且易于理解的PROCMAIL方式

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve