如何在Ubuntu14.04上使用PEPS运行您自己的邮件服务器和文件存储
MLstate [1] PEPS 团队的一篇文章
介绍
我们都使用电子邮件和在线文件存储服务,例如 Gmail 或 Dropbox。 但是,这些服务可能不适合存储个人和专业的敏感数据。 在附加重要的商业合同或机密信息时,我们是否相信他们的隐私政策? 我们是否接受我们所有的数据都将被收集、处理和分析?
这个问题有一个解决方案:PEPS 是一个使用端到端加密的电子邮件、文件共享和聊天平台。 端到端加密确保加密和解密发生在您的计算机(客户端)而不是服务器上,服务器永远不会以明文形式看到机密数据。
本教程将指导您完成在 DigitalOcean Droplet 上部署 PEPS 实例的过程,以便您可以安全地存储数据。
先决条件
PEPS 作为 Docker 容器分发,以简化设置。 您将需要一个带有 Ubuntu 14.04 x64 的 DigitalOcean Droplet,并在其上安装 Docker 应用程序。 具体来说:
- 如果您只有几个用户,则可以使用 2 GB 内存的 Ubuntu 14.04 x64 Droplet。 如果您需要更多用户或只需要更多存储空间来存储数据,请选择 4 GB 或更多 RAM。
- 购买 SSL 证书以代替自签名证书; 推荐用于生产环境。 或者,您可以创建免费的签名 SSL 证书。 本教程后面包含有关创建证书的说明。
您的 Droplet 的名称很重要:如果您计划通过电子邮件向外部收件人发送邮件,则需要配置 反向 DNS 以避免您的邮件被标记为垃圾邮件。 好消息:如果您的 Droplet 名称设置为您的 FQDN(完全限定域名),DigitalOcean 会自动配置 PTR 记录。 如果您打算从 mail.example.com
发送电子邮件,那也应该是您的 Droplet 的名称(即使您的地址是 user@example.com
的形式)。
本教程中的所有命令都应以非 root 用户身份运行。 如果该命令需要 root 访问权限,它将在前面加上 sudo
。 Ubuntu 14.04 的初始服务器设置 解释了如何添加用户并授予他们 sudo 访问权限。
第 1 步 — 安装 Docker
第一步是安装 Docker。 本教程基于 Docker 1.6.2。 安装 Docker 有 2 个选项:
- 按照 如何安装和使用 Docker:入门 中 Ubuntu 14.04 的说明进行操作
- 创建 Ubuntu 14.04 x64 Droplet 时添加 Docker 应用程序
您还需要将您创建的非 root 用户(将运行本教程中所有命令的用户)添加到 docker
用户组。 将 sammy 替换为您的用户名:
sudo usermod -aG docker sammy
您还需要注销并以非 root 用户身份重新登录,才能使此更改生效。
第 2 步 — 部署 PEPS
使用 ssh sammy@your_server_ip
(替换您的用户名和服务器 IP)通过 SSH 连接到您的 Droplet,并运行以下命令来准备环境。
首先,克隆存储库:
git clone https://github.com/MLstate/PEPS
切换到 PEPS
目录:
cd PEPS
配置您的域名,将 example.com 替换为您的域名:
echo example.com > domain
此命令创建一个名为 domain
的文本文件,您的域名作为文件中的第一行也是唯一的一行。
安装制作:
sudo apt-get update sudo apt-get install make
现在是构建容器的时候了,这大约需要 10-20 分钟,这样您就可以享用咖啡或安排站立会议:
make build
如果一切运行良好,它会以如下内容结束(id 是随机生成的,并且会有所不同):
Removing intermediate container 38d212189d43 Successfully built 24fd74241e48
对于第一次启动,我们将创建临时 SSL/TLS 证书并运行容器。 (这两个步骤几乎都是即时的,所以不要以为你会再喝咖啡休息一下。)
如果您手头已有域的 SSL 证书,请跳过此步骤并复制您的证书和密钥(请参阅第 5 步)。
使用以下命令创建临时 SSL 证书:
make certificate
选择一个简单的密码,因为系统会要求您输入 4 次,并且证书是占位符。 大多数问题都可以跳过:唯一重要的问题是 Common Name (e.g. server FQDN or YOUR name) []:
应该与您的域相同。
这是一个示例对话框:
openssl genrsa -des3 -out server.key 1024 Generating RSA private key, 1024 bit long modulus [...] Enter pass phrase for server.key: Verifying - Enter pass phrase for server.key: openssl req -new -key server.key -out server.csr Enter pass phrase for server.key: You are about to be asked to enter information that will be [...] Country Name (2 letter code) [AU]: DE State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []: example.com Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: cp server.key server.key.org openssl rsa -in server.key.org -out server.key # strip passphrase Enter pass phrase for server.key.org: writing RSA key [...] Getting Private key
现在,我们准备使用以下命令启动 PEPS:
sudo make run
第 3 步 — 首次登录
通过从您的浏览器访问 https://your_server_ip
使用其 IP 地址连接到您的 Droplet,其中 your_server_ip
是您的 Droplet 的 IP 地址。
由于我们目前使用的是临时 SSL 证书,因此您的浏览器会警告您该网站不安全。 无论如何接受它。 使用 Chrome,单击 高级 继续。
首次运行时,系统会提示您创建管理员密码。 选择您喜欢的任何一种,只要其复杂性足够。
由于 PEPS 中的端到端加密,管理员帐户可以创建和删除用户,但无法访问任何现有的加密用户数据。
设置管理员密码后,将显示 PEPS 主界面。
接下来,让我们专注于正确设置域和证书。
第 4 步 — 设置您的域
现在您的实例运行良好,我们仍然需要正确设置域,这涉及使用真正的 SSL 证书、配置 DNS 等等。
让我们从 DNS 开始。 根据您的域名提供商,可以使用他们自己的界面为您的域设置 DNS 条目,或者设置您自己的 DNS 服务器。 如果您想设置自己的 DNS 服务器,可以使用 如何在 Ubuntu 14.04 上将 BIND 配置为专用网络 DNS 服务器一文,该文章是 DNS 管理简介 的一部分] 文章系列。
您必须同时设置 A 和 MX 记录。 例如,对于托管在 mail.example.com
上的虚构 example.com
域:
mail.example.com. 10799 IN A your_server_ip mail.example.com. 10799 IN MX example.com.
您的 Droplet 名称应为 mail.example.com
。 不用担心。 您可以从您的 DigitalOcean 帐户重命名 Droplet。 单击 Droplet 名称以查看其详细信息,单击 设置 选项卡,然后单击 重命名 选项卡。 您可能需要等待 DNS 更新。
您还可以设置其他记录。 在线检查器 MXToolBox 可用于验证您的域设置是否正确,并就几点提供建议。
请注意,DNS 传播可能有点慢,但过一段时间(通常是 1 小时)后,您将能够从 https://example.com
访问 PEPS。
注意: 完成 PEPS 配置后,如果您无法发送或接收来自外部域的电子邮件,请仔细检查您的 A 和 MX 记录。 如果设置不正确,您将无法从您自己的域以外的域发送或接收电子邮件。
第 5 步 — 设置 SSL 证书
您仍然会收到来自浏览器的无效 SSL 证书警告。
现在是设置 SSL 证书的时候了。 如果您还没有 SSL 证书,您可以从提供商处购买,甚至 为非商业目的设置免费 SSL 证书 。
如何从商业证书颁发机构安装 SSL 证书 文章解释了有关 SSL 证书的所有内容,包括如何购买证书。
请务必将名为 server.key
和 server.crt
的密钥和证书都复制到 /etc/peps/
目录中。
在您的本地计算机上准备它们,然后通过从包含证书的目录运行将文件复制到您的服务器:
scp server.key server.crt your_server_ip:/etc/peps/
其中 your_server_ip
是您的 Droplet 的 IP 地址。
完成后,检查您的浏览器是否可以访问 https://example.com
而不会出现 SSL 错误。
第 6 步——测试
要创建更多用户,请使用 admin
作为用户名和您在 步骤 3:首次登录 中创建的密码以 admin 用户身份登录。 管理员用户可以为您的域创建电子邮件帐户。 前往 PEPS 管理员手册 了解如何操作。
首先,尝试在您域中的两个不同用户之间发送和接收电子邮件。 例如,尝试从 admin@example.com 向 sammy@example.com 发送电子邮件。 如果成功,请尝试让 sammy 回复管理员以确保反向操作成功。
现在,向域外的帐户发送电子邮件。 如果此操作失败,则您的 A 和 MX 记录未正确配置。 返回 步骤 4:设置您的域 。 不要忘记测试接收来自域外用户的电子邮件。
结论
恭喜! 您现在有一个在 DigitalOcean Droplet 上运行的 PEPS 实例。 您可以安全地发送消息、共享文件等(通过运行 chat 等插件)。
有几个手册可用:
也可访问 PEPS Facebook 页面 了解有关 PEPS 的最新消息。