メールサーバの移行

イメージ
 自前のメールサーバを停止 これまで、自ドメインのメールサーバはVPS上に構築していた。 ・Ubuntu Server ・Postfix ・Dovecot ・spamAssassinと、BlackListの利用 Spam対策を行ってきたし、サーバ上でメールをトリガーにして各種プログラムを動かしたりしてきた。 メールサーバのメンテナンスは結構面倒くさくて、  ・Disk容量のチェック  ・不正アクセスのチェック  ・各種セキュリティパッチの適用 など、手間がかかる。 そこで、外部のサーバを利用することに…。 結構安くて使い勝手の良さそうなのが、「さくらのメールボックス」 3年契約で、3070円とな…。  メールアドレスは自分のだけなので、20GBまで利用可能!  (Gmailより大きいねぇ) ということで、早速契約。 アカウント設定を行って、既存のDNSを書き換える。WHOISも書き換えて完了。 SMTPとIMAPが利用できればOK。 ちょうど、GoogleがSPF設定していないと受信しないし、DKIMおよびDMARCに対応していないメールを弾くようになったので、対応しているのを確認。 さくらサーバ自体は、これまでお客さんのサーバとして何件も利用しているので、利用方法も難しくはない。  Webメールにも対応しているので、いざという場合にもありがたい。 ということで、各メールソフトの設定を変更。  PC(常時使用する3台)とタブレット、スマートフォンと台数は多いがそれ程手間はかからない。 問題は、旧サーバで送受信したメールの履歴だけれど、これはThunderbrdを使ってローカルに保存することで回避。  本当は、サーバtoサーバでMailboxに残そうとも考えたんだけど、古いメールはそれ程必要ないし、ローカルにバックアップしてあれば凌げるので、良しとする。 移行時にDNSの反映で若干時間がかかったものの、問題なく送受信できるのを確認して、作業完了。  これでメンテナンスの手間が減るので、安いもんです。

Linuxでthin client

LTSPで苦戦した

LTSP(the Linux Terminal Server Project)というのがあって、要はWindowsのターミナルサーバーと同等なものをLinuxだけで構成するというもの。

この設定は、通常LinuxサーバにNIC2枚刺しで、片側をWAN、もう一方をLANに接続。
LAN側はDHCPサーバとして機能して、さらにネットワークブートサービスを提供するように設定するのが一般的なやり方。

この構成であれば、結構すんなり行くらしい。

でも、普通のLAN構成だと、ルータがDHCPを提供している事が多い。このDHCPを止めてLinuxをDHCPサーバとして設定するというのも、無駄な気がするし、既存のネットワークに接続して、運用という場合にリスクが高くなるので、嫌だな…と思い、別の方法を模索していた。

最終的には上手く行ったのだけれど、約1週間ほど苦戦したのでまとめておこうと思う。

既存のLANに設置する方法

いろいろと調べてみると、proxyDHCPを設置すれば、何とか行けるらしい。

最初にやった方法
pxe-pdhcpというproxyDHCPがあって、これを実行してテストする。
ソースのみの配布なので、公式サイトを参考にビルドする。

ただし、コメントにあるように配布されているソースに一部不具合があるので、修正が必要。(トータル2行の修正)
これでもwarningが1つ出ていたけれど、一応ビルドは成功する。(このソース自体古く、新しいものは出ていないので、少々心配。枯れているなら良いのだけれど…)

ところが、何度設定を見なおして、起動を繰り返しても、うまくbootできない。

様々なオプションを試し、再起動をしても上手くいかず、諦めかけていた。

異なる方法を見つけた
次に、pxe-pdhcpとは別のproxyがあることが判明。実はよく知っているdnsmasqがその機能を実装しているらしい。

これなら、使ったことがあるし、設定も経験がある。

ubuntu forumに記事を見つけたので、その通りにテストする。
親切にも、設定の手順とスクリプトなどもまとめられている。

ところが、この方法だけでは上手くブートしない。

そこで、いろいろとerror logを確認すると、途中までbootプロセスは動いていて、最後のところでbusyboxに落ちていることがわかった。

i386: Client drops into BusyBox」の記事を見て、ヒントを得た。
手動でnbd-serverを再起動してやることで、上手く起動するようになった。

手順まとめ

後で、自分も参考にするために、一連の手順をまとめておこうと思う。
$ sudo apt-get install ltsp-server dnsmasq
※ 一般的には、ltsp-server-standaloneを入れろという記事が多いが、それはDHCPサーバも機能させる場合
$ sudo ltsp-build-client --arch i386
これで、配布用のカーネルイメージを作成する。(--arch i386はintel CPU サーバなら省略可能)
$ (cat <<EOF
ipappend 3
EOF
) | sudo tee -a /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default
要は、defaultの最後にipappend 3を追加するだけ。エディタで編集してもOK

/etc/dnsmasq.d/ltsp.confをエディタ等で作成する。
#
# Dnsmasq running as a proxy DHCP and TFTP server
#
# See: http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html
#
#
# TFTP
#
enable-tftp
tftp-root=/var/lib/tftpboot
#
# DHCP
#
# DHCP proxy on this network
dhcp-range=192.168.0.0,proxy
# Tell PXE clients not to use multicast discovery
# See section 3.2.3.1 in http://tools.ietf.org/html/draft-henry-remote-boot-protocol-00
dhcp-option=vendor:PXEClient,6,2b
# Better support for old or broken DHCP clients
dhcp-no-override
# Enable this for better debugging
#log-dhcp
#
# PXE
#
# Note the file paths are relative to our "tftp-root" and that ".0" will be appended
pxe-prompt="Press F8 for boot menu", 3
pxe-service=x86PC, "Boot from network", /ltsp/i386/pxelinux
pxe-service=x86PC, "Boot from local hard disk"
dhcp-rangeのみ、自分のネットワークに合わせて変更する必要がある。
dnsmasqの設定ファイルを適用するために、サービスを再起動する。
$ sudo service dnsmasq restart
なぜか、これだけでは、再起動が上手くいかなかった。(環境のせいかなぁ)
そこで、このコマンドの代わりに、以下を利用。
$ sudo service dnsmasq stop
$ sudo lsof -i:53
$ sudo kill -9 (上記のプロセス番号)
これで、確実にdnsmasqを殺してから、起動する。
$ sudo service dnsmasq start
さらに、この後次のコマンドが必須だった。(これを見つけるのに苦労した!!)
$ sudo service nbd-server restart 
これで完了。

あとは、クライアントをPXE-Bootさせれば、サーバからイメージを取り込んで起動してくれる。

思ったより、早く起動するし、動作は快適。
これで古いマシンであっても、サクサク動くし、インストール作業も不要になるので、期待大!!

もう少し、ノウハウを集めるためにテストしようと思う。

この方法だと、今まで使用しているUbuntuをLTSPサーバとして利用できるので、環境構築が楽だし、ネットワークの設定を変更しなくて良いのが素敵。

ふ〜、1週間苦戦したのも甲斐があるってもんだ〜。

今思うと、PXE-pdhcpを使っても、最後のnbd-serverを再起動すれば動いたかもしれない…。でも、まぁいいか。


コメント

このブログの人気の投稿

WPS Officeで日本語入力ができない

VirtualBoxでUSBから起動

Virtualboxとnvidiaドライバ