邮件安全篇:邮件反垃圾系统运作机制简介

1. 什么是邮件反垃圾系统?

邮件反垃圾系统是一种专门设计用于检测、过滤和阻止垃圾邮件的技术解决方案。用于保护用户的邮箱免受未经请求的商业广告、诈骗信息、恶意软件、钓鱼攻击和其他非用户意愿接收的电子邮件的侵扰。

反垃圾系统的常见部署形式

2. 邮件反垃圾系统的存在形式

邮件反垃圾系统存在的形式多样,可能的形式包括如下几种:

  • 邮件系统上附加的反垃圾模块,属于邮件系统功能的一部分。
  • 部署在邮件系统之前的独立软件系统(和邮件系统处于同一机房)。
  • 部署在邮件系统之前的独立硬件设备(和邮件系统处于同一机房)。
  • 一种云服务,无需部署在客户本地机房,在云端提供反垃圾能力。
  • 用户电脑终端中由安全防护软件提供的客户端反垃圾功能,这种形式不在本文讨论范围。

邮件反垃圾云网关常见接入形式

3. 反垃圾系统如何发挥作用?

在探讨这个问题之前,可以先思考一封邮件是如何从站点A投递到站点B的?在之前的文章《SMTP协议简单介绍》中介绍了客户端与服务端通过SMTP协议发信的原理,其实两个站点之间发信也是通过SMTP协议。在SMTP这种通信协议基础上,反垃圾系统针对通信过程中各阶段对邮件进行相关检查。

反垃圾系统检查项示例

两个站点间SMTP协议发信过程大致如下:

  • 建立TCP连接
  • EHLO/HELO
  • MAIL FROM
  • RCPT TO(一个收件人对应一条指令)
  • DATA
  • QUIT
  • 断开连接

正常情况下,一封邮件从发信方服务器传递到收件方服务器需要将上述过程完整走完,任何一个阶段提前中止,都会导致信件发送失败。下面分别从每个阶段介绍反垃圾系统可能发起的检查。

3.1 建立TCP连接

在发信方与收件方邮件系统或者反垃圾系统建立连接时,可能进行的检查包括(也可能和后面HELO/EHLO阶段同时检查):

  • IP黑名单:如果发信IP被列入黑名单,则连接会直接被断开。
  • IP白名单:允许连接,后续将不做任何反垃圾检查。
  • IP连接次数:如果IP超过连接次数上线,则连接会被断开。
  • IP同时连接数:如果IP同时连接的次数超过限制,同样会被断开。

3.2 HELO/EHLO阶段

通过HELO或EHLO告知发信方服务器的主机域名信息,可能进行的检查包括:

  • 域名解析一致性检查:检查发信IP的PTR记录,如果PTR记录和声明的发信服务器不匹配或者不存在PTR记录,反垃圾系统会根据配置采取相应的策略。
  • RFC合规性检查:EHLO命令中的域名应该符合DNS命名规范,且不应该频繁更改。
  • 发信IP信誉检查:对发件服务器IP地址或域名的信誉度初步评估,例如通过RBL或其他信誉数据库快速查询。

3.3 MAIL FROM阶段

该阶段主要告诉收件方服务器发件人信息,可能进行的检查包括:

  • RFC合规性检查:检查发件人地址是否符合RFC 5321等相关SMTP标准的规定,包括地址格式是否正确。
  • SPF检查:使用SPF验证发件人地址所在的域名是否允许连接过来的IP代表其发送邮件。
  • 发件人黑名单检查:检查发件人地址是否存在于黑名单数据库中,黑名单中的地址通常是过往确认的垃圾邮件发送者。
  • 发件人信誉度评估:判断发件人的邮件发送历史记录和信誉度,如果发件人地址或其所在IP地址有不良记录,邮件服务器可能采取限制措施。
  • 发信频率:监控发件人地址发送邮件的速度和频率,如果超出正常范围,可能是垃圾邮件发送者的典型行为。

3.4 RCPT TO阶段

在RCPT TO阶段邮件服务器会针对收件人地址执行一系列反垃圾邮件检查,这些检查可能包括:

  • 收件人有效性验证:检查指定的收件人地址是否真实存在并且活跃。
  • 黑名单检查:检查收件人地址是否在黑名单中,黑名单通常包含已知的废弃、无效或滥用的邮箱地址。
  • 灰名单管理:检查收件人地址是否在灰名单上,灰名单上的地址可能暂时限制接收邮件,用于处理疑似垃圾邮件的临时策略。
  • 频率限制:控制发件人在短时间内向相同或相似收件人群体发送邮件的数量,以防止垃圾邮件的大规模滥发。
  • 发件人与收件人关联性检查:对发件人与收件人间的关系进行基本分析,比如检测是否有历史邮件往来记录,以减少陌生邮件带来的垃圾邮件风险。

3.5 DATA阶段

