NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

阿里云大赛创意奖孟巍:邮件服务上的创新

  • 2012-12-12
  • 本文字数:2753 字

    阅读完需:约 9 分钟

孟巍凭借 OSS 本地文件和邮件服务获得了在阿里云开发者大赛的最佳创意奖,作品采用 Delphi 开发,灵感来源于日常工作的需求,InfoQ 就相关技术细节对他进行了采访。

InfoQ:首先请您做下自我介绍并介绍本次的参赛作品 OSS 本地文件和邮件服务?

孟巍:我在初中的时候开始接触编程并从那时开始深深迷上了这个行业,高中参加 NOI 竞赛有幸被保送到中山大学计算机系,2004 年本科毕业后先后加入了电信、软件、手机互联网企业从事软件开发和管理工作,2012 年初我在广州开始创业,成立了一家软件公司,目前主要负责医疗信息化和云计算方面的系统设计和技术选型工作。本次参赛的作品(OSS 本地文件和邮件服务)其实是为了解决我身边的一些非技术型创业者所面临的初创型公司内部 IT 管理的实际问题,将阿里云 OSS 服务作为公司内部文档和企业邮件的永久存储介质。本地文件服务为阿里云 OSS 提供了 FTP 和 Windows 虚拟盘的接口,简化用户的文件操作;本地邮件服务可以为企业架设自己的企业邮箱,实现了 POP3 和 SMTP 协议以及多用户管理,将企业邮件永久保存在阿里云 OSS。

InfoQ:你使用 Delphi 语言进行开发,能够说下选择 Delphi 是基于哪些考虑?在开发过程中是否遇到一些问题?

孟巍:Delphi 是我比较熟悉的一种编程语言,我相信有很多开发人员都有 Delphi 的编程经验,只是随着技术的飞速发展,现在 Delphi 不像原来那么大众化了,大家可能都转向了 Java、C#等其他广泛使用的编程语言。我使用 Delphi 的另外一个原因就是它全面提供了我参赛的作品所需要的基础控件,具体来说是 Indy 的一系列控件,包括 TIdHttp,TIdFtpServer,TIdPOP3Server,TIdSMTPServer,TIdSMTPRelay 等等,使用这些控件可以弱化协议的细节,将关注点放在界面实现、应用逻辑和与 OSS 的互操作上,提高开发效率。提到界面,我想说说 Delphi XE3 里面的 Fire Monkey 技术,我的理解是它基本上完全重写了 VCL 的 GUI 控件库,支持跨平台,还允许开发人员开发 Windows 8 界面的应用程序,大家有兴趣的话可以试试看。我在开发过程中曾遇到一个细节的技术问题,因为官方没有提供现成的 Delphi SDK,所以我需要从 SDK 开始做起,在编写和测试 SDK 的时候发现 TIdHTTP 的 CustomHeaders 里面的值不支持非 ASCII 编码的字符串,刚好在 OSS 的 API 中关于 Copy Object 需要在“x-oss-copy-source”这个 header 中存放源 object 的名字,如果这个名字包含非 ASCII 编码的字符(比如中文的 UTF8 表示),则会被 TIdHTTP 强制转换为问号(?)。我一度认为这是 Indy 控件的 bug,但后来我仔细查阅了 HTTP 的 RFC 2616 规范,发现是阿里云 OSS 与 RFC 规范关于 header 取值的编码要求不一致,我已经将此问题报告给阿里云的技术人员,正在等待进一步确认。我个人觉得,综合来说,使用 Delphi 来开发 Windows 原生应用程序仍是一个不错的选择。

InfoQ: 你对阿里云的 OSS 做了一次封装,让其支持 POP3 和 SMTP 协议,现在是否是完全兼容?在封装的实现中,你有哪些经验和教训可以分享给大家?

孟巍:通过使用不同的客户端测试,有关 POP3 和 SMTP 协议的实现是可以兼容的,但是由于参赛准备时间有限还没有进行过大范围测试。在动手实现这两个协议之前,我首先在技术层面了解清楚了电子邮件收发的全过程,具体包括:POP3 和 SMTP 协议分别是做什么的、每个协议里面有哪些消息、每个消息的参数是什么、返回码有哪些、两个邮件服务器之间是如何通信的、邮件内容该如何存储、什么是 MIME、IMAP4 协议有什么优势等相关问题。在这个过程中我有一个很深的感悟,那就是我发觉我们平时用的很多习以为常的技术方案的背后其实都有一份严谨的规范定义,如果要深入了解问题的实质就必须从这些规范入手,比如上面这些问题可以从 RFC 821、1939、2045-2049、3501 等规范中找到答案。

InfoQ:如果公司使用这个服务,如何将历史邮件迁移过来?并且在安全性上是如何做保证的?

孟巍:历史邮件的迁移目前还没有实现,我计划额外提供一个工具来批量导出原邮件服务器的邮件再批量导入到 OSS 邮件服务中去。关于安全性方面,首先企业用户需要自己去申请阿里云 OSS 的 Secret ID 和 Secret Key,企业用户的所有邮件都存储在自己账号所创建的私有 bucket 中,所以每个企业的邮件系统之间是彼此隔离开的,邮件内容存储的安全性和完整性则交由阿里云 OSS 来实现。另外,下一步我计划添加邮件加密功能,即企业用户可以独立设置一个密钥,所有的邮件内容必须经过 256 位加密后才存储在阿里云 OSS 上,这样可以进一步保证企业邮箱的安全性。

InfoQ:在开发的过程中,你用到了阿里云的哪些服务?请列举这些服务的优点和需要改进的地方?

