序章

このチュートリアルでは、Ubuntu 14.04に、高速で安全で美しいWebメールクライアントであるMailpileをインストールします。

Mailpile’s Initial Launch Screen

MailpileのようなWebメールクライアントは、標準の電子メールクライアントを構成する手間をかけずに、どこからでも電子メールにアクセスできるようにするための優れた方法です。 Mailpileは単なるメールクライアントです。つまり、既存のメールアカウントのみを管理します。

このチュートリアルを終了すると、リバースプロキシとしてNginxを使用してMailpileを実行する完全に機能するDropletができあがります。

このチュートリアル全体を通して、 Mailpileはまだベータ版であることに注意してください。これは、途中でバグやその他の問題が発生する可能性があることを意味します。 セッションの合間に情報を保存することはありません。 (つまり、Mailpileサービスを再起動するたびに、アカウントの詳細を再入力する必要があります。)

また、サービスとして実行する簡単な方法もありません。 デフォルトでは、SSHセッションでインタラクティブスクリプトとしてのみ実行されます。 Screenを使用してバックグラウンドで実行するUpstartスクリプトが含まれているため、必要な限りWebメールクライアントを起動したままにすることができます。 ただし、これは本番環境にはお勧めしません。

前提条件

始める前に、いくつか必要なものがあります。

  • Ubuntu14.04を実行しているドロップレット。 少数のメールボックスを処理するMailpileセットアップには、少なくとも512MBのRAMをお勧めします。 2人以上のユーザーが予想される場合は、サイズを大きくすることをお勧めします
  • rootアクセス権を持つユーザー。 Ubuntu 14.04でsudoアクセス権を持つユーザーを設定する手順については、このチュートリアルを参照してください。
  • メールを安全に保つためのSSL証明書。 Namecheapまたは別の認証局から購入できます。 お金をかけたくない場合は、 Nginx で使用するために独自に作成するか、StartSSLから入手することもできます。
  • ドメイン名
  • ドメインの準備ができている場合は、ドロップレットを指すAレコードを作成します(例: mailpile。example.com)。 DigitalOceanを使用してDNSレコードを設定する手順については、DNSに関するこのチュートリアルを参照してください。

SSL証明書とキーの場所をメモします。 チュートリアルに従ってNginxで使用する証明書を作成した場合、それらは次の場所にあります。

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

それでおしまい! すべての準備が整ったら、最初のステップに進みます。

ステップ1—Mailpileをダウンロードする

このセクションでは、Mailpileをインストールするための作業環境を準備します。

まず、Dropletにログインする必要があります。 これまでSSHを使用したことがない場合は、SSHに関するこのチュートリアルを参照してください。 sudoアクセス権を持つユーザーにログインしていることを確認してください。

まず、Gitをインストールする必要があります。 Gitを使用して、GitHubからMailpileソースのクローンを作成します。

Ubuntuのパッケージリストを更新します。

  1. sudo apt-get update

Gitをインストールします:

  1. sudo apt-get install git

Gitがインストールされたので、ディレクトリを作業可能な場所に変更しましょう。 この場合、/varディレクトリを使用します。

  1. cd /var

Mailpileのクローン:

  1. sudo git clone https://github.com/mailpile/Mailpile.git

Gitが/var内にシステムディレクトリであるディレクトリを作成できるようにするには、sudoコマンドが必要です。

Mailpileを実行する準備がほぼ整いました。 ステップ2に進んで、さらにいくつかの要件に取り組み始めます。

ステップ2—Mailpileの要件を構成する

このセクションでは、Mailpileの要件をインストールして構成します。

まず、pipをインストールしましょう。 pipはPythonパッケージマネージャーであり、いくつかのトリックがあります。

  1. sudo apt-get -y install python-pip

pipを使用すると、Mailpileの要件をより簡単にインストールできます。 すぐにわかりますが、最初にさらにいくつかのものをインストールする必要があります。

