かんがるーさんの日記

最近自分が興味をもったものを調べた時の手順等を書いています。今は Spring Boot をいじっています。

Spring Boot 1.5.x の Web アプリを 2.0.x へバージョンアップする ( その28 )( Docker で SMTPサーバ+Webmailクライアント環境を構築する )

概要

記事一覧はこちらです。

Spring Boot 1.5.x の Web アプリを 2.0.x へバージョンアップする ( その27 )( ProviderManager#getProviders が DaoAuthenticationProvider を3つ返す原因を調査する ) の続きです。

参照したサイト・書籍

目次

  1. SMTP+IMAP4サーバを構築する
  2. Webmail クライアント Rainloop の環境を構築する
  3. 動作確認

手順

SMTP+IMAP4サーバを構築する

まずは SMTPサーバから。Docker イメージは tvial/docker-mailserver を使用します。Webmail クライアント Rainloop からの接続に IMAP4 が使用されるので、IMAP4 も使用可能にします。

プロジェクトの直下に docker/mail-server/config ディレクトリを作成します。

.env に tvial/docker-mailserver のバージョン番号を追加します。

MAILSERVER_VERSION=release-v6.1.0

docker-compose.yml を以下のように変更します。

  # docker-mailserver
  # https://hub.docker.com/r/tvial/docker-mailserver/
  # https://github.com/tomav/docker-mailserver
  #
  # 起動した docker-mailserver のコンテナ(mail-server) にアクセスする場合には以下のコマンドを実行する
  # docker exec -it mail-server /bin/sh
  #
  # アカウントのパスワードを SHA512 で作成する場合には、コンテナにアクセスして以下のようにコマンドを実行して生成する
  # doveadm pw -s SHA512-CRYPT -u [メールアドレス(例:tanaka@mail.example.com)] -p [パスワード]
  #
  mail-server:
    image: tvial/docker-mailserver:${MAILSERVER_VERSION}
    container_name: mail-server
    hostname: mail
    domainname: example.com
    ports:
      - "25:25"
      - "143:143"
    volumes:
      - ./docker/mail-server/config/:/tmp/docker-mailserver/
    environment:
      # debug したい場合には以下の行のコメントアウトを解除する
      # - DMS_DEBUG=1
      - ENABLE_SPAMASSASSIN=0
      - ENABLE_CLAMAV=0
      - ENABLE_FETCHMAIL=0
      - ENABLE_FAIL2BAN=0
      - ENABLE_POSTGREY=0
      - ENABLE_POP3=0
    cap_add:
      - NET_ADMIN
      - SYS_PTRACE
    restart: always

docker/mail-server/config/postfix-main.cf を新規作成し、以下の内容を記述します。

mydestination =
smtpd_recipient_restrictions =

docker/mail-server/config/dovecot.cf を新規作成し、以下の内容を記述します。

disable_plaintext_auth = no
ssl = no
# debug したい場合には以下の行のコメントアウトを解除する
# auth_verbose = yes
# auth_debug = yes

docker/mail-server/config/postfix-accounts.cf を新規作成し、以下の内容を記述します。

kimura.masao@test.co.jp|{PLAIN}xxxxxxxx
endo.yoko@sample.com|{PLAIN}xxxxxxxx
sato.masahiko@sample.com|{PLAIN}xxxxxxxx
takahasi.naoko@test.co.jp|{PLAIN}xxxxxxxx
kato.hiroshi@sample.com|{PLAIN}xxxxxxxx
ito.aoi@test.co.jp|{PLAIN}xxxxxxxx
tanaka.taro@sample.com|{PLAIN}xxxxxxxx
suzuki.hanako@test.co.jp|{PLAIN}xxxxxxxx

※docker-compose.yml ではメールサーバの hostname+domainname を mail.example.com と設定しましたが、アカウントには別のドメインを設定可能です。

docker-compose up -d コマンドで起動した後、docker-compose down で終了させます。

Webmail クライアント Rainloop の環境を構築する

プロジェクトの直下に docker/rainloop/data ディレクトリを作成します。

docker-compose.yml を以下のように変更します。

  # Webmail クライアント
  rainloop:
    image: hardware/rainloop
    container_name: rainloop
    ports:
      - "8888:8888"
    volumes:
      - ./docker/rainloop/data/:/rainloop/data

docker-compose up -d コマンドで起動します。

http://localhost:8888/?admin にアクセスし、admin / 12345 でログインして設定します。

f:id:ksby:20190105224104p:plain f:id:ksby:20190105224158p:plain f:id:ksby:20190105224237p:plain

http://localhost:8888/ にアクセスし、tanaka.taro@sample.com / xxxxxxxx でログインできることを確認します。

動作確認

Tomcat を起動して、貸出希望書籍 CSV ファイルアップロード画面で CSV ファイルをアップロードしてからメールが届くことを確認します。

f:id:ksby:20190105225135p:plain

履歴

2019/01/05
初版発行。