Dovecot:将回复传递到回复消息所在的文件夹中

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

我有一个Postfix(SMTP)+ Dovecot(IMAP)设置,用我的/ home / sybren / Maildir目录存储我的邮件。 我有一个筛选筛选器,以确保我的工作电子邮件在“工作”IMAP文件夹中结束。 我的IMAP文件夹结构相当广泛,有几个子文件夹,比如work/research/subject1work/research/subject2work/education/subject3 work/research/subject2等。

举个例子,假设我给我的同事发了一封电子邮件,内容是“AAAAAA”。 发送后,我将它移动到文件夹work/research/subject1 。 现在,我希望他们的答复“Re:AAAAAA”也可以通过Dovecot存储在work/research/subject1

使用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):这是我希望看到的传入电子邮件的“stream量”:

  1. Postfix通过SMTP接收邮件。
  2. Postfix执行垃圾邮件/病毒扫描。
  3. Postfix把邮件交给Dovecot交付。
  4. Dovecot检查邮件ID的某些数据库邮件文件夹映射。
  5. 如果发现In-Reply-To消息ID,则传递到相应的邮件文件夹。
  6. 如果不是,请使用Sieve脚本确定适当的位置。

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

我希望有人能帮助我!

干杯,

Sybren

您的IMAP服务器(即Dovecot)不负责决定在哪里存储电子邮件。 您的邮件客户端(可能是networking邮件或桌面/移动软件)会将电子邮件复制到其所选的文件夹中。 筛不太可能涉及。

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

Dovecot插件可以拦截IMAP事件并对它们做出反应。 从理论上讲,dovecot插件可以跟踪将邮件移动到不同文件夹的时间,并保存邮件传递过程中可以使用的信息。 我不知道有这样的项目。

我怀疑在这样的系统中应该发生什么的语义可能会变得复杂和模糊不清,只会造成电子邮件和用户的混淆。 有一个聪明的系统build议我可能要提交一封电子邮件,这样做更容易,但我不认为我希望它只是自动发生。

我能想到的最接近实际的是,我听说过一个贝叶斯filter正在训练,根据用户的训练示例select一个邮箱来存档新邮件。 听起来很酷,但是我希望即使是一小部分错误的电子邮件也会让人感到困惑。 我忘了工具的名字。

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

有特殊function的IMAP-threads专门用于此目的。 http://tools.ietf.org/html/rfc5256现代的IMAP服务器,包括dovecot已经拥有它。 当邮箱使用maildir格式时,会build立一个依赖于message-id的特殊索引。 当您回复消息时,原始ID将存储在标题In-Reply-To:References: 。 因此,IMAP服务器可以轻松地检索线程中的所有消息,并依次显示它们,而不pipe实际位置如何。

因此,你只需要确保你的MUA被configuration为使用线程。

像RoundCube这样的一些MU可以分别为每个maildir文件夹打开/closures线程。 其他一些只是简单地打开/closures全球。

我不认为你可以在服务器端。

通常存储发送邮件的副本是由您的电子邮件客户端程序完成的。 某些客户端可以select“保存原始邮件回复”或类似的选项而不是将所有回复存储在单个“已发送邮件”文件夹中。

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

有时,您的电子邮件客户端可以select始终发送“密件抄送:”将邮件副本发送到您自己的邮箱,而不是通过IMAP存储该副本。 在这种情况下,您的回应将通过Dovecot LDA和您设置的邮件filter来实现,但这可能需要更改您的规则,因为例如,不匹配发件人,您需要过滤收件人。

大多数高级客户端根本不在乎实际存储的是哪个文件夹,而只是试图用完整的对话线程生成一个视图。