筛选筛选语言的分析器/求值器(RFC 5228)

sifter的Python项目详细描述


sieve电子邮件过滤语言(rfc 5228)的python实现。

https://github.com/garyp/sifter

功能

  • 支持RFC 5228中的所有基本筛规格,除了仍然具有 在下面的“待办事项”下列出
  • 支持的扩展:
    • 正则表达式(draft-ietf-sieve-regex-01)

示例

import email
import sifter.parser
rules = sifter.parser.parse_file(open('my_rules.sieve'))
msg = email.message_from_file(open('an_email_to_me.eml'))
msg_actions = rules.evaluate(msg)

在上面的示例中,msg_actions是要应用于 电子邮件。每个操作是一个元组,由操作名和 特定于操作的参数。这取决于调用者对消息的操作和 基于返回的操作的消息存储。

警告

  • 目前还没有考虑到针对恶意用户输入的强化措施。这个 当前的实现是针对运行自己的筛选的用户 剧本。
  • 当前的实现没有针对性能进行优化,尽管希望如此 对于正常的输入来说并不太慢。

待办事项

大致按重要性排序:

  • 一个示例适配器,它使用筛选提供unix lda行为
  • 基本规范功能尚未实现:
    • 编码字符(第2.4.2.4节)
    • 多线串(第2.4.2节)
    • 括号内的注释(第2.3节)
    • 消息唯一性(第2.10.3节)
    • 信封测试(第5.4节)
    • 处理消息循环(第10节)
    • 限制滥用重定向操作(第10节)
    • 地址测试应将允许的头限制为包含地址的头 (第5.1节)
  • 确保字符集实际上是根据规范处理的
  • 使字符串解析符合第8.1节中的语法和特性 如第2.4.2节所述
  • 检查python的email.message是否实现了相同的头比较 作为筛子规格的方式
  • 确保正则表达式实际上是根据扩展名处理的 规格
  • 添加对各种扩展的支持:
    • 变量(RFC 5229)
    • 外部存储列表(草案Melnikov筛外部列表)
    • 车身(RFC 5173)
    • 关系型(RFC 5231)
    • 子地址(RFC 5233)
    • 副本(RFC 3894)
    • 环境(RFC 5183)
    • 日期和索引(RFC 5260)
    • 编辑标题(RFC 5293)
    • iHave(RFC 5463)
    • 邮箱元数据(RFC 5490)
    • 通知(RFC 5435)、邮寄通知(RFC 5436)、XMPP 通知(RFC 5437)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么这一行是charg=(char)(br.read());被跳过?   java三重DES中的IV在哪里?   java Lombok注释不在Intellij idea下编译   java为什么我不能使用过滤器作为流中的最后一步   sqlite Java编译错误找不到符号方法next()   在Java中解析处理对int来说太大的数字   java摄像头不工作   java是“断言错误”好的做法?   java确定api请求是来自CURL还是POSTMAN?   JavaSpringMVC导航   java使单例模式代码更强大   当Java(解释器)区分大小写时,为什么Java编译器(javac)不区分大小写?   java注释字符串[]oneArr();vs字符串[][]twoArr();公告   java命名查询的利弊   java使用log4jweb在web应用程序中配置Log4j2。罐子   java正则表达式查找以开头和结尾的所有可能出现的文本~   java从字符串执行方法