docker-mailserverは、オープンソースで開発されている本番環境も想定したメールサーバーに必要な機能を取り揃えたDockerコンテナです。
本来メールサーバーを構築するとなると多くのソフト群の設定を行う必要がありますが、docker-mailserverはそれらの構築が出来上がっている状態で、設定ファイルを修正するだけで個人のメールサーバーを構築できます。
バージョンが上がるにつれどんどん使いやすくなっているので、気軽にメールサーバーが立てれるようになりましたが、日本語の解説記事が最新版に追いついていなかったので、2024年時点で自分がインストールした時の流れを記事にしてみました。
今回は数回に分けてdocker-mailserverについて、機能・仕組みの解説〜インストール〜設定〜運用までの流れや設定などを詳しく書いていこうと思います。
- docker-mailserver解説記事まとめ
- その①:概要とインストール←この記事
- その②:機能の追加と解説
- その③:運用とメンテナンス
環境と参考リンク
公式のドキュメントが大変充実しているので、迷ったらこちらを参照することをお勧めします。
簡単なメールサーバーについての解説もあるので、仕組みから理解したい人は一読するととても参考になると思います。
Docker-Mailserver:公式ドキュメント
Githubはこちら:GitHub – docker-mailserver/docker-mailserver
この記事は基本的に公式のドキュメントに沿って進めていきます。
また、この記事でインストールした環境は以下となります。
種類 | 名称 | バージョン |
---|---|---|
OS | Ubuntu | 24.04 LTS |
ソフトウェア | docker | 27.1.1 |
ソフトウェア | docker-mailserver | 14.0.0 |
インストール〜起動まで
事前準備
それでは早速進めていこうと思います。まずは独自ドメインを用意して、Docker-mailserverを構築するサーバーのIPアドレスへとMXレコードを設定してください。
本記事では以下の設定で進めていきます。
項目 | 値 |
---|---|
ドメイン名 | exsample.com |
メールサーバー用ドメイン名 | mail.exsample.com |
メールサーバーのIPアドレス | xxx.xxx.xxx.xxx |
この部分についての解説は他の記事を参考にしていただければと思います。
インストール:必要なファイルを取得
それでは早速インストールを始めていきます。
まずはインストールするディレクトリを作成し、公式から必要なファイルをダウンロードします。
# ディレクトリ作成
mkdir mailserver
cd mailserver
# 変数設定
DMS_GITHUB_URL="https://raw.githubusercontent.com/docker-mailserver/docker-mailserver/master"
# ファイルをダウンロード
wget "${DMS_GITHUB_URL}/compose.yaml"
wget "${DMS_GITHUB_URL}/mailserver.env"
必要なものはこれだけです!シンプル。
インストール:それぞれのファイルの環境に合わせて修正
まずは最小限の構成で動作の確認までを行えればと思います。
ダウンロードしてきた`compose.yml`を編集します。
$ vi compose.yml
最初に編集が必要なのは`hostname`の部分だけです。
(fail2banを使用する場合は該当部をアンコメントする必要があります→コメント参照)
services:
mailserver:
image: ghcr.io/docker-mailserver/docker-mailserver:latest
container_name: mailserver
# ホストネームをあなたのドメインに変更してください。(MXレコードで指定した先のドメイン)
hostname: mail.exsample.com
env_file: mailserver.env
# 使用するポートのセキュリティーについては以下のURLを参照
# https://docker-mailserver.github.io/docker-mailserver/latest/config/security/understanding-the-ports/
ports:
- "25:25"
- "143:143"
- "465:465"
- "587:587"
- "993:993"
volumes:
- ./docker-data/dms/mail-data/:/var/mail/
- ./docker-data/dms/mail-state/:/var/mail-state/
- ./docker-data/dms/mail-logs/:/var/log/mail/
- ./docker-data/dms/config/:/tmp/docker-mailserver/
- /etc/localtime:/etc/localtime:ro
- ./docker-data/certs/mail.8hertz.jp/:/tmp/dms/custom-certs/
restart: always
stop_grace_period: 1m
# `mailserver.env`で`ENABLE_FAIL2BAN=1`を使用する場合は以下をアンコメントしてください。
# cap_add:
# - NET_ADMIN
healthcheck:
test: "ss --listening --tcp | grep -P 'LISTEN.+:smtp' || exit 1"
timeout: 3s
retries: 0
次にmailserver.env
を編集します。
こちらは長いので編集が必要な部分だけ抜き出します。
コメントを残す