首页 > 其他分享 >Exchange、Coremail、Postfix 等主流邮件系统数据存储格式介绍

Exchange、Coremail、Postfix 等主流邮件系统数据存储格式介绍

时间:2024-07-25 08:57:26浏览次数:16  
标签:存储 Maildir Exchange Postfix Coremail 邮件系统 格式 Mbox 邮件

本文主要介绍主流邮件系统(如Exchange、Coremail、Postfix)的数据存储格式,旨在帮助大家对邮件系统的底层结构有更深刻的认识。由于小编能力有限,文中难免存在疏漏与不足之处,恳请各位读者指正。

1. 开源邮件系统数据存储

在开放源代码的世界里,主流电子邮件服务主要有Sendmail、Qmail、Postfix。存储格式最流行的有两种:Mbox和Maildir,它们都是开放的存储格式,因此兼容性比较好。

1.1 Mbox格式

Mbox格式是在基于UNIX的邮件服务器上存储邮件的传统方式。单独的邮件消息只是简单地连接在一起,并保存在一个文件中。在一条消息结束和下一条消息开始的地方放置一个特殊的标记。只有一个进程可以以读写模式访问Mbox文件。并发访问需要一个锁定机制。任何时候,当有人需要更新Mbox文件时,其他所有人都必须等待更新完成。

1.2 Maildir格式

Maildirs最初是在Qmail邮件服务器中实现的,据说是为了解决mbox文件的不足之处。单独的邮件消息保存在单独的文件中,每条消息一个文件。每个文件的命名都有明确的方法。向Maildir中添加新邮件的流程也是确定的。不需要锁定。多个进程可以同时使用Maildirs。

Maildir格式示例

Maildir格式示例

1.3 Mbx格式

Mbx存储格式是UW-IMAP服务器提供的原始Mbox格式的一个略有修改的版本。Mbx邮箱仍然需要锁定。与Mbox格式的主要区别在于,文件中的每条消息之前都有一个记录,该记录携带一些特定于消息的元数据。因此,过去需要重写整个Mbox文件才能执行的一些操作,现在可以通过更新固定大小的头部记录来实现。

1.4 Mbox与Maildir存储格式对比

主流观点认为Maildir在数据存储安全性、存储效率、并发访问效率、搜索效率、扩展能力方面均要优于Mbox。主要原因在于Mbox是多封邮件存储在一个文件中,涉及到文件锁。Maildir也有自身的缺点,Maildir较依赖文件系统,尤其是依赖对目录的索引能力,用ReiserFS会比较快,对于超大型的Maildir,读写性能将受到考验。相对而言,Mbox则不存在这个问题。

参考来源:

1. 关于Mbox与Maildir两种格式的性能比较:http://www.courier-mta.org - Benchmarking mbox versus maildir

2. Maildir格式介绍:https://cr.yp.to/proto/maildir.html

3. Mbox格式介绍:mbox(5)

4. https://www.cnblogs.com/valentine/archive/2011/04/21/2023393.html

2. Exchange Server数据存储

Exchange服务器的存储是由可扩展存储引擎 (ESE)来管理的。这个ESE引擎是微软专门为保存非关系型数据而开发,目前在微软的很多产品中都有广泛的应用,如:AD数据库、DHCP、WINS、SRS等等。ESE是一个数据库引擎,它以逻辑顺序存储信息。可以按顺序检索信息,也可以通过访问定义的索引来检索信息。数据库汇报是使用事务实现的,以确保安全操作。ESE 允许同时访问多个数据库,包括可用于系统恢复的事务日志文件数据库。ESE 可缩放到大型或小型应用程序。

Exchange的数据库是由EDB文件、STM文件和LOG文件组成的(注:不同版本会有不同,请注意甄别)。在这些文件里,微软使用了“B+树”的内部数据结构。ESE的引擎的任务之一,就是当IS服务(Information Store)请求访问数据库的时候,把这些请求转化为对内部数据结构的读写访问。B+树的特点是能够对存储在硬盘上的数据提供快速访问能力。微软利用“B+树”作为ESE的后台结构的主要原因,就是尽可能的提高访问数据时I/O性能。

ESE数据库示例

ESE数据库示例

参考来源:

1. http://www.5dmail.net/html/2004-11-12/20041112170608.htm

2. 深入剖析EXCHANGE SERVER的邮件存储和日志_微软 exchangeservice 数据库用的啥-CSDN博客

3.数据库概述 - Win32 apps | Microsoft Learn

3. Coremail 数据存储

Coremail作为国内主流的电子邮件系统,据公开资料显示,其采用了独有的“信筒”模型,并结合预读缓写等机制,这一设计极大地减少了实际的磁盘I/O操作次数,使得在相同的硬件设备条件下,Coremail能够实现更高的性能与更强的稳定性。在Coremail系统中,邮件数据通过创新的“信桶”存储机制进行管理,每个“信桶”能够存储多封邮件,并且这些邮件在存储时会应用加密和压缩技术,确保数据安全的同时优化存储效率。用户访问邮件时,只能通过邮件索引来读取相应的邮件数据,这一设计增强了数据访问的安全性和有序性。