孟巍:本次开发我使用了阿里云 OSS 和 ECS 服务,前者提供企业邮件的存储介质,后者提供了部署的服务器。ECS 和 OSS 之间采用内网连接,对于大附件的邮件也不会出现因为网络不稳定而导致的存储失败的问题;使用这两种服务的另一个好处就是在阿里云的价格表里面从 OSS 到 ECS 的流量是不计费的,这样就可以进一步减轻初创企业的 IT 开销。OSS 服务非常强大、高效和完整,但是个人觉得在一些技术细节上还有待雕琢,比如上述的 header 编码问题,以及最近论坛里面提到的事务性操作问题,都还需要逐步地完善。ECS 服务的配置和使用都很容易,还有免费数据迁移、免费备案、云盾、LBS 等配套服务,可以看出这些服务都是为了解决站长的实际问题而推出的,非常贴心。

InfoQ:请你分享一下获奖的感受?

孟巍:本次参赛我的最大收获是,其实创意和创新每天都会时不时地冒出来,但是无论多小的创新,只要能够解决一个实际问题,就是有价值的,如果还能够把这个创新继续延续下去,成为产品,就能够帮助更多的遇到相同问题的人。我本次参赛的起源是看到朋友的公司 IT 资源有限,却又非常需要可靠的文档和邮件存储服务,这个问题一直无法得到彻底解决,毕竟对于一家公司来说,这两者有任何的数据丢失都是非常大的损失。通过思考我发现了阿里云 OSS 正是解决这个问题的最佳答案,只是还缺少中间层的适配工具,将文档和邮件变成 OSS 的 object 来实现永久存储。恰好我有能力制作这样的工具,我想,如果我能实现这样的工具帮助我的朋友,也应该同样能帮助到类似的初创公司。阿里云给予我这个奖项,我觉得充分肯定了我的这个思路和前期的尝试。我想,这次的经历会激励我在今后做更多的有实质需求的创新探索。

InfoQ: OSS 本地文件和邮件服务下一步的发展计划是什么?

孟巍:接下来我会继续开源和完善 OSS 本地文件服务、OSS 邮件服务,以及 OSS Delphi SDK,制作相关的帮助文档和操作视频,收集用户的修改意见和新需求。希望我开发的这两个小工具可以帮助更多的初创企业更便捷地使用阿里云 OSS 服务。同时我将继续深入挖掘企业 IT 管理和阿里云服务的契合点,在此基础上开发更多的实用型工具。

2012-12-12 00:092907
用户头像

发布了 89 篇内容, 共 31.1 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

使用Zabbix监控TiDB(一)

TiDB 社区干货传送门

实践案例

小红书数据架构及 TiDB 使用场景

TiDB 社区干货传送门

TiDB HTAP 深度解读

TiDB 社区干货传送门

【TiDB 4.0 新特性系列】BR 特性及原理解读

TiDB 社区干货传送门

线上mysql改表操作导致tidb同步延迟解决方法

TiDB 社区干货传送门

DM问题处理总结

TiDB 社区干货传送门

TiDB run and debug on M1

TiDB 社区干货传送门

实践案例 安装 & 部署

一个联合索引使用问题以及优化方案

TiDB 社区干货传送门

管理与运维 故障排查/诊断

Placement Rules 原理

TiDB 社区干货传送门

TiDB 底层架构

不定期更新,记录一些小知识

TiDB 社区干货传送门

监控 版本升级 安装 & 部署

pd集群多副本数据丢失以及修复实践

TiDB 社区干货传送门

实践案例

把云数据库服务变成黑盒子:ServerlessDB for HTAP丨Hacking Camp 进行时

TiDB 社区干货传送门

实践案例

PD api基础框架源码分析

TiDB 社区干货传送门

TiDB 底层架构

TiDB 赋权问题

TiDB 社区干货传送门

故障排查/诊断

Flink 最佳实践之 通过 TiCDC 将 TiDB 数据流入 Flink

TiDB 社区干货传送门

性能调优

TiDB AutoCommit OFF 问题

TiDB 社区干货传送门

实践案例 故障排查/诊断 新版本/特性发布

从使用者到开发者,知乎参与 TiDB 社区背后的故事

TiDB 社区干货传送门

实践案例 数据库架构选型

一次 meet_lock 告警异常处理过程

TiDB 社区干货传送门

实践案例 故障排查/诊断

PD 关于tso 分配源代码分析

TiDB 社区干货传送门

TiDB 底层架构

TiDB 监控架构解读

TiDB 社区干货传送门

监控

微众银行数据库架构演进及 TiDB 实践经验

TiDB 社区干货传送门

实践案例

伴鱼数据库之SQL审核系统

TiDB 社区干货传送门

伴鱼数据库之监控系统

TiDB 社区干货传送门

DM同步过程问题汇总

TiDB 社区干货传送门

TiDB 4.0 新 Feature 原理及实践:统一读线程池

TiDB 社区干货传送门

国产主流数据库调研

TiDB 社区干货传送门

性能调优 实践案例

【TiDB 最佳实践系列】PD 调度策略最佳实践

TiDB 社区干货传送门

实践案例

TiDB大规模删除实践

TiDB 社区干货传送门

管理与运维

TiDB Coprocessor 学习笔记

TiDB 社区干货传送门

TiDB 底层架构

PD api基础框架源码分析

TiDB 社区干货传送门

TiDB 底层架构

TiDB 记录日志原理解读

TiDB 社区干货传送门

TiDB 底层架构

阿里云大赛创意奖孟巍:邮件服务上的创新_阿里巴巴_水羽哲_InfoQ精选文章