深入理解电子邮件安全:SPF、DKIM 和 DMARC 完全指南
引言
在当今数字时代,电子邮件已经成为我们日常通信中不可或缺的一部分。然而,随之而来的安全问题也日益突出。邮件欺诈、钓鱼攻击和垃圾邮件等威胁不断增加,这促使了多种邮件安全验证机制的出现。本文将深入探讨三个最重要的邮件安全协议:SPF、DKIM和DMARC。
SPF (Sender Policy Framework)
什么是 SPF?
SPF(发件人策略框架)是一种邮件验证机制,用于防止发件人地址被伪造。它允许域名所有者指定哪些邮件服务器被授权发送来自该域名的邮件。
SPF 工作原理
- DNS记录发布:域名所有者在DNS中发布SPF记录
- 发送验证:当邮件服务器接收到邮件时,会检查发件人IP是否在SPF记录允许范围内
- 结果处理:基于验证结果决定是否接受该邮件
SPF 记录示例
example.com. IN TXT "v=spf1 ip4:192.0.2.0/24 ip4:198.51.100.123 a mx ~all"
DKIM (DomainKeys Identified Mail)
什么是 DKIM?
DKIM是一种数字签名技术,用于验证邮件的完整性和来源真实性。它通过加密签名确保邮件在传输过程中未被篡改。
DKIM 工作流程
-
签名生成:
- 发送方使用私钥对邮件头部和内容生成签名
- 签名添加到邮件头的DKIM-Signature字段
-
验证过程:
- 接收方获取发送域名的公钥(存储在DNS中)
- 使用公钥验证签名的有效性
DKIM 配置示例
selector._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC..."
DMARC (Domain-based Message Authentication, Reporting & Conformance)
DMARC 的作用
DMARC建立在SPF和DKIM基础上,提供了统一的邮件验证策略框架。它不仅能验证邮件真实性,还能向域名所有者提供详细的验证报告。
DMARC 政策
- none:监控模式,不采取任何操作
- quarantine:将可疑邮件放入垃圾邮件文件夹
- reject:直接拒绝不符合要求的邮件
DMARC 记录示例
_dmarc.example.com. IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"
最佳实践建议
1. 完整部署策略
- 同时实施SPF、DKIM和DMARC
- 从宽松策略开始,逐步收紧
- 定期监控验证报告
2. 密钥管理
- 定期更新DKIM密钥对
- 使用足够长度的密钥(建议2048位)
- 安全保管私钥
3. 监控和维护
- 定期检查SPF记录是否需要更新
- 分析DMARC报告发现潜在问题
- 及时响应验证失败警报
4. 政策调整
- 根据业务需求调整验证策略
- 考虑第三方邮件服务的影响
- 平衡安全性和可用性
结论
电子邮件安全是一个持续演进的领域。SPF、DKIM和DMARC这三个协议互相配合,共同构建了强大的邮件安全防线。正确实施这些机制不仅能有效防止邮件欺诈,还能提升邮件送达率,保护企业声誉。随着网络威胁的不断发展,持续关注和更新邮件安全措施变得越来越重要。
配置
我来详细介绍如何配置 SPF 和 DKIM 的域名解析记录:
- SPF 配置步骤:
- 登录域名管理控制台,添加 TXT 记录:
- 主机记录:
@
或者留空(取决于服务商) - 记录类型:
TXT
- 记录值示例:
v=spf1 ip4:1.2.3.4 ip4:11.22.33.44 include:spf.example.com include:_spf.google.com ~all
- SPF 记录值说明:
v=spf1
- SPF 版本声明ip4:
- 指定 IPv4 地址include:
- 包含其他域名的 SPF 记录~all
- 软失败(推荐)或-all
硬失败+all
- 允许所有(不推荐)
常见配置场景:
# 只允许指定 IP 发送
v=spf1 ip4:1.2.3.4 -all# 允许本域名的 MX 记录对应的服务器发送
v=spf1 mx -all# 允许本域名的 A 记录对应的服务器发送
v=spf1 a -all# 包含第三方邮件服务(如 Google Workspace)
v=spf1 include:_spf.google.com -all
- DKIM 配置步骤:
- 生成 DKIM 密钥对:
# 使用 OpenSSL 生成私钥
openssl genrsa -out private.key 2048# 生成公钥
openssl rsa -in private.key -pubout -out public.key
- 添加 DKIM DNS 记录:
- 主机记录:
selector._domainkey
(selector 可自定义,如 mail._domainkey) - 记录类型:
TXT
- 记录值示例:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
- DKIM 记录值说明:
v=DKIM1
- DKIM 版本k=rsa
- 加密算法p=
- 公钥(去掉头尾和换行)
常见邮件服务商的 DKIM 配置:
Google Workspace:
# 主机记录
google._domainkey# 记录值
v=DKIM1; k=rsa; p=您的公钥
Microsoft 365:
# 主机记录
selector1._domainkey# 记录值
v=DKIM1; k=rsa; p=您的公钥
验证配置:
- SPF 验证:
# 使用 dig 命令查询
dig txt example.com# 使用在线工具
https://mxtoolbox.com/spf.aspx
- DKIM 验证:
# 发送测试邮件查看邮件头
# 使用在线工具
https://mxtoolbox.com/dkim.aspx
注意事项:
- DNS 传播时间:
- 新增或修改记录后需等待 DNS 刷新(通常 5-30 分钟)
- 某些情况可能需要最多 24-48 小时
- 记录长度限制:
- 单条 TXT 记录最大 255 字符
- 超长需要分片,用引号分隔
- 安全建议:
- 私钥妥善保管,避免泄露
- 建议每 6-12 个月轮换密钥
- 先添加新记录,确认生效后再更换密钥
- 常见错误:
- SPF 记录重复
- DKIM 选择器名称错误
- 公钥格式不正确
- DNS 记录未及时生效
查询链接
https://coding.tools/cn/nslookup
https://powerdmarc.com/zh/spf-record-lookup/
https://powerdmarc.com/zh/dkim-record-lookup/
https://powerdmarc.com/zh/dmarc-record-checker/
相关文章:
深入理解电子邮件安全:SPF、DKIM 和 DMARC 完全指南
引言 在当今数字时代,电子邮件已经成为我们日常通信中不可或缺的一部分。然而,随之而来的安全问题也日益突出。邮件欺诈、钓鱼攻击和垃圾邮件等威胁不断增加,这促使了多种邮件安全验证机制的出现。本文将深入探讨三个最重要的邮件安全协议&a…...