在SMTP协议的DATA阶段,邮件系统或反垃圾系统会对邮件的实际内容进行全面的反垃圾邮件检查,这是邮件内容过滤最关键的部分。可能进行的检查包括:

  • 关键字过滤:检查邮件正文中是否存在常见的垃圾邮件关键词、短语或模板。以及管理人员自定义的关键字策略。
  • 语法和拼写分析:分析邮件的语法结构和拼写错误,垃圾邮件往往具有独特的语法特点和大量的拼写错误。
  • 贝叶斯过滤:应用贝叶斯算法对邮件内容进行分析,根据先前学习到的垃圾邮件和正常邮件的特征分配一个垃圾邮件概率分数。
  • URL检查:扫描邮件中的链接,分析链接指向的网站是否被列入黑名单,或是否指向钓鱼网站、恶意软件下载等危险内容。
  • 图片内容识别:对邮件中的图片进行OCR识别,因为垃圾邮件发送者有时会将文字信息嵌入图片以避开纯文本过滤。
  • 收件人数量检查:检查邮件是否被大批量发送给不同的收件人,这也是垃圾邮件的一个典型特征。
  • DKIM检查:根据发件人域名发起DKIM检查,检查邮件是否由该域名授权的服务器签署。
  • DMARC检查:确认邮件是否通过了DMARC验证,包括SPF和DKIM验证的结果。
  • 社会工程和诈骗检测:检查邮件中是否存在社会工程攻击的迹象,例如冒充知名机构或个人的欺诈信息。
  • HTML结构分析:分析邮件的HTML编码和标签,垃圾邮件经常使用特殊的HTML结构来隐藏文本或误导邮件过滤器。
  • 附件检查:检查附件类型、附件内容,以防止恶意程序通过邮件传播。
  • 信头内容检查:检查信头长度、信头内特殊关键字,阻止特定类型的发信。

4. 结束语

在邮件系统防护的领域中,不同厂商提供的反垃圾产品因其独特的检查逻辑而呈现出各异的检测效果。因此,挑选一款功能完善、检测性能卓越的邮件反垃圾系统显得尤为关键。这些先进的反垃圾产品可以借助云端检测技术能力,对邮件进行大数据分析,从而显著提升检测的准确性和效率。面对市面上琳琅满目的邮件反垃圾系统厂商,企业在选择时应当全面考虑,包括厂商的综合实力、技术创新能力、实际应用的成功案例以及产品合规性等多个维度。通过综合考量,企业可以更加精准地选择适合自己需求的邮件反垃圾系统,为邮件系统提供更加稳固和有效的保护。

参考来源:邮件安全篇:邮件反垃圾系统运作机制简介 | MailABC邮件知识百科

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/383984.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

操作系统杂项(十)

目录 一、简述socket中select、epoll的使用场景和区别 1、使用场景 2、区别 二、epoll水平触发和边缘触发的区别 三、简述Reactor和Proactor模式 1、Reactor 2、Proactor 3、区别 四、简述同步和异步的区别,阻塞和非阻塞的区别 1、同步与异步 2、阻塞与非…

redis的使用场景