次に、lxmlをインストールする必要があります。 lxmlは通常pipによってインストールされるMailpile要件ですが、不明な理由でインストールが失敗する原因となることがわかりました。 このため、apt-getを使用してインストールします。

  1. sudo apt-get install python-lxml

GnuPGやOpenSSLなど、さらにいくつかのパッケージを手動でインストールする必要があります。 これらは私たちのメールのためのより安全な環境を作成します。 これらの一部はデフォルトでインストールされる可能性がありますが、念のために確認します。

  1. sudo apt-get install gnupg openssl libssl-dev

次に、Mailpileのディレクトリに移動します。

  1. cd /var/Mailpile

これで、pipの機能を利用して、残りの要件をインストールする準備が整いました。

Mailpileには、基本的に要件のリストであるrequirements.txtというファイルが含まれています。 pipには、このリストを読み、それらをすべて自動的にインストールする機能があります。 それでは、まさにそれを実行しましょう。

  1. sudo pip install -r /var/Mailpile/requirements.txt

完了です。 すべての要件がインストールされ、Mailpileを使用する準備が整いました。 ただし、その前に、セキュリティを強化するためにいくつかの追加手順を実行する必要があります。

ステップ3—Nginxを使用したリバースプロキシの構成

このセクションでは、NginxをMailpileのリバースプロキシとして構成します。 これにより、Mailpileの安全性が高まり、SSL証明書を使用できるようになり、Webメールクライアントへのアクセスが容易になります。

Nginxでは、https://example.com:33411にアクセスしてMailpileにアクセスする代わりに、https://mailpile.example.comを使用できます。 始めましょう!

まず、Nginxをインストールする必要があります。これが、ほとんどの作業を実行するためです。 それでは、何よりもまずNginxを入手しましょう:

  1. sudo apt-get install nginx

Nginxがインストールされたので、リバースプロキシを設定できます。 Nginxの構成を編集して、サブドメインをMailpileにルーティングするように指示しましょう。

元のNginx構成ファイルは、不要なものでいっぱいになっているため、削除したいと思います。 しかし、最初に、バックアップを作成しましょう。 まず、ディレクトリを作成します。

  1. sudo mkdir /home/backup

次に、バックアップを作成します。

  1. sudo cp -b /etc/nginx/sites-enabled/default /home/backup

これで、結果なしにファイルを自由に削除できます。

  1. sudo rm /etc/nginx/sites-available/default

それが実際になくなったことを確認しましょう:

  1. 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(ポート80ではなくSSLアクセスを使用するポートWebサイト)でリッスンし、SSL証明書を適用して、SSLをオンにするように指示しました。 次に、リダイレクトしてSSLを有効にしたこの新しいHTTPSURLに実際に何かを提供する必要があります。 次にそれを行います。

前の2つのブロックの下に以下を追加します。

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

デフォルトのサイトを置き換えずに、別の名前でサーバーブロックファイルを作成した場合は、次のようなコマンドで有効にする必要があります。

  1. sudo ln -s /etc/nginx/sites-available/mailpile.example.com /etc/nginx/sites-enabled/

デフォルトのサイトはすでに有効になっているはずです。

詳細については、このNginxサーバーブロックに関する記事をお読みください。

次に、Nginxを再起動して、構成を再読み込みします。

  1. sudo service nginx restart

それでおしまい。 これで、Mailpileにhttps://mailpile.example.comで到達する準備が整いました。 自己署名証明書を使用した場合は、SSL警告を受け入れる必要がある場合があります。

また、http://mailpile.example.comにアクセスすると、SSLバージョンのサイトに自動的にリダイレクトされます。

Mailpileはまだ実行されていないため、これらのURLにアクセスすると、502BadGatewayエラーが表示されます。 このエラーの最も一般的な理由は、Mailpileアプリケーションが実行されていないことです。

手順4に進み、Mailpileを実行します。

ステップ4—Mailpileの構成と実行

このセクションでは、Mailpileを起動し、リバースプロキシで動作するように構成します。

