Hostinger PHP Mail 限制详解:使用 SMTP 提升邮件送达率
使用 mail() 这类简单的 PHP 函数发送邮件,对于联系表单或网站通知来说似乎是个简单的解决方案。然而,这种方法已经非常过时,在安全性和送达率方面存在严重限制。
通过 php mail() 发送的邮件通常缺少正确的身份验证标头,因此更容易被接收服务器标记为垃圾邮件,甚至直接被拒收。
为了解决这一问题并保护我们服务的完整性,我们对通过 PHP 发送的未经身份验证的邮件实施了特定限制。
了解限制
为了保持较高的邮件送达率标准并防止滥用,Hostinger 对通过 php mail() 等未经身份验证的方式发送的邮件进行了限制。采取这些措施是为了:
- 保护邮件信誉:以这种方式发送的邮件通常跳过了必要的身份验证(SPF、DKIM 和 DMARC)检查,因此更容易被过滤为垃圾邮件。
- 确保安全:垃圾邮件发送者经常利用基础的 PHP mail 函数批量发送邮件。通过要求更强的身份验证方式,我们能帮助保护你和你的用户的安全。
因此,如果你正在使用 php mail() 或类似的简单邮件函数,一旦超出以下限制,可能会发现部分邮件未能按预期送达:
- 每分钟:最多 10 封邮件
- 每天:最多 100 封邮件
如何改进邮件发送
我们强烈建议不要使用基础的 PHP 函数,而是通过 SMTP 发送邮件——这是一种更安全、经过身份验证的方式。可通过以下两种简单方式实现:
- PHPMailer 或类似的库 [如何使用 PHPMailer 发送邮件]
- SMTP 插件,例如 WP Mail SMTP [什么是 WordPress SMTP……或 Mail for Laravel]
由于 SMTP 包含正确的身份验证,它可以提高邮件进入收件箱的概率,同时遵守邮件方案的发件限额。如果你拥有我们的 Business Starter 或 Business Premium 邮箱,每日发件限额至少会提高 10 倍,这意味着你的网站能收到更多咨询。
通过 sendmail 日志进行监控
如果你通过 PHP 脚本发送邮件,务必监控发送的邮件数量,尤其是在接近限额时。
为此,每个主机账户现在都包含一个 Sendmail 速率限制日志。该日志可以让你:
- 查看哪些邮箱地址发送量最大
- 确认何时触发了速率限制
- 跟踪发送速率回落至正常水平的速度
该日志位于你的文件管理器中,每小时自动更新一次。日志路径:
/home/username/.logs/exim.log输出示例:
[2025-05-13 03:17:22] RATE LIMIT EXCEEDED - Mailbox: email@domain.com - Rate: 2935.7 (daily)[2025-05-13 03:17:22] RATE LIMIT EXCEEDED - Mailbox: noreply@domain.com - Rate: 2936.7 (daily)如何使用日志:
- 时间戳: [2025-05-13 03:17:22]
- 邮箱: email@domain.com
- 发送速率: 2935.7
- 限额类型:(每日或每分钟)
这表示 email@domain.com 的发送速率为 2935.7 封/天,超过了每日 100 封的限制。
限额如何重置
随着发送活动减少,速率限制会逐步重置。例如:
- 如果一段时间内没有发送邮件,速率就会下降。当账户接近合规状态时,你会看到更少的”RATE LIMIT EXCEEDED”记录。
- 一旦速率降至允许的限额(每天 100 封或每分钟 10 封)以下,限制将自动解除。
提示:定期查看日志,以便:
- 找出发送量最大的邮箱账户
- 发现发送高峰时段
- 了解限额何时即将重置
这有助于你及时采取行动——将发送量大的账户切换到 SMTP,或调整自动发送邮件的时间安排。