[Memo2011][ITPASS]サーバ交換作業(MAIL)

概要

ITPASS サーバでは, 毎年 9-10 月に管理・運営技術と後継者育成を目的として, サーバの再構築を行っている.

ITPASS サーバは本サーバと予備サーバの 2 台体制で運用しており, 以下の手順で再構築を行うこととなる.

なお, 入替え前のサーバと入替え後のサーバのホスト名はそれぞれ old, new である. new と old は適宜読み替える.

  1. new に OS とサーバソフトウェアのインストール (期間: 1 週間〜 1ヶ月)
  2. 下記の入れ替え日には ITPASS サーバを停止することとなるため, 停止アナウンスを数度行う (入替え日の 2 週間前から当日 30 分前まで).
  3. old と new の入替え (期間: 半日〜 1 日)

phase 0 (入替え前)

入れ替えを開始する (サービスを停止する) 30 分前には告知.

phase 1 (入替え開始)

old のサービスを停止

  • qmail, tcpserver (smtp), inetd (pop3)
    • サービス停止作業

      qmail, tcserver, openbsd-inetd に関して, 以下のコマンドで, サービスを一時的に停止した.

      ただし, 再起動すると再びこれらのサービスも起動してしまうため, 作業途中で再起動の必要性が出てしまった場合は注意する.

      永続的にサービスを停止する作業は phase 3 で行う.

      # /etc/init.d/qmail stop
      # /etc/init.d/tcpserver stop
      # /etc/init.d/openbsd-inetd stop

      以下のコマンドで, 停止できていることを確認した.

      # ps aux | grep qmail
      # ps aux | grep tcpserver   
      # ps aux | grep inetd

phase 2

old から new へ各種データをコピー

old の /usr/local/qpopper/pop.auth を new へコピーした.

old$ sudo -s
old# cd /usr/local/qpopper/
old# cp pop.auth ~/
old# chown hoge:hoge pop.auth
  (hoge は適宜, 適当なユーザ名に変更する. 今回は船橋アカウントで行った. )
old# scp pop.auth new:
  (ここで new の root パスワードを要求された. )
old# slogin new

new# cd /usr/local/qpopper
new# mv pop.auth pop.auth~
new# mv ~/pop.auth .
new# sudo chown pop:mail pop.auth
new# ls -l
new# rm pop.auth~
new# exit

ホスト名と IP アドレスの変更

編集するファイル内に書かれている old と new のホスト名と IP アドレスを入れ替えた.

  • ホスト名の変更

    編集するファイル

    • /etc/hostname
    • /etc/hosts
    • /etc/mailname
    • /etc/gate/gate.conf
    • /etc/exim4/update-exim4.conf.conf
    • /usr/local/bind/etc/namedb/localhost.zone
    • /usr/local/bind/etc/namedb/localhost.rev

    この後に

    # grep ika (または tako) /etc/*

    で古い名前が残っていないか検索すると, /etc/motd が引っかかった. /etc/motd に記述した内容は, ユーザーのログイン完了後に表示されるということなので, これも変更した.

  • IP アドレスの変更

    /etc/hosts と /etc/network/interfaces 内の IP アドレスを入れ替えた.

    設定後

    old --> 133.30.109.21
    new --> 133.30.109.22
  • ネットワークの再起動

    設定の変更後, ネットワークをリモートで再起動した.

    # /etc/init.d/networking restart

    しかし, 正常にネットワークの設定ができていなかった. 原因を究明した.

    $ less /etc/network/interfaces 
    $ dmesg | less 
      ( eth 0 と eth 1 を確認した. )   
    $ ifconfig 
      ( eth0 が立ち上がった. eth1 を立ち上げたい. )
    $ reboot

理由はわからないが, reboot が必要である.

phase 3

old の設定変更

  • qmail の設定変更

外から来たメールを受け取らないように, and ログメールを飛ばすのに必要な設定だけにするため, /var/qmail/control 以下の locals, rcpthosts を以下のように変更した.

$ sudo -s
# vi /var/qmail/control/locals
# vi /var/qmail/control/rcpthosts

変更前

localhost
ika.scitec.kobe-u.ac.jp
itpass.scitec.kobe-u.ac.jp
epa.scitec.kobe-u.ac.jp
aoe.scitec.kobe-u.ac.jp 
cps.scitec.kobe-u.ac.jp 

変更後

localhost

変更の後, qmail を再起動した.

$ /etc/init.d/qmail restart

new の設定変更

  • qmail の設定変更

    /var/qmail/control 以下の locals, rcpthosts が以下のように変更されているか確認した. されていなかったので以下のように編集した.

    localhost
    ika-itpass.scitec.kobe-u.ac.jp
    itpass.scitec.kobe-u.ac.jp
    epa.scitec.kobe-u.ac.jp
    aoe.scitec.kobe-u.ac.jp 
    cps.scitec.kobe-u.ac.jp 
    
    $ sudo -s
    # vi /var/qmail/control/locals
    # vi /var/qmail/control/rcpthosts

    /var/qmail/control 以下の defaultshost, me が以下のように変更されているか確認した. されていなかったので以下のように編集した.

    ika-itpass.scitec.kobe-u.ac.jp
    
    # vi /var/qmail/control/defaulthost
    # vi /var/qmail/control/me

