Как отправлять и получать зашифрованную электронную почту в Ruby on Rails?

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

теперь меня попросили зашифровать электронные письма.

есть ли у кого-нибудь опыт/идеи о лучшем способе сделать это?

Я не могу гарантировать, что почтовый клиент 3rd партия будет использовать, поэтому мне нужно решение, которое будет работать в целом во многих почтовых клиентах. Шифрование должно быть сделано как моим приложением, когда я отправляю электронное письмо, так и клиентским приложением (Outlook, Thunderbird, Entourage и т. д.), Когда оно отвечает. Затем мне нужно будет получить зашифрованное письмо, расшифровать и проанализировать его, чтобы извлечь новую информацию, которая мне нужна.

может ли кто-нибудь указать мне на Плагины/документы, которые помогут мне достичь этого?

2 ответов


Если другой конец не использует ваше приложение, вы должны использовать S/MIME или PGP.

Большинство настольных почтовых клиентов поддерживают S / MIME из коробки, и PGP обычно доступен в качестве плагина (для Thunderbird есть Enigmail, для Apple Mail есть GPGMail, etc.).

кроме того, S / MIME нужны сертификаты, которые вы можете создать самостоятельно или приобрести в центре сертификации (например,компания VeriSign или Thawte), в зависимости от ваших потребностей.

Я уверен, что для Ruby есть библиотеки S/MIME и PGP, но быстрый поиск не показал "одну истинную библиотеку" для меня. Однако, вы всегда можете позволить OpenSSL (для S/MIME) или GPG сделайте тяжелый подъем для вас.


Я думаю, что ответ Гюдера отличный, но имейте в виду, что все это требует, чтобы у пользователя уже было что-то вроде GPG и связанного ключа. Этот изнурительный процесс настройки составляет около 95% препятствия для более широкого распространения шифрования электронной почты.

вы уверены, что лица, которые заказали этот проект, понимают, что это не так просто, как переключение переключателя в коде для отправки зашифрованных писем?

один вариант - включите в процесс установки для вашей программы процедуру управления ключами, которая зависит от (и включает) GPG. Затем пользователь может выбрать очень сложную парольную фразу (Не забудьте проверить ее, чтобы она была по крайней мере буквенно-цифровой и т. д.), открытый ключ может быть сгенерирован и загружен на популярный серверов.

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

чтобы убедиться, что электронная почта открывается в зашифрованном виде, я бы проверил среду и получил почтовый клиент по умолчанию, а затем отправил электронное письмо из вашей программы с необходимыми флагами, необходимыми для шифрования сгенерированной электронной почты. Это означает, что для Enigmail Thunderbird он будет отличаться от почты Apple, например.

но не забывайте об OpenSSL, конечно....