.NET邮件类 vs SQL sp_send_dbmail

4
我们有一些应用程序需要定时发送电子邮件通知。我们一直在使用.net邮件类,但最近遇到了一些病毒检查器阻止25号端口的问题。对我来说,正确的解决方案是设置正确的排除规则以允许我们的应用程序继续工作。然而,有些人担心这可能会成为未来的巨大麻烦,特别是随着新组织的加入,他们更喜欢使用SQL dbmail。我并不特别喜欢这个选择,我更希望应用程序处理这个方面,但我不确定是否值得争取。使用.net邮件与SQL邮件相比,有哪些真正的优势呢?

1
如果你使用数据库,难道不也需要打开25号端口吗?我认为在数据库服务器上打开端口比在Web服务器上打开更加危险,毕竟黑客大多数时候都是针对数据库的。 - ryudice
抱歉我表达不够清晰。该应用程序是一个桌面WinForms应用程序。因此,端口必须在所有客户端机器上打开,而数据库服务器则不会有这个问题。 - cdaq
4个回答

2

您可以设置专用的邮件服务器,将其与网络隔离,除了某些IP外,仅允许25端口的入站连接。我认为这已经足够安全了。即使您切换到SQL服务器,也需要打开25端口并变得容易受攻击。您(或您的同事)可以管理风险而不是隐藏它们。


我们有一个专用的邮件服务器。问题在于公司政策规定客户机上必须关闭群发邮件功能。我们可以为我们的应用程序添加排除规则,但这可能需要大量的工作和繁琐的手续。其他团队成员认为收益不足以抵消成本。实施数据库邮件将很容易,并且不需要编写任何信函或填写表格。 - cdaq

1
它们都是使用25号端口的SMTP解决方案。
很可能会遇到相同的问题,这取决于扫描器检查/阻止的位置。

是的,但更改只需要在单个计算机上进行,而不是每个客户端盒子。 - cdaq
1
@LoboFan 使用专用邮件服务器。 - Andrey

1

你应该问自己以下问题:

真的想使用数据库服务器来发送电子邮件吗?

这完全取决于你将要发送多少电子邮件以及SQL服务器的繁忙程度。

如果你不会发送太多电子邮件,并且你的SQL服务器相当安静;那就继续吧。

如果(像我们大多数人一样)你没有那么幸运,那么就寻找其他解决方案吧。


也许答案就是选择最少阻力的路径。我们很幸运,因为每个组织通常只有不到100个用户,而且电子邮件相对较轻。电子邮件通常用于某些状态更改和文档路由。我只是不想失去 .net 提供的灵活性和可扩展性。 - cdaq
很不幸,我们的组织没有这么幸运。我们拥有一个拥有超过300,000名活跃成员的网站,还有一个比这更受欢迎的公共网站。当你拥有这种量级时,将所有电子邮件的发送都委托给数据库服务器似乎是一种疯狂的做法。它的工作是存储和检索数据,那么电子邮件在这个工作描述中的位置是什么呢?:-S - Doctor Jones
听起来这可能是最好的选择,因为它将涉及较少的工作并将实现您想要的精确目标。您绝对不希望直接从每个客户机发送电子邮件。 - Doctor Jones
感谢大家的讨论。我原本希望使用dbmail会有更多的缺点或者使用.net会有巨大的好处,但似乎并没有。我想我只能屈服了。 - cdaq

0

我的想法是重新设计系统的这个方面,使得电子邮件请求在数据库表中排队,然后由单台机器处理。

好处:

  • 您不必占用 SQL Server 的资源来处理大量电子邮件
  • 您不必为所有客户端机器的文书工作/排除集进行操作,只需处理实际执行工作的那台机器即可。

缺点:

  • 对于您的开发人员来说需要更多的工作!

我喜欢这个。我认为这是一个完美的解决方案,除了我们必须在远程站点至少有一位能干的人来确保服务设置和运行。不幸的是,我们没有这样的人,我可以看到服务在修补重启后无法重新启动,然后邮件停止工作直到我们通过电话解决问题。过去我们曾经遇到过类似的问题,旧版的xp_sendmail会出现服务器重启后邮件服务无法重新启动的情况。 - cdaq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接