如何在 Ubuntu 14.04 上使用 PEPS 运行自己的邮件服务器和文件存储器

一篇文章来自于 PEPS Team at MLstate

介绍

我们都使用电子邮件和在线文件存储服务,如Gmail或Dropbox,但这些服务可能不适合个人和专业敏感数据的存储,我们在附加重要商业合同或机密信息时是否信任他们的隐私政策?我们是否接受所有数据的收集、处理和分析?

这个问题有一个解决方案:PEPS是一个使用端到端加密的电子邮件、文件共享和聊天平台,端到端加密确保加密和解密发生在您的计算机(客户端)上,而不是服务器上,该服务器在清晰的文本中永远不会看到机密数据。

PEPS: email, file sharing and chat you can run on your own cloud instance

本教程将指导您部署您的PEPS实例在DigitalOcean Droplet上,以便您可以安全地存储数据。

前提条件

PEPS 被分发为 Docker 容器,以便轻松安装,您将需要 Ubuntu 14.04 x64 和安装的 Docker 应用程序的 DigitalOcean Droplet。

*Ubuntu 14.04 x64 Droplet 具有 2 GB 的内存,如果您只有少数用户,选择 4 GB 的 RAM 或更多,如果您需要更多的用户或您只需要更多的数据存储空间

  • 购买一个 SSL 证书来使用,而不是自签名的证书;这建议用于生产环境。

您的 Droplet 名称很重要:如果您计划通过电子邮件发送邮件给外部收件人,则需要设置 Reverse DNS 以避免您的邮件被标记为垃圾邮件. 好消息:DigitalOcean 自动配置 PTR 记录,如果您的 Droplet 名称设置为您的 FQDN (完全合格域名)。

本教程中的所有命令都应该作为非根用户运行,如果命令需要 root 访问,则将被sudo提前。

步骤 1 - 安装 Docker

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

您还需要将您创建的非根用户(该用户将在本教程中运行所有命令)添加到docker用户组中。

1sudo usermod -aG docker sammy

您还需要退出并重新登录作为您的非根用户,以便此更改保持活跃。

步骤2 - 部署PEPS

使用ssh sammy@your_server_ip(取代您的用户名和服务器IP),通过SSH连接到您的Droplet,并运行以下命令来准备环境。

首先,克隆存储器:

1git clone https://github.com/MLstate/PEPS

转到PEPS目录:

1cd PEPS

配置您的域名,以您的域名取代 example.com:

1echo example.com > domain

此命令创建一个名为的文本文件,您的域名作为文件中的第一行和唯一行。

安装做:

1sudo apt-get update
2sudo apt-get install make

现在是时候建造容器了,这将需要大约10到20分钟,所以你可以享受一杯咖啡或安排一个站立会议:

1make build

如果一切顺利,它会结束如下(ID是随机生成的,会有所不同):

1Removing intermediate container 38d212189d43
2Successfully built 24fd74241e48

对于第一次推出,我们将创建临时的SSL/TLS证书并运行容器(这两个步骤几乎是即时的,所以不要认为你会再做一次咖啡休息)。

如果您已经为您的域名拥有SSL证书,请跳过这一点,并复制您的证书和密钥(参见步骤5)。

使用命令创建临时SSL证书:

1make certificate

选择一个简单的密码,因为您将被要求输入4次,并且证书是持有者。大多数问题可以被忽略:唯一重要的问题是共同名称(如服务器FQDN或您的名称):该名称应该与您的域名相同。

以下是对话的例子:

 1openssl genrsa -des3 -out server.key 1024
 2Generating RSA private key, 1024 bit long modulus [...]
 3Enter pass phrase for server.key:
 4Verifying - Enter pass phrase for server.key:
 5openssl req -new -key server.key -out server.csr
 6Enter pass phrase for server.key:
 7You are about to be asked to enter information that will be [...]
 8Country Name (2 letter code) [AU]: DE
 9State or Province Name (full name) [Some-State]:
10Locality Name (eg, city) []:
11Organization Name (eg, company) [Internet Widgits Pty Ltd]:
12Organizational Unit Name (eg, section) []:
13Common Name (e.g. server FQDN or YOUR name) []: example.com
14Email Address []:
15Please enter the following 'extra' attributes
16to be sent with your certificate request
17A challenge password []:
18An optional company name []:
19cp server.key server.key.org
20openssl rsa -in server.key.org -out server.key # strip passphrase
21Enter pass phrase for server.key.org:
22writing RSA key [...]
23Getting Private key

现在,我们准备用以下命令启动PEPS:

1sudo make run

步骤 3 – 首次登录

使用其 IP 地址连接到您的 Droplet 通过从您的浏览器访问 https://your_server_ip,其中 your_server_ip 是您的 Droplet 的 IP 地址。

由于我们目前正在使用临时的SSL证书,您的浏览器会警告您该网站不安全。 无论如何接受它. 使用Chrome,点击 Advanced来继续。

Chrome warns you about the wrong SSL certificate, we'll fix that later

在第一次运行时,你将被要求创建一个管理员密码. 选择任何你喜欢的,只要它的复杂性是足够的。

PEPS is working, choose your admin password

由于PEPS的端到端加密,管理员帐户可以创建和删除用户,但无法访问现有的加密用户数据。

一旦设置了您的管理员密码,将显示主要的PEPS界面。

The PEPS interface with no data

接下来,让我们专注于正确设置域名和证书。

步骤4:设置您的域名

现在您的实例运行顺利,我们仍然需要正确设置域,这涉及使用真实的SSL证书,配置DNS等。

取决于您的域名提供商,要么使用自己的接口为您的域设置 DNS 条目,要么设置自己的 DNS 服务器. 如果您想设置自己的 DNS 服务器,您可以使用 How To Configure BIND as a Private Network DNS Server on Ubuntu 14.04]文章,这是 An Introduction to Managing DNS文章系列的一部分。

例如,对于在mail.example.com托管的虚构example.com域:

1mail.example.com.	10799	IN A your_server_ip
2mail.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证书,你可以从提供商那里购买它们,甚至可以为非商业目的(https://andsky.com/tech/tutorials/how-to-set-up-apache-with-a-free-signed-ssl-certificate-on-a-vps)设置免费SSL证书。

如何从商业证书管理机构安装SSL证书文章解释了SSL证书的一切,包括如何购买。

请确保将名为server.keyserver.crt的密钥和证书都复制到/etc/peps/目录中。

在本地计算机上准备它们,并将文件复制到您的服务器,从包含证书的目录运行:

1scp server.key server.crt your_server_ip:/etc/peps/

其中「your_server_ip」是您的 Droplet 的 IP 地址。

完成后,请检查您的浏览器是否可以访问https://example.com没有SSL错误。

步骤6:测试

要创建更多用户,请登录为管理员用户,使用用户名admin和您在 _Step 3: 首次登录中创建的密码。

首先,尝试在您的域内两个不同的用户之间发送和接收电子邮件. 例如,尝试从 [email protected] 发送电子邮件到 [email protected]. 如果成功,尝试让 sammy 回复管理员,以确保逆转操作成功。

现在,向您域外的帐户发送电子邮件. 如果此操作失败,则您的 A 和 MX 记录尚未正确配置. 返回 Step 4: Set Up Your Domain

结论

恭喜您! 您现在有一个在DigitalOcean Droplet上运行的PEPS实例,您可以安全地发送消息,共享文件和更多(通过运行插件,如 聊天)。

有几个手册可用:

此外,请访问PEPS Facebook页面(https://facebook.com/endtoend)以获取有关PEPS的最新消息。

Published At
Categories with 技术
Tagged with
comments powered by Disqus