Rspamd_rule_Forwarding.lua自己的理解

        以下是我对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 Stakhov
addr - address part of the address
user - user part (if present) of the address, e.g. blah
domain - domain part (if present), e.g. foo.com

VERP address的格式如下:Verp-prefix-username=userdomain.com@mailinglistserver.com
实例:
without Verp :
envelope sender: wikipedians-owner@example.net  
recipient:bob@example.org
with Verp:
envelope sender: wikipedians-owner+bob=example.org@example.net
recipient:bob@example.org
score = 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"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值