Использование SSL / TLS при отправке электронной почты из PHP - PullRequest
3 голосов
/ 03 октября 2011

Я очень новичок в почтовых серверах и отправке электронной почты с PHP ...

Возможно ли, чтобы электронная почта, отправленная из сценария PHP на моем сервере, зашифровывалась с использованием SSL или TLS перед отправкой на почтовый сервер получателя?

Мне нужно убедиться, что только предполагаемый получатель может прочитать электронную почту, в случае, если передача будет перехвачена на пути к их почтовому серверу.

Я не уверен, возможно ли это, поскольку почтовый сервер получателя не будет знать открытый ключ, верно? Так как же он может расшифровать письмо?

В качестве справки, я на самом деле не размещаю учетные записи электронной почты для кого-либо, поэтому это не тот случай, когда пользователи проходят проверку подлинности на моем сервере и скачивают для них электронные письма, размещенные там. У меня просто есть скрипт, инициирующий отправку оповещения по электронной почте с «notifications@danbaylis.com» (который не является реальным адресом электронной почты на сервере, поэтому вы не можете ответить на него) на реальный адрес электронной почты пользователя (который мое приложение знает). Мне нужен способ убедиться, что это письмо безопасно отправлено из PHP на моем сервере, на почтовый сервер получателя.

Я посмотрел на функцию mail () в PHP, а также на класс PHPMailer, но я не уверен, как настроить любой из этих методов для безопасной отправки электронной почты.

Все мои исследования показывают, как установить SSL на моем сервере, чтобы пользователи могли безопасно загружать электронную почту, хранящуюся на моем сервере - это не то, что я пытаюсь сделать здесь.

Я использую Centos5.7, на котором, по моему мнению, установлен почтовый сервер, хотя я не уверен, что PHP использует его по умолчанию ..

Спасибо за любую помощь!

Ответы [ 2 ]

3 голосов
/ 03 октября 2011

Вы не можете гарантировать, что письмо будет доставлено в почтовый ящик получателя. ONLY место, где вы находитесь - это соединение между вашим почтовым клиентом и вашим исходящим SMTP-сервером.После этого он полностью не в ваших руках.

Если вам необходимо гарантировать конфиденциальность электронной почты, вам придется зашифровать ее текст.То, что вы хотите, это сообщение S / MIME или PGP.Не то чтобы это по-прежнему оставляет некоторую информацию общедоступной - почтовое тело будет зашифровано, но адресная информация обязательно будет по-прежнему читабельной - промежуточным почтовым серверам все еще нужно будет знать, как доставлять почту

2 голосов
/ 03 октября 2011

Тип шифрования, который вы ищете, не SSL / TSL, который используется для шифрования передачи между клиентом (PHP) и SMTP-сервером, который будет отправлять его.SSL / TLS не дает никаких гарантий, что данные будут зашифрованы вплоть до конечной точки.Фактически, это почти наверняка не произойдет, поскольку данные передаются между SMTP-серверами и коммутаторами по пути.

Вместо этого вы ищете шифрование PGP, которое может быть реализовано в PHP с помощью GnuPGфункции .Вы должны зашифровать сообщение, используя открытый ключ вашего получателя.Затем его можно расшифровать и прочитать только с помощью закрытого ключа получателя, который хранится только у получателя.

Чтобы реализовать это в mail(), сначала необходимо зашифровать тело сообщения, а затем передать зашифрованный защищенный блок ascii.mail() в качестве третьего параметра.Заголовки сообщений не будут зашифрованы, только тело.

Приложение

Способ безопасной передачи сообщений обрабатывается большинством банков и медицинских служб (в любом случае в США)не отправлять электронную почту вообще.Вместо этого сообщения, которые должны храниться в безопасности, хранятся в папке «Входящие» пользователя на веб-сайте.Пользователь должен войти (через SSL) на веб-сайт, чтобы читать сообщения в защищенном почтовом ящике.Электронная почта отправляется только для уведомления пользователя о том, что новые сообщения ожидают.

...