问题标签 [sieve-language]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
528 浏览

postgresql - 编译 Cyrus 的 seiveshell 时如何链接 PostgreSQL 库?

我维护了一个由 Perl 和 Cyrus IMAP 等组成的软件堆栈。

Perl 似乎运行良好,Cyrus cyradm(一个 perl 脚本)也运行良好。但是,sieveshell 将不会执行并在此处寻求帮助的理由。

当我运行 sieveshell 时,我得到以下输出:

无法为模块 Cyrus 加载“/usr/local/pozix/perl-5.10.0/lib/site_perl/5.10.0/i686-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.so”: :SIEVE::managesieve: /usr/local/pozix/perl-5.10.0/lib/site_perl/5.10.0/i686-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.so: 未定义符号: PQfinish 在 /usr/local/pozix/perl-5.10.0/lib/5.10.0/i686-linux-thread-multi/DynaLoader.pm 第 203 行。在 ./sieveshell 第 45 行编译失败在 ./sieveshell 行45. BEGIN failed - 编译在 ./sieveshell 第 45 行中止。

PQfinish 是 PostgreSQL 库的一部分。如果我在 managesieve.so 上运行 ldd,PGSQL 库没有链接,但是也没有丢失的库。如果我在列出的 libsasl2 库上运行 ldd,它看起来也不错,并且确实使用了 PGSQL,但它显然不是链接到 managesieve.so 的库的一部分。此外,当其他软件使用时,libsasl2 工作正常。

这是 ldd managesieve.so

ldd usr/local/pozix/cyrus-sasl/lib/libsasl2.so.2

在构建 Cyrus IMAP 期间也没有编译错误。我怀疑这可能是路径问题,但不确定在哪里查看或调试路径输出或下一步该去哪里。

尝试对此进行谷歌搜索并获得了一些点击,但他们要么没有解决方案,要么对我不起作用。我怀疑 Perl AUTOLOAD 在某种程度上被混淆了。DBD::Pg 似乎也在工作;使用版本 2.15.1。

关于下一步去哪里的任何建议?那里有 Perl 大师吗?

解决了!

./configure 在每个子目录中构建 Makefile。managesieve.so 库是通过 Perl 的调用创建的... IE Perl Makefile.PL 生成一个 Makefile。安德鲁的建议极大地帮助了追查此事。在 Makefile 中有以下几行:

我更新阅读:

这解决了它!

0 投票
1 回答
404 浏览

python - 是否有一个很好的库来处理 python 中的筛选邮件过滤器?

我目前正在为客户编写一个模块来处理用户的筛选邮件过滤器文件。我需要使用 python,但令我失望的是,我找不到一个很好的库/包来处理筛滤器。

问题是:有这样的东西吗?

0 投票
1 回答
2787 浏览

regex - 筛选邮件正则表达式不起作用

我正在使用smartsieve web gui 来管理我的筛滤器。我有正则表达式匹配的问题。

我正在向自己发送一封主题格式为 testXX 的测试电子邮件(其中 X 是 0 到 9 之间的数字)。

当我定义过滤器时:如果消息“主题:”匹配正则表达式 [0-9]+ 生成的规则是:

消息被正确处理

但是任何时候当我向正则表达式添加任何文本时......匹配失败如果消息'主题:'匹配正则表达式测试 [0-9]+ 生成的规则是:

当我使用在线工具测试我的代码来测试筛子脚本时,一切正常,即使是更复杂的表达式。我确实需要更复杂的表达式,但我去掉了它,因为我需要找到问题所在。

0 投票
1 回答
203 浏览

email - James jSieve 有多大用处?

我希望为 Apache James 创建一些不同复杂度的过滤器。我的问题是:James jSieve 有多大用处?使用它有什么好处?它的当前/积极开发程度如何?

我已经看过标准匹配器和邮件。我尝试并喜欢自定义匹配器,例如:

我很想知道上面代码的 jSieve 类比是什么。

0 投票
0 回答
169 浏览

email - 如何在 Apache James 上部署 Sieve 脚本

我花了两天时间试图找到关于如何在 Apache James 上部署 Sieve 脚本的明确说明。我发现了一些提示,脚本进入“../apps/james/var/”,名称如“username@host.sieve”,但这样做对我不起作用。我错过了一些东西。

任何帮助是极大的赞赏:

  1. 在 James 文件夹层次结构中,Sieve 脚本位于何处?
  2. 是否有任何必要的配置文件更改?
  3. 是否需要任何编码?
  4. James 版本 2.2、2.3 和最新 (3.0) 下的脚本部署有区别吗?
0 投票
2 回答
308 浏览

sendmail - 完整收件人地址的 sendmail lda 参数

使用这个:

在我的 sendmail mc 中给出了类似的 procmail LOGNAME

代替

使用

然后给出

我的问题是,我们的电子邮件用户的形式是“user@domain.tld”而不是“用户”——因此 procmail 无法找到例如只有用户地址部分“用户”的邮件目录。如何从 sendmails lda 呼叫中提供 procmail 完整的收件人地址?

编辑:

我会尝试更清楚,看看原因。

我的“虚拟”收件人是 a) 没有系统用户,并且他们的地址中有不同的域,所有这些都使用 use_cw_file 功能设置。本地邮件程序是 procmail 和 dovecot (+sieve),它最终也处理虚拟用户。因为 dovecot 正在命名域,除了用户来处理,例如 admin@domain1.com 和 admin@domain2.com 在同一主机上。

所以我需要 sendmail 将完整地址传送到 lda(stack) (procmail -> sieve -> dovecot)。

