TL;DR
さくらのVPS上にてDockerでメールサーバーを構築してみた
Freenomのドメイン登録やCloudflareの使い方に関しては割愛させていただきます
- Linux(Debian10)
- すでにDockerは導入済みとする
- Freenomからドメイン名を取得し、Cloudflare等のDNSに登録済みとする
Freenom : example.com (仮名) - さくらのVPS:11.22.33.44 (仮IP)
今回のサーバ構築に当たり、下記のサイトを参照させていただきました
Cloudflare:
まずは、メールで利用する独自ドメインの登録とMXの登録を行います
登録の際は、DNSオンリーにし、Cloudflareのプロキシーを通さない事
タイプ | Name | コンテンツ |
---|---|---|
A | 11.22.33.44 | |
A | example.com | 11.22.33.44 |
MX | example.com | mail.example.com |
TXT | v=spf1 +a +mx +ip4:11.22.33.44 |
Mailserver on Docker
必要なファイルをダウンロード
$ git clone https://github.com/docker-mailserver/docker-mailserver.git
$ cd docker-mailserver
docker-compose.ymlの編集
下記の箇所を自分の環境に合わせる
hostname: <HOSTNAME> # <-- CHANGE THIS
domainname: <DOMAINNAME> # <-- CHANGE THIS
hostname: mail
domainname: example.com
アカウント作成
一つのユーザアカウントとpostmasterを作成
ついでにdkimも作成しておいた
$ ./setup.sh email add [email protected] password
$ ./setup.sh alias add [email protected] [email protected]
$ ./setup.sh config dkim
Creating DKIM private key /tmp/docker-mailserver/opendkim/keys/example.com/mail.private
Creating DKIM KeyTable
Creating DKIM SigningTable
起動と初期設定
$ docker-compose up -d
送受信確認
Thunderbird等のメールクライアントで接続確認
証明書が有効になっていないため、セキュリティの警告が出るので、セキュリティ例外の承認
をして進める
自動検出だと、
受信が143番 STARTTLS:通常のパスワード認証
送信のSMTPが587番 STARTTLS:通常のパスワード認証
Gmailへ送信、Gmailから[email protected]へ受信を確認
(なお、送信の際には再度セキュリティ警告が出て失敗するので、セキュリティ例外の承認
を押して再送信を試みる)
ここまでで、送受信が確認出来れば最低限のメールサーバ構築の完了です
ポートを変更してみる
なるべくだと、SSL関連のポートを利用したいので、ポート変更して接続確認してみる
imap(143)をimaps(993)
smtp(587)をsmtps(465)
ともに、セキュリティ設定でSTARTTLSからSSL/TLSへ変更
これらも、証明書を有効になっていないので、セキュリティの警告が出るので、セキュリティ例外の承認
をして、再度、送受信を行う
ここまで、正常に送受信が確認できたら、ほぼ初期設定のままでセキュリティが甘いので、立ち下げる (メールの送受信データは残っているので、downでOK)
$ docker-compose down
DKIM登録
config/opendkim/keys/example.com/mail.txtの内容を元にDNSのTXTレコードへ登録する
mail.txtの中身
mail._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; "
"p=MIICIjANxxxxxxx" ) ; ----- DKIM key mail for example.com
- CloudflareへTXT レコード追加
タイプ | Name | コンテンツ |
---|---|---|
TXT | mail._domainkey | v=DKIM1; h=sha256; k=rsa; p=MIICIjANxxxxxxx |
コンテンツでは、""
は全て削除し、1行で記述すること
ついでに、adspとdmarcも登録する
TXT _dmarc v=DMARC1;p=none
TXT _adsp.+domainkey dkim=unkonwn
DNSに反映されるまで、しばらく待ち、下記のサイトで正確にDKIM等が設定されていることを確認します
独自ドメイン取得やDNSの設定作業が意外に手間かかりますが、その準備が整えば、Dockerを使える環境で簡単にメールサーバが構築出来ることが確認できました。
家族や自分だけのメールサーバだと十分過ぎるほどの機能ですが、職場等で実用化するには細かい設定や冗長化等を考えると何となくリスクがあるような感じはします。