【问题标题】:Serverload using own postfix with mail() vs phpmailer with external smtpServerload 使用带有 mail() 的自己的 postfix 与带有外部 smtp 的 phpmailer
【发布时间】:2019-09-05 03:11:08
【问题描述】:

目前我有一个较小的 VPS 服务器 ~20%-30% 平均加载 3 个网站。客户需要发送电子邮件以获取订单、注册、发票和时事通讯。

我告诉我的客户,因为他喜欢连续发送时事通讯,他应该在域名托管服务商上使用外部邮件服务以减少服务器负载。

但我不确定,服务器负载有什么不同 - 如果邮件通过 phpmailer 移交给外部 SMTP 服务器与从自己的 postfix 传递,有多少?

附带问题:如何解决我有时通过外部 SMTP 使用 phpmailer 发送的超时问题。 (php try - catch ?)

【问题讨论】:

    标签: php performance email phpmailer postfix-mta


    【解决方案1】:

    负载应该不是问题。即使在低功率的服务器上,您也可以每秒发送数百条消息。也就是说,您的其他假设是正确的;您可以通过将服务转移到其他地方来减少负载,包括转移到其他电子邮件服务。

    就 PHPMailer 而言,无论是本地的还是远程的,它运行的代码都是相同的。与mail() 相比,使用 SMTP 可能消耗更少的资源,因为mail() 函数所做的只是打开与 localhost 的同步 SMTP 连接。通常你应该避免使用mail();它比 SMTP 到 localhost 更慢且更不安全。

    如果您遇到间歇性 SMTP 超时,我怀疑您的托管服务提供商或电子邮件主机可能会限制您的电子邮件发送。处理这个问题的正确方法是运行本地邮件服务器(它将异步处理排队和重试,并且比 PHP 更有效),并通过 SMTP 从 PHPMailer 向 localhost 提交消息 - PHPMailer 不是邮件服务器.可以在the PHPMailer wiki about sending mail to lists 中找到一般性能建议。

    【讨论】:

    • 我已经安装了一个邮件服务器(postfix),但是这个设置为发送不中继,目前其他站点都在发送。我想我不能在那里进行自己的设置,因为 main.cf 对于所有订阅都是全局的。 (使用 plesk)
    • 我不确定我是否理解您的区别 - 对于本地用户而言,发送实际上与“本地中继”相同。也许在不同的本地端口上运行第二个邮件服务器?
    猜你喜欢
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    • 2018-01-01
    相关资源
    最近更新 更多