这是可以使用我们的多个免费在线工作站之一(例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器)在 OnWorks 免费托管服务提供商中运行的命令 claws-mail-perl-filter
程序:
您的姓名
cm_perl -- Claws Mail 的 Perl 插件
商品描述
这个插件为电子邮件客户端 Claws Mail 提供了一个扩展的过滤引擎。 它
允许在电子邮件过滤器中使用完整的 Perl 功能。
快 主页
首先,您可以使用 matcherrc2perlfilter.pl 脚本中 工具-目录到
将您的旧过滤规则转换为 Perl。 只需执行脚本并按照
指示。 (请注意,对于 Claws Mail 的最新版本,此脚本可能不起作用
由于上游语法更改。 这将在未来得到更新。 给我发电子邮件如果
您在入门时遇到问题)。
但是,您可能需要考虑阅读本手册的其余部分并重写您的
规则,如果您选择使用插件,因为此脚本生成的 Perl 代码不是
非常漂亮。
不会说 Perl? 没问题,“perldoc perlintro”应该给你足够的信息来做
花哨的东西。
用法
Perl 插件需要一个名为的 Perl 脚本文件 perl_filter 在 Claws Mail 配置中
目录(通常是 $HOME/.claws-mail -- 如果你不确定,试试 `claws-mail --config-dir')。
如果该文件在插件启动时不存在,则会创建一个空文件。 这个文件,其中
不需要以 sha-bang (!#/bin/perl) 开头,包含 Perl 说明
电子邮件过滤器。 为了鼓励一些礼貌,代码以“严格使用”的方式执行;
环境。
双爪邮件过滤 条件 和 行动 映射到 Perl 函数
相应的名称,只要可能。
功能 房源
有关详细的功能说明,请参阅下面的“功能说明”部分。
标准过滤条件
全部、标记、未读、删除、新建、回复、
转发,锁定,ignore_thread,颜色标签,
匹配,火柴盒,正则表达式,S
尺寸更大、尺寸更小、尺寸等于、
score_greater、score_lower、score_equal、age_greater、
年龄较低,部分,标记
标准过滤操作
标记,取消标记,删除,mark_as_unread,mark_as_read,
锁定、解锁、移动、复制、着色、执行、
隐藏,set_score,change_score,停止,前进,
forward_as_attachment, 重定向, set_tag, unset_tag,
清除标签
好玩的东西
标题,正文,文件路径,extract_addresses,
move_to_trash,中止,addr_in_addressbook,
from_in_addressbook、get_attribute_value、SA_is_spam、
退出,手动,make_sure_folder_exists,
过滤器日志、过滤器日志详细程度、
make_sure_tag_存在
功能 随便果简介
一般来说,在 Perl 脚本调用过滤之后,邮件被传递给
Claws 的内部过滤引擎, 除非 a 最后 规则被击中。 最终规则不仅停止
Perl 过滤脚本在它们出现的时候,但也阻止处理
由 Claws 的内部过滤引擎发送的电子邮件(这可能听起来令人困惑,但您是
已经从标准过滤器中熟悉了这个概念:例如在一封电子邮件之后 移动d,
以下规则不再适用)。
另外,请注意您引用的方式。 特别要记住,@-sign 有一个
Perl 中的特殊含义,并在双引号内插入。 请参阅“报价和报价-
像操作符”在 perlop 以了解有关引用和插值的更多信息。
标准版 过滤 医美问题
all 返回一个真值。 仅适用于完整性。
标记 如果设置了标记标志,则返回真值,否则返回假值。
未读 如果设置了未读标志,则返回真值,否则返回假。
如果设置了删除标志,则返回一个真值,否则返回假。
new 如果设置了新标志,则返回真值,否则返回假。
如果设置了回答标志,则返回一个真值,否则返回假。
转发
如果设置了转发标志,则返回真值,否则返回假。
如果设置了锁定标志,则锁定返回真值,否则返回假。
忽略线程
如果设置了“忽略线程”标志,则返回真值,否则返回假。
颜色标签颜色
颜色标签
如果消息具有颜色 COLOR,则返回真值。 COLOR 可以是数字
0 到 7 之间的值(颜色对应于内部过滤
引擎),或在过滤对话框中介绍的英文颜色名称
(即:无、橙色、红色、粉红色、天蓝色、蓝色、绿色或棕色之一,而
大小写字母没有区别)。 如果省略 COLOR,则为 0(无)
假定。
尺寸_更大的尺寸
如果消息大小大于 SIZE,则返回 true 值,否则返回 false。
尺寸_较小的尺寸
如果消息大小小于 SIZE,则返回 true 值,否则返回 false。
大小等于 SIZE
如果消息大小等于 SIZE,则返回 true 值,否则返回 false。
score_greater 分数
如果消息分数大于 SCORE,则返回真值,否则返回假。
score_lower 分数
如果消息分数低于 SCORE,则返回 true 值,否则返回 false。
score_equal 分数
如果消息分数等于 SCORE,则返回真值,否则返回假。
age_greater 年龄
如果消息年龄大于 AGE,则返回 true 值,否则返回 false。
age_lower 年龄
如果消息年龄小于 AGE,则返回 true 值,否则返回 false。
如果消息仅部分下载,则部分返回真值,假
除此以外。
tagged 如果消息有一个或多个标签,则返回一个真值。
test 对应于'test'内部过滤规则。 特别是,它接受相同的
符号,即:
%%%
%s 主题
%f 来自
%t 到
%c 抄送
%d 日期
%i 消息 ID
%n 新闻组
%r 参考
%F 文件名 -- 不应修改
匹配 WHERE WHAT
火柴盒 WHERE WHAT
正则表达式在哪里
regexpcase在哪里什么
匹配函数具有特殊的语法。 第一个参数是任何一个
to_or_cc, body_part, headers_part, headers_cont, 消息, to, from, subject, cc,
新闻组、回复、引用或标签(这些字符串可能是也可能不是
引用),模式匹配适用于该区域。 如果它是任何其他字符串(其中
然后必须被引用),这个字符串被视为标题字段的名称。
第二个参数是要查找的字符串。 对于匹配、匹配、正则表达式和
regexpcase 我们有区分大小写的正常匹配,不区分大小写的正常匹配
匹配、区分大小写的正则表达式匹配和不区分大小写的正则
表达式模式匹配,分别。
如果找到模式,函数返回真,否则返回假。
与内置过滤引擎一样,邮件正文被搜索并
按原样提供 - 不进行字符集分析。 同样,没有 HTML 标签
剥离。 应该可以为这些使用外部模块或程序
任务虽然。 如果您正在这样做,请将您的经验发送给我。
Perl 在模式匹配方面具有优势,使用 Perl 的内置运算符
通常是比使用这些功能更好的选择。
标准版 过滤 行动
操作成功时返回真值,发生错误时返回“undef”。 Final
指示消息规则。 (有关最终规则的草图,请参见上文)
标记 标记消息。
取消标记 取消标记消息。
删除邮件。 请注意 Claws Mail 的名称更改为“删除”。 这个
是因为“删除”是无法重新定义的 Perl 内置命令之一
(如果可以,告诉我怎么做)。
这是一个 最后 规则。
标记为已读
将消息标记为已读
标记为未读
将消息标记为未读
锁定 锁定消息
解锁 解除信息锁
移动目的地
将消息移动到文件夹 DESTINATION。 文件夹符号与 Claws 相同
邮件使用。 您可以从普通过滤的移动对话框中复制和粘贴,
直到你对符号有了感觉。
这是一个 最后 规则。
复制目的地
将消息复制到文件夹 DESTINATION。 文件夹符号与 Claws 相同
邮件使用。 您可以从普通过滤的移动对话框中复制和粘贴,
直到你对符号有了感觉。
执行命令
这与“标准过滤条件”部分中的测试规则相同
execpt 它总是返回一个真值。
隐藏 隐藏消息
set_score 分数
将消息分数设置为 SCORE
change_score 分数
按 SCORE 更改消息分数
此时停止停止 Perl 脚本。 请注意,这是 而不去 最终规则,这意味着
电子邮件被传递到内部过滤引擎。 如果出现以下情况,请参阅下面的“中止”
你不想那样。
转发帐户,电子邮件
将邮件转发到电子邮件地址 EMAIL,使用帐户 ID ACCOUNT 作为发件人
帐户。 到目前为止,你必须在普通过滤引擎中创建规则才能找到
出那个号码。
forward_as_attachment,帐户电子邮件
使用帐户 ID 将邮件转发到附件中的电子邮件地址 EMAIL
ACCOUNT 作为发件人帐户。 到目前为止,您必须在正常情况下创建规则
过滤引擎找出那个数字。
重定向帐户,电子邮件
将邮件重定向到 EMAIL,使用帐户 ID ACCOUNT 作为发件人帐户。 所以
到目前为止,您必须在普通过滤引擎中创建规则才能发现
数。
设置标签标签
应用标签TAG。 标签必须存在。
unset_tag 标签
取消设置标签 TAG。
清除标签
清除所有标签。
开玩笑 东西
功能
标头 ARG
header 如果未给出 ARG,则返回邮件的所有标题字段名称的列表。
如果给定了 ARG,如果头字段 ARG 不存在于
电子邮件。 否则,它返回
在标量上下文中
标头字段 ARG 的值。
在列表上下文中
所有可用标头字段值的列表。 如果标题字段,这很有用
在一封电子邮件中出现不止一次(例如 Received - 标题)。
标题字段“References”形成了一种特殊情况。 在标量上下文中,它
返回第一个引用。 在列表上下文中,它返回所有
引用。
body 以标量形式返回电子邮件正文。
文件路径
返回当前过滤的电子邮件的文件和路径(对应于
'test' 规则中的 %F 争论)。
提取地址
从字符串中提取电子邮件地址并返回找到的地址列表。
当前使用正则表达式找到电子邮件地址
'[-.+\w]+\@[-.+\w]+'。 这不会找到所有有效的电子邮件地址。 随意地
给我一个更好的正则表达式。
移到废纸篓
将电子邮件移至默认垃圾箱文件夹。
这是一个 最后 规则。
abort 此时停止 Perl 脚本。
与“停止”相反,这是一个 最后 规则。
addr_in_addressbook 电子邮件地址簿
addr_in_addressbook 电子邮件
如果电子邮件地址 EMAIL 在地址簿中,则返回真值
姓名通讯录。 如果未给出 ADDRESSBOOK,则如果电子邮件地址返回 true
在任何地址簿中。
from_in_addressbook 地址簿
来自地址簿中的地址
检查发件人标题中找到的电子邮件地址是否在地址簿 ADDRESSBOOK 中
(或任何,如果省略)。 它被实现为
我的 ($from) = extract_addresses(header("from"));
返回 0 除非 $from;
返回 addr_in_addressbook($from,@_);
因此与 extract_addresses 相同的限制适用。
get_attribute_value 电子邮件、属性、地址簿
get_attribute_value 电子邮件,属性
查看地址簿 ADDRESSBOOK(或所有地址簿,如果省略)
联系电子邮件地址 EMAIL。 如果找到,该函数检查这是否
联系人有一个名为 ATTRIBUTE 的用户属性。 它返回这个值
属性,如果找不到,则为空字符串。 像往常一样,返回 'undef'
如果发生错误。
SA_is_垃圾邮件
是别名
不测试 'spamc -c < %F > /dev/null'
出口已被重新定义为“停止”的别名。 你不应该使用 Perl 自己的“退出”
命令,因为它会退出 Claws Mail。
如果手动调用过滤器脚本,即通过
工具菜单。
make_sure_folder_exists 标识符
如果文件夹的 ID 为 IDENTIFIER(例如 #mh/Mail/foo/bar),则返回真值
存在或可以创建。
make_sure_tag_exists 标记
如果标签 TAG 存在或可以创建,则返回真值。
filter_log 部分,文本
filter_log 文本
将 TEXT 写入过滤器日志文件。 SECTION 可以是任何一个
· "LOG_MANUAL"
· "LOG_MATCH"
· "LOG_ACTION"
如果省略 SECTION,则假定为“LOG_MANUAL”。
filter_log_verbosity 冗长
过滤日志详细程度
更改当前邮件的过滤器日志详细程度。 VERBOSITY 必须是以下任何一项
0 保持沉默
1 日志手动类型
2 日志操作类型
3 日志匹配类型
有关这些数字的含义,请阅读“日志记录”部分。 如果省略 VERBOSITY,
过滤器日志文件的详细程度没有改变。
此函数返回更改前的 filter_log_verbosity 编号(如果有)。
变量
$永久
此标量在过滤的邮件消息之间保持其值。 在插件启动时,它是
初始化为空字符串。
记录
为了跟踪过滤时对邮件做了什么,插件支持
日志记录。 识别三个详细级别:
0 日志已禁用
1 只记录手动消息,即“filter_log”命令引入的消息
过滤脚本
2 记录手动消息和过滤器操作
3 记录手动消息、过滤操作和过滤匹配
消息记录在 Claws Mail 的日志窗口中。 默认日志级别为 2。日志级别
3 不推荐,因为匹配器函数如果成功就会记录一条消息,并且
因此,如果您有否定检查,您将得到令人困惑的条目。 如果你想跟踪
匹配,手动执行,使用“filter_log”,或通过临时启用匹配器执行
使用“filter_log_verbosity”进行日志记录。
第一次卸载这个插件(或者关闭Claws Mail),一个叫做
[Perl插件] 将在 Claws Mail 的配置文件中创建 爪源, 包含一个
变量:
* 过滤日志详细程度
如果要更改默认行为,可以编辑此行。 确保 Claws 邮件
在您执行此操作时未运行。
只要我有时间,就可以通过 GUI 访问这些设置
编写一个相应的 GTK 插件,或者其他人有兴趣贡献它。
例
本节列出了 Perl 脚本文件的一个小示例。 我相信你明白了..
#-8<---------------------------------------------- ------
# -*- perl -*-
# 本地函数
# 学习火腿消息,并将它们移动到指定的文件夹。 这是
# 用于确保贝叶斯过滤器也能看到火腿。
子学习和移动{
execute('在这里输入学习火腿的命令');
移动(@_);
}
# 两级垃圾邮件过滤器。 每封得分高于 15 的电子邮件
# 在 SpamAssassin 上被移动到默认垃圾文件夹中。
# 所有低于此但高于 SpamAssassin 的邮件
# 'required_hits' 进入 #mh/mail/Spam。
子垃圾邮件检查{
我的 $surely_spam = 15;
我的 $filepath = 文件路径;
我的 $spamc = `spamc -c < $filepath`;
我的 ($value,$threshold) = ($spamc =~ m|([-.,0-9]+)/([-.,0-9]+)|);
if($value >= $surely_spam) {
标记为已读;
移到废纸篓;
}
if($value >= $threshold) {mark_as_read; 移动“#mh/邮件/垃圾邮件”;}
}
# Perl 脚本执行从这里开始。
# 一些特定的排序
learn_and_move '#mh/mail/MailLists/Claws 邮件/用户'
if matchcase('sender','[电子邮件保护]');
learn_and_move '#mh/mail/MailLists/Sylpheed'
if matchcase('list-id','sylpheed.good-day.net');
# 使用地址簿实现传入文件夹
# 属性。 特定电子邮件地址的目标文件夹是
# 直接存储在地址簿中。 这样,如果电子邮件
# 地址改变,我们只需要更新地址簿,不需要
# 过滤规则! 除此之外,我们可以大大整理
# 过滤脚本。
# 获取发件人标题中的电子邮件地址
我的 $fromheader = 标题“来自”;
我的 ($from) = extract_addresses $fromheader;
# 检查此电子邮件地址是否具有关联属性
# 称为“incomming_folder”。 如果有,这个值
# 属性应该是目标文件夹。
我的 $value = get_attribute_value $from, "incomming_folder";
learn_and_move($value) 如果 $value;
# 白名单示例:如果发件人地址在我的
# "office" 地址簿,将邮件移动到文件夹#mh/mail/office
learn_and_move '#mh/mail/office' if from_in_addressbook("office");
# 如果发件人地址在任何其他地址簿中,请移动
# 邮件到文件夹 #mh/mail/inbox/known
learn_and_move '#mh/mail/inbox/known' 如果来自_in_addressbook;
# 剩余的邮件通过 SpamAssassin 发送。
垃圾邮件检查;
# 到达脚本末尾的邮件将传递给
# 内部过滤引擎。 如果内部规则没有说
# 否则,邮件最终会出现在默认收件箱中。
#-8<---------------------------------------------- ------
使用onworks.net 服务在线使用claws-mail-perl-filter