【有啥问啥】复习一下什么是NMS(非极大值抑制)?
复习一下什么是NMS(非极大值抑制)? 什么是NMS? NMS(Non-Maximum Suppression)即非极大值抑制,是一种在计算机视觉领域,尤其是目标检测任务中广泛应用的后处理算法。其核心思想是抑…...
Java-异步方法@Async+自定义分布式锁注解Redission
如果你在使用 @Async 注解的异步方法中,使用了自定义的分布式锁注解(例如 @DistributedLock),并且锁到期后第二个请求并没有执行,这可能是由于以下几个原因导致的: 锁的超时时间设置不当:锁的超时时间可能设置得太短,导致锁在业务逻辑执行完成之前就已经自 动释放。…...

基本定时器---内/外部时钟中断
一、定时器的概念 定时器(TIM),可以对输入的时钟信号进行计数,并在计数值达到设定值的时候触发中断。 STM32的定时器系统有一个最为重要的结构是时基单元,它由一个16位计数器,预分频器,和自动重…...
实现了两种不同的图像处理和物体检测方法
这段代码实现了两种不同的图像处理和物体检测方法:一种是基于Canny边缘检测与轮廓分析的方法,另一种是使用TensorFlow加载预训练SSD(Single Shot Multibox Detector)模型进行物体检测。 1. Canny边缘检测与轮廓分析: …...

如何在MindMaster思维导图中制作PPT课件?
思维导图是一种利用色彩、图画、线条等图文并茂的形式,来帮助人们增强知识或者事件的记忆。因此,思维导图也被常用于教育领域,比如:教学课件、读书笔记、时间管理等等。那么,在MindMaster免费思维导图软件中࿰…...
ORIN NX 16G安装中文输入法
刷机版本为jetpack5.14.刷机之后预装了cuda、cudnn、opencv、tensorrt等,但是发现没有中文输入,所以记录一下安装流程。 jetson NX是arm64架构的,sougoupinyin只支持adm架构的,所以要选择安装Google pinyin 首先打开终端&#x…...

