2011-11-26 71 views
3

为了总结我的目标,我真的只是寻找一种简单的开源方法,它允许我创建和维护一个(最好是noSQL db)一个/多个远程IMAP电子邮件帐户的备份/实现,并基于每个用户进行同步每个个人用户的电子邮件帐户使用简单,低成本的解决方案,可轻松扩展,以高效的方式消耗服务器资源,增加功能,每个用户需要能够通过简单地将他的新imap帐户添加到他的中央电子邮件存档中现有电子邮件客户端使用通过此存档服务器/设置提供的imap服务器,用户名和密码。如何在couchdb/NoSQL数据存储上实现IMAP服务器?

更具体地:

我一直在寻找一些类型的可伸缩的开源溶液可以在其允许以下的云中运行(并且因此容易地向外扩展):

1)允许我指定各种IMAP服务器与登录信息,用于访问这些电子邮件帐户和下载/同步每个帐户内的所有电子邮件(希望包括文件夹/标签)

2)关于数据库用于存储每个帐户的所有电子邮件,我正在研究可扩展解决方案如couchdb或mongodb,这大概会保持每个电子邮件的简单索引。此索引将保留每封电子邮件的基本信息,例如标题列,包括:从,到,数据时间戳,主题行,关联的文件夹/标签,首次同步日期时间,上次同步日期时间,读/未读状态,附件,附件文件名/大小/类型以及它所属的相关IMAP帐户,....)

3)根据所有原始电子邮件的存储情况,包括其附件我认为应该下载每个单独的电子邮件作为具有唯一文件名/消息ID的单独文件,其将在主电子邮件索引内引用,因此所有这些原始电子邮件都可以使用Amazons S3存储解决方案来存储,以实现无限的可扩展性。

到目前为止,我相信现有的Opensource解决方案可以用于或定制以实现这些目标......最值得注意的是,“offlineIMAP”似乎提供了所有这些功能+更多,但如果您意识到不同替代请让我知道。

好了,现在我不确定元素...

5)我需要的这里是利用任何类型的电子邮件客户端,它本身支持通过IMAP连接访问电子邮件的方式,现在给我能够连接到我的自定义电子邮件数据库,就好像它是一个普通的imap电子邮件服务器一样。因此,我需要某种类型的连接器,它将imap协议连接到在couchdb上执行的操作(或使用任何数据存储)。当然,任何标准的iMac功能都应该是可能的,例如搜索/复制/移动/删除/ ...,通过检索Amazon S3存储系统中的关联电子邮件来检索邮件的详细信息。 (我只是假设这种方法最大限度地降低了成本这样做

假设我的逻辑和方法在使用此方法中使用couchdb/mongodb方面是合理的,那么在我看来,这安装程序应该确实允许我轻松地将其扩展到多个用户,并且访问存档应该相当快...

有没有人有与实现这些目标相关的经验,建议或建议/脚本?

如果电子邮件归档设置和使用Amazon S3存储实际电子邮件,我可以想到的唯一不利的副作用是用户无法通过关键字搜索其归档的内容(正文) 。我想这可以通过简单地向couchdb电子邮件索引添加另一列来解决,该列可以从电子邮件中提取所有实际的消息文本(不包括任何以前的回复/转发内容中的内容)。

+1

DB!= IMAP服务器。数据库不会说IMAP协议 – 2011-11-26 04:17:49

+0

自然我知道,couchdb和数据库通常不提供通过IMAP协议进行连接的能力,因此我正在寻找建立这种连接的最佳方法。 –

回答

1

关于5): 您可能想要看看Apache James,afaik它有很多存储引擎,您可以使用/改编其中的一个。这样它可以为你的数据库提供一个IMAP接口。当然,它不会与其他服务器同步,您必须使用已经提到的其他服务器来做到这一点。

1

你想用这个完成什么?

  • 备份IMAP服务器?
  • 网络访问电子邮件?
  • 用户可浏览的电子邮件存档?
  • ...?

你是IMAP管理员吗?

如果没有,您必须非常小心,因为它具有将其他人的电子邮件复制到另一个存储/数据库的法律影响。

可以on Rails的使用Ruby如下:

创建Rails应用程序,它连接到你的选择(如MongoDB的), 的数据库,并使用Ruby的Net ::的imap库连接到IMAP服务器,然后读取数据并将其保存为数据库中所需的格式。

确保保存所有消息部分,例如还包括消息ID,时间戳和标题。

http://www.ruby-doc.org/stdlib-1.9.2/libdoc/net/imap/rdoc/Net/IMAP.html

如果你只是想有一个备份:

如果你有直接磁盘访问IMAP服务器,可能是一个更好的方式来做到这一点是使用Rsync创建存储电子邮件的磁盘分区副本(不必解析所有电子邮件并将其放入数据库)。

http://en.wikipedia.org/wiki/Rsync

注:

我认为,在一般情况下,它是不是一个好主意,试图保存这些邮件在一个单独的数据库。您基本上绕过了IMAP的安全模型。如果您只希望用户拥有基于Web的电子邮件视图,则可以使用带有Web邮件界面的IMAP客户端。

+0

老实说,我试图实现上述所有:)一个可以由用户搜索的自动备份存档 –

1

这让我想起了在Hadoop HDFS之上实施的GSOC项目。我已经收集了更多详细信息here,但我不确定要求是否完全相同。