メールサーバーをDockerで建ててみました。
imageとか
全部入りなimageを利用しました。
建て方は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での設定は以下のようになりました。