3

我的应用程序的用户可以通过他们的 SMTP 信息发送电子邮件。

我想 100% 代表他们的 SMTP 发送电子邮件。如果有人开始发送垃圾邮件,我不希望其他用户受到负面影响。

但是在收到的 headers 中,我看到了我的服务器 IP,所以我想每个人都会受到影响。

如何确保服务器不负责?我需要确保 1 个人不能搞砸其他人。

4

2 回答 2

1

由于您是这种情况的中间人,即您代表其他人连接到 SMTP 服务器,因此由您的应用程序来处理垃圾邮件。您无法仅在网络级别解决此问题。

于 2012-12-17T22:10:27.143 回答
0

由于您在从 PHP 发送的电子邮件的标头中看到了您的服务器 IP,因此我可以假设:

  1. 您正在运行自己的 SMTP 服务器(因此标题中出现“我的服务器 IP”)?
  2. 您的用户可以通过身份验证(可能是 SASL)通过 SMTP 访问此服务器吗?
  3. 当您从 PHP 向 SMTP 服务器提交邮件时,您是在使用 SMTP 凭据进行身份验证吗?

如果这是真的,那么您确实有一些有限的选择来防止用户被入侵并发送垃圾邮件。

第一个选项是在 PHP 应用程序中实现速率限制,使用持久存储来记录一段时间内发送的电子邮件数量。但是,此解决方案非常有限,因为它不包括滥用 SMTP 服务器本身。

我的建议是调查策略服务器,例如policyd并实施配额。使用指定每小时最大发送速率的 SASL 用户名的配额将有助于降低被添加到垃圾邮件黑名单的可能性。如果您选择的策略服务器支持达到配额的通知,我也会实施(允许您识别定期达到配额的用户,表明帐户有问题)。

决定您希望限制发送的速率是困难的,因为您必须平衡用户需求和保护。也许一个好的起点是监控您的用户当前每小时发送的平均电子邮件数量,并以此为起点?

同样,以上假设上述三点是正确的。如果您只是将邮件传递给 SMTP 守护程序而无需身份验证,或者服务器是外部的并且无法修改,那么您将不得不在 PHP 中强制执行限制。

于 2012-12-18T00:51:13.390 回答