1. redis的使用场景 redis使用场景的案例:[1]热点数据的缓存[2]分布式锁[3]短信业务(登录注册时)2. redis实现注册登录功能 代码 在发送验证码时,先判断数据库是否有该手机号,有则发送验证码(此时redis缓存…

vs code解决报错 (c/c++的配置环境 远端机器为Linux ubuntu)

参考链接:https://blog.csdn.net/fightfightfight/article/details/82857397 https://blog.csdn.net/m0_38055352/article/details/105375367 可以按照步骤确定那一步不对,如果一个可以就不用往下看了 目录 一、检查一下文件扩展名 二、安装扩展包并…

C#,.NET常见算法

1.递归算法 1.1.C#递归算法计算阶乘的方法 using System;namespace C_Sharp_Example {public class Program{/// <summary>/// 阶乘&#xff1a;一个正整数的阶乘Factorial是所有小于以及等于该数的正整数的积&#xff0c;0的阶乘是1&#xff0c;n的阶乘是n&#xff0…

WPF MVVM框架:CommunityToolkit.Mvvm包使用介绍

最近在需要使用MVVM框架的时候才发现MvvmLight作者宣布停止更新了&#xff0c;有点可惜。 原作者推荐使用CommunityToolkit.Mvvm包&#xff0c;所以这里做一个CommunityToolkit.Mvvm包使用的全面的总结。 开发环境&#xff1a; Visual Studio 2019Windows 10 1903CommunityTo…

四、GD32 MCU 常见外设介绍 (5) TIMER 模块介绍

5.1.TIMER 基础知识 TIMER分高级定时器&#xff0c;通用定时器L0&#xff0c;L1&#xff0c;L2和基本定时器。 5.2.硬件连接说明 TIMER 属于片内外设&#xff0c;对于外部硬件设计&#xff0c;只需要单独IO口外接信号线即可。 5.3.GD32 TIMER 外设原理简介&#xff08;以 G…

电脑屏幕录制软件,分享4款(2024最新)

在今天&#xff0c;我们的电脑屏幕成为了一个多彩多姿的窗口。通过它我们可以浏览网页、观看视频、处理文档、进行游戏……有时&#xff0c;我们想要记录下这些精彩瞬间&#xff0c;与朋友分享&#xff0c;或者作为教程留存&#xff0c;这时&#xff0c;电脑屏幕录制就显得尤为…

全年销售7亿块,巧克力企业如何通过相邻业务打造极致产品力?

蒂罗尔巧克力是日本经典的巧克力品牌。 糖果业务是松尾早期的主营业务&#xff0c;在主营业务下滑的情况下&#xff0c;确立新的竞争方向&#xff0c;通过主营业务优势进入相邻业务&#xff0c;打造新产品成就巧克力极致产品力&#xff0c;避免衰退重回增长。 如何通过进入相邻…

Ubuntu下载jdk:cannot execute binary file

虚拟机上Ubuntu系统安装jdk且配置环境之后&#xff0c;java -version显示cannot execute binary file&#xff0c;多番查阅推测是由于系统和jdk版本不兼容的原因。 uname -m查看系统版本位i686&#xff0c;是32位的&#xff0c;和64位的jdk版本不兼容。因此&#xff0c;下载32位…

Linux:core文件无法生成排查步骤

1、进程的RLIMIT_CORE或RLIMIT_SIZE被设置为0。使用getrlimit和ulimit检查修改。 使用ulimit -a 命令检查是否开启core文件生成限制 如果发现-c后面的结果是0&#xff0c;就临时添加环境变量ulimit -c unlimited&#xff0c;之后在启动程序观察是否有core生成&#xff0c;如果…

【学习笔记】解决Serial Communication Library编译问题

【学习笔记】解决编译 Serial Communication Library 时的 Catkin 依赖问题 Serial Communication Library 是一个用 C 编写的用于连接类似 rs-232 串口的跨平台库。它提供了一个现代的 C 接口&#xff0c;它的工作流程设计在外观和感觉上与 PySerial 相似&#xff0c;但串口速…

Axure软件新功能解析与应用技巧分享

Axure是一种用于创建原型和交互设计的软件工具&#xff0c;广泛应用于操作界面。&#xff08;UI&#xff09;和客户体验&#xff08;UX&#xff09;为了展示和测试应用程序、网站或其他数据产品的性能和操作界面&#xff0c;设计帮助产品经理、设计师和开发者制作具有交互性的原…

服务器上使用Docker部署sonarQube,并集成到Jenkins实现自动化。

目标是要在目标服务器上使用docker工具部署好sonar环境&#xff0c;然后再集成到Jenkins中实现自动化的代码审查工作。 Docker 首先Dokcer的源大部分现在都用不了&#xff0c;于是我上网查询&#xff0c;终于找到了一个可用的镜像。 编辑/etc/docker/daemon.json文件&#x…

lua 游戏架构 之 游戏 AI (五)ai_autofight_find_way

这段Lua脚本定义了一个名为 ai_autofight_find_way 的类&#xff0c;继承自 ai_base 类。 lua 游戏架构 之 游戏 AI &#xff08;一&#xff09;ai_base-CSDN博客文章浏览阅读238次。定义了一套接口和属性&#xff0c;可以基于这个基础类派生出具有特定行为的AI组件。例如&…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第三十八章 驱动模块编译进内核

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

Golang | Leetcode Golang题解之第279题完全平方数

题目&#xff1a; 题解&#xff1a; // 判断是否为完全平方数 func isPerfectSquare(x int) bool {y : int(math.Sqrt(float64(x)))return y*y x }// 判断是否能表示为 4^k*(8m7) func checkAnswer4(x int) bool {for x%4 0 {x / 4}return x%8 7 }func numSquares(n int) i…

【快速逆向二/无过程/有源码】掌上高考—2024高考志愿填报服务平台

逆向日期&#xff1a;2024.07.21 使用工具&#xff1a;Node.js 加密工具&#xff1a;Crypto-js标准库 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 AES解密处理&#xff08;直接解密即可&#xff09;&#xff08;crypto-js.js 标准算法&…

深蓝学院 机器人操作系统ROS理论与实践(四)

一、机器人是什么&#xff1f; 机器人是如何组成的&#xff08;控制的角度&#xff09; 二、机器人系统构建 执行机构的实现——机器人底盘、电机、舵机等 驱动系统的实现 内部传感器的实现 控制系统的实现 外部传感系统的实现——摄像头、激光雷达、GPS等 1、连接摄像头 …

STM32——GPIO(点亮LEDLED闪烁)

一、什么是GPIO&#xff1f; GPIO&#xff08;通用输入输出接口&#xff09;&#xff1a; 1.GPIO 功能概述 GPIO 是通用输入/输出&#xff08;General Purpose I/O&#xff09;的简称&#xff0c;既能当输入口使用&#xff0c;又能当输出口使用。端口&#xff0c;就是元器件…

uniapp手写滚动选择器

文章目录 效果展示HTML/Template部分&#xff1a;JavaScript部分&#xff1a;CSS部分&#xff1a;完整代码 没有符合项目要求的选择器 就手写了一个 效果展示 实现一个时间选择器的功能&#xff0c;可以选择小时和分钟&#xff1a; HTML/Template部分&#xff1a; <picker…