正しいディレクトリにいることを確認してください。

  1. cd /var/Mailpile

Mailpileを実行するには、次のように入力します。

  1. ./mp

これで、コマンドラインまたはWebインターフェイスからMailpileの探索を開始できます。

警告の言葉: Mailpileは、停止した後、設定を保存しません。 したがって、構成に時間を費やす前に、サービスのように実行するオプションの次のステップを完了することをお勧めします。

これで、Mailpileはhttps://mailpile.example.comで稼働し、SSL証明書を使用してHTTPSにリダイレクトする必要があります。 おめでとう!

CTRL-Cを使用してから、quitと入力してMailpileを終了できます。

オプション—MailpileをUpstartでサービスにする

Mailpileが常にアクティブであり、メールを処理する準備ができていることを確認するために、Upstartを使用してMailpileをサービスに変換できます。 手順については、このすばらしいチュートリアルに従ってください。

Mailpileはベータ版であるため、まだ適切にデーモン化されていません。 また、インタラクティブなコマンドラインが必要なため、Pythonスクリプトを直接実行することはできません。 このUpstartスクリプトは、Screenを介してPythonアプリをサービスとして実行するhackyの方法です。

  1. 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

このスクリプトはMailpileを起動し、Screenセッションが実行されている限りそれを維持します。 Screenセッションは適切に停止されないため、Mailpileを停止する場合は、手動でScreenセッションを停止する必要があります。

このスクリプトを使用すると、次のコマンドでMailpileを起動できます。

  1. sudo start mailpile

これにより、rootユーザーが所有する12345.mailpile_initという画面セッションが発生します。

ただし、他のUpstartコマンドは機能しません。 Screenセッションを手動で終了する必要があります。 また、サービスがクラッシュまたは停止した場合は、サービスを再開して、すべての設定をリセットする必要があります。

ステップ4—Mailpile入門

このセクションでは、https://mailpile.example.comのWebメールインターフェイスからの基本的なメールパイルの使用について説明します。

初めてMailpileにアクセスしたときに表示される画面は次のとおりです。

Mailpile’s Initial Launch Screen

ドロップダウンメニューから言語を選択します。

開始ボタンをクリックします。

新しいパスワードを作成してから、2回入力します。

Mailpileの使用開始ボタンをクリックします。

ログイン画面:作成したパスワードを入力してください。

The Login Screen

+アカウントの追加ボタンで新しいアカウントを追加します。

Add a New Account

ここから、所有しているメールアカウントの詳細を入力する必要があります。 その特定のメールアカウントのメールアドレスとパスワードを入力する必要があります。 その後、Mailpileはそれらの資格情報を使用してアカウントへの接続を試みます。これには数分かかる場合があります。

Mailpileがそれ自体を理解できない場合は、メールの送信およびメールの受信のクレデンシャルを手動で入力することもできます。

GmailはMailpileがGmailアカウントのクレデンシャルを使用するのをブロックするため、GmailアカウントをMailpileに追加することはできません—少なくとも簡単ではありません。

ログインすると、次の画面が表示されます。

Mailpile Inbox

Mailpileに追加したアカウントのテストメールを別のメールアカウントに送受信してみてください。 これが成功すると、Mailpileがあなたのメールアドレスで機能していることがわかります。

その他のメールパイル機能

Mailpileは、さまざまな暗号化オプションも提供しています。

Mailpile’s Encryption Options

結論

Mailpileの使用を開始するには、FAQを参照してください。

その他の構成オプションについては、Mailpileコマンドラインからhelpを実行してください。

おめでとうございます。これで、Ubuntu14.04Dropletで実行されている独自のWebメールクライアントであるMailpileができました。 SSLが完全に装備されており、サイトのHTTPSバージョンに自動的にリダイレクトされます。 これで、Mailpileの美しいインターフェイスを使用して、電子メールアカウントを設定し、連絡先、メール、カテゴリなどを管理できます。 楽しむ!