gpt4 book ai didi

phpMailer plesk centos 多IP设置

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:29 24 4
gpt4 key购买 nike

我有一个 Plesk centos 6 云服务器,它在两个不同的 IP 上运行两个域。其中一个域具有子域,这些子域通过指定的 smtp 服务器(在本例中为 gmail)通过 phpMailer 发送电子邮件。

虽然我不认为问题出在执行 phpMailer 的级别或可以在执行 phpMailer 的级别上得到缓解,但这里有一个示例来演示:

$mail = new PHPMailer;
$mail->SMTPDebug = false;
$mail->isSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->CharSet = 'UTF-8';
$mail->Username = $GLOBALS['gmail'];
$mail->Password = $GLOBALS['email_password'];
$mail->SMTPSecure = "tls";
$mail->Port = 587;
$mail->From = $GLOBALS['gmail'];
$mail->FromName = $GLOBALS['sender'];
$mail->addReplyTo($GLOBALS['gmail'], "Reply");
$mail->isHTML(true);
$mail->addAddress($this->data['Email']);
$mail->Subject = "...";
$mail->Body = "...";
$mail->Send();

现在我在 postmaster.live.com 的智能网络数据服务中看到,由于垃圾邮件的证据,两个 IP 都已被阻止。

调查后我发现了我怀疑的问题 - 在电子邮件 header 的 Received 部分,发送子域的名称正确识别,但发送 IP 地址是另一个域的 IP 地址.像这样:

收到:来自 正确的 subdomain.domain.com(不正确的反向 DNS 域 [不正确的 IP])由 smtp.gmail.com .. .

phpMailer 似乎从错误的 IP 地址连接到 smtp.gmail.com,结果是反向 DNS 查找解析为另一个域的查找——这很可能是 Microsoft 发现的。

在 Plesk 中(工具与设置 -> IP 地址),应该是正确域的 IP 列在最前面,并且是粗体,表明这应该是默认值。

更新:现在我尝试了:

        $options = array(
'socket' => array(
'bindto' => '**the required IP**',
),
);
$socket_context = stream_context_create($options);
$this->smtp_conn = stream_socket_client(
$host . ":" . $port, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $socket_context
);

这产生了以下错误,将问题具体缩小为无法绑定(bind)与域关联的 IP:

PHP 警告:stream_socket_client():无法绑定(bind)到“domainIP:587”,系统说:权限被拒绝

非常感谢任何帮助。

最佳答案

幸运的是,找到了一个解决方案 - 当将 bindto 参数放置在传递给 PHPMailer 的连接方法定义中的 stream_context_create 的选项对象中时,由于未知原因 PHP 不允许 - 在调用方法时直接设置它确实有效,如下所示:

    $mail->SMTPOptions = array(
'socket' => array(
'bindto' => "specificIP:0",
),
);

关于phpMailer plesk centos 多IP设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47303154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com