PHP通过具有internet连接的代理服务器发送没有internet连接的电子邮件
我有一个PHP应用程序,它在没有internet的情况下运行。我想使用这个应用程序通过具有活动internet连接的本地代理服务器发送电子邮件。这是一个非常广泛的问题,比这里更适合于服务器故障。SMTP的存储转发体系结构意味着代理电子邮件并不特别容易,在高可用性情况下,它主要用于在入站服务器集群之间进行负载平衡,而不是用于可靠性大大降低的出站服务器 通常的做法是使用中继而不是代理。您发送到中继,然后中继将转发到internet。在代理服务器上安装邮件服务器,并将其配置为本地服务器邮件服务器的中继。有很多关于如何做到这一点的指南,例如。几乎所有这类指南都假设您是通过gmail等需要身份验证的外部服务发送的,因此您会看到很多关于sasl和线路的引用,但是,由于它位于您的本地网络上,您可以将其IP改为白名单,这样您就可以在无需身份验证的情况下进行中继。在postfix中,这是根据配置的 完成此操作后,请使用命令行邮件客户端从服务器向自己发送消息,以进行测试:PHP通过具有internet连接的代理服务器发送没有internet连接的电子邮件,php,email,phpmailer,proxy-server,Php,Email,Phpmailer,Proxy Server,我有一个PHP应用程序,它在没有internet的情况下运行。我想使用这个应用程序通过具有活动internet连接的本地代理服务器发送电子邮件。这是一个非常广泛的问题,比这里更适合于服务器故障。SMTP的存储转发体系结构意味着代理电子邮件并不特别容易,在高可用性情况下,它主要用于在入站服务器集群之间进行负载平衡,而不是用于可靠性大大降低的出站服务器 通常的做法是使用中继而不是代理。您发送到中继,然后中继将转发到internet。在代理服务器上安装邮件服务器,并将其配置为本地服务器邮件服务器的中继
echo "test" | mail -s "Relay test" -a "From: you@example.com" recipient@example.com
您可以通过读取每个邮件的日志文件来跟踪该邮件从本地服务器、通过中继以及到您自己的邮件服务器的传递
一旦知道基础架构正在工作,您可以通过两种方式从PHPMailer使用它:直接与中继服务器对话:
$mail->isSMTP();
$mail->Host = '10.0.0.2'; //Your relay's internal IP
$mail->SMTPAuth = false; //Don't need authentication if whitelisted
//Prevent PHPMailer trying to use encryption; it won't work with a literal IP
$mail->SMTPAutoTLS = false;
$mail->SMTPSecure = false;
或者使用服务器的本地邮件服务器为您进行中继:
$mail->isSMTP();
(默认属性将起作用,所以您需要做的就是启用SMTP)。这是一个非常广泛的问题,比这里更适用于服务器故障。SMTP的存储转发体系结构意味着代理电子邮件并不特别容易,在高可用性情况下,它主要用于在入站服务器集群之间进行负载平衡,而不是用于可靠性大大降低的出站服务器 通常的做法是使用中继而不是代理。您发送到中继,然后中继将转发到internet。在代理服务器上安装邮件服务器,并将其配置为本地服务器邮件服务器的中继。有很多关于如何做到这一点的指南,例如。几乎所有这类指南都假设您是通过gmail等需要身份验证的外部服务发送的,因此您会看到很多关于sasl和线路的引用,但是,由于它位于您的本地网络上,您可以将其IP改为白名单,这样您就可以在无需身份验证的情况下进行中继。在postfix中,这是根据配置的 完成此操作后,请使用命令行邮件客户端从服务器向自己发送消息,以进行测试:
echo "test" | mail -s "Relay test" -a "From: you@example.com" recipient@example.com
您可以通过读取每个邮件的日志文件来跟踪该邮件从本地服务器、通过中继以及到您自己的邮件服务器的传递
一旦知道基础架构正在工作,您可以通过两种方式从PHPMailer使用它:直接与中继服务器对话:
$mail->isSMTP();
$mail->Host = '10.0.0.2'; //Your relay's internal IP
$mail->SMTPAuth = false; //Don't need authentication if whitelisted
//Prevent PHPMailer trying to use encryption; it won't work with a literal IP
$mail->SMTPAutoTLS = false;
$mail->SMTPSecure = false;
或者使用服务器的本地邮件服务器为您进行中继:
$mail->isSMTP();
(默认属性将起作用,因此您只需启用SMTP即可)。在系统级别,这取决于您的网络设置-代理可以用作任何更广泛网络流量的默认网关。因此,如果您可以
ping
电子邮件服务器-您可以只引用电子邮件服务器,网络将选择适当的根目录访问它。在系统级别上,它取决于您的网络设置-代理可以用作任何更广泛网络流量的默认网关。因此,如果您可以ping
e-mail服务器-您可以只引用e-mail服务器,网络将选择适当的根目录访问它。