电子邮件匿名化与C#中的Craigslist类似

时间:2011-07-05 14:51:16

标签: c# email craigslist anonymize

我正在开发一个网站,我希望通过匿名化他们的电子邮件地址来保护买家。类似于craigslist的系统,当卖家需要联系买家时,他们应该能够发送电子邮件到匿名地址,如1425415125 @ mysite.com然后将路由到用户的电子邮件地址。

我现在的计划是:

  1. 设置一个水桶(全包)收件箱
  2. 为每位买家生成一个随机密钥,该密钥将是电子邮件地址的用户特定('1425415125'上方)部分
  3. 监控存储桶收件箱并解析此用户特定部分。一旦我认识了用户,就可以将电子邮件转发到正确的地址
  4. 我的问题如下:

    1. 您能否看到上述解决方案的任何问题
    2. 是否存在针对现有问题的开源解决方案
    3. 在开发这样的系统时,有没有人应该注意的问题?
    4. 提前致谢

      JP

6 个答案:

答案 0 :(得分:6)

我做了一些相关的事情,但并不完全相同。我在现有的pop3服务器上设置了一个捕获所有收件箱(你可能已经有一个我猜的)。然后我使用OpenPop.NET来读取计时器上的所有新消息(比如说每30秒)。在我的情况下,我停止了处理消息,但是很容易生成到适当地址的新消息并将正文复制,然后在SMTP服务器上发送新消息。

我在您的设置中看到的一个问题,也许只是我的一个误解,就是当您保护用户的原始电子邮件地址时,他们将继续可以通过1425415125@mysite.com继续访问。如果我理解craigslist的工作方式,每个帖子都有不同的电子邮件地址,一旦删除/删除帖子(或不久之后),电子邮件地址就会停止工作。这使得人们不仅可以不断地窃听您的电子邮件地址。这个问题的解决方案很简单,只需将电子邮件地址同时发送到帖子ID或其他ID,而不是数据库中的用户ID。查找将同样快,但每次都会有一个新的电子邮件地址。

答案 1 :(得分:1)

您可能希望查看邮件“管道” - 某人向邮件服务器发送电子邮件的能力,然后立即将其投掷到可执行文件,然后将邮件转发给收件人(通过提取真实的电子邮件)数据库中的地址,基于来自管道消息的传入地址。)

我的个人建议是查看HMailServer,它有一个COM API(管理端用PHP编写,因此需要传统的互操作),是免费的,开源的,非常好-documented。它没有内置的邮件管道,但是根据API和对server-side message events

上运行的脚本的支持,它很容易扩展

HTH,

本杰明

答案 2 :(得分:1)

我认为这个解决方案很有意义并且在很多情况下都在使用。最难的部分实际上是接收消息。如果需要,您可以在Web应用程序中实际处理所有这些。我写了一篇博文,强调了receive email in your web app的几种方法。它主要适用于Rails,但概念应该是可转移的。

答案 3 :(得分:0)

你想要这样做是我创建类似服务的方式。我不建议你编写自己的smtp服务器。使用现有的邮件服务器,只使用轮询或某些基于事件的API。

使用第三方邮件服务器的好处是您可以使用现有的备份和管理工具。

编辑:我刚刚注意到这里有一个更好的解释。 Pipe incoming email to a script on Windows IIS SMTP?

答案 4 :(得分:0)

我没有看到您的设置有任何问题,事实上这是正确的方法,因为如果您的预定应用程序失败,电子邮件仍将在收件人邮箱中。只有将电子邮件成功发送给某人后,才能删除该电子邮件。您将能够监视和记录您自己的应用程序的活动,以监控进度和失败。

我不建议使用Piping,因为如果由于任何原因管道成功但你的exe崩溃,你将丢失电子邮件。跟踪将很困难。无法安排作业。

如果您的应用程序独立于邮件服务器,则可以轻松管理它并尽可能替换您的邮件服务器。它很容易扩展。

在此,您将不得不使用一些流行阅读器库,并安排您的应用程序经常运行。

答案 5 :(得分:0)

除了电子邮件,您可以考虑使用拉取而不是推送传送机制,例如:消息中心Web前端或RSS源。我这样说是因为各种ISP的可传递性问题很难排除故障,根据我的经验,您的用户永远不会相信它是他们的ISP。