procmail - 如何设置procmail的日志记录方式

标签 procmail

现在在非详细日志中 procmail 没有记录收件人是谁。
它只是记录发件人是谁,主题,日期和交付。

From info@essegisistemi.it  Tue Apr 15 20:33:19 2014
 Subject: ***** SPAM 7.3 ***** Foto
  Folder: /usr/lib/dovecot/deliver -d christian -m Junk                  132417

我在哪里可以配置将 To 和 CC 包含到日志文件中?

最佳答案

您只需将要记录的字符串分配给 LOG伪变量。

通常你想显式地添加一个换行符。像这样的东西:

NL="
"
TO=`formail -zxTo:`
Cc=`formail -zxCc:`
LOG=" To: $TO$NL Cc: $CC$NL"

这些通常会在“日志摘要”(您的问题中有什么)之前结束。如果您需要完全控制记录的内容,可以设置 LOGABSTRACT=no并改为实现您自己的日志摘要。 (不过,这相当棘手。)

另请注意,日志记录可能是异步的。日志摘要被一次性写入,但是如果您有许多消息大致同时到达,您可能希望向日志条目添加消除歧义的信息,或者(在绝望中)在日志记录期间强制锁定,以便没有两条消息可以执行同时记录。
LOCKFILE=procmail.lock
# Critical section -- only one Procmail instance at a time can execute these recipes
LOG="fnord$NL"
:0w
| /usr/lib/dovecot/deliver -d "$USER" -m "$FOLDER"
# delivery succeeded, lockfile will be released

消除歧义的信息可能只是进程 ID。为了将它也包含在日志摘要中,您需要以某种方式走私它。不知道如何用 Dovecot 做到这一点,是否有一个选项可以传入,该选项将被简单地忽略但由 Procmail 记录?
TO=`formail -zxTo:`
LOG="[$$] To: $TO$NL"
CC=`formail -zxCc:`
LOG="[$$] Cc: $CC$NL"
:
:
# deliver
:0w
| deliver -d "$USER" -m "$FOLDER" -o ignore=$$

...最终应该记录类似 Folder: deliver -d you -m INBOX -o ignore=1742 的内容其中 1742 将是进程 ID,以便您可以在之前的日志条目中找到相同的 PID。

关于procmail - 如何设置procmail的日志记录方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23094119/

相关文章:

email - procmail 不将电子邮件内容传送到文件

linux - 使用 procmail 触发应用程序在我的计算机上运行...但我遇到了障碍

python - procmail处理后的邮件正文编码

email - Procmail vs. Maildrop-使用哪个?

mysql - Procmail 配方返回列名和结果

email - 如何使用 procmail 和命令行工具对非英语电子邮件进行分类?

linux - 除了 procmail 之外,还有哪些 Unix 工具可以通过管道发送 "read"电子邮件?

linux - 基于 if 条件的 Procmail 变量

linux - bash 中存在哪些注入(inject)漏洞(如果有的话),我该如何防范它们?

java - Procmail 配方,管道到 Java 标准输入