Ubuntu14.04でPEPSを使用して独自のメールサーバーとファイルストレージを実行する方法
MLstateのPEPSチームからの記事
序章
私たちは皆、GmailやDropboxのような電子メールとオンラインファイルストレージサービスを使用しています。 ただし、これらのサービスは、個人用および専門用の両方の機密データの保存には適していない場合があります。 重要なビジネス契約や機密情報を添付する際に、彼らのプライバシーポリシーを信頼しますか? すべてのデータが収集、処理、分析されることを受け入れますか?
この問題には解決策があります。PEPSは、エンドツーエンドの暗号化を使用する電子メール、ファイル共有、およびチャットプラットフォームです。 エンドツーエンド暗号化により、暗号化と復号化がサーバーではなくコンピューター(クライアント)で行われるようになります。サーバーでは、機密データがクリアテキストで表示されることはありません。
このチュートリアルでは、データを安全に保存できるように、PEPSインスタンスをDigitalOceanDropletにデプロイするプロセスについて説明します。
前提条件
PEPSは、セットアップを容易にするためにDockerコンテナーとして配布されます。 Ubuntu14.04×64とDockerアプリケーションがインストールされたDigitalOceanドロップレットが必要になります。 具体的には:
-
ユーザーが数人しかない場合は、2GBのメモリを搭載したUbuntu14.04×64ドロップレット。 より多くのユーザーが必要な場合、またはデータ用にさらに多くのストレージが必要な場合は、4GB以上のRAMを選択してください。
-
自己署名証明書の代わりに使用するSSL証明書を購入します。 これは、実稼働環境に推奨されます。 または、無料の署名付きSSL証明書を作成することもできます。 証明書を作成する手順は、このチュートリアルの後半に含まれています。
ドロップレットの名前は重要です。外部の受信者に電子メールでメッセージを送信する場合は、メッセージがスパムとしてフラグ付けされないように逆引きDNSを構成する必要があります。 朗報:Droplet名がFQDN(完全修飾ドメイン名)に設定されている場合、DigitalOceanはPTRレコードを自動的に構成します。 からメールを送信する予定の場合 mail.example.com
、それはあなたのドロップレットの名前でもあるはずです(あなたの住所が [email protected]
).
このチュートリアルのすべてのコマンドは、root以外のユーザーとして実行する必要があります。 コマンドにrootアクセスが必要な場合は、その前に sudo
. Ubuntu 14.04を使用したサーバーの初期設定では、ユーザーを追加してsudoアクセスを許可する方法について説明しています。
ステップ1—Dockerをインストールする
最初のステップは、Dockerをインストールすることです。 このチュートリアルはDocker1.6.2に基づいています。 Dockerをインストールするための2つのオプションがあります。
- Dockerのインストールと使用方法:はじめにのUbuntu14.04の手順に従ってください
- Ubuntu 14.04 x64ドロップレットを作成するときに、Dockerアプリケーションを追加します
また、作成した非rootユーザー(このチュートリアルのすべてのコマンドを実行するユーザー)をに追加する必要があります。 docker
ユーザー・グループ。 sammyを自分のユーザー名に置き換えます。
- sudo usermod -aG docker sammy
この変更を有効にするには、root以外のユーザーとしてログアウトして再度ログインする必要もあります。
ステップ2—PEPSの展開
を使用してSSH経由でドロップレットに接続します ssh sammy@your_server_ip
(ユーザー名とサーバー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—初めてログインする
にアクセスして、IPアドレスを使用してドロップレットに接続します https://your_server_ip
ブラウザから your_server_ip
ドロップレットのIPアドレスです。
現在、一時的なSSL証明書を使用しているため、ブラウザはサイトが安全でないことを警告します。 とにかくそれを受け入れます。 Chromeの場合は、詳細をクリックして続行します。
最初の実行時に、管理者パスワードを作成するように求められます。 複雑さが十分であれば、好みのいずれかを選択してください。
PEPSのエンドツーエンド暗号化により、管理者アカウントはユーザーを作成および削除できますが、既存の暗号化されたユーザーデータにアクセスすることはできません。
管理者パスワードを設定すると、メインのPEPSインターフェイスが表示されます。
次に、ドメインと証明書を適切に設定することに焦点を当てましょう。
ステップ4—ドメインを設定する
インスタンスが正常に実行されたので、ドメインを適切に設定する必要があります。これには、実際のSSL証明書の使用、DNSの構成などが含まれます。
DNSから始めましょう。 ドメイン名プロバイダーに応じて、独自のインターフェイスを使用してドメインのDNSエントリを設定するか、独自のDNSサーバーを設定します。 独自のDNSサーバーをセットアップする場合は、DNS管理の概要の一部であるUbuntu14.04でプライベートネットワークDNSサーバーとしてBINDを構成する方法の記事を使用できます。 ]記事シリーズ。
AレコードとMXレコードの両方を設定する必要があります。 たとえば、架空の example.com
でホストされているドメイン mail.example.com
:
mail.example.com. 10799 IN A your_server_ip
mail.example.com. 10799 IN MX example.com.
ドロップレットの名前は次のようになります mail.example.com
. 心配しないで。 DigitalOceanアカウントからドロップレットの名前を変更できます。 ドロップレット名をクリックして詳細を確認し、設定タブをクリックしてから、名前変更タブをクリックします。 DNSが更新されるまで待たなければならない場合があります。
追加のレコードを設定することもできます。 オンラインチェッカーMXToolBoxは、ドメインが適切に設定されていることを確認し、いくつかの点についてアドバイスを提供するのに役立ちます。
DNSの伝播は少し遅くなる可能性がありますが、しばらくすると(多くの場合、1時間)、からPEPSにアクセスできるようになります。 https://example.com
.
注: PEPSの構成が完了した後、外部ドメインとの間でメールを送受信できない場合は、AレコードとMXレコードを再確認してください。 正しく設定されていないと、自分以外のドメインとメールを送受信できません。
ステップ5—SSL証明書を設定する
ブラウザからの無効なSSL証明書の警告が引き続き表示されます。
次に、SSL証明書を設定します。 SSL証明書をまだお持ちでない場合は、プロバイダーから購入するか、非営利目的で無料のSSL証明書を設定することもできます。
商用認証局からSSL証明書をインストールする方法の記事では、SSL証明書の購入方法を含め、SSL証明書に関するすべてを説明しています。
名前の付いたキーと証明書の両方を必ずコピーしてください server.key
と server.crt
の中に /etc/peps/
ディレクトリ。
ローカルコンピューターでそれらを準備し、証明書を含むディレクトリから実行して、ファイルをサーバーにコピーします。
- scp server.key server.crt your_server_ip:/etc/peps/
どこ your_server_ip
ドロップレットのIPアドレスです。
完了したら、ブラウザがアクセスできることを確認します https://example.com
SSLエラーなし。
ステップ6—テスト
より多くのユーザーを作成するには、管理者ユーザーとしてログインします。 admin
ユーザー名として、ステップ3:初めてログインするで作成したパスワードを使用します。 管理者ユーザーは、ドメインの電子メールアカウントを作成できます。 方法については、PEPS管理マニュアルにアクセスしてください。
まず、ドメイン内の2人の異なるユーザー間でメールを送受信してみてください。 たとえば、admin @example.comからsammy@example.comにメールを送信してみてください。 それが成功した場合は、サミーにadminに応答させて、逆の操作が成功することを確認してください。
次に、ドメイン外のアカウントにメールを送信します。 これが失敗した場合は、AレコードとMXレコードが正しく構成されていません。 ステップ4:ドメインの設定に戻ります。 ドメイン外のユーザーからのメールの受信もテストすることを忘れないでください。
結論
おめでとう! これで、DigitalOceanDropletで実行されているPEPSのインスタンスができました。 メッセージの送信、ファイルの共有など( chat などのプラグインを実行することにより)を安全に行うことができます。
利用可能ないくつかのマニュアルがあります:
PEPSの最新ニュースについては、PEPSFacebookページもご覧ください。