Coremail系统将邮件数据和邮件索引数据分开存储,这两部分数据分别由不同的模块负责处理。每个模块都配备了高效的Cache机制,这一特性显著提升了数据的读写速度,为用户带来更加流畅的使用体验。索引与数据分离的设计模式还为Coremail系统提供了邮件数据单副本的能力。这意味着,一封同时发送给多个收件人的邮件,在系统中实际上仅需要在“信桶”中存储一次,之后只需分别更新每位用户的邮件索引即可。这种巧妙的设计模式极大地节约了存储空间,提高了系统资源的利用效率。

Coremail存储示意图

Coremail数据存储示意图

注意:上图根据公开资料整理而来,非Coremail官方提供,仅供参考。如需获取更准确的信息,建议联系Coremail官方(www.coremail.cn)获取。

参考来源:Exchange、Coremail、Postfix 等主流邮件系统数据存储格式介绍 | MailABC邮件知识百科

标签:存储,Maildir,Exchange,Postfix,Coremail,邮件系统,格式,Mbox,邮件
From: https://blog.csdn.net/sdexcel/article/details/140679434

相关文章

  • CentOS7使用Postfix, Dovecot搭建邮箱服务
    CentOS7使用Postfix,Dovecot搭建邮箱服务的步骤与挑战?为了满足企业内部或个人的邮件服务需求,使用CentOS7搭建一个稳定、安全的邮箱服务器是一个非常实用的解决方案。AokSend将详细介绍如何在CentOS7系统上使用Postfix和Dovecot搭建邮箱服务。CentOS7:配置PostfixPostfix的配......
  • HW行动在即,邮件系统该怎么防守?
    1.什么是HW行动?HW行动是一项由公安部牵头,旨在评估企事业单位网络安全防护能力的活动,是国家应对网络安全问题所做的重要布局之一。具体实践中,公安部组织攻防红、蓝两队(红队为攻击队,主要由“国家队”和厂商的渗透技术人员组成;蓝队为防守队,一般是随机抽取一些单位参与),通过模拟......
  • 轻量级交互式可视化CAD:CAD Exchanger SDK 3.24.0
    CADExchangerSDK3.24.0用于读取、写入和可视化3DCAD文件的软件库:通过访问CAD和BIM数据,快速轻松地丰富您的Web、服务器或桌面应用程序。使用CATIA、SOLIDWORKS、Creo、STEP、JT、IFC以及C++、Python、C#、Java和JavaScript的更多格式。CADExchangerSDK概......
  • Exchange邮箱用户发邮件失败,提示“ Client does not have permissions to send as thi
    原贴https://www.cnblogs.com/dreamer-fish/p/16876232.htmlExchange邮箱用户发邮件失败,提示“Clientdoesnothavepermissionstosendasthissender”Exchange用户发邮件提示“5505.7.60SMTP;Clientdoesnothavepermissionstosendasthissender”处理方法:......
  • 使用Docker部署mailcow开源邮件系统详细过程
    1.项目介绍项目网站:mailcow:dockerized–Blog根据官方介绍,这个项目名称是mailcow,名称都是小写的。下面内容是通过AI翻译自官方文档:mailcow:dockerizeddocumentationmailcow:dockerized是一个基于Docker的开源组件/电子邮件套件。mailcow依赖于许多广为人知且长期......
  • Letter Exchange
    这道题目看官方题解就好了,这个转换图论挺显然的证明一下为什么最后一定是显然练完贬值后图只能长成这个样子在消掉长度为\(2\)的环后,如果说图没边了,那么显然就不用交换了,否则的话我们任取一条边那么对于\(2\)号点来说,要么没出边,要么出边的终点是\(3\)号点(因为没有长度为\(2......
  • CAD Exchanger SDK 3.24.0 终极版-say goodbye
    随着今年即将结束,还有一件重要的事情——CADExchanger3.24.0的发布。此次最新更新带来了一系列虽小但仍然值得注意的改进。其中包括ManufacturingToolkit(MTK)和Unity增强功能、Lab和VisualizationToolkit中模型部件检测的改进以及WebToolkit(WTK)中的修复。......
  • Exchange被黑客利用做中继外发垃圾邮件问题分析
    近期有用户反馈有大量非本域的邮件从自家服务器发出,还成功投递出来了,不过不用担心,到我们服务商这边被识破,全部拦截下来。以下是用户自建服务器发出的垃圾邮件案例:以上信息只有ip是用户自建服务器的,发件人和邮件都非用户本人发送,可以看出域名都可以通过客户的服务器中继出来发送......
  • Exchange限制邮箱用户每天/每分钟的发送邮件数量和速率
    近期遇到部分Exchange客服反馈内部邮箱账号密码被盗,给内部其他同事和外部邮箱发送大量钓鱼和诈骗邮件;对公司造成很大负面影响和经济损失。为了在遇到此类情况时减少损失,建议可以通过Exchange来限制用户每天和每分钟的发送邮件数量和速率;这样一来,即使用户邮箱密码被盗,在发现问题之......
  • JUC工具类: Exchanger详解
    Exchanger是用于线程协作的工具类,主要用于两个线程之间的数据交换。@立刀旁目录#带着BAT大厂的面试问题去理解Exchanger#Exchanger简介#Exchanger实现机制#Exchanger源码解析#内部类-Participant#内部类-Node#核心属性#构造函数#核心方法-exchang......