我有一个rails应用程序,可以在某些事件上触发电子邮件。这些电子邮件将发送给另一家公司,该公司会在回复时向电子邮件中添加一些其他数据。这一切都被理解和工作,我正在解析回复,提取数据,它工作正常。
我现在被要求加密电子邮件。
有没有人对最佳方法有任何经验/想法?
我无法保证第三方将使用哪个电子邮件客户端,因此我需要一个可以在许多电子邮件客户端中使用的解决方案。加密时必须由我的应用程序在发送电子邮件时和客户端应用程序(Outlook,Thunderbird,Entourage等)进行回复时进行。然后我需要接收加密的电子邮件,解密并解析它以提取我需要的新信息。
任何人都可以指点插件/文件来帮我实现这个目标吗?
答案 0 :(得分:3)
如果另一端不使用您的应用程序,则应使用S / MIME或PGP。
大多数桌面电子邮件客户端都支持开箱即用的S / MIME,而PGP通常作为插件提供(对于Thunderbird有Enigmail,对于Apple Mail有GPGMail等)。
此外,S / MIME需要证书,您可以自行创建证书或从证书颁发机构(例如Verisign或Thawte)购买证书,具体取决于您的需求。
我确信Ruby有S / MIME和PGP库,但快速搜索并没有为我揭示“一个真正的库”。但是,您始终可以让OpenSSL(针对S / MIME)或GPG为您解决这些问题。
答案 1 :(得分:1)
我认为Güder的答案非常好,但请记住,所有这些都需要用户已经安装了GPG和相关密钥。这种严苛的设置过程大约是使电子邮件加密更加广泛的障碍的95%。
您是否确定委托此项目的个人明白它不像在代码中转换发送加密电子邮件那么简单?
一种选择是在程序的安装过程中加入一个依赖于(包括)GPG的密钥管理例程。然后,用户可以选择一个非常困难的密码(确保对其进行检查,使其至少是字母数字等),可以从中生成公钥,并上传到流行的密钥服务器。
生成的密钥可用于程序生成的电子邮件,最重要的是,密钥对每个用户都是唯一的。然后,您可以对用户操作系统上的默认电子邮件客户端进行常规外部呼叫,以打开电子邮件。
为了确保电子邮件被加密打开,我会检查环境并获取默认的电子邮件客户端,然后从您的程序发送带有必要标记的电子邮件,以生成生成的电子邮件。例如,这意味着Thunderbird的Enigmail与Apple的Mail不同。
但不要忘记OpenSSL,当然......