我正在开发一个网站,我想通过匿名买家的电子邮件地址来保护他们。与craigslist的系统类似,当卖家需要联系买家时,他们应该能够向匿名地址发送电子邮件,例如1425415125@mysite.com然后将其路由到用户的电子邮件地址。
我现在的计划是:
- 设置一个bucket(包罗万象)收件箱
- 为每个买家生成一个随机密钥,该密钥将是电子邮件地址中特定于用户的部分(如上所述为"1425145125")
- 监控bucket收件箱并解析出此特定于用户的部分。一旦我认识了用户,电子邮件就可以转发到正确的地址
我的问题如下:
- 你能看到上面的解决方案有什么问题吗
- 对于现有的问题,有什么开源的解决方案吗
- 在开发这样的系统时,有什么问题需要注意吗
提前感谢
JP
我做了一些相关的事情,尽管不太一样。我在现有的pop3服务器上设置了一个包罗万象的收件箱(我猜你可能已经有了)。然后,我使用OpenPop.NET读取计时器上的所有新消息(比如每30秒)。在我的情况下,我只处理邮件,但生成一条新邮件到合适的地址并复制正文,然后在SMTP服务器上发送新邮件,这很容易。
我看到你的设置有一个问题,也许这只是我的误解,那就是当你保护用户的原始电子邮件地址时,他们将继续在1425415125@mysite.com基本上永远。如果我了解craigslist的工作方式,每条帖子都有不同的电子邮件地址,一旦帖子被删除/删除(或不久后),电子邮件地址就会停止工作。这样一来,人们就不会一直在那个电子邮件地址上骚扰你了。这个问题的解决方案很简单,只需让电子邮件地址协同响应帖子id或其他id,而不是数据库中的用户id。查找也会很快,但他们每次都会有一个新的电子邮件地址。
您可能希望查看邮件"管道",即某人向邮件服务器发送电子邮件的能力,然后邮件服务器会立即发送到可执行文件,然后可执行文件会将您的邮件转发给收件人(根据管道消息的传入地址从数据库中提取真实的电子邮件地址)。
我个人的建议是看看HMailServer,它有一个COM API(管理端是用PHP编写的,因此需要传统的互操作),是免费和开源的,并且有很好的文档记录。它没有内置邮件管道,但考虑到API和对在服务器端消息事件上运行的脚本的支持,它很容易扩展
HTH,
Benjamin
我认为这个解决方案是有意义的,在很多情况下都在使用。最困难的部分是实际接收信息。如果需要的话,你可以在你的网络应用程序中处理所有这些。我写了一篇博客文章,重点介绍了在你的网站应用程序中接收电子邮件的几种方法。它主要适用于Rails,但概念应该是可转移的。
您想要做的是我创建类似服务的方式。我不建议您编写自己的smtp服务器。使用现有的邮件服务器,只需使用轮询或一些基于事件的api。
使用第三方邮件服务器的好处是您可以在其上使用现有的备份和管理工具
编辑:我刚刚注意到这里有一个更好的解释。是否将传入电子邮件管道传输到Windows IIS SMTP上的脚本?
我认为您的设置没有任何问题,事实上这是正确的做法,因为如果您计划的应用程序失败,电子邮件仍将在包罗万象的电子邮件框中。只有当电子邮件成功发送给某人后,才应删除该电子邮件。您将能够监视和记录自己的应用程序的活动,以监视进度和失败。
我不推荐管道,因为如果由于任何原因管道成功,但你的exe崩溃,你会丢失电子邮件。追踪将很困难。无法安排作业。
如果您的应用程序独立于邮件服务器,那么管理它并尽可能更换邮件服务器是很容易的。它很容易扩展。
在这种情况下,您将不得不使用一些pop阅读器库,并安排您的应用程序频繁运行。
除了电子邮件,您还可以考虑拉式而非推式传递机制,例如:消息中心web前端或RSS提要。我这么说是因为各种ISP的交付问题可能很难解决,根据我的经验,你的用户永远不会相信这是他们的ISP。