序章
このチュートリアルでは、Ubuntu 14.04に、高速で安全で美しいWebメールクライアントであるMailpileをインストールします。
MailpileのようなWebメールクライアントは、標準の電子メールクライアントを構成する手間をかけずに、どこからでも電子メールにアクセスできるようにするための優れた方法です。 Mailpileは単なるメールクライアントです。つまり、既存のメールアカウントのみを管理します。
このチュートリアルを終了すると、リバースプロキシとしてNginxを使用してMailpileを実行する完全に機能するDropletができあがります。
このチュートリアル全体を通して、 Mailpileはまだベータ版であることに注意してください。これは、途中でバグやその他の問題が発生する可能性があることを意味します。 セッションの合間に情報を保存することはありません。 (つまり、Mailpileサービスを再起動するたびに、アカウントの詳細を再入力する必要があります。)
また、サービスとして実行する簡単な方法もありません。 デフォルトでは、SSHセッションでインタラクティブスクリプトとしてのみ実行されます。 Screenを使用してバックグラウンドで実行するUpstartスクリプトが含まれているため、必要な限りWebメールクライアントを起動したままにすることができます。 ただし、これは本番環境にはお勧めしません。
前提条件
始める前に、いくつか必要なものがあります。
- Ubuntu14.04を実行しているドロップレット。 少数のメールボックスを処理するMailpileセットアップには、少なくとも512MBのRAMをお勧めします。 2人以上のユーザーが予想される場合は、サイズを大きくすることをお勧めします
- ルートアクセス権を持つユーザー。 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のパッケージリストを更新します。
- sudo apt-get update
Gitをインストールします:
- sudo apt-get install git
Gitがインストールされたので、ディレクトリを作業可能な場所に変更しましょう。 この場合、/var
ディレクトリを使用します。
- cd /var
Mailpileのクローン:
- sudo git clone https://github.com/mailpile/Mailpile.git
Gitが/var
内にシステムディレクトリであるディレクトリを作成できるようにするには、sudoコマンドが必要です。
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証明書を使用できるようになり、Webメールクライアントへのアクセスが容易になります。
Nginxでは、https://example.com:33411
にアクセスしてMailpileにアクセスする代わりに、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(ポート80ではなくSSLアクセスを使用するポートWebサイト)でリッスンし、SSL証明書を適用して、SSLをオンにするように指示しました。 次に、リダイレクトしてSSLを有効にしたこの新しいHTTPSURLに実際に何かを提供する必要があります。 次にそれを行います。
前の2つのブロックの下に以下を追加します。
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サーバーブロックに関する記事をお読みください。
次に、Nginxを再起動して、構成を再読み込みします。
- sudo service nginx restart
それでおしまい。 これで、Mailpileにhttps://mailpile.example.com
で到達する準備が整いました。 自己署名証明書を使用した場合は、SSL警告を受け入れる必要がある場合があります。
また、http://mailpile.example.com
にアクセスすると、SSLバージョンのサイトに自動的にリダイレクトされます。
Mailpileはまだ実行されていないため、これらのURLにアクセスすると、502BadGatewayエラーが表示されます。 このエラーの最も一般的な理由は、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を終了できます。
オプション—MailpileをUpstartでサービスにする
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
このスクリプトはMailpileを起動し、Screenセッションが実行されている限りそれを維持します。 Screenセッションは適切に停止されないため、Mailpileを停止する場合は、Screenセッションを手動で停止する必要があります。
このスクリプトを使用すると、次のコマンドでMailpileを起動できます。
- sudo start mailpile
これにより、rootユーザーが所有する12345.mailpile_initという画面セッションが発生します。
ただし、他のUpstartコマンドは機能しません。 スクリーンセッションを手動で終了する必要があります。 また、サービスがクラッシュまたは停止した場合は、サービスを再開して、すべての設定をリセットする必要があります。
ステップ4—Mailpile入門
このセクションでは、https://mailpile.example.com
のWebメールインターフェイスからの基本的なメールパイルの使用について説明します。
Mailpileに初めてアクセスしたときに表示される画面は次のとおりです。
ドロップダウンメニューから言語を選択します。
開始ボタンをクリックします。
新しいパスワードを作成してから、2回入力します。
Mailpileの使用開始ボタンをクリックします。
ログイン画面:作成したパスワードを入力してください。
+アカウントの追加ボタンで新しいアカウントを追加します。
ここから、所有しているメールアカウントの詳細を入力する必要があります。 その特定のメールアカウントのメールアドレスとパスワードを入力する必要があります。 その後、Mailpileはそれらの資格情報を使用してアカウントへの接続を試みます。これには数分かかる場合があります。
Mailpileがそれ自体を理解できない場合は、メールの送信およびメールの受信のクレデンシャルを手動で入力することもできます。
GmailはMailpileがGmailアカウントのクレデンシャルを使用するのをブロックするため、GmailアカウントをMailpileに追加することはできません—少なくとも簡単ではありません。
ログインすると、次の画面が表示されます。
Mailpileに追加したアカウントのテストメールを別のメールアカウントに送受信してみてください。 これが成功すると、Mailpileがあなたのメールアドレスで機能していることがわかります。
その他のメールパイル機能
Mailpileは、さまざまな暗号化オプションも提供しています。
結論
Mailpileの使用を開始するには、FAQを参照してください。
その他の構成オプションについては、Mailpileコマンドラインからhelp
を実行してください。
おめでとうございます。これで、Ubuntu14.04Dropletで実行されている独自のWebメールクライアントであるMailpileができました。 SSLが完全に装備されており、サイトのHTTPSバージョンに自動的にリダイレクトされます。 これで、Mailpileの美しいインターフェイスを使用して、電子メールアカウントを設定し、連絡先、メール、カテゴリなどを管理できます。 楽しむ!