Exchange 2010 的 Edge Transport 包含了一些 Anti-spam 的 Feature,如图:

都开启了,但是呢,还是会有漏网之鱼,而且把这些邮件自己列为 Junk 也起不了多大作用,这些 Feature 的设置也很鸡肋,没办法设置复杂一点的规则。于是我怒了,着手自己把这些漏网之鱼挡掉。

首先,是要找到相关的文档以及 SDK。文档入口在这里,然而里面提到的 Transport Agents SDK 的安装程序很坑,要你装个装不了的东西才给开始安装。后来发现其实可以不安装,直接从服务器上拷贝几个 DLL 和 XML 文件到本地,路径是 C:\Program Files\Microsoft\Exchange Server\V14\Public。接着用 Visual Studio 新建一个 .Net 3.5 的 Class Library,然后添加对这几个 DLL 的引用即可。

接下来的事情就是跟着文档的例子写(抄)一个 SmtpReceiveAgent 的架子了,然后看怎么处理 EndOfData。

Exchange 自带的 Content Filtering 会根据内容产生几个评分,其中一个叫 SCL(Spam Confidence Level),会存到邮件头里面,并以 X-MS-Exchange-Organization-SCL 命名。当这个评分超过 5 的时候,邮件就会被认为是垃圾邮件。

所以现在要做的就是自己扫描过邮件以后,把我的评分写到这个邮件头上面。邮件头可以通过以下方式拿到:

var message = e.MailItem.Message;
var headers = message.MimeDocument.RootPart.Headers;

然后通过 headers.FindFirst 方法找到 SCL 对应的记录,然后改变它,如果是空的就 new 一个 TextHeader 并 InsertAfter 到 LastChild 即可。

写好后,要将编译好的 DLL 复制到服务器上安装,可以用 PowerShell 完成。安装的脚本是:

Install-TransportAgent -Name "MySpamFilterAgent" -TransportAgentFactory "CustomSpamFilterAgent.MySpamFilterAgentFactory" -AssemblyPath "C:\CustomSpamFilterAgents\CustomSpamFilterAgent.dll"
Set-TransportAgent MySpamFilterAgent -Priority 2
Enable-TransportAgent MySpamFilterAgent
Restart-Service MSExchangeTransport

卸载的脚本很简单,可以推出来。

如果想要 debug,那么要先 Attach 到 EdgeTransport.exe,然后在外面发封测试邮件到这服务器。

各种 Agent 的执行顺序可以在 PowerShell 用 Get-TransportPipeline | Format-List 打印出来。

