class.exe

blog.netaka.net

Dockerでメールサーバーを建てたときのメモ

4/30/2017

この記事を書いてから6年が経っています。内容が古いかもしれません。

メールサーバーをDockerで建ててみました。

imageとか

全部入りなimageを利用しました。

tomav/docker-mailserver: A fullstack but simple mailserver (smtp, imap, antispam, antivirus, ssl...) using Docker.

建て方はREADME.mdを参照

ハマったこと

接続できなくなる

接続に失敗1しすぎて、fail2banというソフトからBANされてました。

/var/log/fail2ban.log

2017-04-29 13:01:33,060 fail2ban.filter         [1022]: INFO    [dovecot] Found 203.0.113.0
2017-04-29 13:02:15,153 fail2ban.filter         [1022]: INFO    [dovecot] Found 203.0.113.0
2017-04-29 13:04:02,309 fail2ban.filter         [1022]: INFO    [dovecot] Found 203.0.113.0
2017-04-29 13:04:03,302 fail2ban.actions        [1022]: NOTICE  [dovecot] Ban 203.0.113.0

Let's Encryptの設定

推奨されているLet's EncryptをSSLに使う場合、wikiに書かれている通りLet's Encrypt関連の全体を含むパスの指定がdocker-compose.ymlに必要でした。ここを間違うと、つながるけど不正な証明書が届いたりしました。

volumes:
- /etc/letsencrypt:/etc/letsencrypt:ro

できあがったdocker-compose.yml

docker-compose.yml.distとの差分は以下のようになりました。

--- a/docker-compose.yml.dist
+++ b/docker-compose.yml
@@ -2,9 +2,9 @@ version: '2'
 
 services:
   mail:
-    image: tvial/docker-mailserver:2.1
+    image: tvial/docker-mailserver:latest
     hostname: mail
-    domainname: domain.com
+    domainname: netaka.net
     container_name: mail
     ports:
     - "25:25"
@@ -15,12 +15,14 @@ services:
     - maildata:/var/mail
     - mailstate:/var/mail-state
     - ./config/:/tmp/docker-mailserver/
+    - /etc/letsencrypt:/etc/letsencrypt:ro
     environment:
     - ENABLE_SPAMASSASSIN=1
     - ENABLE_CLAMAV=1
     - ENABLE_FAIL2BAN=1
     - ONE_DIR=1
-    - DMS_DEBUG=0
+    - DMS_DEBUG=1
+    - SSL_TYPE=letsencrypt
     cap_add:
     - NET_ADMIN
     restart: always

そして[email protected]のメールアカウントを作成した場合、メールクライアント2での設定は以下のようになりました。

Footnotes

  1. 単純にユーザー名等を間違えてただけでした。

  2. 図はmacOSのメール バージョン10.2 (3259)