qmail-showctl(8) で設定を確認した.

  • qmail の再起動

    # /etc/init.d/qmail restart

  • メーリングリスト毎の bouncer 設定

メーリングリストのエラーメール転送設定が行われているかチェックする. この作業が必要なメーリングリストは,

itpass-ml_at_itpass.scitec.kobe-u.ac.jp

である. ただし, "_at_" はアットマークである. /home/itpass/ml/ml-crtl/bouncer が以下のように変更されていることを確認した.

&itpadmin_at_itpass.scitec.kobe-u.ac.jp
|/usr/local/ezmlm/bin/ezmlm-weed
|/usr/local/ezmlm/bin/ezmlm-return -D '/home/itpass/ml/ml-ctrl'

確認作業

$ ps aux

でそれぞれ起動していることを確認した,

phase 4

移行の最終確認

  • new
    • pop: メールを取って来られるかどうかを確認した.
    • smtp: メールを出せるか, 受け取れるかどうかを確認した.
    • mailing list: メールが配送されたことを確認した.
  • old
    • pop: 無効になっていることを確認した.
    • smtp: submit は有効にするが, 受け取らない設定になっているかどうかを確認した.
      • [ITPASS2010]qmailのインストールと設定の配送テストと同じ方法でローカル配送テスト1 を行い, 自分のアカウントに送った時に所定の ~/Mailbox にメールは届かないことを確認した.
      • cron のログは管理者に届くようになっていることが確認できた.
  • new の smtp や Mailing list の確認は Mail の構築の際と同じような手順(qmail-inject で外にメールが届くか, 外からメールを送って届くか, Mailing list にメールを送って届くか)で行った.

参考文献

ssh のインストールと設定

パスワード認証の拒否と root ログインの拒否設定

ssh サーバの設定を変更した. 公開鍵認証を有効にし (これがデフォルト), パスワード認証と PAM を無効にした. また root ログインを無効にした.

# vi /etc/ssh/sshd_config

PermitRootLogin no
        :
PasswordAuthentication no
        :
UsePAM no

最後に ssh デーモンを再起動した

# /etc/init.d/ssh restart

予備ディスクの準備

予備ディスクのパーティショニングとフォーマット

予備ディスクのフォーマットを行う. 本体ディスクと取り替えられるよう, 以下のように本体ディスクと同様な構成にする. cfdisk コマンドで設定を行った.

# cfdisk /dev/sdb

設定後に [ Write ] を選択して書き込んだ後, 以下のコマンドでファイルシ ステム ext3 としてフォーマットを行った.

# mkfs.ext3 /dev/sdb1
# mkfs.ext3 /dev/sdb3

fstab の設定 (予備ディスクのマウント)

今回のディスクを /bk にマウントするよう /etc/fstab を書き換えた.

# vi /etc/fstab

以下の行を追加した. (1 行目はコメントなので無視した).

# <file system> <mount point> <type> <options>                  <dump> <pass>
/dev/sdb1       /bk           ext3    defaults,errors=remount-ro 0       2
/dev/sdb3       /home.bk      ext3    defaults,usrquota          0       2

/bk ディレクトリを作成した.

# mkdir /bk /home.bk

mount コマンドで, /bk に /dev/sdb1 が, /home.bk に /dev/sdb6 がマウントされることを確認された.

# mount -a

このコマンドの後, 以下のように df コマンドでディスクのマウントの状態を 確認し, /dev/sdb1 が /bk にマウントされていることを確認した.

# df

Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/sda1             57674192   8703496  46041012  16% /
tmpfs                  8234640         8   8234632   1% /lib/init/rw
udev                   8229824       228   8229596   1% /dev
tmpfs                  8234640         0   8234640   0% /dev/shm
/dev/sda3           1834427936 271733968 1469510432   16% /home
/dev/sdb1             57674192    176184  27193808   1% /bk
/dev/sdb3           1834427936    200540 1741043860   1% /home.bk

参考文献

sudoers の編集

sudoers の編集

sudoers を gate が書き換えても itpadmin グループの sudo になる権限が なくならないように, sudoers を編集しなければならない. その為に visudo コマンドを使った.

# visudo

itpadmin に対してsudoの利用権限を与えるように, 以下の一行を追加する. 先頭に % を付けると gate が書き換えてしまうので付けないようにした.

itpadmin ALL=(ALL) ALL

これによって, itpadmin グループに所属するユーザーは sudo コマンドを実行することができた.

トラブルシューティング

メーリングが正しく作動しない問題

メーリングが正しく作動しなかった.

/usr/local/lib/prefix.pl

理由は上記のスクリプトが走っていなかった為であり, その原因は改行コードが異なっていたためである.

そこで, 改行コード Windows 用の $ CR+LF から UNIX 用の $ LF に変えた. バックアップをとった上で, 以下のコマンドを実行し改行コードを変更した.

参考文献

[ITPASSサーバ構築ドキュメント へ戻る]

Last modified:2011/11/10 16:04:07
Keyword(s):
References:[[ITPASS2011]サーバ交換作業(MAIL)] [[ITPASS2011]2011年度サーバ構築ログ]