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

介绍

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

这个问题有一个解决方案:PEPS是一个使用端到端加密的电子邮件,文件共享和聊天平台。端到端加密可确保加密和解密在您的计算机(客户端)上进行,而不是在服务器上进行,服务器永远不会以明文形式看到机密数据。

本教程将指导您完成在腾讯云CVM上部署PEPS实例的过程,以便您可以安全地存储数据。

准备

PEPS作为Docker容器分发,以便于设置。您需要一台带有Ubuntu 14.04 x64的腾讯云CVM,并在其上安装Docker应用程序。特别:

  • 一个Ubuntu 14.04 x64 腾讯云CVM有2 GB的内存,如果你只有几个用户。如果您需要更多用户,或者只需要更多数据存储空间,请选择4 GB或更多RAM。
  • 购买SSL证书以代替自签名证书; 这适用于生产环境。或者,您可以创建免费签名的SSL证书。本教程后面将介绍创建证书的说明。

腾讯云CVM的名称很重要:如果您打算通过电子邮件向外部收件人发送邮件,则需要配置反向DNS以避免邮件被标记为垃圾邮件。好消息:如果您的腾讯云CVM名称设置为您的FQDN(完全限定域名),腾讯云会自动配置 PTR记录。如果您打算发送电子邮件mail.example.com,那也应该是您的腾讯云CVM的名称(即使您的地址是以形式user@example.com)。

一台已经设置好可以使用sudo命令的非root账号的Ubuntu服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

第1步 - 安装Docker

第一步是安装Docker。本教程基于Docker 1.6.2。

  • 在创建Ubuntu 14.04 x64 腾讯云CVM时添加Docker应用程序

您还需要将您创建的非root用户(将在本教程中运行所有命令的docker用户)添加到用户组。用您的用户名替换sammy:

sudo usermod -aG docker sammy

您还需要注销并以非root用户身份重新登录,以使此更改生效。

第2步 - 部署PEPS

使用(替换您的用户名和服务器IP)通过SSH连接到您的腾讯云CVM,并运行以下命令来准备环境。sshsammy@your_server_ip

首先,克隆存储库:

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

切换到PEPS目录:

cd PEPS

配置您的域名,将example.com替换为您的域名:

echo example.com > domain

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

安装make:

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腾讯云CVM的IP地址,使用其your_server_ipIP地址连接到您的腾讯云CVM。

由于我们现在使用的是临时SSL证书,因此您的浏览器会警告您该站点不安全。无论如何接受它。在Chrome中,单击“ 高级”继续。

首次运行时,系统将提示您创建管理员密码。选择您喜欢的任何一种,只要它的复杂性足够。

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

设置管理员密码后,将显示主PEPS界面。

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

第4步 - 设置域名

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

让我们从DNS开始吧。根据您的域名提供商,使用自己的界面为您的域设置DNS条目或设置您自己的DNS服务器。

您必须同时设置A和MX记录。例如,对于托管在以下example.com位置的虚构域mail.example.com

mail.example.com.   10799   IN   A   your_server_ip
mail.example.com.   10799   IN   MX  example.com.

你的腾讯云CVM名称应该是mail.example.com。别担心。您可以从腾讯云帐户重命名腾讯云CVM。单击腾讯云CVM名称以查看其详细信息,单击“ 设置”选项卡,然后单击“ 重命名”选项卡。您可能必须等待DNS更新。

您还可以设置其他记录。在线检查器MXToolBox可用于验证您的域是否已正确设置并提供有关多个点的建议。

请注意,DNS传播可能有点慢,但过了一段时间(通常是1小时),您将能够从中访问PEPS https://example.com

注意:完成PEPS配置后,如果无法从外部域发送或接收电子邮件,请仔细检查A和MX记录。如果设置不正确,您将无法从您自己以外的域发送或接收电子邮件。

第5步 - 设置SSL证书

您的浏览器仍会收到无效的SSL证书警告。

