LoginSignup
7
9

More than 1 year has passed since last update.

docker-mailserverで簡単(?)メールサーバ構築

Last updated at Posted at 2022-04-18

はじめに

メールサーバを構築する状況となって、ちょうど、以下の記事が目に止まったので構築をしてみました。
開発中のため、なかなかすんなりいかなかったのでメモとして残します。

目的

簡単にメールサーバを作りたい方向け

参考資料

はじめに、参考にさせていただいたサイト、本家サイトのリンクをお知らせします。

作業手順

前準備

  • docker を実行できる環境
  • メールが配信ができる環境
  • DNSでVPSをMXとして指定

普通に、ubuntuが動作するVPSを契約してもらえればいいんじゃないかな?

以下が推奨環境

  • 1 Core
  • 2GB RAM
  • Swap enabled for the container

最低環境

  • 1 vCore
  • 512MB RAM
  • ClamAV を実行するなら512GBでは足りないから、スワップの設定とか必要

ダウンロード

DMS_GITHUB_URL='https://raw.githubusercontent.com/docker-mailserver/docker-mailserver/master'
wget "${DMS_GITHUB_URL}/docker-compose.yml"
wget "${DMS_GITHUB_URL}/mailserver.env"
wget "${DMS_GITHUB_URL}/setup.sh"
chmod a+x ./setup.sh

設定ファイル変更

  • docker-compose.ymlhostnamedomainnameを書き換えます。
  • docker-compose.ymlの先頭行にversion: "3"を追記します。これがなくてdocker-composeがinvalidなymlとして起動しませんでした。。。
  • mailserve.envを書き換える
docker-compose.yml
version: "3" <- 追記する
services:
  mailserver:
    image: docker.io/mailserver/docker-mailserver:latest
    container_name: mailserver
    # If the FQDN for your mail-server is only two labels (eg: example.com),
    # you can assign this entirely to `hostname` and remove `domainname`.
    hostname: mail <- 変更する
    domainname: example.com <- 変更する
    env_file: mailserver.env
    # More information about the mail-server ports:
    # https://docker-mailserver.github.io/docker-mailserver/edge/config/security/understanding-the-ports/
    # To avoid conflicts with yaml base-60 float, DO NOT remove the quotation marks.
    ports:
      - "25:25"    # SMTP  (explicit TLS => STARTTLS)
      - "143:143"  # IMAP4 (explicit TLS => STARTTLS)
      - "465:465"  # ESMTP (implicit TLS)
      - "587:587"  # ESMTP (explicit TLS => STARTTLS)
      - "993:993"  # IMAP4 (implicit TLS)
    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
      - /etc/letsencrypt:/etc/letsencrypt
    restart: always
    stop_grace_period: 1m
    cap_add:
      - NET_ADMIN
      - SYS_PTRACE

メールのアカウントを作成

メールサーバなので、メールアカウントが1個必要だそうです。

dockerのホストOSで以下のようにしてアカウントを作成します。

docker run --rm \
  -e MAIL_USER=user1@example.com \
  -e MAIL_PASS=mypassword \
  -it mailserver/docker-mailserver:latest \
  /bin/sh -c 'echo "$MAIL_USER|$(doveadm pw -s SHA512-CRYPT -u $MAIL_USER -p $MAIL_PASS)"' >> docker-data/dms/config/postfix-accounts.cf

起動

普通にdocker-compose up とします。
起動ログが流れますので、問題ないか確認します。

先程のアカウント作成を飛ばしている場合は、Dovecotが起動できなくてエラーとなります。
アカウントを作成していると、とりあえず起動します。

SSL/TLS設定

Let'sEncryptを設定します。

DKIM設定

dockerが起動すると、以下のコマンドが使えます。

./setup.sh config dkim

https://docker-mailserver.github.io/docker-mailserver/v10.5/config/best-practices/dkim/
ここに書いてあります。

以下のファイルにDNSサーバのテストTXTに登録をする情報が書かれています。