【金融风控项目-07】:业务规则挖掘案例
文章目录 1.规则挖掘简介2 规则挖掘案例2.1 案例背景2.2 规则挖掘流程2.3 特征衍生2.4 训练决策树模型2.5 利用结果划分分组 1.规则挖掘简介 两种常见的风险规避手段: AI模型规则 如何使用规则进行风控 **使用一系列逻辑判断(以往从职人员的经验)**对客户群体进行区…...
退款成功订阅消息点击后提示订单不存在
问题表现: 退款成功发送的小程序订阅消息点击进入后提示订单不存在。 修复方法: 1.打开文件app/services/message/notice/RoutineTemplateListService.php 2.找到方法sendOrderRefundSuccess 3.修改图中红圈内的链接地址 完整方法代码如下 /*** 订…...

实验一 顺序结构程序设计
《大学计算机﹣C语言版》实验报告 实验名称 实验一 顺序结构程序设计 实验目的 (1)掌握C语言中常量和变量的概念。 (2)掌握C语言中常见的数据类型。 (3)掌握C语言中变量的定义和赋值方法。 …...
Elasticsearch搜索流程及原理详解
Elasticsearch搜索流程及原理详解 1. Elasticsearch概述1.1 简介1.2 核心特性1.3 应用场景2. Elasticsearch搜索流程2.1 搜索请求的发起2.2 查询的执行2.3 结果的聚合与返回3. Elasticsearch原理详解3.1 倒排索引3.2 分布式架构3.3 写入流程3.4 读取流程4. 技术细节与操作流程4…...

芯片之殇——“零日漏洞”(文后附高通64款存在漏洞的芯片型号)
芯片之殇——“零日漏洞”(文后附高通64款存在漏洞的芯片型号) 本期是平台君和您分享的第113期内容 前一段时间,高通公司(Qualcomm)发布安全警告称,提供的60多款芯片潜在严重的“零日漏洞”,芯片安全再一次暴露在大众视野。 那什么是“零日漏洞”?平台君从网上找了一段…...
【gitlab】gitlabrunner部署
1、下载镜像 docker pull gitlab/gitlab-runner:latest 2、启动gitrunner容器 docker run -d --name gitlab-runner --restart always \ -v /root/gitrunner/config:/etc/gitlab-runner \ ///gitlab-runner的配置目录,挂载在宿主机上方便修改,里面有config.…...

Flink监控checkpoint
Flink的web界面提供了一个选项卡来监控作业的检查点。这些统计信息在任务终止后也可用。有四个选项卡可以显示关于检查点的信息:概述(Overview)、历史(History)、摘要(Summary)和配置(Configuration)。下面依次来看这几个选项。 Overview Tab Overview选项卡列出了以…...
Ribbon 入门实战指南
Ribbon 是 Netflix 开发的一个开源项目,用于实现客户端负载均衡功能。它在微服务架构中广泛使用,并且是 Spring Cloud 生态中的重要组成部分。本文将带你从基础入门,逐步掌握如何在 Spring Cloud 项目中使用 Ribbon 实现客户端负载均衡。 1 负…...

uniapp: 微信小程序包体积超过2M的优化方法(主包从2.7M优化到1.5M以内)
一、问题描述 在使用uniapp进行微信小程序开发时,经常会遇到包体积超过2M而无法上传: 二、解决方案 目前关于微信小程序分包大小有以下限制: 整个小程序所有分包大小不超过 30M(服务商代开发的小程序不超过 20M) 单个…...
【百日算法计划】:每日一题,见证成长(026)
题目 给定一个包含正整数、加()、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。 表达式仅包含非负整数,, - ,,/ 四种运算符和空格 。 整数除法仅保留整数部分。 * * 示例 1: 输入: “32X2” 输出: 7 import…...
【大模型】prompt实践总结
文章目录 怎么才算是好的prompt设计准则基本原则精炼原则(奥卡姆剃刀准则)具体原则真实操作技巧指定角色增加fewshots列表化代码化强调需求真实迭代大模型优化情形任务的定义和评估标准似乎可以再明确一下出现了一些之前没有考虑过的特殊情况,可以重新组织语言优化Prompt来处…...
在Qt(以及C++)中, 和 * 是两个至关重要的符号--【雨露均沾】
在Qt(以及C)中,& 和 * 是两个至关重要的符号,它们用于处理引用和指针。我们将逐个解释这两个符号,并提供简单示例来说明它们的用法。 1. 引用(&) 定义: 引用是一种别名,它不…...

本地部署Apache Answer搭建高效的知识型社区并一键发布到公网流程
文章目录 前言1. 本地安装Docker2. 本地部署Apache Answer2.1 设置语言选择简体中文2.2 配置数据库2.3 创建配置文件2.4 填写基本信息 3. 如何使用Apache Answer3.1 后台管理3.2 提问与回答3.3 查看主页回答情况 4. 公网远程访问本地 Apache Answer4.1 内网穿透工具安装4.2 创建…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

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 …...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...