[Memo2011][ITPASS]サーバ交換作業(MAIL)
11/11/04 に サーバの交換作業(MAIL)を小林,船橋で行った.(ロガー: 小林)
11/11/09 に sudoers の編集を行った.
[ITPASSサーバ構築ドキュメント へ戻る]
概要
ITPASS サーバでは, 毎年 9-10 月に管理・運営技術と後継者育成を目的として, サーバの再構築を行っている.
ITPASS サーバは本サーバと予備サーバの 2 台体制で運用しており, 以下の手順で再構築を行うこととなる.
なお, 入替え前のサーバと入替え後のサーバのホスト名はそれぞれ old, new である. new と old は適宜読み替える.
- new に OS とサーバソフトウェアのインストール (期間: 1 週間〜 1ヶ月)
- 下記の入れ替え日には ITPASS サーバを停止することとなるため, 停止アナウンスを数度行う (入替え日の 2 週間前から当日 30 分前まで).
- 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サーバ構築ドキュメント へ戻る]
Keyword(s):
References:[[ITPASS2011]サーバ交換作業(MAIL)] [[ITPASS2011]2011年度サーバ構築ログ]