9

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

我现在的计划是:

  1. 设置存储桶(包罗万象)收件箱
  2. 为每个买家生成一个随机密钥,该密钥将是电子邮件地址的用户特定(上面的“1425415125”)部分
  3. 监视存储桶收件箱并解析出此用户特定部分。一旦我知道用户,电子邮件就可以转发到正确的地址

我的问题如下:

  1. 你能看到上述解决方案的任何问题吗
  2. 现有问题是否有任何开源解决方案
  3. 在开发这样的系统时,是否有任何需要注意的问题?

提前致谢

J.P

4

6 回答 6

6

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

我在您的设置中看到的一个问题(也许这只是我的一个误解)是,当您保护用户的原始电子邮件地址时,他们将基本上永远可以通过 1425415125@mysite.com 联系到他们。如果我了解 craigslist 的工作方式,每个帖子都有不同的电子邮件地址,一旦帖子被删除/删除(或不久之后),电子邮件地址就会停止工作。这样一来,人们就不能一直在该电子邮件地址上骚扰您。这个问题的解决方案很简单,只需让电子邮件地址对应一个帖子 ID 或其他一些 ID,而不是数据库中的用户 ID。查找将同样快,但他们每次都会有一个新的电子邮件地址。

于 2011-07-15T13:42:12.627 回答
1

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

我个人的建议是查看HMailServer,它有一个 COM API(管理端是用 PHP 编写的,因此需要遗留互操作),它是免费和开源的,并且有很好的文档记录。它没有内置邮件管道,但由于 API 和对在服务器端消息事件上运行的脚本的支持,它很容易扩展

高温下,

本杰明

于 2011-07-05T16:01:06.157 回答
1

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

于 2011-07-06T08:30:23.903 回答
0

您看起来这样做的方式是我创建类似服务的方式。我不建议您编写自己的 smtp 服务器。使用现有的邮件服务器,只使用轮询或一些基于事件的 api。

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

编辑:我只是注意到这已经在这里得到了更好的解释。将传入的电子邮件通过管道传输到 Windows IIS SMTP 上的脚本?

于 2011-07-12T04:36:59.023 回答
0

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

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

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

在这种情况下,您将不得不使用一些流行阅读器库,并安排您的应用程序频繁运行。

于 2011-07-15T11:11:54.210 回答
0

In addition to email, you may consider a pull rather than push delivery mechanism, e.g: a message center web frontend or RSS feed. I say this because deliverability problems to various ISPs can be very difficult to troubleshoot and in my experience your users will never believe it's their ISP.

于 2011-07-16T02:15:46.847 回答