0 投票
1 回答
175 浏览

perl - 在哪里可以找到旧的 IMAP::Sieve perl 模块

我正在升级服务器,而现有的 perl CGI 程序需要IMAP::Sieveperl 模块。我的问题是我在互联网上找不到任何参考。有人知道它是否已被其他东西取代和/或我在哪里可以找到它?

我们使用的现有 perl CGI 程序是websieve(可以在 SourceForge 上找到)。我们不想使用其他东西,因为我们对其进行了定制,并且它运行良好。该脚本也使用IMAP::Admin.

非常感谢任何提示或建议。

0 投票
1 回答
1811 浏览

python - 为收件箱子目录中的电子邮件自动创建 dovecot.sieve 规则的脚本

在这个伟大的网站上浏览/使用解决方案一段时间后,终于到了我参与的时候了。

我对我想要什么有一个非常清晰的概念,但我正在寻找到达那里的最佳方式。

我想要什么?:

一段时间以来,我在树莓派上使用电子邮件服务器设置,到目前为止效果很好。它由一个 dovecot 服务器和一些筛子过滤器组成,这些过滤器设置为将我的许多电子邮件地址分类到单独的收件箱子目录中。还有一个垃圾邮件过滤器,他每晚都会通过脚本学习火腿和垃圾邮件之间的区别。(基本上他被告知垃圾邮件在垃圾文件夹中,而其他每个文件夹都包含火腿)

我想为专用的“通讯”文件夹复制此行为。此文件夹不包含需要立即查看或报告的紧急消息。

计划是手动将电子邮件放入“新闻”文件夹,并让脚本每天扫描一次该文件夹。如果它发现来自没有筛选规则的地址的电子邮件,它应该创建一个规则以在到达时自动将来自该地址的邮件放入“新闻”文件夹。

实现步骤?:

  • 为此,脚本需要扫描现有的 .dovecot.sieve 文件,将“新闻文件夹”规则中的地址提取到单独的文件或对象中进行比较。

    /li>
  • 然后它需要处理“news”文件夹的maildir目录中的所有电子邮件,并在电子邮件中搜索“发件人:”字段和尖括号中的电子邮件地址

    /li>
  • 将它们与从筛文件中提取的地址进行比较,如果该地址没有过滤规则
    (例如,在列表中未找到),则为其创建一个(或简单地将其添加到提取的地址中)

  • 处理完所有电子邮件后,将使用提取的_email_addresses 文件创建“新闻”文件夹的新规则集,
    现有的 dovecot.sieve 将被新的替换(
    之前将复制旧的,以防万一)
  • 也许之后还需要重新启动鸽舍才能阅读新规则?

目前进展:

我试图通过简单地使用 bash 命令和实用程序来使其工作。这让我接近了一个点,我几乎可以从 dovecot.sieve 文件中提取电子邮件地址,但这对我来说非常复杂并且需要一些时间。

所以我想知道我是否可以通过使用 python 更轻松地到达那里。我在另一个 raspberry 项目中对其进行了修补,但没有时间完全沉浸在 python 世界中。

所以我很乐意在这里获得一些帮助/建议/指出正确的方向。

到目前为止,我找到了一些解决类似问题的解决方案(第一部分),其中需要提取,但我无法完全适应它,或者由于我无法执行脚本而犯了一些错误。

有人还可以推荐一个带有调试器等的python IDE吗?Eclipse 会出现在我的脑海中,或者还有其他什么(可能不是那么资源匮乏)?

0 投票
1 回答
520 浏览

regex - How to match everything inside the first pair of square brackets

I'm trying to create a regular expression in sieve. The implementation of sieve that I'm using is Dovecot Pigeonhole

I'm subscribed to github project updates and I receive emails from github with the subject in the format that looks like this:

Re: [Opserver] Create issues on Jira from Exception details page (#77)

There is a project name in square bracket included in the subject line. Here is the relevant part of my sieve script:

As you can see from the above, I'm moving the messages to appropriate project IMAP folders. So the message with the subject above will end up in Subscribtions.Github.Opserver

Unfortunately, there is one small problem with this script. If someone adds square brackets in the title of their github issue, the filter breaks. For example if the subject is:

[Project] [Please look at it] - very weird issue

The above filter will move the message to folder Subscribtions.Github.Project] [please look at it which is completely undesirable. I'd like it to be moved to Subscribtions.Github.Project anyway.

This happens because by default regular expressions are greedy. So they match the longest possible match. However when I try to fix it the usual way changing "\\[(.*)\\]" to "\\[(.*?)\\]" nothing seems to change.

How do I write this regular expression so that it acts as desired?

0 投票
1 回答
3421 浏览

postfix-mta - 筛子不过滤电子邮件

我用 Spamassassin 设置 Postfix,用 Sieve 设置 Dovecot。Spamassassin 会将电子邮件标记为垃圾邮件。

我试图让 Sieve 将被 SpamAssassin 标记为“垃圾邮件”的邮件移动到垃圾文件夹中。但是,它没有这样做。我不知道我做错了什么并且很沮丧。

这是我的 dovecot.conf 转储:

我的 /etc/dovecot/sieve/sieve.default 如下:

“垃圾”文件夹存在。这是电子邮件的转储:

我正在测试从一台服务器到另一台服务器的这封电子邮件,发件人和收件人不是同一台机器。收件人是 user@testmail.domain.tld,发件人是 user@domain.tld。该电子邮件被明确标记为垃圾邮件。

为什么不将电子邮件移动到垃圾文件夹?