在本教程中,我们将在Ubuntu 14.04上安装Mailpile,一个快速,安全,漂亮的Webmail客户端。
像Mailpile这样的Webmail客户端是确保您可以从任何地方访问电子邮件,而无需配置标准电子邮件客户端。Mailpile只是一个邮件客户端,这意味着它只管理现有的邮件帐户。
在本教程结束时,您将拥有一个运行Mailpile的全功能CVM,其中Nginx作为反向代理。
在整个教程中请记住,Mailpile仍处于测试阶段,这意味着您可能会遇到错误和其他困难。它不会在会话之间保存您的信息。(也就是说,每次重新启动Mailpile服务时,您都必须重新输入帐户详细信息。)
它也缺乏一种简单的服务运行方式。默认情况下,它仅在SSH会话中作为交互式脚本运行。我们已经包含了一个Upstart脚本,该脚本使用Screen在后台运行它,因此您可以根据需要保留Webmail客户端。但是,不建议将其用于生产。
在我们开始之前,我们需要一些东西:
记下您的SSL证书和密钥位置。如果您按照教程制作证书以便与Nginx一起使用,它们将位于:
如果您已准备就绪,请继续执行第一步。
在本节中,我们将为Mailpile安装准备我们的工作环境。
首先,我们需要登录CVM。确保您使用sudo访问权限登录用户。
首先我们需要安装Git。我们将使用Git从GitHub克隆Mailpile源代码。
更新Ubuntu的包列表:
sudo apt-get update
安装Git:
sudo apt-get install git
现在安装了Git,让我们将目录更改为我们可以解决的问题。在这种情况下,我们将使用/var
目录:
cd /var
克隆邮件:
sudo git clone https://github.com/mailpile/Mailpile.git
我们需要sudo命令来允许Git在其中创建一个目录/var
,这是一个系统目录。
我们已经准备好让Mailpile运行了。继续执行第二步以开始处理更多要求。
在本节中,我们将安装和配置Mailpile的要求。
首先,让我们安装pip。pip是一个Python包管理器,它有一些技巧:
sudo apt-get -y install python-pip
pip将允许我们更轻松地安装Mailpile的要求。你会在一分钟内看到,但首先我们需要安装一些东西。
接下来我们需要安装lxml。lxml是一个通常由pip实现的Mailpile要求,但是我们发现它导致安装因未知原因而失败。因此,我们将使用apt-get安装它:
sudo apt-get install python-lxml
只需要手动安装几个软件包,包括GnuPG和OpenSSL。这些将为我们的邮件创建更安全的环境。其中一些可能会默认安装,但我们会确保以防万一:
sudo apt-get install gnupg openssl libssl-dev
现在转到Mailpile的目录:
cd /var/Mailpile
我们现在已准备好利用pip的能力来安装我们的其他要求。
Mailpile包含一个名为requirements.txt
的文件,它基本上是一个需求列表。pip能够读取这个列表并自动安装它们中的每一个。那就让我们这样做:
sudo pip install -r /var/Mailpile/requirements.txt
你完成了。已安装所有要求,并且可以使用Mailpile。但在此之前,我们需要采取一些额外措施来加强我们的安全。
在本节中,我们将Nginx配置为Mailpile的反向代理。这将使Mailpile更安全,允许我们使用SSL证书,并使其更容易访问Webmail客户端。
使用Nginx,您可以使用,而不是通过访问Mailpile 。让我们开始吧!https://example.com:33411``https://mailpile.example.com
首先,我们需要安装Nginx,因为那将是大部分工作。所以让我们先得到Nginx:
sudo apt-get install nginx
现在已经安装了Nginx,我们可以设置反向代理。让我们编辑Nginx的配置,告诉它将我们的子域路由到Mailpile。
我们想要删除原始的Nginx配置文件,因为它充满了我们不需要的一堆东西。但首先,让我们做一个备份。首先制作目录:
sudo mkdir /home/backup
现在进行备份:
sudo cp -b /etc/nginx/sites-enabled/default /home/backup
现在我们可以自由删除文件而不会产生任何后果:
sudo rm /etc/nginx/sites-available/default
让我们确保它实际上已经消失了:
ls /etc/nginx/sites-available/
如果您刚刚安装了Nginx,该命令应该不返回任何内容。
现在创建一个新文件:
sudo nano /etc/nginx/sites-available/default
现在是配置反向代理的时候了。让我们从第一部分开始。将以下内容添加到文件的开头(我们将在一秒钟内解释它的作用):
server {
listen 80;
return 301 https://$host$request_uri;
}
这告诉Nginx将它获得的请求重定向到HTTPS。但实际上,它会尝试重定向到尚不存在的东西。让我们为它创造一个空间:
server {
listen 443;
server_name mailpile.example.com;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/mailpile.access.log;
注意:确保您的证书和密钥位于/etc/nginx/ssl/nginx.crt
和/etc/nginx/ssl/nginx.key
。否则,请更新旁边的路径ssl_certificate
和ssl_certificate_key
匹配您的证书和密钥位置。
我们刚刚输入的内容告诉Nginx监听端口443(具有SSL访问权限的端口网站,而不是端口80),应用我们的SSL证书,并打开SSL。现在我们需要实际为我们重定向到的新HTTPS URL提供服务并启用SSL。我们接下来会这样做。
在前两个块下面添加以下内容:
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Fix the "It appears that your reverse proxy set up is broken" error.
proxy_pass http://localhost:33411;
proxy_read_timeout 90;
proxy_redirect http://localhost:33411 https://webmail.example.com;
}
}
完成后,完成的配置文件应如下所示:
server {
listen 80;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name mailpile.example.com;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/mailpile.access.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Fix the "It appears that your reverse proxy set up is broken" error.
proxy_pass http://localhost:33411;
proxy_read_timeout 90;
proxy_redirect http://localhost:33411 https://webmail.example.com;
}
}
如果您没有替换默认站点,而是创建了具有不同名称的服务器块文件,则需要使用如下命令启用它:
sudo ln -s /etc/nginx/sites-available/mailpile.example.com /etc/nginx/sites-enabled/
应该已启用默认站点。
现在重新启动Nginx以重新加载配置:
sudo service nginx restart
现在Mailpile准备好可以连接https://mailpile.example.com
了。如果您使用自签名证书,则可能必须接受SSL警告。
此外,访问http://mailpile.example.com
将自动重定向到站点的SSL版本。
我们还没有运行Mailpile,所以如果您现在访问这些URL,您将看到502 Bad Gateway错误。此错误的最常见原因是Mailpile应用程序未运行。
继续执行第四步以运行Mailpile。
在本节中,我们将启动Mailpile,并将其配置为与我们的反向代理一起使用。
确保我们在正确的目录中:
cd /var/Mailpile
要运行Mailpile,请输入:
./mp
您现在可以通过命令行或Web界面开始探索Mailpile。
一句警告: Mailpile 在停止后不会保存您的设置。因此,在花时间配置它之前,您可能希望完成像服务一样运行它的可选下一步。
Mailpile现在连接https://mailpile.example.com
了,甚至可以使用您的SSL证书重定向到HTTPS。恭喜!
您可以使用CTRL-C
然后输入quit
以退出Mailpile。
为确保Mailpile始终处于活动状态并准备好处理您的邮件,您可以使用Upstart将Mailpile转换为服务。
由于Mailpile处于测试阶段,因此尚未进行适当的守护。它还需要一个交互式命令行,因此您不能直接运行Python脚本。这个Upstart脚本是一种通过Screen运行Python应用程序作为服务的hacky方式:
sudo nano /etc/init/mailpile.conf
文件内容如下:
description "Mailpile Webmail Client"
author "Sharon Campbell"
start on filesystem or runlevel [2345]
stop on shutdown
script
echo $$ > /var/run/mailpile.pid
exec /usr/bin/screen -dmS mailpile_init /var/Mailpile/mp
end script
pre-start script
echo "[`date`] Mailpile Starting" >> /var/log/mailpile.log
end script
pre-stop script
rm /var/run/mailpile.pid
echo "[`date`] Mailpile Stopping" >> /var/log/mailpile.log
end script
只要Screen会话正在运行,此脚本将启动Mailpile并保持其状态。它没有正确停止屏幕会话,因此如果要停止Mailpile,则必须手动停止屏幕会话。
使用此脚本,您可以使用以下命令启动Mailpile:
sudo start mailpile
这将导致root用户拥有一个名为12345 .mailpile_init的Screen会话。
但是,其他Upstart命令将不起作用。您必须手动结束屏幕会话。此外,如果服务崩溃或停止,您将不得不重新启动它并重置所有首选项。
本节介绍从Webmail界面中使用的基本Mailpile,打开链接https://mailpile.example.com
。
这是您第一次访问Mailpile时会看到的屏幕。
从下拉菜单中选择一种语言。
单击“ 开始”按钮。
创建一个新密码,然后输入两次。
单击“ 使用Mailpile开始”按钮。
登录屏幕:请输入您刚刚创建的密码。
使用+添加帐户按钮添加新帐户。
从这里,您需要输入您拥有的邮件帐户的详细信息。您应该输入该特定邮件帐户的电子邮件地址和密码。然后,Mailpile会尝试使用这些凭据连接到您的帐户,这可能需要几分钟时间。
如果Mailpile无法自行确定,您也可以手动输入“ 发送邮件和接收邮件”。
Gmail阻止Mailpile使用您的Gmail帐户凭据,因此您无法将Gmail帐户添加到Mailpile。
登录后,您将看到以下屏幕:
尝试向您添加到Mailpile的帐户发送和接收测试电子邮件到其他电子邮件帐户。如果成功,您将知道Mailpile正在使用您的电子邮件地址。
其他Mailpile功能
Mailpile还提供各种加密选项:
要开始使用Mailpile,请参阅常见问题解答。
有关更多配置选项,请从Mailpile命令行运行help
。
恭喜,您现在拥有自己的Webmail客户端Mailpile,在Ubuntu 14.04 CVM上运行。它配备了SSL,并自动重定向到您网站的HTTPS版本。您现在可以使用Mailpile漂亮的界面设置电子邮件帐户并管理您的联系人,邮件和类别等。
想要了解更多关于Ubuntu的开源信息教程,请前往腾讯云+社区学习更多知识。
参考文献:《How To Install Mailpile on Ubuntu 14.04》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。