AIと一緒にメールサーバー移転作業

15年ほど使ってきたメールサーバーを、そろそろ新しい環境へ引っ越そうとしています。

きっかけは、長年使ってきたCentOSのサポートが終了したこと。最近は、大事なメールが相手の迷惑メールフォルダに入ってしまうことも増えてきました。

「これは、そろそろ何とかしないといけないな」と思ったものの、システムを更新しようとしても、リポジトリが消えていてうまく進みません。

そこで、Amazon EC2に新しいメールサーバーを作って、古い環境から引っ越す計画を立てることにしました。

まずはAIに相談してみる

新しいOSには、これまで使ってきたCentOSではなく、Ubuntuを選ぶことにしました。Ubuntuでのサーバー運用は初めてです。

そこで、最近使い始めたAIに、今のサーバーがどんな状態なのかを説明して、移行手順を作ってもらいました。

まずはEC2に仮のインスタンスを作り、その手順に沿って作業開始です。

ところが、いくつかコマンドを実行したところで、いきなりエラーが出ました。

エラーの内容をAIに伝えると、「原因はこれかもしれません」と教えてくれます。言われた方法を試してみると、今度は別のエラーが出る。さらに相談して、また試す……。

そんな感じで、少しずつ作業を進めていきました。

AIに聞けば何でも解決、というわけではない

AIに相談しながら作業をしていると、経験豊富な技術者が隣にいてくれるような感じがします。エラーメッセージを貼り付ければ、原因や確認方法をすぐに返してくれるので、とても助かります。

ただ、AIの答えがいつも正しいとは限りません。

今のサーバーにしかない特殊な設定や、長年の運用で残っている例外的な構成までは、AIも最初から全部わかるわけではありません。UbuntuとCentOSの違いが、手順に十分反映されていないこともあります。

目の前のエラーは解決できても、「このまま本番の移行まで進めて大丈夫かな?」という不安が、だんだん大きくなってきました。

いったんストップして考え直す

そこで、作業をいったん止めることにしました。

最初は、AIに移行手順を作ってもらい、その通りに本番作業を進めればよいと思っていました。でも、実際にやってみると、最初に作った手順書は完成品ではなく、検証を始めるためのたたき台だったようです。

このまま勢いで進めるより、一度計画を見直した方が安全そうです。

本番ではなく、まずは予行演習

そこで、進め方を変えることにしました。

  1. AIに現在の環境をできるだけ詳しく理解してもらう
  2. 本番とは別の仮環境を用意する
  3. AIに移行作業を予行演習してもらう
  4. エラーや足りない手順を洗い出す
  5. 試行錯誤した結果を、手順書にまとめる
  6. できあがった手順書を自分で確認する
  7. 問題がなければ、本番環境で移行する

※これらは私が大手通信会社にてインフラ担当していた頃、複数人のメンバーでクロスチェックしながら本番環境構築前にやっていた手順に基づく手順である。

要するに、AIにいきなり本番作業をしてもらうのではなく、まずは安全な場所で練習してもらう、という作戦です。

仮環境なら、途中で失敗してもやり直せます。どこでつまずいたのか、どうやって解決したのかも記録しておけば、本番作業のときに役立ちます。

今夜は二回目の予行演習

今夜は、これから二回目の予行演習を行います。

一回目で見つかった問題を整理して、手順や前提条件を見直し、もう一度最初から確認していきます。

ただコマンドを最後まで実行できればよい、というわけではありません。

  • 作業前に何を確認しておく必要があるか
  • どこでエラーが起きやすいか
  • エラーが出たら、何を確認すればよいか
  • どんなバックアップを取っておくべきか
  • 作業後にメールの送受信をどう確認するか
  • 迷惑メール対策がきちんと機能しているか

こうしたことを一つずつ確認して、「これなら迷わず作業できそう」と思える手順書にしたいと思っています。

AIと一緒に作業するときに気をつけたいこと

今回の作業を通して、AIを使ってサーバー作業をするときに大事だと思ったことを、いくつかまとめてみます。

いきなり本番で試さない

AIの提案が正しそうに見えても、実際の環境では思わぬ問題が起きます。

特にメールサーバーは、設定を一つ間違えるだけでメールが届かなくなったり、送れなくなったりします。できるだけ本番とは別の検証環境で試した方が安心です。

目の前のエラーだけを直さない

エラーが出ると、ついそのエラーだけを解決したくなります。

でも、そもそもの手順や前提条件に問題があるのかもしれません。エラーをきっかけに、作業全体を見直すことも大事だと感じました。

AIの提案をそのまま実行しない

AIが教えてくれたコマンドは、何を変更するものなのかを確認してから実行するようにしています。

失敗したときに元へ戻せるのか、既存のメールや設定に影響しないのか。そこを自分で理解して、納得してから進めることが大切です。

失敗も記録しておく

試行錯誤やエラーは、できればなかったことにしたくなります。

でも、どこで失敗したのか、どうやって解決したのかを残しておけば、それは本番作業のときの参考資料になります。失敗も含めて、手順書に反映していこうと思います。

まとめ

15年使ってきたメールサーバーの移行は、なかなか大きな作業です。

OSも変わりますし、クラウド上に新しい環境を作る必要もあります。メールの送受信やセキュリティの確認も必要です。

だからこそ、AIに相談しながら進めるだけでなく、AIにもまず予行演習をしてもらうことにしました。

AIは、最初から完璧な答えを出してくれる魔法の道具ではありません。間違えることもありますし、こちらの説明が足りなければ、見当違いの答えが返ってくることもあります。

