この記事は、新歓ブログリレー2022、33日目の記事です。
SysAd班としては初投稿です。2021年度初頭からSysAdとして働き始め、1年経過したlogicaです。今年はtraQのメンテ担当やってました。
最近はWebアプリのサーバーサイドばっか作ってて、gRPC(-Web)とかKubernetesとかクリーンアーキテクチャ・イベント駆動アーキテクチャとか触ってます。時間が無限に足りない。
さて、去る2021年6月、SysAdではtraPドメインメールアドレスのサーバーを移行するという作業が行われました。そのメインメンバーとして関わらせていただいたので、今回traPドメインメールがどのようなシステムで動いているのかの紹介も兼ねて記事を書かせていただきたいと思います。
執筆をサボっていたらこんな時期になってしまった。
traPドメインメールアドレスとは?
~@trap.jp
の形をとったメールアドレス- 代表をはじめとする役員や各班長など、「traPとして外部とメール連絡を取らなければいけない人」たちが使用している
traP公式連絡先のinfo@trap.jp
をはじめ、役員の仕事のカテゴリや班によって、10近くのアドレスが作成され、運用されています。
2021年6月当時の状況
2021年6月までのメール運用システムには、使用感としては問題ないけれども不便さ・懸念点がありました。
システムの概観
当時、traPドメインメールアドレスの運用では、無料の範囲でできる最大のパフォーマンスを出すため、様々なサービスを使っていました。
どんなサービスを通して送受信をしていたのか見てみましょう。
traPアドレスへのメールを受信
メールが送られて来る
→ Mailgun (メールサーバー)
→ (転送) → traPのGmail & 個人アドレス
閲覧は、個人アドレスの方で見たり、traPのGoogleアカウントにアドレス使用者全員がログインしていたので(下記参照)、そちらからも見たりしていました。
traPアドレスからメールを送信
traPのGmail (SMTP設定済み)
→ Sendgrid (メールサーバー)
→ 宛先へ
traPアカウントのGmailにSMTPが設定されていて、アドレス使用者全員がそのGoogleアカウントにログインしていたので、全員がそこで書いていました。
問題点
- traPのGoogleアカウントに大人数がログインしている
- セキュリティ上問題(詳細は下記)
- いちいち転送先を役員が変わるたびに設定する必要があった
- アドレスごとに専用のメールボックスが無く、全てのアドレス宛のメールが同じ場所で管理されていた
- 未読 / 既読管理が非常にしにくかった
- 自分の見るべきメールアドレス以外も流れてきて整理が難しい
- 管理の一元化が難しかった
- Sendgridは送信専用サービス
- Mailgunは証明書等の問題でSendgridよりメールの到達率が低かった
- これらによりどちらか一方に切り替えることができない
これらの問題点を解決するため、6月初旬に議論が始まりました。
今回のゴール
メールシステムを再考するにあたり、ひとまず状況を整理した後、今回の目的・目指す状態を明確にしました。
traPのGoogleアカウントへの依存をやめたい
最優先の目標です。
上記の状態では20~30人ほどいるtraPドメインメールアドレス使用者全員にtraPのGoogleアカウントを共有していたので、メール送受信以外にもGoogleアカウントの設定変更などの強い権限を大人数に与えてしまっていました。そこで、traPのGoogleアカウントにログインせずとも、自らのクライアントアプリからメールの送受信ができるようにすることを目指しました。
既読管理をやりやすくしたい
今まではアドレスごとに受信ボックスが分かれておらず、転送していただけだったので既読管理がしづらい状態でした。そこで、専用のメールボックスを用意できるサービスを使ってIMAPを用いた受信ができるようにすることを目指しました。
また、ドメインの中に10個ほどのアドレスがあるので、できれば個々にメールボックスが欲しいという思いもありました。
利用するサービスを統一したい
そこまで頻繁に変更が必要なサービスではありませんが、複数サービスにわたっていると全体像の把握がしにくくなったり、複数アカウントを管理するのが面倒くさかったりするので、統一するに越したことは無い、くらいのコンテクストで議論を進めていました。
没になった案
議論の中、様々なサービスが候補として出されました。残念ながら採用には至らなかった候補を、特徴や没になった理由と共に紹介します。
Google Domains / Google Workspace
traPではドメイン(trap.jp
)取得にGoogle Domainsを使用しているので、そのサブ機能としてメールサービスが使えないかという案です。
特徴
- Google Domainsの機能を使った転送
- Domainsで取得した独自ドメインをGmailと同様に使用できる
- 結局やっていることは転送なので、Mailgunでやっていたのと同じこと
- IMAPやSMTPを使った送受信をするにはGoogle Workspace(有料)が必要
- どちらを使うにしてもGoogleにDNSサーバーを移行しなければいけない
- traPでは現在に至るまでConohaのDNSサーバーを使用している
転送だけなら今と状況が変わらないですし、Workspaceの利用は利用者の数に応じた契約になるので、使用用途的にコスパが良くなかったり、利用者が変わるときに契約が変わって手間だったり、人数が増えると維持費が増えて役員選出の障壁になる可能性があったり、といった理由で却下となりました。
メールサーバーをセルフホストする
traPでは様々なWebサービスをConohaからレンタルしたVPS上で運用していますが、それと並んでメールサーバーも運用しようという案です。既存のメールサーバーアプリケーションで一応使えそうなものは見つかったので、それを立ち上げればいいのでは、という話になりました。
特徴
- 自由度が高い(好きにいじれる)
- 実質無料(今までのサービスと並んで建てるだけなので)
- 可用性が低い
- サーバーがダウンしたときに受信ができない
- 6月当時traPの鯖は頻繁にダウンしたり、ダウン直前の状態になったりしていた
- ダウンしたときのフォールバックがない
これらを踏まえ、重要なメールが受信できないのはまずいので却下となりました。
GmailのメールボックスをIMAPで見るようにする
traPのGoogleアカウントに直接ログインさせず、利用者にはメールボックスにIMAPで接続してもらい、SMTPも設定させるという案です。
特徴
- 今までのシステムのまま、最後の「見る」部分だけをIMAPでクライアントに回す
- 今までのシステムを使いまわせるので手間がほぼない
- IMAPの設定にGoogleの認証情報が必要だった
結局Googleの認証情報を渡さなければいけず、目的を達成していなかったので却下となりました。
転送とSMTPで頑張る
今までの構成のままでも、個人アドレスへの転送とSMTPの設定をしてもらうことでtraPのGoogleアカウントに直接ログインさせずに運用することは可能でした。
特徴
- 無料のままで出来る
- 代替わりのたびに転送先を設定しなければいけないのは変わらない
- 転送だとスレッドにならず、不便
結局、この後より良い案が出たので却下となりました。
採択された案
議論の末に採択されたのは、マネージドなメールサーバーの利用でした。
最初から候補には上がっていましたが、予算の面や移行の手間のことを考えて少し躊躇していました。メールサーバーは運営会社によって値段・クオリティともにピンキリで、どのサーバーを選ぶかによっても判断が分かれました。
さくらのメールボックス
そこで焦点が当たったのは、さくらインターネット様が運営しているメールサーバーでした。なんといっても格安なところが一番のメリットでした。
利点は多いですが、もちろん欠点もありました。
利点
- 送受信が一元的になるので管理が楽になる
- ボックスがあるのでIMAPで管理できる
- アドレスごとにボックスが分けられる
欠点
- 障害時のサポートの評判がそこまで良くない
- DKIM(最近普及が進むメール認証システム)に未対応
「障害時のサポートの評判がそこまで良くない」の方に関しては、traP内のさくらのメールボックス使用者からの「メンテがあったけど、メンテ時間中に届いたメールはきちんと見れた」という口コミがあり、障害があってもフォールバック等で受信はできるようにしてくれていそうだという見通しが立ちました。
また、DKIMへの未対応の件について、DKIMは2020年4月地点で普及率が48.3%であり、対応しているものを選ぶべきではありました。ですが、現時点である程度の到達率が確認できたこともあって、使ってみて困ったら再検討することとし、今は目をつぶろうという結論に至りました。
これらの利点と欠点を包括的に考えたとき、利点が勝るという結論に至り、さくらのメールボックスへの移行が決定しました。
移行作業
さくらのメールボックスの設定
当時のSysAd班長temmaさんが行いました。
- さくらのアカウント作成
- traPドメインの追加
- メールアカウントの作成
- 必要な認証情報をまとめる
対象者への通知とIMAP、SMTP設定方法の伝達
僕が担当しました。
- 設定方法を各クライアントごとにまとめる
- iOS標準メールクライアント
- Androidアプリ版Gmail
- Thunderbird
- Outlook
- Windows標準メールアプリ
- サーバー移行をメール利用者に通知、設定をしてもらう
サーバー切り替え実施
メール利用者全員がクライアントアプリの設定を完了したタイミングでtemmaさんが行いました。
- DNSの設定で、traPドメインに来たメールをさくらのメールボックスに送るように
- しばらくの間は念のためMailgunをフォールバック用に残しておき、問題なさそうなら消す
これらの作業をし、6月終わりまでには完全に切り替えが完了しました。
traPドメインメールアドレスは、2022年3月現在も、特に大きなインシデント無くさくらのメールボックスを利用して運用されています。
全体を通して
SysAdで働き始めて約1カ月、何もわからぬ状態でこの議論に飛び込んでしまったわけですが、本気でこの課題に取り組んだことでかなり知識が付いたのはとても嬉しいことでした。
特にドメイン取得サービス、DNSサーバー、メールサーバーについて、それぞれの立ち位置を理解できたことは大きな自信につながりました。
また、単純に自分の仕事で人が喜ぶっていいなあ、と感じた瞬間でもありました。
というわけでここまでお読みいただいた皆様、ありがとうございました!
新入生の皆さんでtraPに入り、部内システムの運用に関わってみたいなぁと思っている皆さんは、ぜひ「無理かも...」と思うことでもガンガン立候補して、本気で取り組んでみて下さい!本気が見えれば、先輩たちも昔の自分を懐かしみながら優しく、厳しく教え鍛えてくれるはずですよ。
明日のブログリレー担当はおながどり君です!お楽しみに!それでは!