'あわせて読ませたいを過去記事に追記'
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
Rikuoh Tsujitani 2023-08-26 22:12:30 +09:00
parent 141c5e651f
commit e096acba2e
2 changed files with 11 additions and 0 deletions

View file

@ -9,6 +9,7 @@ tags: ['tech']
[Mailu](https://github.com/Mailu/Mailu)というOSSがある。メールサーバの構成要素が統合されていて全部よしなにやってくれる上にWeb UIまで付いてくるすごいやつだ。こんなのがあるんだったらVPSを契約している身でわざわざ他所に金を払っている場合ではない。こうして、僕は意気揚々と構築作業に乗り出したのだった。**結論から言うと、考えが甘かった。** 相変わらずメールサーバは手強い。本稿ではDockerを利用したMailuの構築方法について記す。 [Mailu](https://github.com/Mailu/Mailu)というOSSがある。メールサーバの構成要素が統合されていて全部よしなにやってくれる上にWeb UIまで付いてくるすごいやつだ。こんなのがあるんだったらVPSを契約している身でわざわざ他所に金を払っている場合ではない。こうして、僕は意気揚々と構築作業に乗り出したのだった。**結論から言うと、考えが甘かった。** 相変わらずメールサーバは手強い。本稿ではDockerを利用したMailuの構築方法について記す。
## ファイルの取得と編集 ## ファイルの取得と編集
`docker`および`docker-compose`はすでに導入されているものとする。専用のユーザでホーム直下にディレクトリを作成した後は通常、`docker-compose.yml`の雛形をコピペする形が典型的だが、MailuはWeb上の[セットアップユーティリティ](https://setup.mailu.io/2.0/)でユーザの意図に適った設定ファイルを出力してくれる。これらのファイルは`docker-compose.yml`と`.env`ファイルなのでいつでも編集できる。 `docker`および`docker-compose`はすでに導入されているものとする。専用のユーザでホーム直下にディレクトリを作成した後は通常、`docker-compose.yml`の雛形をコピペする形が典型的だが、MailuはWeb上の[セットアップユーティリティ](https://setup.mailu.io/2.0/)でユーザの意図に適った設定ファイルを出力してくれる。これらのファイルは`docker-compose.yml`と`.env`ファイルなのでいつでも編集できる。
@ -24,6 +25,7 @@ REAL_IP_FROM=あんたのグローバルIP
自動生成の甲斐あって他に修正すべき箇所は大してない。もし皆さんがCloudflareなどのCDNを間に挟んで**いなければ**ここからの話はとてもスムーズに進む。……だが、今時そんな人いるか それこそ10年前とは違う。今はなんでもCDNの上に乗っかっている。ところがメールサーバにはそういう話がてんで通用しない。だから面倒くさいんだ。 自動生成の甲斐あって他に修正すべき箇所は大してない。もし皆さんがCloudflareなどのCDNを間に挟んで**いなければ**ここからの話はとてもスムーズに進む。……だが、今時そんな人いるか それこそ10年前とは違う。今はなんでもCDNの上に乗っかっている。ところがメールサーバにはそういう話がてんで通用しない。だから面倒くさいんだ。
## DNSレコードの設定 ## DNSレコードの設定
Cloudflareの設定を例にとる。メールサーバに用いるルートドメインを選択して**DNS → レコード**からサブドメインを新設する。通例であればサーバのIPアドレスをAレコードでサブドメインと紐づけて、MXレコードに当該のドメインを登録しておしまいだが、メールサーバに対しては「プロキシ」を有効にしては**ならない。** 適用後の表示が「DNSのみ」になるように定める。 Cloudflareの設定を例にとる。メールサーバに用いるルートドメインを選択して**DNS → レコード**からサブドメインを新設する。通例であればサーバのIPアドレスをAレコードでサブドメインと紐づけて、MXレコードに当該のドメインを登録しておしまいだが、メールサーバに対しては「プロキシ」を有効にしては**ならない。** 適用後の表示が「DNSのみ」になるように定める。
@ -144,6 +146,7 @@ server {
メールサーバ用のリバースプロキシはSSL証明書の自動取得用に80番ポートが欲しいだけなので簡素な設定で済む。2つのファイルを作成したら`systemctl restart nginx`でnginxを再起動する。 メールサーバ用のリバースプロキシはSSL証明書の自動取得用に80番ポートが欲しいだけなので簡素な設定で済む。2つのファイルを作成したら`systemctl restart nginx`でnginxを再起動する。
## 初回起動と管理画面の設定 ## 初回起動と管理画面の設定
いよいよ初回起動に入る。`docker-compose up`でログを垂れ流して起動する。文字列の中にSSL証明書が取得されたっぽい英文を見つけたら、ひとまず成功と見ていいだろう。Ctrl+cでサーバを停止させた後に`docker-compose up -d`で立ち上げ直して、アドミンユーザの作成を行う。 いよいよ初回起動に入る。`docker-compose up`でログを垂れ流して起動する。文字列の中にSSL証明書が取得されたっぽい英文を見つけたら、ひとまず成功と見ていいだろう。Ctrl+cでサーバを停止させた後に`docker-compose up -d`で立ち上げ直して、アドミンユーザの作成を行う。
@ -157,6 +160,7 @@ $ docker-compose exec admin flask mailu admin ユーザ名 ドメイン 'パス
次に赤枠で囲ったアイコンからユーザを作成する。ここで作成するユーザの名前がメールアドレスの前半分になる。最後に青枠で囲ったアイコンから右上の「鍵を再生成」を押す。すると、SPF/DKIM/DMARCの設定に必要な情報が表示されるので各々をDNSレコードに登録しに行く。デフォルトで迷惑メールフォルダに振り分けられたくなければ絶対に登録した方がよい。 次に赤枠で囲ったアイコンからユーザを作成する。ここで作成するユーザの名前がメールアドレスの前半分になる。最後に青枠で囲ったアイコンから右上の「鍵を再生成」を押す。すると、SPF/DKIM/DMARCの設定に必要な情報が表示されるので各々をDNSレコードに登録しに行く。デフォルトで迷惑メールフォルダに振り分けられたくなければ絶対に登録した方がよい。
## 送受信の確認 ## 送受信の確認
管理画面からWebメールクライアントに移動して実際に送受信を行う。相手のメールがこちらに届いて、その逆にも問題がなければメッセージのソースからSPF/DKIM/DMARCの認証が行えているか検証する。すべてがクリアなら以下の形式で承認されているはずだ。 管理画面からWebメールクライアントに移動して実際に送受信を行う。相手のメールがこちらに届いて、その逆にも問題がなければメッセージのソースからSPF/DKIM/DMARCの認証が行えているか検証する。すべてがクリアなら以下の形式で承認されているはずだ。
@ -169,6 +173,7 @@ reason=100
さらに同様の作業を普段使っているメールクライアントからも行えるか確認しておく。ログイン情報は管理画面の「クライアント設定」から見られる。いずれの環境でも支障がなければメールサーバの構築作業は無事に終了となる。 さらに同様の作業を普段使っているメールクライアントからも行えるか確認しておく。ログイン情報は管理画面の「クライアント設定」から見られる。いずれの環境でも支障がなければメールサーバの構築作業は無事に終了となる。
## おわりに ## おわりに
さすが全部まとまっているだけあってMailuのセキュリティ設定は十分にこなれているが、それでもメールパスワードの管理は常にユーザの自己責任として生涯ついて回る。特にメールサーバは狙われやすい対象ゆえ英数字で10桁未満などという寝ぼけたパスワードでは秒で破られてしまうだろう。 さすが全部まとまっているだけあってMailuのセキュリティ設定は十分にこなれているが、それでもメールパスワードの管理は常にユーザの自己責任として生涯ついて回る。特にメールサーバは狙われやすい対象ゆえ英数字で10桁未満などという寝ぼけたパスワードでは秒で破られてしまうだろう。

View file

@ -76,3 +76,9 @@ Protonはメールホスティングに加え、オンラインストレージ
しかしその永続性もメールサーバの安定稼働なくしては意義を持ちえず、いかなる経済的状況に晒されようとも確実に維持できるサーバはより望ましい。ある意味でメールとは自身をインターネット上に存在させるための、最小限かつもっとも価値中立的なインフラと言えるのだ。 しかしその永続性もメールサーバの安定稼働なくしては意義を持ちえず、いかなる経済的状況に晒されようとも確実に維持できるサーバはより望ましい。ある意味でメールとは自身をインターネット上に存在させるための、最小限かつもっとも価値中立的なインフラと言えるのだ。
そのように考えると、貴重なゴールデンウィークを丸一日潰してメールサーバを探したのは決して無駄ではなかったと自分に言い聞かせることができる。メールサーバ最高!(再考とかけている) そのように考えると、貴重なゴールデンウィークを丸一日潰してメールサーバを探したのは決して無駄ではなかったと自分に言い聞かせることができる。メールサーバ最高!(再考とかけている)
## あわせて読ませたい
・[MailuでWeb UI付きのメールサーバを所有する](https://riq0h.jp/2023/08/26/212525/)
VPSを契約したので結局自前建てた。