现在是时候设置SSL证书了。您还没有SSL证书,如果你有域名,保护你网站的最简单方法是使用腾讯云SSL证书服务,它提供免费的可信证书。腾讯云SSL证书安装操作指南进行设置。如果你没有域名,建议您先去这里注册一个域名,如果你只是使用此配置进行测试或个人使用,则可以使用自签名证书,不需要购买域名。自签名证书提供了相同类型的加密,但没有域名验证公告。关于自签名证书,你可以参考为Apache创建自签名SSL证书如何为Nginx创建自签名SSL证书这两篇文章。

一定要在/etc/peps/目录中复制两个名为server.keyserver.crt键和命名的证书。

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

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

your_server_ip是你得腾讯云CVM的IP地址。

完成后,检查您的浏览器是否可以访问https://example.com而不会出现SSL错误。

第6步 - 测试

要创建更多用户,请以管理员用户admin身份使用您在步骤3:首次登录时创建的用户名和密码登录。管理员用户可以为您的域创建电子邮件帐户。转到PEPS管理员手册以了解具体方法。

首先,尝试在您域中的两个不同用户之间发送和接收电子邮件。例如,尝试从admin@example.com发送电子邮件至sammy@example.com。如果成功,请尝试让sammy响应admin以确保反向操作成功。

现在,将电子邮件发送到您域外的帐户。如果此操作失败,则说明您的A和MX记录未正确配置。返回步骤4:设置域。不要忘记测试从您域外的用户接收电子邮件。

结论

恭喜!您现在有一个在腾讯云CVM上运行的PEPS实例。您可以安全地发送消息,共享文件等(通过运行聊天等插件)。

有几本手册可供选择:

另请访问PEPS Facebook页面,了解有关PEPS的最新消息。

更多Ubuntu教程请前往腾讯云+社区学习更多知识。


参考文献:《How To Run Your Own Mail Server and File Storage with PEPS on Ubuntu 14.04》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张戈的专栏

CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放

张戈博客很久以前分享过一个CC 攻击的防御脚本,写得不怎么样,不过被 51CTO 意外转载了。博客从此走上了经常被人拿来练手的不归之路。 当然,还是有不少朋友在...

6376
来自专栏FreeBuf

手把手教你解密MacOS平台下的Chrome密码

虽然现在网上有很多开源的软件可以帮助你解密那些存储在GoogleChrome浏览器中的密码,但是这些软件几乎只支持在Windows操作系统下使用。 那么对于我们...

23210
来自专栏FreeBuf

如何在15分钟内利用Shodan进行企业安全审计?

那些总说 “工作不求最努力,但求更聪明” 的人肯定都有 Shodan 账户。 本文我将讲述我是如何在十五分钟内利用Shodan对公司进行了一个简单的安全审查。出...

2469
来自专栏张善友的专栏

开源.NET邮件服务器

LumiSoft Mail Server是一个开源,免费的邮件服务器,能运行在.net/mono上,支持SMTP/POP3/IMAP4/WebMail,支持MS...

4887
来自专栏喵了个咪的博客空间

4.请求安全-- 结合使用的安全优势总结

#结合使用的安全优势与总结# ##前言## 写到这里基本上笔者在请求中遇到的问题,以及运用到实践中的解决方案,基本上分为,请求唯一性,单设备登录,单点登录,MD...

2534
来自专栏博客园

什么是JWT(JSON WEB TOKEN)

转自于:http://www.jianshu.com/p/576dbf44b2ae

2832
来自专栏技术博文

Linux ssh登录命令

一、什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录。 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种...

63910
来自专栏Android 开发者

[译] 在 Android P 中使用默认的 TLS 来保护你的用户

2503
来自专栏大内老A

[WCF安全系列]从两种安全模式谈起

WCF的安全体系主要包括三个方面:传输安全(Transfer Security)、授权或者访问控制(Authorization OR Access Contro...

1957
来自专栏流柯技术学院

通过Google身份验证器加强Linux帐户安全

而后,google的验证模块就会被复制到/lib64/security目录下,而用来生成密钥的可执行程序:google-authenticator,则复制到/u...

1551

扫码关注云+社区

领取腾讯云代金券