Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP发送电子邮件时使用SSL/TLS_Php_Ssl_Phpmailer - Fatal编程技术网

从PHP发送电子邮件时使用SSL/TLS

从PHP发送电子邮件时使用SSL/TLS,php,ssl,phpmailer,Php,Ssl,Phpmailer,我是非常新的电子邮件服务器和发送电子邮件与PHP 在发送到收件人的邮件服务器之前,是否可以使用SSL或TLS对服务器上的PHP脚本发送的电子邮件进行加密 我需要确保只有预期的收件人才能阅读电子邮件,以防在发送到邮件服务器的途中被截获 我不确定这是否可行,因为收件人的邮件服务器不知道公钥,对吗?那么它如何解密电子邮件呢 作为背景,我实际上并没有为任何人托管电子邮件帐户,所以这不是一个用户使用我的服务器进行身份验证并下载托管在那个里的电子邮件的情况。我刚收到一个脚本,它会触发一封要发送的警报电子邮件

我是非常新的电子邮件服务器和发送电子邮件与PHP

在发送到收件人的邮件服务器之前,是否可以使用SSL或TLS对服务器上的PHP脚本发送的电子邮件进行加密

我需要确保只有预期的收件人才能阅读电子邮件,以防在发送到邮件服务器的途中被截获

我不确定这是否可行,因为收件人的邮件服务器不知道公钥,对吗?那么它如何解密电子邮件呢

作为背景,我实际上并没有为任何人托管电子邮件帐户,所以这不是一个用户使用我的服务器进行身份验证并下载托管在那个里的电子邮件的情况。我刚收到一个脚本,它会触发一封要发送的警报电子邮件”notifications@danbaylis.com“(这不是服务器上的真实电子邮件地址,因此您无法回复)到用户的真实电子邮件地址(我的应用程序知道)。我需要一种方法来确保这封电子邮件是安全地从我的服务器上的PHP发送到收件人邮件服务器

我已经研究了PHP中的mail()函数以及PHPMailer类,但我不确定如何配置这两种方法来安全地发送电子邮件

我所有的研究只是展示了如何在我的服务器上安装SSL,这样用户就可以安全地下载存储在我服务器上的电子邮件——这不是我在这里要做的

我运行的是Centos5.7,我相信它安装了邮件服务器,但我不确定PHP是否默认使用它


谢谢你的帮助

您正在寻找的加密类型不是SSL/TSL,它用于加密客户端(PHP)和将发送它的SMTP服务器之间的传输。SSL/TLS不能保证数据将一直加密到其端点。事实上,这几乎肯定不会发生,因为数据在SMTP服务器和交换机之间传递

相反,您正在寻找PGP加密,它可以在PHP中使用。您必须使用收件人的公钥加密邮件。然后只能使用收件人的私钥(由收件人单独持有)对其进行解密和读取

要在
mail()
中实现这一点,首先要加密消息体,然后将加密的ascii装甲块作为第三个参数传递给
mail()
。消息头不会加密,只会加密正文

附录


大多数银行和医疗服务机构(无论如何,在美国)处理安全信息传输的方式是根本不发送电子邮件。相反,必须保持安全的消息存储在用户与网站的“收件箱”中。用户必须登录(通过SSL)网站才能阅读安全收件箱中的邮件。发送电子邮件只是为了通知用户新邮件正在等待。

您不能保证电子邮件会发送到收件人的邮箱。您唯一的位置是邮件客户端和传出SMTP服务器之间的连接。在那之后,它完全不在你的掌控之中


如果您需要保证电子邮件的隐私,则必须对电子邮件正文进行加密。您需要的是S/MIME或PGP消息。这并不是说某些信息仍然是公开的-邮件正文将被加密,但地址信息必须仍然是可读的-中间邮件服务器仍然需要知道如何传递邮件

谢谢Michael。所以对于第1部分-你是说PHP->SMTP服务器可能是加密的,但是当SMTP服务器将电子邮件转发到它的最终目的地时,它很可能是明文的,而我对此没有控制权或可见性?对于第2部分-这要求我与每个我想发送电子邮件的用户建立一个公私密钥关系,对吗?所以,如果有人订阅了我的网站并提供了他们的电子邮件地址,在没有获得他们的公钥的情况下,我无法安全地向他们发送电子邮件?我假设公钥是由他们的电子邮件客户端生成的?再次感谢@丹贝利斯:没错。SSL连接仅在传输到出站SMTP服务器时处于活动状态。之后,电子邮件在互联网上以明文形式出现,任何人都可以像明信片一样阅读它,或者通过一个开关在途中传递它。@DanBaylis(第2部分)-同样正确。你需要持有你希望发送给的个人的公钥,这样你就可以为他们加密消息。我希望我能给附录再加一个+1,即使使用非对称加密,你也会将消息的最终安全性留给你的用户。如果他们不小心使用他们的密钥(或者他们的计算机被破坏),您的邮件的安全性就会消失。合理地确保这些消息是私有的唯一方法是自己托管它们,并需要足够安全的身份验证机制来查看它们。