LoginSignup
8
7

More than 1 year has passed since last update.

docker mailserverでメールサーバを構築する

Last updated at Posted at 2021-11-10

はじめに

 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
  暗号化方法 : なし
  認証方式  : 通常のパスワード認証

実際に送受信出来たら、設定成功です。
もし、独自ドメインを取得したけど外部にメール送信できない場合は、メールサーバを構築したけどメール送信が出来ないをご参照ください。

参照

Dockerで構築!メールサーバーを5分で

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7