如何在Ubuntu14.04上安装Mailpile

来自菜鸟教程
跳转至:导航、​搜索

介绍

在本教程中,我们将在 Ubuntu 14.04 上安装 Mailpile,这是一个快速、安全、美观的网络邮件客户端。

像 Mailpile 这样的网络邮件客户端是确保您可以从任何地方访问您的电子邮件而无需配置标准电子邮件客户端的好方法。 Mailpile 只是一个邮件客户端,这意味着它仅 管理 现有的邮件帐户。

在本教程结束时,您将拥有一个以 Nginx 作为反向代理运行 Mailpile 的全功能 Droplet。

请在本教程中始终牢记 Mailpile 仍处于测试阶段 ,这意味着您可能会在此过程中遇到错误和其他困难。 它不会在会话之间保存您的信息。 (也就是说,每次重新启动 Mailpile 服务时,您都必须重新输入您的帐户详细信息。)

它还缺乏一种作为服务运行的简单方法。 默认情况下,它仅在您的 SSH 会话中作为交互式脚本运行。 我们包含了一个使用 Screen 在后台运行它的 Upstart 脚本,因此您可以根据需要让 webmail 客户端保持启动状态。 但是,不建议将其用于生产。

先决条件

在开始之前,我们需要做一些事情:

  • 运行 Ubuntu 14.04 的液滴。 对于只处理几个邮箱的 Mailpile 设置,我们建议至少 512 MB 的 RAM。 如果您希望有两个以上的用户,您可能需要增加大小
  • 具有 root 访问权限的用户。 有关在 Ubuntu 14.04 上设置具有 sudo 访问权限的用户的说明,请参阅 本教程
  • SSL 证书可确保您的邮件安全。 您可以从 Namecheap 或其他证书颁发机构购买。 如果你不想花钱,你也可以制作自己的用于Nginx或从StartSSL获得一个
  • 一个域名
  • 如果您已准备好域,请创建一个 A 记录以指向您的 Droplet(例如。 邮件堆。example.com)。 有关使用 DigitalOcean 设置 DNS 记录的说明,请参阅 this tutorial on DNS

记下您的 SSL 证书和密钥位置。 如果您按照教程制作用于 Nginx 的证书,它们将位于:

  • /etc/nginx/ssl/nginx.crt
  • /etc/nginx/ssl/nginx.key

就是这样! 如果一切准备就绪,请继续第一步。

第 1 步 — 下载 Mailpile

在本节中,我们将为 Mailpile 安装准备工作环境。

首先,我们需要登录到我们的 Droplet。 如果您以前没有使用过 SSH,请参阅 this tutorial on SSH。 确保您登录到具有 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 运行。 继续第 2 步,开始处理更多要求。

第 2 步 — 配置 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 可以使用了。 但在我们这样做之前,我们需要采取一些额外的步骤来加强我们的安全性。

第 3 步 — 使用 Nginx 配置反向代理

在本节中,我们将 Nginx 配置为 Mailpile 的反向代理。 这将使 Mailpile 更加安全,允许我们使用 SSL 证书,并且更容易访问 webmail 客户端。

使用 Nginx,您可以使用 https://mailpile.example.com,而不是通过访问 https://example.com:33411 来访问 Mailpile。 让我们开始吧!

首先,我们需要安装 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

现在是时候配置反向代理了。 让我们从第一部分开始。 将以下内容添加到文件的开头(我们稍后会解释它的作用):

/etc/nginx/sites-available/default

server {
    listen 80;
    return 301 https://$host$request_uri;
}

这告诉 Nginx 将它收到的请求重定向到 HTTPS。 但实际上,它会尝试重定向到尚不存在的东西。 让我们为它创建一个地方:

/etc/nginx/sites-available/default

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_certificatessl_certificate_key 旁边的路径以匹配您的证书和密钥位置。

我们刚刚输入的内容告诉 Nginx 监听端口 443(具有 SSL 访问权限的端口网站,而不是端口 80),应用我们的 SSL 证书,然后打开 SSL。 现在我们需要为这个我们重定向到并启用 SSL 的新 HTTPS URL 实际提供一些东西。 我们接下来会这样做。

在前两个块下面添加以下内容:

/etc/nginx/sites-available/default

    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;
    }
   }

