Rspamd_rule_Forwarding.lua自己的理解

来源:互联网 发布:maxwell软件 编辑:程序博客网 时间:2024/05/18 05:58

        以下是我对Rspamd系统中的规则Forwarding.lua一些理解和例句的详细例子。

**FWD_GOOGLE:** description = "Message was forwarded by Google”检测邮件是由Google转发的,首先检测发送方和接收方均使用的是SMTP协议。且转发仅限于单个收件人,然后通过收件人的internet address和VERP address计算发送方的地址,例如首先将收件人bob@example.org变为bob=example.org,然后再在发送方的internet address中匹配是否含有’+caf_bob=example.org'字符串,如果有的话通过find函数再分割出该字符串前的Verp-prefix,则Verp-prefix..@..sender.domain即为发送方的地址。internet address的数据结构如下,包含一下几个属性:例子:Vsevolod Stakhov <blah@foo.com> name - Vsevolod Stakhovaddr - address part of the addressuser - user part (if present) of the address, e.g. blahdomain - domain part (if present), e.g. foo.comVERP address的格式如下:Verp-prefix-username=userdomain.com@mailinglistserver.com实例:without Verp :envelope sender: wikipedians-owner@example.net  recipient:bob@example.orgwith Verp:envelope sender: wikipedians-owner+bob=example.org@example.netrecipient:bob@example.orgscore = 0.0,group = "forwarding"**FWD_YANDEX:**description = "Message was forwarded by Yandex”,首先检测发送方和接收方是通过SMTP协议发送的,然后获取MTA提供的发送者的hostname,用find函数检测是否含有’.yandex.[a-z]+’的字符串,并且头部中’X-Yandex-Forward’的值不为空。则说明是Yandex转发的,返回true。score = 0.0,group = “forwarding"**FWD_MAILRU :**description = "Message was forwarded by Mail.ru”,首先检测发送方和接收方是通过SMTP协议发送的,然后获取MTA提供的发送者的hostname,用find函数检测是否含有’.mail.ru’的字符串,并且头部中’X-MailRu-Forward’的值不为空。则说明是Mail.ru转发的,返回true。score = 0.0,group = “forwarding"x**FWD_SRS :**description = "Message was forwarded using SRS”,首先检测发送方和接收方是通过SMTP协议发送的,并且保证接收方只是单个人。然后取得发送方和接收方的internet address通过正则表达式来判断return-path是否是SRS的形式,当邮件不可达时可以将邮件通过return-path返回给发送者。score = 0.0,group = “forwarding”SRS(Sender Rewriting Scheme)的原理:只有一次转发 bob@pobox.com 转发:格式变化为:SRS0+hash(yf09)=timestap(Cw)=原始地址的domain=原始地址的user@转发地址的domian。

这里写图片描述
两次及其以上的转发,从写return-path的方式:格式变化为:SRS1+第一次转发地址的domain=hash(yf09)=timestap(Cw)=原始地址的domain=原始地址的user@转发地址的domian。
这里写图片描述

**FORWARDED :**description = "Message was forwarded”,首先检测接收方使用的是SMTP协议,且转发仅限于单个收件人。获取头部信息List-Unsubscribe的值,获取MIME 协议发送者的internet address,循环检索所有获取到的headers,如果header中有for字段,取出该字段的地址并且将该地址规范化,如果该地址和接收者的地址不相同,则需要判断所有header中的for字段的地址数不超过2个并且和获取的MIME协议发送者的地址相同。否则则判定为是已经被转发过邮件。score = 0.0,group = “forwarding"
原创粉丝点击