それでも、エラーの原因を一緒に考えたり、手順を整理したりする相手としては、とても頼りになります。

本番作業を急がず、まずは安全な環境で何度も練習する。そして、自分でも内容を理解して、納得できる手順書を作ってから本番に臨む。

今回のメールサーバー移行は、そんな進め方で、焦らず少しずつ進めていこうと思います。

追記

2回目の予行演習、無事に終わりましたが、まだ、課題が見つかり、1時間30分ほどかかりました。

前回よりは格段にスムーズになってます!

この結果を踏まえAIの方でも、手順書修正をやってくれています。

3回目の予行演習は数日後に予定しており、

なんとか今月中の本番稼働を目指しております。

最後に

余談ですが、わたしはAIとの作業が一通り終わると、

「GOOD!ありがとう」とか

「素晴らしい!助かったよ」とか

最後に伝えるようにしています。

必要ないのかもしれませんが…(笑)

AIも、心なしか、素敵な挨拶を返してくれるような気がします。

AIコーディング

以前の投稿でも書いた「ミニオセロ」いくつかの機能追加をAIとやってみました。

追加機能

  • socket.ioのルーム機能を用いて、対戦ルームを1個限定から3個とした。
  • ルーム選択ポップアップの追加
  • 「あそび方」ポップアップの追加
  • bootstrapを用いて、レスポンシブに対応

AIとの開発、もっと使い込んでみたいと思います。

1. 対戦ルームに入室する

まず、対戦ルームに入室してください。入室すると、そのルームの対戦を観戦できます。

ルームは右上のハンバーガーメニュー(☰)→「ルーム一覧」から変更できます。

2. エントリーする

ルームに入ったら、ハンバーガーメニューの「エントリー」から名前を入力してゲームに参加します。

エントリーした順に並び、先頭の2人が対戦します(先頭=白、2番目=黒)。

3. 待機と対戦の流れ

  • 3番目以降の人は「待機中」になります。
  • 対戦が終わると、勝った人は先頭に残り、負けた人は待機列の最後尾に回ります。
  • 待機中の人は順番が繰り上がり、2番目まで来ると次の対戦に参加できます。

4. 対戦中の操作

対戦中は画面下に「パス」「まいった」ボタンが表示されます。

  • 「パス」… 手番を相手に渡します
  • 「まいった」… 降参します

5. 負けたら

負けると待機列の最後尾に回り、再び順番を待ちます。

Ubuntu 24.04.4 のインストール

1. Ubuntu 24.04.4 のインストール

  1. 空の USB メモリ(8 GB 以上)を用意します。
  2. ブートUSB作成ツール を準備します。
    • 例: balenaEtcher
  3. Ubuntu ディスクイメージをダウンロードします。
    https://releases.ubuntu.com/noble/ubuntu-24.04.4-desktop-amd64.iso
  4. balenaEtcher でイメージを USB メモリに書き込みます。
  5. MacPro をシャットダウンし、Option キー(Alt)を押しながら電源オンします。
  6. ブートセレクタ
    • オレンジのディスクを選択し「Enter」で進めます。

    ブートセレクタ

  7. 言語選択画面
    • この時点で日本語は無いので「English」で進めます

    言語選択画面

  8. アクセシビリティ設定画面
    • よくわからないので…とりあえずそのまま「Next」

    アクセシビリティ設定画面

  9. キーボードレイアウト設定画面
    • 私はUSキーボードなので「English(US)」を選択

    キーボードレイアウト設定画面

  10. インターネット接続画面
    • ブートセレクタでWifi接続していれば、Wifiも選択できたのか?
    • とりあえず有線でつないでいるので、そのまま「Next」

    インターネット接続画面

  11. アップデート画面
    • 「Update Now」ボタンを押すと、Updateが始まり、Updateが終わると勝手に画面が閉じる

    アップデート画面

  12. インストール OR お試し利用画面
    • 「install ubuntu」を選択

    インストール OR お試し利用画面

  13. インストール種別画面
    • 「Interactive installation」を選択

    インストール種別画面

  14. アプリケーション選択画面
    • 「Default selection」を選択

    アプリケーション選択画面

  15. ディスクのセットアップ画面
    • 「Manual installation」を選択

    ディスクのセットアップ画面

  16. マニュアルパーティション設定画面
    • 対象のパーティションを慎重に選び、「Change」をクリックすると次の画面がポップアップ

    マニュアルパーティション設定画面

  17. マニュアル・パーティショニングモーダル
    • Sizeが正しいことを確認して、以下の項目を設定
      • Used as : Ext4
      • Mount point : /
    • そして「OK」

  18. マニュアルパーティション設定画面(戻り)
    • 手動パーティションの画面に戻るので、良く画面を確認して「Next」

    マニュアルパーティション設定画面

  19. アカウント作成画面
    • 管理者アカウントを作成する。
      • Your name : アカウントの説明
      • Your computer’s name : コンピュータ名
      • Your username : ログイン名
      • Password :パスワード
      • Confirm password : パスワード(確認用)
    • そして「Next」

    アカウント作成画面

  20. タイムゾーン選択画面
    • タイムゾーンを選んでねと言ってくるので、「Next」

    タイムゾーン選択画面

  21. インストール準備完了画面
    • 最後に良く確認して「install」

    インストール準備完了画面

    ⚠️ 注意: 「Install」をクリックすると後戻りできません。パーティション設定やアカウント情報に間違いがないか、必ず確認してください。

  22. インストール完了後
    • インストールが完了したら、再起動を促されます。USB メモリを取り外し、再起動してください。

参考: Ubuntu 公式サイト | Ubuntu 24.04 リリースノート