如何在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 访问权限,它将在前面加上 sudoUbuntu 14.04 的初始服务器设置 解释了如何添加用户并授予他们 sudo 访问权限。

第 1 步 — 安装 Docker

第一步是安装 Docker。 本教程基于 Docker 1.6.2。 安装 Docker 有 2 个选项:

您还需要将您创建的非 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.keyserver.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 的最新消息。