![在 Exim4 中有条件地将字符串添加到邮件主题中](https://linux22.com/image/628326/%E5%9C%A8%20Exim4%20%E4%B8%AD%E6%9C%89%E6%9D%A1%E4%BB%B6%E5%9C%B0%E5%B0%86%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%B7%BB%E5%8A%A0%E5%88%B0%E9%82%AE%E4%BB%B6%E4%B8%BB%E9%A2%98%E4%B8%AD.png)
我有一个自定义解决方案,仅使用 Exim4 和 SQL 数据库来实现邮件列表。基本上,大部分艰苦的工作都是在一个路由器中完成的,该路由器检查各种条件、查找列表成员、添加新标题字段、修改主题等。它也很好地满足了我们的需求,只有一个问题。
我将邮件列表的友好名称添加到主题行的前面。目前,每次邮件通过时都会添加列表名称,因此经过长时间的讨论后,主题行看起来就像“[ListName] Re: [ListName] Re: [ListName] Re: ...”。显然,我只想将列表名称添加到前面一次,例如,仅当名称标签尚未在主题中时才应将其添加到前面。有什么想法可以最轻松地实现此目的吗?
没有必要将其作为仅针对路由器的解决方案,但我想避免将邮件传输到外部程序,然后将邮件返回到邮件系统。一定有更简单的方法可以做到这一点。
感谢您的帮助。
答案1
尝试在 ACL 变量中配置前缀或主题。这必须在数据 ACL 中完成。将此变量用作路由器中的新主题。类似这样的方法应该有效。
warn
acl_m5 = $h_subject:
!condition = ${if match{$h_subject:}{/N[ListName]/N}}
acl_m5 = [ListName]: $h_subject:
您还可以在 acl 中有条件地定义一个变量,并将主题行包装在条件包含中。