はじめに
docker-compose
を使用して、メールサーバを構築しました。dockerにはmailserver
というコンテナがあり、それを使用すれば簡単に構築できる様です。設定ファイルも自分で作成する必要は無く、こちらで色々な人が作成した設定ファイル一覧を見ることが出来ます。今回はダウンロード数も多く、メジャーなtvial/docker-mailserverを使用して、サーバを構築してみます。
準備するもの
docker-composeが使用できるレンタルサーバを用意して下さい。
awsでもgcpでも何でも良いです。
用意出来たら、docker-composeが使用できる様な環境設定をお願い致します。
手順その1 プロジェクトフォルダ作成
最初にプロジェクトフォルダを作成して下さい。
#プロジェクトフォルダ作成
$ mkdir project_mail
#プロジェクトフォルダに移動
$ cd project_mail
手順その2 モジュール入手
次にモジュールを入手します。
$ wget https://raw.githubusercontent.com/tomav/docker-mailserver/master/setup.sh
$ wget https://raw.githubusercontent.com/tomav/docker-mailserver/master/docker-compose.yml
$ wget https://raw.githubusercontent.com/tomav/docker-mailserver/master/mailserver.env
$ curl -o .env https://raw.githubusercontent.com/tomav/docker-mailserver/master/compose.env
$ chmod a+x ./setup.sh
$ ls -la
手順その3 フォルダ作成
フォルダが作成されていない場合は、作成して下さい。
#フォルダ作成
$ mkdir docker-data/dms/config
$ mkdir docker-data/dms/mail-data
$ mkdir docker-data/dms/mail-logs
$ mkdir docker-data/dms/mail-state
手順その4 環境変数設定
.env
にドメイン名を追記して下さい。
一応、ここで設定しなくても、メールアドレス登録時に自動的に登録されるっぽいです。
今回はローカルドメインを指定するので、自分自身へのメール送受信のみ可能になります。
DOMAINNAME=domain.local
手順その5 ポート使用プロセスの停止
25番ポートを使用しているプロセスがあったら、停止して下さい。
#使用ポート表示(sudo使用)
$ sudo lsof -i -P | grep "LISTEN"
#25番ポートのプロセス停止
$ kill プロセスid
手順その6 コンテナ設定
コンテナを起動して、メールアドレスの登録などを行います。
ここで、登録するメールアドレスは、sample_mail@domain.local
、パスワードは、mailpass
になります。メールアドレスは、複数登録可能です。
#docker-compose起動
$ docker compose up -d
#メールアドレス登録
$ sudo ./setup.sh email add sample_mail@domain.local mailpass
#ポストマスター登録
$ sudo ./setup.sh alias add postmaster@domain.local sample_mail@domain.local
#dkim設定
$ sudo ./setup.sh config dkim
#登録アドレス一覧表示
$ sudo ./setup.sh email list
#登録ポストマスター一覧表示
$ sudo ./setup.sh alias list
#docker-compose停止
$ docker-compose down
#docker-compose起動
$ docker-comopse up -d
#ログ確認
$ docker-comopse logs
補足
補足ですが、./setup.sh
のコマンド一覧は、下記になります。詳細は、こちらやこちらを参照してください。
#email:
./setup.sh email add <email> <password>
./setup.sh email update <email> <password>
./setup.sh email del <email>
./setup.sh email restrict <add|del|list> <send|receive> [<email>]
./setup.sh email list
#alias:
./setup.sh alias add <email> <recipient>
./setup.sh alias del <email> <recipient>
./setup.sh alias list
#config:
./setup.sh config dkim <keysize> (default: 2048)
./setup.sh config ssl
#debug:
./setup.sh debug fetchmail
./setup.sh debug show-mail-logs
./setup.sh debug inspect
./setup.sh debug login <commands>
手順その7 ポートを開く
使用しているサーバのポートを開きます。
開くポートの番号は、下記になります。
- 143
- 587
- 25
以上で、設定は終了になります。
実際にメールを送信してみる
それでは、実際にメールを送信してみます。
ドメイン名に独自ドメインを使用していない場合は、自分自身にしかメールを送信できません。
Thunderbirdなどのメールソフトに下記の設定を行います。
設定内容
メールアドレス : sample_mail@domain.local
パスワード : mailpass
プロトコル : IMAP
受信メール
サーバ名 : サーバのIPアドレス、または独自ドメイン名
ポート番号 : 143
暗号化方法 : なし
認証方式 : 通常のパスワード認証
送信メール
サーバ名 : サーバのIPアドレス、または独自ドメイン名
ポート番号 : 587
暗号化方法 : なし
認証方式 : 通常のパスワード認証
実際に送受信出来たら、設定成功です。
もし、独自ドメインを取得したけど外部にメール送信できない場合は、メールサーバを構築したけどメール送信が出来ないをご参照ください。