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サーバ構築ドキュメント>)) へ戻る]
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サーバ構築ドキュメント>)) へ戻る]