![APACHE - PHP - 退回电子邮件](https://linux22.com/image/796545/APACHE%20-%20PHP%20-%20%E9%80%80%E5%9B%9E%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6.png)
我想通过处理我们网站上收到的所有退回邮件来改进我们的邮件服务器列表。我有一个拥有 8000 多名用户的网站,另一个拥有 1500 多名用户的网站,他们每秒都会收到各种通知电子邮件,例如工作提醒、电子邮件提醒、
我在 APACHE 服务器上使用带有 EXIM 的 POP 连接,大多数脚本都是基于 PHP 语言动态生成电子邮件。
我遇到的问题
- 但有些用户很久以前就注册了,现在不少用户的电子邮件地址都被退回了
- 有些用户使用虚假电子邮件注册,例如[电子邮件保护]虽然不存在,但却是一个有效的电子邮件地址,有没有可能阻止这种情况,而无需要求他们登录电子邮件帐户并点击大多数时候不起作用的链接......(对最终用户来说太烦人了)
- 如果我知道服务器不存在不必要的电子邮件,可以避免吗?
我需要的解决方案
有没有什么办法可以将退回的电子邮件列表下载到某处(WHM/Cpanel),我知道 exim mail 有它但是不可读(我需要一个像 CSV 或类似的文件来扫描它们并编写一个 php 脚本来从数据库中删除用户?)
我需要知道 PHP 中是否有任何函数可以动态检查电子邮件地址是否存在?这样我就可以在邮件程序类中设置电子邮件发送函数,在发送之前进行检查。
在服务器上,退回的电子邮件会消耗大量的服务器资源吗?比如处理它们时占用的内存/CPU?或者它们占用的资源很少,我们根本不必担心这个问题?
是否有一个开源或 Linux 软件可以捕获它们并以报告的形式查看它们并清理它们?
我不是 Linux 专家或服务器管理员,但我做了很多 PHP 编码,因此请描述解决方案,特别是如果它们是 Linux 命令
谢谢你!
答案1
为了更好地管理 - 请阅读上述帖子并实施(如果可能)邮件列表管理解决方案,考虑到您需要管理大约 9000 个用户!
php check existence of an email
使用“ ”进行快速谷歌搜索
http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/
希望有帮助
答案2
您所要求的内容非常复杂,如果实施不当,可能会导致垃圾邮件过滤器超负荷运行。为了正确回答这个问题,我假设您了解 RFC2822 中描述的电子邮件结构。
请阅读第 3.6.2 节 - 发件人字段和第 3.6.7 节 - 跟踪字段。如果您想要一个解决方案来检测哪些电子邮件被退回,最好的办法就是重定向退回的电子邮件,以便可以处理它们。
当适用于标头中指定的地址时,将始终发送退回电子邮件return-path
。请注意,这也是在根据 SPF 记录验证电子邮件时检查的地址。这(在大多数情况下)不需要与地址匹配,from
但是某些垃圾邮件过滤器会将其检测为垃圾邮件。因此,在某些情况下,您还需要指定sender
要匹配的标头,return-path
并且from
地址仍然可以或多或少是任何内容。为了改进此解决方案,可以生成一个唯一的 ID 作为return-path
进入邮件服务器上的 catch all 帐户并使用简单脚本进行处理。一旦在与相应电子邮件匹配的地址上收到消息,就会自动取消订阅。
我要再次强调,配置这样的解决方案时要小心,因为如果没有正确实施和测试,您可能会在眨眼间被列入黑名单。
至于在发送邮件之前检查邮件是否存在,我不会这么做。首先,大量邮件域配置错误,发送到“已验证”地址的邮件仍然会被退回。其次,您的 MTA 已经处理了不存在的地址,因为它无法将邮件发送到似乎不存在的地址。您实际上是在这个方面加倍了负载。
答案3
如果您想处理收到的电子邮件(包括退回的邮件),那么 procmail 提供了极大的灵活性(FROM_DAEMON maro 应该匹配所有退回的邮件),然后只需将其传输到 PHP 脚本中即可。