2018年8月13日月曜日

Mail-in-a-Box を使ってメールサーバを構築してみた

概要

Mail-in-a-Box はメールに必要なコンポーネントをいろいろと含んだメールサーバを構築するためのオールインワンパッケージです
今回は Ubuntu14.04 にインストールしてみました
構築から実際にメールを送信受信できるところまで試してみました

環境

  • Ubuntu 14.04
  • Mail-in-a-Box v0.28

事前準備

以下の準備をインストール前に行っておきましょう
正直ここが一番重要でかつ一番大変かもしれません

  1. Ubuntu 14.04 の準備
  2. メールサーバに設定するドメインの取得
  3. Ubuntu 14.04 サーバの IP アドレスを ns1.box.your-domain-name.comns2.box.your-domain-name.com の名前で引けるように Glue レコードとして登録
  4. 取得したドメインのネームサーバを ns1.box.your-domain-name.comns2.box.your-domain-name.com に設定
  5. Ubuntu 14.04 サーバの IP アドレスを box.your-domain-name.com で逆引きできるように逆引き設定
  6. 80 と 443 ポートをオープン

3 と 4 は Freenom だと以下のような感じです
ネームサーバの設定
mail_in_a_box6.png

Glue レコードの設定
mail_in_a_box7.png

5 は大抵の場合はサーバをレンタルなり構築したクラウドプロバイダが逆引き設定の機能を提供してくれているはずです
digitalOcean を使った場合は設定したホスト名が自動で逆引きレコードとして登録されるようです

6 最後のポートを開ける作業はインストールの途中で Lets'Encrypt で証明書を取得するときに利用します
なので取得後は IP などで制限しても OK です

インストール

  • apt -y install curl
  • curl -s https://mailinabox.email/setup.sh | sudo bash

これでインストールが始まります
インストーラが起動するのでいろいろと質問に答えていきます

開始の確認です
OK で次に進みます
mail_in_a_box1.png

メールアドレスのドメインを決定します
取得したドメインを指定しましょう
mail_in_a_box2.png

次にこのメールサーバのホスト名を設定します
通常はメールアドレスのドメインの前に box. を付与したものが設定されます
mail_in_a_box3.png

次にタイムゾーンやロケールの設定を行います
mail_in_a_box4.png

基本はそのまま進めば OK です
mail_in_a_box5.png

これで設定が完了です
あとは必要なパッケージのインストールが次々と行われていきます
しばらくかかるので待ちましょう

途中で管理画面の admin ユーザのパスワードを設定します

完了すると管理画面の URL が表示されるのでアクセスしましょう
ユーザ名は me@ から始まる設定したアドレスになります
mail_in_a_box8.png

DNSSEC の設定

管理画面で以下のように DNSSEC の警告が出ているので直します
mail_in_a_box9.png
「show more」を選択すると Public Key の情報が出てくるのでこれをドメインを取得した DNS プロバイダに設定するところがあると思うので指定の情報を入力しましょう
ちなみに Freenom にはありませんでした

証明書の取得

LetsEncrypt で各ドメインの証明書を取得できます
「System」->「TLS Certificats」で「Provision」を選択することで作成できます
が、現状だと引数が足りないというエラーが表示されて作成できませんでした

  • cp /root/mailinabox/management/ssl_certificates.py{,.back}
  • vi /root/mailinabox/management/ssl_certificates.py.back
  • diff /root/mailinabox/management/ssl_certificates.py{,.back}
334,335d333
<                                               "--email", "me@h-systems.ga",
<                                               "--agree-tos",
  • reboot -h now

で再度実行すればいけました
成功すると以下のようになります
mail_in_a_box11.png

これが完了すれば IP ではなく https://box.your-domain-name.com/admin で管理画面にアクセスできるようになります

バージョンチェックを有効にする

ダッシュボードトップに「Enable New-Version Check」のリンクがあるので選択して有効にしておきましょう
mail_in_a_box12.png

おそらくこれでステータスチェックがすべてグリーンになると思います

テストメールを送受信してみる

Mail-in-a-Box には Web メーラも付属しています
「Mail」->「Instructions」から URL を選択します
mail_in_a_box13.png

すると roundcube という Web メーラが立ち上がるのでログインしましょう
ID/PW は管理画面と同じです
mail_in_a_box14.png

ログインが成功すると以下のような画面になります
「新規作成」を選択してメールを作成しましょう
mail_in_a_box15.png

とりあえず作成した管理者のアドレスに送信したいと思います
mail_in_a_box16.png

成功すると受信ボックスに戻るのでメールが来ているか確認してみましょう
mail_in_a_box17.png

Gmail でも受信できるか

念の為 Gmail から送信してみましたが問題なく受信できました

トラブルシューティング

セットアップに失敗する場合は DNS の設定を見直しましょう
今回メールサーバ自体が DNS サーバになります
なので、localhost を参照する必要があります
/etc/resolv.conf の設定で外部の DNS を参照している場合などはセットアップに失敗することがありました

セットアップ後に Your box's reverse DNS is currently [Not Set] のエラーが出る場合は DNS の逆引き設定ができていないためになります
digital Ocean などの場合は自動で逆引き設定が入るようですがそうでないクラウドプロバイダもあります
その場合は各自のクラウドプロバイダに逆引き設定を入れてもらうようにしましょう
https://github.com/mail-in-a-box/mailinabox/issues/1270

セットアップ時に Let'sEncrypt で証明書を取得しようとしています
しかし上記で説明したように Python スクリプトに誤りがあるのでコケてしまいます
セットアップ時のエラーはスルーしてセットアップ後にスクリプトを修正して証明書を取得しましょう

ファイアウォールなどある場合は以下のポートのオープンが必須です

  • 22
  • 53
  • 25/tcp
  • 587
  • 993
  • 995
  • 4190/tcp
  • 80
  • 443

https://discourse.mailinabox.email/t/what-ports-do-i-need-to-open/2240/2

最後に

Mail-in-a-Box を Ubuntu 14.04 にインストールしてオールインワンなメールサーバを構築してみました
メールサーバを構築しようとすると MTA, MDA, MTU などいろいろな要素を理解していないとできないので、その辺が面倒がなくなるかなと思います
デフォルトで管理画面や Web メーラも付いているので直感的な設定ができるのも嬉しい点かなと思います

今回は基本的な機能しか紹介していませんが Mail-in-a-Box には他にも様々な機能が搭載されています
メールのエイリアスや他のユーザの登録、メールとは関係ないです ownCloud も載っているのでクラウドストレージとしても使えます

また DNSSEC を有効にできませんでしたが特に問題はなさそうでした
もしかするとメールプロバイダによってはスパムメールとして弾かれてしまうかもしれません

結果的に事前準備としてサーバの確保や DNS の設定、逆引きレコードの登録などやりましたがおそらくこれが一番大変だったかなと思います

参考サイト

0 件のコメント:

コメントを投稿