IT pass HikiWiki - [Memo2011][ITPASS]サーバ交換作業(MAIL) Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

11/11/04 に サーバの交換作業(MAIL)を小林,船橋で行った.(ロガー: 小林)

11/11/09 に sudoers の編集を行った.

{{toc_here}}

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

= 概要

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 にメールを送って届くか)で行った.

== 参考文献

  * ((<Linux初心者のためのLinux入門|URL:http://linux-network.cocolog-nifty.com/blog/2008/04/etcmotd.html>))

= 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

== 参考文献

  * ((<[ITPASS2010]ローカルでのバックアップの設定>))

= 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 に変えた.
バックアップをとった上で, 以下のコマンドを実行し改行コードを変更した.

# nkf -Lu

== 参考文献

  * ((<テキストの改行コード|URL:http://www.rsch.tuis.ac.jp/~mizutani/online/with-pc/textline.html>))


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