在 sieve 中,如何将消息复制到同一服务器上的另一个用户的邮箱而不需要重新向外部发送?

在 sieve 中,如何将消息复制到同一服务器上的另一个用户的邮箱而不需要重新向外部发送?

我正在使用 sieve 来过滤我们的 IMAP 服务器 (Cyrus imapd) 中的电子邮件。我对其工作原理有基本了解,并且已经制作了一些简单的筛选脚本,到目前为止其行为符合预期。要将这些脚本附加到服务器上的用户邮箱,我首先使用连接到服务器sieveshell,然后在其中执行适当的命令。

现在,我第一次想从用户邮箱中复制某些邮件到同一服务器上的另一个用户邮箱。但我不知道如何实现这一目标。有可能吗?

举个例子,假设我在该服务器上有两个名为user1和的用户邮箱user2,并且我想将到达的所有邮件复制user1INBOXof user2,前提是它们来自某个发件人(由From:标头标识)。然后我可能应该制作一个包含类似内容的筛子脚本

if address :is "from" "[email protected]"
{
  /*
  What do I need to put in here? The following does not work or is not what I want:

  redirect :copy "[email protected]"  <--- Probably sends message via SMTP (not desired)
  fileinto :copy "user/user2/INBOX"    <--- Does not work because the path is relative to the current user's mailbox
  */
}

user2并将其加载到(通过)的帐户中sieveshell

然而,正如该脚本中的注释所暗示的那样,我不知道应该在操作行中放入什么内容。我研究了很多 sieve 教程和示例,但没有找到有关如何将消息复制到的任何提示同一 IMAP 服务器上的另一个用户的邮箱。我没有找到这样的例子,这一事实可能告诉我这是一个愚蠢的想法,但我不明白为什么。

目前我认为这redirect将是错误的操作,因为我看到的所有示例都使用它将消息转发到完全合格的电子邮件地址。这可能意味着需要 SMTP 服务器来转发邮件,但我不希望这样做。

fileinto操作似乎也不合适,因为目标文件夹是相对于脚本所附加到的用户(邮箱/帐户)而言的。这意味着它根本不能用于将消息转发给其他人。

redirect我已经阅读了 sieve RFC 中列出可能操作的部分,但除了和之外找不到合适的操作fileinto,所以我现在陷入困境。

我知道,在实际获取邮件并将其传递到 IMAP 服务器之前,我可能可以在 SMTP 端解决上面显示的简单示例问题。然而,这个例子过于简单,所以我真的很想学习如何使用 sieve 将消息复制到同一服务器上的其他本地帐户。

相关内容