在我们有一个带有 Outlook/Thunderbird 客户端和 Linux 服务器的本地网络的情况下sendmail
:是否可以使用一些sendmail's
milter
修改传入邮件以将发件人的签名添加到他/她发送的邮件中?将签名集中在服务器中可能会很有用。
步骤如下:
1) 用户撰写邮件并发送。 MUA 设置了一些稍后要替换的“签名”魔术文本,即:“ x-replace-signature-x
”,因此必须将 MUA 配置为在用户想要的位置添加该签名(在引用文本下方或在回复下方)
2) 邮件到达sendmail's
MSP
队列
3)Sendmail
从“”头中取出用户名From
,即[email protected]
4)Sendmail
在文件系统中查找该用户的签名html
(可能包含嵌入的图像),即/var/lib/sendmail/signatures/user1.html
5) 米尔特查找“ x-replace-signature-x
”并用以下内容替换该行/var/lib/sendmail/signatures/user.html
6)sendmail's
MTA
发送邮件(在我的例子中发送到智能主机)。
我不知道这样的功能,所以这就是为什么我正在考虑使用正则表达式匹配的 milter。
答案1
正如 @thrig 所建议的,MIMEDefang 是可行的方法,虽然任务繁重,但恕我直言,非常值得付出努力。
大多数filter_end()
人都会使用以下功能之一:
append_text_boilerplate($entity, $boilerplate, $all)
append_html_boilerplate($entity, $boilerplate, $all)
虽然这些附加文本而不是替换它。要准确执行您指定的操作,您可以使用filter_part()
处理程序。一种方法是调用action_external_filter()
您想要修改的部分(没有 MIME 配置的第一个 text/plain 和 text/html 部分通常是一个不错的选择)。这通过外部命令过滤该部分。要将图像添加到 HTML,您需要将它们添加为新部分,然后引用它们(通过 CID)。
修改消息的正常方法是调用 。这并不replace_entire_message()
像filter_end()
听起来那么简单,您需要将当前消息复制为 MIME::Entity,修改部分正文,并将整个消息正文替换为新的 MIME::实体。
这应该可以帮助您开始: https://stuff.mit.edu/~jik/software/mailman_mimedefang/
或者,一个低技术解决方案是使用 sendmail spool(-odd
延迟传递)而不是立即传递,修改排队的 df 文件(将其视为纯文本有时可能有效,但为了彻底,您需要将其视为 MIME),移动qf/df 对连接到一个新的正常运行的线轴(re-mqueue.pl
也许有)。