0

我需要 DKIM 签署可能是巨大的电子邮件(最多 150MB)。我正在运行 Postfix,到目前为止希望保留该 MTA。

从概念上讲,DKIM 需要检查电子邮件两次:一次计算和签署校验和,一次将前一步的结果写在标题中。1

DKIM 签名者可以通过将消息保存在内存中(对我来说不行)或将其写入文件来做到这一点。

对于手头的任务,我想使用后缀(过滤器)机制,它允许我在不将消息保存在内存中并且不将其写入磁盘两次的情况下做到这一点

到目前为止,我看到队列后内容过滤机制迫使您再次将电子邮件写入磁盘,并且没有任何理由!相反,它应该将可搜索的文件描述符传递给过滤器的标准输入,但实现不这样做。

替代方案before-queue milter对我来说没有足够的文档来查看它是否避免将消息保留在内存中并避免将原始邮件写入文件两次。– 这就是我opendkim在标签中添加的原因:也许那些专家知道 milter API如何避免以及opendkim确实如何避免这些陷阱。


1 ...因为 Posix 文件系统没有前置操作

4

1 回答 1

1

Postfix 队列文件不是平面邮件。添加标题不需要重写。要利用这一点,请使用milter 接口后缀用户那里得到的答案让我相信邮件在 milter 处理过程中也没有保存在内存中。至少不是通过 Postfix。

使用带有队列后内容过滤器的管道机制不会像问题中提到的那样做到这一点。写出文件以避免邮件在内存中可能足够合理,并且比将其保存在内存中更好。

虽然 milter 界面对 DKIM 来说已经足够好,但我想列出它的缺点(所有这些都是可以避免的):

  • 在收到整个消息之前,您既不能修改标题也不能修改正文(-parts)
    • 没有适当的运输管道
  • 一旦您被允许替换/修改内容,您就不能反向引用没有标题和正文
    • 如果需要信息,milter 客户端需要在接收阶段保留一份副本
  • 身体只能整体更换
  • 标头替换/删除需要名称和索引,但 milter 服务器未传递索引号(或任何其他不透明的唯一引用)
    • milter 客户端需要计算它以后可能决定替换的任何标头的标头

Postfix也有一些缺点:

  • postfix在 2 个位置提供 3 个过滤器机制
    • 你不能混搭机制和位置
    • DKIM 最合适的机制是 milter
    • DKIM 签名最合适的地方是在队列之后
    • 队列过滤器不可用后
      • 在可能的范围内
      • postfix 实际上已经可以伪造 SMTP/milter 环境以使 milter 在新领域工作(“非 smtp-milter”)
  • 没有一种机制可以利用当前队列数据结构可能带来的所有好处
    • 但是,DKIM 不需要;只是说
于 2022-01-16T01:18:14.120 回答