ドキュメント
英語が読める人は、こんな記事読んでないでドキュメント読んで下さい。
間違っていたらコメントで御教示下さい
0. ゴール
- Rocky Linux 8 で Postfix + Devecot のメールサーバーを建てる。
- SMTP と IMAP を使う。POP3は使いません。
- docker-compose でお手軽に。
- yourname@mail.yourdomain.jp でメール送受信できるようにする。
- Gmail に嫌われないように、SPF / DKIM / DMARC に対応する。
- そのために必要な DNS の登録もする。
- Let's encrypt も使う。
domain は yourname@mail.yourdomain.jp
letsencrypt 更新通知用メールアドレスは ITSUMO.TSUKATTE.IRU@gmail.com
としています。適宜読み替えてどうぞ。
以下はインストール済みとします。
- docker
- git
VSCode
1. ダウンロード
お好きなディレクトリでどうぞ。
git clone https://github.com/docker-mailserver/docker-mailserver.git
cd docker-mailserver
2. 設定① mailserver.env の設定
cd docker-mailserver
vim mailserver.env
Vim なんて使わず VSCode を使いましょう
# 14行目
- OVERRIDE_HOSTNAME=
+ OVERRIDE_HOSTNAME=mail.yourdomain.jp
# 77行目
- TZ=
+ TZ=Asia/Tokyo
# 241行目
- SSL_TYPE=
+ SSL_TYPE=letsencrypt
+ LETSENCRYPT_HOST=mail.yourdomain.jp
+ LETSENCRYPT_EMAIL=ITSUMO.TSUKATTE.IRU@gmail.com
3. 設定② compose.yaml の設定
vim compose.yaml
hostname と Let's encrypt の Docker Volume の設定を追加します。
services:
mailserver:
image: ghcr.io/docker-mailserver/docker-mailserver:latest
container_name: mailserver
# Provide the FQDN of your mail server here (Your DNS MX record should point to this value)
+ hostname: mail.yourdomain.jp
env_file: mailserver.env
# More information about the mail-server ports:
# https://docker-mailserver.github.io/docker-mailserver/latest/config/security/understanding-the-ports/
ports:
- "25:25" # SMTP (explicit TLS => STARTTLS, Authentication is DISABLED => use port 465/587 instead)
- "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
# Uncomment if using `ENABLE_FAIL2BAN=1`:
# cap_add:
# - NET_ADMIN
healthcheck:
test: "ss --listening --tcp | grep -P 'LISTEN.+:smtp' || exit 1"
timeout: 3s
retries: 0
4. 立ち上げてみる
docker compose up
バックグラウンドで起動したいなら
docker compose up -d
メールアドレスが追加されていない場合は、2分でシャットダウンします。それまでに、次へ GO!
5. メールアドレスを追加する
yourname@mail.yourdomain.jp だけじゃなく info@mail.yourdomain.jp も追加したいよ〜って思ったら、 username
を info
に変更して、この作業を繰り返して下さい。
SecurePassword
も強いパスワードに変更して下さい。
# docker compose を起動した状態で
# メールアドレスを追加するなら
sudo docker exec -it mailserver setup email add username SecurePassword
# パスワードを変更するなら
sudo docker exec -it mailserver setup email update username UpdatedSecurePassword
# 追加されているメールアカウントを確認するなら
sudo docker exec -it mailserver setup email list
詳しいコマンドは
6. DKIM の設定
docker exec -it mailserver setup config dkim
作成した公開鍵を表示します。yourdomain は変更して下さい。
sudo cat docker-data/dms/config/opendkim/keys/mail.yourdomain.jp/mail.txt
# mail._domainkey IN TXT (
# "v=DKIM1; h=sha256; k=rsa; "
# "p=公開鍵データを表す長い文字列"
# "続きの分割されていた文字列"
# ) ; ----- DKIM key mail for mail.yourdomain.jp
何らかの手段で、それらをコピーしておいてください。
7. DNS の設定
タイプ | 名称 | TTL | 値 |
---|---|---|---|
A | 3600 | メールサーバーの IP アドレス | |
MX | 3600 | ポイント先:mail.yourdomain.jp | 優先度:10 | |
TXT | _dmarc.mail | 3600 | 下記参照 |
TXT | mail._domainkey | 3600 | 下記参照 |
_dmarc.mail の値
改行せず1行で入力します。
- rua:追加したメールアドレスを全て列挙する
- ruf:失敗レポートの送り先
v=DMARC1; p=quarantine; pct=100;
rua=mailto:yourname@mail.yourdomain.jp,
rua=mailto:mouhitotsuno@mail.yourdomain.jp,
ruf=mailto:ITSUMO.TSUKATTE.IRU@gmail.com
mail._domainkey の値
ダブルクオート"
を取り除き、分割されていたp値
を結合して、改行せず1行で入力します。
v=DKIM1; h=sha256; k=rsa;
p=公開鍵データを表す長い文字列と続きの分割されていた文字列を結合したやつ
8. 完了!
お好きなメールクライアントソフトで、ログインしてみましょう!
無事、送受信ができたら設定完了です!
お疲れ様でした。
参考資料&初心者でない方の丁寧な記事たち
docker-mailserverで簡単(?)メールサーバ構築 - 2022/06/03
docker-mailserverをさくっと立ち上げる(令和4年2月版) - 2022/04/22
docker-mailserverの設定 - 2022/05/02
docker メールサーバ構築 (docker-mailserver)