全部完成后,完成的配置文件应如下所示:

/etc/nginx/sites-available/default

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 服务器块 文章。

现在重新启动 Nginx 以重新加载配置:

sudo service nginx restart

就是这样。 现在可以在 https://mailpile.example.com 访问 Mailpile。 如果您使用自签名证书,您可能必须接受 SSL 警告。

此外,访问 http://mailpile.example.com 将自动重定向到站点的 SSL 版本。

我们尚未运行 Mailpile,因此如果您现在访问这些 URL,您将看到 502 Bad Gateway 错误。 此错误的最常见原因是 Mailpile 应用程序未运行。

继续执行步骤 4 以运行 Mailpile。

第 4 步 — 配置和运行 Mailpile

在本节中,我们将启动 Mailpile,并将其配置为与我们的反向代理一起使用。

确保我们在正确的目录中:

cd /var/Mailpile

要运行 Mailpile,请输入:

./mp

您现在可以通过命令行或 Web 界面开始探索 Mailpile。

警告: Mailpile 停止后 不会保存 您的设置。 因此,在您花时间配置它之前,您可能需要完成可选的下一步,将其像服务一样运行。


Mailpile 现在应该在 https://mailpile.example.com 上运行,甚至可以使用您的 SSL 证书重定向到 HTTPS。 恭喜!

您可以使用 CTRL-C 然后键入 quit 退出 Mailpile。

可选——使用 Upstart 使 Mailpile 成为一项服务

为确保 Mailpile 始终处于活动状态并准备好处理您的邮件,您可以使用 Upstart 将 Mailpile 转换为服务。 跟随this精彩教程获取指导。

由于 Mailpile 处于测试阶段,它还没有被适当地守护。 它还需要一个交互式命令行,因此您不能直接运行 Python 脚本。 这个 Upstart 脚本是通过 Screen 将 Python 应用程序作为服务运行的 hacky 方式:

sudo nano /etc/init/mailpile.conf

/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 并保持运行。 它不会正确停止 Screen 会话,因此如果您想停止 Mailpile,则必须手动停止 Screen 会话。

使用此脚本,您可以使用以下命令启动 Mailpile:

sudo start mailpile

这将导致一个名为 12345.mailpile_init 的 Screen 会话由 root 用户拥有。

但是,其他 Upstart 命令将不起作用。 您必须手动结束 Screen 会话。 此外,如果服务崩溃或停止,您必须重新启动它并重置所有首选项。

第 4 步 — Mailpile 入门

本节介绍了在 https://mailpile.example.com 的 webmail 界面中基本 Mailpile 的使用。

这是您第一次访问 Mailpile 时将看到的屏幕。

从下拉菜单中选择一种语言。

单击 开始 按钮。

创建一个新密码,然后输入两次。

单击开始使用Mailpile按钮。

登录界面:请输入您刚刚创建的密码。

使用 + 添加帐户 按钮添加新帐户。

从这里,您需要输入您拥有的邮件帐户的详细信息。 您应该输入该特定邮件帐户的电子邮件地址和密码。 然后,Mailpile 将尝试使用这些凭据连接到您的帐户,这可能需要几分钟时间。

如果 Mailpile 无法自行识别,您也可以手动输入 Sending MailReceiving Mail 凭据。

Gmail 阻止 Mailpile 使用您的 Gmail 帐户凭据,因此您不能将 Gmail 帐户添加到 Mailpile 中——至少不容易。


登录后,您将看到此屏幕:

尝试将您添加到 Mailpile 的帐户的测试电子邮件发送和接收到不同的电子邮件帐户。 如果成功,您将知道 Mailpile 正在使用您的电子邮件地址。

其他邮件堆功能

Mailpile 还提供多种加密选项:

结论

要开始使用 Mailpile,请参阅 FAQ

如需更多配置选项,请从 Mailpile 命令行运行 help

恭喜,您现在拥有自己的 web 邮件客户端 Mailpile,在 Ubuntu 14.04 Droplet 上运行。 它完全配备 SSL 并自动重定向到您网站的 HTTPS 版本。 您现在可以使用 Mailpile 的漂亮界面设置您的电子邮件帐户并管理您的联系人、邮件、类别等。 玩得开心!