邮件安全篇:邮件反垃圾系统运作机制简介
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邮件知识百科
相关文章:
邮件安全篇:邮件反垃圾系统运作机制简介
1. 什么是邮件反垃圾系统? 邮件反垃圾系统是一种专门设计用于检测、过滤和阻止垃圾邮件的技术解决方案。用于保护用户的邮箱免受未经请求的商业广告、诈骗信息、恶意软件、钓鱼攻击和其他非用户意愿接收的电子邮件的侵扰。 反垃圾系统的常见部署形式 2. 邮件反垃圾…...
LoRaWAN设备的两种入网方式(ABP和OTAA)
目录 一、OTAA 1、名词解释 2、入网流程 二、ABP 三、两种入网方式的比较 一、OTAA 1、名词解释 (1)AppEUI:64位(8字节)的唯一标识符,用于标识特定的应用程序或组织(如果用的是chirpstac…...
【Rust光年纪】极致性能与灵活选择:Rust语言数学优化库详解
Rust语言中的数学优化:六大利器汇总 前言 在当今信息时代,数据处理和数学优化成为了各行各业中不可或缺的重要环节。为了满足对高效、快速计算的需求,Rust语言逐渐成为了许多开发者的首选,因其性能优越、并发安全等特点。本文将…...
机器学习 | 回归算法原理——最小二乘法
Hi,大家好,我是半亩花海。很早便想学习并总结一本很喜欢的机器学习图书——立石贤吾的《白话机器学习的数学》,可谓通俗易懂,清晰形象。那就在此分享并作为学习笔记来记录我的学习过程吧!本章的回归算法原理基于《基于…...
.NET Core 中的字符串压缩方法
字符串压缩的概念 字符串压缩通常指的是通过算法减少字符串表示所需的数据量,同时保持字符串的原始信息或能够无损地恢复原始字符串。这种压缩可以是针对文本数据的特定算法,也可以是更通用的数据压缩算法。 .NET Core 中的字符串压缩方法 使用数据压…...
SQL 基础知识
SQL(结构化查询语言)是一种用于管理和操作关系数据库的标准编程语言。以下是一些 SQL 的基础知识: 基本概念 数据库(Database): 存储和管理数据的容器。一个数据库可以包含多个表。 表(Table&…...
【数据结构初阶】单链表经典算法题十二道——得道飞升(上篇)
目录 1、移除元素 2、反转链表 3、链表的中间节点 4、合并两个有序链表 Relaxing Time!!! ———————————————— 天气之子幻 ———————————————— 1、移除元素 思路: 创建一个新链表࿰…...
Python爬虫技术 第16节 XPath
XPath是一种在XML文档中查找信息的语言,尽管XML和HTML在语法上有区别,但XPath同样适用于HTML文档的解析,尤其是在使用如lxml这样的库时。XPath提供了一种强大的方法来定位和提取XML/HTML文档中的元素和属性。 XPath基础 XPath表达式由路径表…...
本地部署,Whisper: 开源语音识别模型
目录 简介 特点 应用 使用方法 总结 GitHub - openai/whisper: Robust Speech Recognition via Large-Scale Weak SupervisionRobust Speech Recognition via Large-Scale Weak Supervision - openai/whisperhttps://github.com/openai/whisper 简介 Whisper 是一个由 O…...
history,hash缓存那些事
vue-router 中的 createWebHistory,createWebHashHistory两种模式 createWebHistory 是基于 window.history 对象是HTML5提供的用于维护当前标签页浏览历史的对象,主要功能是前进后退和在不刷新页面的情况下,修改地址栏里的URL地址。histor…...
Spring Boot的Web开发
目录 Spring Boot的Web开发 1.静态资源映射规则 第一种静态资源映射规则 2.enjoy模板引擎 3.springMVC 3.1请求处理 RequestMapping DeleteMapping 删除 PutMapping 修改 GetMapping 查询 PostMapping 新增 3.2参数绑定 一.支持数据类型: 3.3常用注解 一.Request…...
Spark 解析嵌套的 JSON 文件
1、什么是嵌套的JSON文件? 嵌套的JSON文件是指文件中包含了嵌套的JSON对象或数组。例如,以下是一个嵌套的JSON文件的示例: {"name": "John","age": 30,"address": {"street": "123…...
VMware虚拟机中CentOS7自定义ip地址并且固定ip
配置固定ip(虚拟机) 前提:虚拟机网络配置成,自定义网络并选择VMnet8(NAT 模式) 操作(如下图):点击虚拟机–》设置–》–》硬件–》网络适配器–》自定义:特定虚拟网络–》选择:VMnet8(NAT 模式) 虚拟机网络设置 需要记…...
CCS(Code Composer Studio 10.4.0)编译软件中文乱码怎么解决
如果是所有文件都出现了中文乱码这时建议直接在窗口首选项中修改:选择"Window" -> "Preferences",找到"General" -> "Workspace",将"Text file encoding"选项设置为"Other&quo…...
Flutter 3 完全支持网页端
Flutter 3 可以用于开发网页端应用。自 Flutter 2.0 起,Flutter 就已经支持 Web 平台,并且在 Flutter 3 中得到了进一步的改进和优化。以下是使用 Flutter 3 开发网页端的一些优势和特点: Flutter 3 开发网页端的优势: 跨平台一致…...
vue.js入门
目录 一. 框架概述 二. vue常用命令 2.1 插值表达式 2.2 v-text 2.3 v-html 2.4 v-on 2.5 v-model 2.6 v-show 2.7 v-if 2.8 v-else 2.9 v-bind 2.10 v-for 三. vue生命周期函数 目录 一. 框架概述 二. vue常用命令 2.1 插值表达式 2.2 v-text 2.3 v-html 2…...
API签名认证
前言(项目背景): 这个API签名认证是API开放平台得一个重要环节,我们知道,这个API开发平台,用处就是给客户去调用现成得接口来完成某些事情得。 在讲API签名认证之前,我们先模拟一个场景并且介绍…...
C#进阶-基于.NET Framework 4.x框架实现ASP.NET WebForms项目IP拦截器
在这篇文章中,我们将探讨如何在 ASP.NET WebForms 中实现IP拦截器,以便在 ASMX Web 服务方法 和 HTTP 请求 中根据IP地址进行访问控制。我们将使用自定义的 SoapExtension 和 IHttpModule 来实现这一功能,并根据常用的两种文本传输协议&#…...
前端(1)HTML
1、标签 创建1.html文件,浏览器输入E:/frontheima/1.html,可以访问页面 页面展示 在VSCODE安装IDEA的快捷键,比如ctld复制一行、ctrlx剪切 <p id"p1" title"标题1">Hello,world!</p> <p id"p2"…...
【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十三章 设备树下的platform驱动
i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