为 Exchange 服务器编写自定义的反垃圾插件的更多相关文章

  1. exchange 2003配置ASSP 反垃圾邮件

    Exchange上第三方反垃圾邮件用得比较多的是ORF,它直接运行在虚拟SMTP服务上,配置非常的方便.ASSP(https://sourceforge.net/projects/assp/) 是一个 ...

  2. 在java中使用RBL服务器(中国反垃圾邮件联盟的CBL+使用)

    这是06年写的,不知道现在RBL改了没,不过恢复过来做记录,以后可能需要. 实时黑名单(RBL)实际上是一个可供查询的IP地址列表,通过DNS的查询方式来查找一个IP地址的A记录是否存在来判断其是否被 ...

  3. Exchange2010启用反垃圾邮件功能

    今天邮箱服务器发现有大量发件人为空的邮件等待执行,也就是说空邮件堵塞了队列. 一般来说,空邮件就是别人发送垃圾邮件给你,你的服务上不存在这个收件人,那么系统会产生一封退信告诉你这封邮件已经被退.而ex ...

  4. U-Mail反垃圾邮件网关过滤Locky勒索邮件

    近期,不少朋友圈有朋友发布相关的邮件提醒,说有关于Locky病毒勒索邮件的.看来这个病毒影响不小啊!下面就说说怎么来防止Locky勒索病毒的侵扰. 什么是Locky勒索病毒 Locky勒索病毒主要以邮 ...

  5. Postfix上的反垃圾邮件的四个方法

    在介绍如何配置Postfix的smtp配置之前有必要首先介绍一下它的背景和特点.Postfix是一个由IBM资助下由WietseVenema 负责开发的自由软件工程的一个产物,其目的是为用户提供除se ...

  6. postfix反垃圾邮件说明

    参考地址:http://guailele.blog.51cto.com/1156442/780223 1.打开 smtp 的认证模块 在/etc/postfix/main.cf文件最后加上:   sm ...

  7. 检查邮箱IP是否在国际反垃圾邮件组织的黑名单中

    有时候邮件发不出去,很有可能就是邮件服务器的IP被国际上一些反垃圾组织列入黑名单了,这时你可以通过返回的邮件判断是否进入黑名单,或者通过以下查询地址看是否被列入,然后一个个申请移除: http://m ...

  8. 如何让企业邮箱更安全之gmail yahoo hotmail 反垃圾邮件机制

    一.雅虎.Gmail Domainkeys 是由雅虎公司推出的一项确保电子邮件来源的真实性和内容的完整性的技术,它能让电子邮件服务商确定某封信是否真实的来自某个域和帮助他们的用户免受“钓鱼欺诈邮件“的 ...

  9. 用mel编写自定义节点的属性编辑器界面

    用mel编写自定义节点的属性编辑器界面比较麻烦,而且网上例子又少,下面给出一个范例,说明基本的格式 // 初始化节点时调用 global proc initControl(string $attrNa ...

随机推荐

  1. js execCommand

    JavaScript中的execCommand()命令详解及实例展示 标签: javascriptbuttonfunctioninputobjectdelete 2012-05-07 16:08 14 ...

  2. Balance - 七夕悠然

    想争取一个月至少一篇博客的,还是没搭上七月的末班车.两个小妹妹来上海看我了,工作上又有点儿忙,充分利用所有时间了,还是没有挪出时间来写东西,貌似写东西也要时机一样,需要在可以静静思考的时候,再加上有淡 ...

  3. Mac 下安装ruby,以及CocoaPods安装以及使用网摘

    ruby安装网址:https://ruby-china.org/wiki/install_ruby_guide CocoaPods安装和使用教程地址:http://code4app.com/artic ...

  4. js 正则验证输入框只允许输入正实数和正整数和负整数

    <input onkeyup="this.value=this.value.replace(/[^0-9.]/g,'')">  (正实数) <input onke ...

  5. mvc局部视图

    新建一个控制器啊! public ActionResult Index() { ViewBag.title = "this is title!!!"; return View(); ...

  6. android 的数学公式图片转换

    在应用中的数学公式是不能直接以文本显示和输入的,包括在一些学习类网站上看到的公式,他们都是以gif图片的形式展示出来的.而怎么样生成各种各样的gif图片形式的数学公式呢,此处未作深入研究,我所知道的是 ...

  7. scrapy-1.2.1安装失败之解决方法

    前几天重装了win10 64位系统,安装了python-3.5,但是用pip安装scrapy模块时出现如下错误: 看起来是lxml安装的时候出错了,于是先pip install lxml,出现了和上面 ...

  8. A very cool thing: Install MYSQL from source without root access on LINUX

    最近由于工作的需要,要在centos上安装MYSQL服务器.作为一名小兵中的小兵,当然是没有root权限的,为了能够使用mysql,只能使用源码安装了(因为binary安装方式似乎需要root acc ...

  9. webform 中使用ajax

    常用的方式有 js –> WebService  , js->*.ashx, js->WebAPI, js->MVC Controller->Action. 前两种就不说 ...

  10. 1.iOS直播ijkplayer(第一周)

    准备工作: 1.使用的B站的开源框架ijkplayer ,下载地址: https://github.com/Bilibili/ijkplayer ijkplayer 是一个基于 ffplay 的轻量级 ...