#:~/xxxx/docker-data/dms/config/opendkim/keys/example.com$ cat mail.txt
mail._domainkey IN      TXT     ( "v=DKIM1; h=sha256; k=rsa; "
          "p=MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzEmpmMIC/QTddA2YgbwctOs7oKz2kntUxG9TdkS7chBUjjuJvpoifQw+05izKRyFIcjuUO1Ivg82qQnJIOsDS7v+60hU1la354mJv6hNXSU0n223HCErTg+NVcg9cCkFYZxxPxR+cIHu6bBPoiGMB15cnUVqyttIDsZGTkYjxnCxdJDWllk0NiDjVokSzFNFwjT/iMdSGbyfyN"
          "g0PUWltJHbe6PG9NRa2jAv//7a5r/fOmk0m3oWCPKzIA6Z7OSQbXT9JtRBDkchjC+qfDuoCozew1ZLjhvtfPuL2OJbkbE8sVIcByqmW4s4Ms400VPfq99FJ+CDMT4yTdzrjsL5bzF4Dd30MMXo8mlnUd69+tnETSjd/ZS/SJAscmCVPQALmoOArjvdVRYnwZ7QfEBYZkXaIh8TOg2drAle8O8cdsIa/kKGVnPUZO/5Sh3H/OKmJs/sp/7o"
          "VLZXrVg/B2zB8q5HWyLgVO31SCEA9Zk5CKgff9Pp9nqwBNHVrlPZcaz2sODZgB1ApgiIMFl1/ygu0YhNsoK8VausEnud79YH0tyPAM8Fhurfxmj/kxXKkvgN7FyGmxVMrrYBp/V6o2g41hbSmRCsyRpvoZ7xbs0YslYA+E8yFFyAB9dmvoTuD8quQo6jhXBvwQuK+oLfB5S9eYanBircqzdsEDWw3VP5Y50CAwEAAQ==" )  ; ----- DKIM key mail for example.com

v=DKIM1; ...の部分は、全体をカッコと”を削除して、以下のように1行にして、全体を”で囲んで登録します。

"v=DKIM1; h=sha256; k=rsa; p=MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzEmpmMIC/QTddA2YgbwctOs7oKz2kntUxG9TdkS7chBUjjuJvpoifQw+05izKRyFIcjuUO1Ivg82qQnJIOsDS7v+60hU1la354mJv6hNXSU0n223HCErTg+NVcg9cCkFYZxxPxR+cIHu6bBPoiGMB15cnUVqyttIDsZGTkYjxnCxdJDWllk0NiDjVokSzFNFwjT/iMdSGbyfyNg0PUWltJHbe6PG9NRa2jAv//7a5r/fOmk0m3oWCPKzIA6Z7OSQbXT9JtRBDkchjC+qfDuoCozew1ZLjhvtfPuL2OJbkbE8sVIcByqmW4s4Ms400VPfq99FJ+CDMT4yTdzrjsL5bzF4Dd30MMXo8mlnUd69+tnETSjd/ZS/SJAscmCVPQALmoOArjvdVRYnwZ7QfEBYZkXaIh8TOg2drAle8O8cdsIa/kKGVnPUZO/5Sh3H/OKmJs/sp/7oVLZXrVg/B2zB8q5HWyLgVO31SCEA9Zk5CKgff9Pp9nqwBNHVrlPZcaz2sODZgB1ApgiIMFl1/ygu0YhNsoK8VausEnud79YH0tyPAM8Fhurfxmj/kxXKkvgN7FyGmxVMrrYBp/V6o2g41hbSmRCsyRpvoZ7xbs0YslYA+E8yFFyAB9dmvoTuD8quQo6jhXBvwQuK+oLfB5S9eYanBircqzdsEDWw3VP5Y50CAwEAAQ=="

DMARC & SPF

こちらは記載の通りに作業をしたら問題なく登録されました。

送受信テスト

以下のサービスを利用してDKIMの設定に加えて、SPFなどのその他の設定が問題ないかを確認します。

image.png

7
9
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
7
9