Dovecot:将回复发送到与回复消息相同的文件夹中

Dovecot:将回复发送到与回复消息相同的文件夹中

更新(2014 年 9 月 2 日 13:01):澄清一下,我有兴趣处理传入来自其他人的回复,因此通过 SMTP 传入。如果它是对某个邮件文件夹中已有的电子邮件的回复,则它也应该存储在该文件夹中。

我有一个 Postfix (SMTP) + Dovecot (IMAP) 设置,其中 /home/sybren/Maildir 目录存储我的邮件。我有一个 Sieve 过滤器,以确保我的工作电子邮件最终位于“工作”IMAP 文件夹中。我的 IMAP 文件夹结构相当广泛,有几个子文件夹,例如,,,work/research/subject1等等。work/research/subject2work/education/subject3

举个例子,假设我向同事发送了一封主题为“AAAAAA”的电子邮件。发送后,我将其移至文件夹work/research/subject1。现在我希望他们的回复“回复:AAAAAA”也存储在work/research/subject1Dovecot 中。

电子邮件通过 main.cf 中的此设置从 Postfix 移交给 Dovecot(全部在一行上)

mailbox_command = /usr/lib/dovecot/deliver -c 
                        /etc/dovecot/dovecot.conf -m "${EXTENSION}"

我的 main.sieve 文件现在包含简单的规则,例如:

require ["fileinto"];

if header :contains ["To", "Cc", "Bcc", "From"] "@work.nl" {
    fileinto "work";
}

更新2(2014 年 9 月 2 日 15:16):这是我想要看到的收到的电子邮件的“流程”:

  1. Postfix 通过 SMTP 接收电子邮件。
  2. Postfix 执行垃圾邮件/病毒扫描。
  3. Postfix 将邮件交给 Dovecot 进行递送。
  4. Dovecot 检查一些消息 ID 到邮件文件夹映射的数据库。
  5. 如果找到回复消息 ID,则将其投递到相应的邮件文件夹。
  6. 如果没有,请使用 Sieve 脚本确定适当的位置。

当然,最后两个步骤理论上可以是同一个 Sieve 脚本的一部分。

我希望有人能帮助我!

干杯,

西布伦

答案1

有一个IMAP-threads专门用于此目的的特殊功能。https://www.rfc-editor.org/rfc/rfc5256现代 IMAP 服务器(包括 dovecot)已经具备此功能。当邮箱为maildir格式时,会建立一个基于消息 ID 的特殊索引。当您回复消息时,原始 ID 会存储在标题In-Reply-To:和中References:。因此,IMAP 服务器可以轻松检索线程中的所有消息并按顺序显示它们,而不管实际位置如何。

因此,您只需确保您的 MUA 配置为使用线程。

一些 MUA(例如 RoundCube)可以为每个 maildir 文件夹单独打开/关闭线程。其他一些 MUA 则只是全局打开/关闭线程。

答案2

我认为你不能在服务器端。

通常情况下,电子邮件客户端程序会存储已发送邮件的副本。有些客户端有选项“保存回复和原始消息”或类似方法,而不是将所有回复存储在单个“已发送邮件”文件夹中。

在大多数情况下,客户端的默认行为是使用 IMAP 连接将回复副本直接放在“已发送邮件”或为此目的选择的另一个 IMAP 文件夹中。这意味着这些回复不会通过 Dovecot 本地投递代理,也不会通过电子邮件通过 SMTP 到达时通常会经过的任何过滤规则。

有时你的电子邮件客户端会提供以下选项总是发送“密件抄送:”将邮件副本发送到您自己的邮箱,而不是通过 IMAP 存储该副本。在这种情况下,您的回复将通过 Dovecot LDA 和您设置的邮件过滤器发送,尽管这可能需要更改您的规则,因为例如,您需要过滤收件人,而不是匹配发件人。

大多数更高级的客户端根本不关心您发送的项目实际存储在哪个文件夹中,而只会尝试生成包含完整对话线程的视图。

答案3

您的 IMAP 服务器(即 Dovecot)不负责决定将电子邮件存储在何处。您的邮件客户端(可能是 Webmail,也可能是桌面/移动软件)会将电子邮件复制到其选择的文件夹中。Sieve 不太可能参与其中。

对于来自 MTA 的邮件,MTA 通常将邮件传递给 Sieve,然后 Sieve 将其放入适当的 imap 文件夹中(可能通过 postfix 的传递脚本,而不是通过 imap 接口)。当邮件通过 IMAP 进入时,它通常只是被存储,而不是传递给 Sieve。

Dovecot 插件可以拦截 IMAP 事件并对其作出反应。理论上,dovecot 插件可以跟踪您将邮件移动到其他文件夹的时间,并保存有关邮件的信息,以便在电子邮件传递过程中使用。我不知道有任何这样的项目。

我怀疑这种系统中应该发生的事情的语义可能会变得非常复杂和模糊,以至于它只会导致电子邮件丢失和用户困惑。如果有一个智能系统建议我可能想要将电子邮件归档到哪里,这样更容易操作,那就太好了,但我认为我不希望它自动发生。

我能想到的最接近实际实现的方法是,我听说过一个贝叶斯过滤器被训练成根据用户的训练示例选择一个邮箱来存放新邮件。听起来很酷,但同样,我认为即使是一小部分放错邮件造成的混乱也不值得。我忘了工具的名字。

MUA 软件更可能具有将回复归档到与回复邮件相同的文件夹中的功能。例如,这是 Thunderbird 中的一个选项。在这种情况下,语义更加清晰。

相关内容