E-mobile契約

引っ越しに向けて色々と準備中です。
この今の時代で、ADSLなんて川崎でどこでも使えると思っていたらそうでもありませんでした。
(同じ区内での引っ越しだったので一層びっくりです)

しばらく経てば、光ファイバー使えるらしいのですが、
それでは困るので代替案を探してきました。

E-mobileによるネット回線

E-mobileとそれを利用できるルーターがあれば、今の環境のまま移行できるのではないか、
と考えてやってみました。

機材

  • E-mobile D02HW
  • IODATA データカードWiFiルータ (WN-G54/DCR)

これの組み合わせでとりあえず機能は提供されているし、動作も確認しました。
チャレンジで買ってみただけにうまく機能があったのは幸いでした。

当初は、これを買う予定でした。

  • コベンティブ covia コヴィア イー・モバイル対応 モバイルルーター CMR-350

どちらにしても、内部のサーバー公開は出来るようですし。
IODATAのほうはPCカードタイプもUSBタイプも両方行ける点がメリットですね

実地テスト

とりあえず、今居住中の場所で機能テストが終わったので、
そのうち引っ越し先で電波状況をテストしてきます。うまくいくといいなぁ。


チャット(IRC)サーバー

今まではIrcd使っていたけど、入手とかコンパイルとか色々と面倒になってきて、
簡単にいれられるものへ変更してみました。

IRCD-Hybridインストール

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

vi /etc/yum.repos.d/epel.repo

enable=1 となっているのを enable=0にして、標準で無効化

yum –enablerepo=epel install ircd-hybrid

デフォルトの設定ファイルを待避して、提供されている奴に置き換える。

mv /etc/ircd/ircd.conf /etc/ircd/ircd.conf.org
cp /usr/share/doc/ircd-hybrid-7.2.3/simple.conf /etc/ircd/ircd.conf
chown ircd.ircd /etc/ircd/ircd.conf

設定ファイルを編集. 忘れると繋がらない.

vi /etc/ircd/ircd.conf

中身は

name = “サーバー名”;
sid = z89990; ここ適当な文字列で

このような感じにしておく。

/etc/init.d/ircd start

でサービスを起動させる.


C++/CLIでの実行時エラー

C++/CLIとC++ネイティブのlibをリンクさせて、Windowsフォームアプリケーションを作ったときに、
よくわからないエラーが発生してしまうことがある。

どうやらCRT初期化の順序に問題があるのか。
これを解決するには、エントリポイントの修正を行えば解決する模様。
次のエントリポイントに設定させてあげれば問題解決できた。

ずいぶんと前にわかっていて、日記に書いたと思ったのに忘れていたので、
今更ながら追加。

上記の発生条件

どうやらグローバルなコンストラクタが実行されるときに何かがあるらしい。
C++のclassメンバにstaticなデータがある場合に発生する。
また、それが組み込み型(プリミティブ型)ならば問題なく動くが、
自分で作成したクラス型だと実行時エラーの引き金となる。

追記1

コンストラクタやデストラクタを備えるクラスだとアウトっぽい。
そのクラスがプリミティブ型しか保持していないとしても。

追記2

どうやらコンストラクタがあることが問題ではないらしい。
デストラクタがあることが問題のようだ.
デストラクタのあるクラス型で、クラスstaticメンバを持つと、このエラーが発生する。

こういったクラス構造をどこかで持ってしまうと、C++/CLIで実行時エラーとなる.


WindowsServer2003R2

自分のWindowsServer2003R2の設定で、いろいろ困ったときに参考にしました。
DHCP, DNS, ActiveDirectoryまで説明されているため助かりました。

http://journal.mycom.co.jp/series/server/menu.html

メモがてら、ここに載せておきます。


メモリ不足チェック

Linuxのメモリ状況について。
freeコマンドの実行結果で次のように表示されて、メモリ足りないじゃん!と疑ってみた。

1単位は1kのはずなので今の状況では 3Mほどの空きしかないってこと?
メモリ増やさないとまずいのか?と

どうやらそういうことではないらしい。
各プロセスにメモリを割り当てた後、残っている部分をバッファとキャッシュに利用して
ディスクIOを減らす、ということをOSがやっているようだ。

よって、この場合空きメモリとしてカウントできるのは、
free + buffers + cached の合計値、となる。

でもSwap領域を使っているように見えるが・・・

さらにこのbuffers,cachedで使っている部分も使用頻度に応じてswapへ書き出されることがある。
これがswap使用の理由となっている。

swapの使用状況を見るために vmstat コマンドを利用する.

vmstat 30

として経過を眺める。si,soの項目をみてみる。

  • siの項目がある程度動くのは問題なし
  • soの項目が頻繁に動くのはメモリ不足の疑いあり

ということらしい。

XenServer使っていて、各仮想マシンの状況をチェックするために調べてみました。


Sambaとの連携 (1)

昨日うまくいったので、同じようにして別のLinuxサーバーを設定していてはまった点

Sambaを起動したのにも関わらず、ユーザーがログインできなかった。

ログをみると、どうやらユーザーの作成に失敗しているよう。

色々と資料を探して、解決した結論は、

  1. Samba,Winbind の終了
  2. Sambaの設定ファイル更新
  3. Sambaを起動
  4. Winbindを起動

どうやら、Winbindを起動したまま Sambaの設定を反映させようとしていたのが問題でした。

あと、他にもエラーが出ていたので、
krb5.confをエディットしてみたり。


ADとSamba

WindowsServer2003でActiveDirectory

今まで、ドメインって何?って状態でしたが、そろそろ重い腰を上げてチャレンジ中。
そして、ユーザー認証もこのWin2003に任せて各マシンの認証を一元管理しようと思います。
これで、ログイン関係は楽が出来るかなぁ。

Sambaの設定

いきなり、globalセクションに security=adsってかいて、メンバー登録しようとしたら、失敗に。
悩んで検索するも、情報は出てこない。

設定ファイルを見直していたら、実はデフォルトで、userと記述されている箇所があって、
そちらのほうが後方に書かれているために、自分の設定が出来ていなかったという結論に。
しょうもないことで時間と費やしてしまった・・・。

Host is not configured as a member server.
Invalid configuration. Exiting….

なんて出たら、security = ads が他の値で上書きされて無効化されていないかチェックしよう。


メールサーバーのWebMail機能

メールサーバーのWebMail機能

やはり自分でサーバーを立てたのだから、使い勝手はよくしたい。

また、最近だったらAjaxなんかいれてリッチな画面にしたい。

という要求を満たしてくれる何かを探してました。

AtMail

Webブラウザによるメーラーという感じです。

サーバー指定することからみて、メールサーバーと独立しての使用ですね。

外部のメールサーバーにつなぐ用途ならこれでしょう。

サーバー設定をアクセスごとにしなきゃいけないとしたら、大変なので見送りました

http://atmail.org/

RoundCube

こちらは、設定は管理者のみ。ユーザーはログインのみで使用できます。

Outlookのような画面になるので使い勝手はよさそうです。

http://oss.poyo.jp/roundcube-ja/

これらのことから、Roundcubeを導入してみることにしました。

ブログツールとか

http://www.blogn.org/

複数ユーザーに対応しているらしい。非営利で使用OK

MovableType

もう既に説明するまでもなくメジャーなブログ

PwBlog

ビジネス使用用途っぽい。ちょっと殺風景な感じがした。
http://www.pwblog.com/

tDiary

今自分が使ってるツール。今風?って聞かれるとちょっと困るけど使っていて特に問題はない。
http://www.tdiary.org/


delegate

サーバー方針

VMごとに同じサービスを提供することもあるのでDelegate導入を決定。

  • httpとかftpとかはリバースプロキシで運用することにする。
  • pop/smtpはリバースプロキシとはならないので、代替案にて対応

振り分けはDelegateに任せるか(専用VM)、ルーターで何とかするか、の2つの方法でがんばってみることにする。

Delegate導入

本家サイトより delegate*.tar.gz をダウンロードしてくる。
そして、中身を展開する。

wget http://www.delegate.org/anonftp/DeleGate/delegate9.9.2.tar.gz
tar xvzf delegate9.9.2.tar.gz

cd delegate9.9.2
make

展開後makeしようとしたら、gccなどのコンパイル環境入ってなかったため、
yum install gcc などでインストール。

また、cc1plusがないと言われて yum install gcc-c++ も追加

各種ディレクトリを作ってdelegateを動かす準備.

mkdir -p /usr/local/delegate/bin,conf
cp src/delegated /usr/local/delegate/bin

mkdir /var/log/delegate
chown -R nobody:nobody /var/log/delegate

これで動かす準備が整った

SMTPについて

リバースプロキシとしては無理そうだったので、
プライマリメールサーバーとセカンダリというような感じで1つが代表して受信、その後リレーをするということでなんとかしようと考えた。

きちんとしたDNS立ててMXレコード設定出来る状況だったら、delegateでうまく出来ると思います。

セカンダリという位置づけながらも、それを利用するユーザーにとっては最初のSMTPサーバとならなくてはいけない。

また、自由にSMTPサーバーを使われては困るが、ポート変更とかは許容できない。

そこで、ユーザーに向けSubmissionポートはこのセカンダリに転送することにする。

ルーターのポート転送でやってしまったが、Delegateのtcprelayでも出来るかも知れない。

Postfix側設定

設定には、main.cfに

relay_domains = リレー対象のドメイン名
transport_maps = hash:/etc/postfix/transport

を記述し、transportファイルに下記を追記
ドメイン名 smtp:ローカルIP:25

その後、
# postmap hash:/etc/postfix/transport
として、ハッシュを作った後でサーバー再起動.

pop3対応

外部からpop3も使えるようにしようと思う。これはDelegate使って何とかしてみた。

/usr/local/delegate/bin/delegated -P110 SERVER=pop MOUNT=”/* pop://DefaultServer/*” REACHABLE=”192.168.0.0/24″ REALIABLE=”*”

これでローカルIPな範囲にのみの pop3のプロキシとして働くはず。

POPのユーザー名に、
ユーザー名@処理対象サーバーIP(ローカルの)
としてあげれば、外部から指定されたローカルなメールサーバーへ接続しにいくようになる。

ちょっと格好がわるいけど、これで運用してみようと思う。


メールサーバー構築あとの設定

VMにサーバー構築 -メールサーバー

Postfixをつかってサーバーを構築。

手順とかに詳しいページはたくさんあるのでSMTP-AUTHにするときに自分が問題になった部分をメモしておきます。
誰かの役に立てば、あるいは、再度構築するときのメモとなるか。

ローカルでは問題ないものの、外部から使おうとすると問題になった。
ログを確認してみると、次のようなエラーが出ていた。

warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: No such file or directory

そこで、sasldb2を変更することにした。

postfixから読めるように属性を変更。
chown postfix.postfix /etc/sasldb2

認証を通過させるためにユーザー情報をセット

saslpasswd2 -u ドメイン名 -c ユーザー名
パスワードを設定させる。

これで準備は整ったので、telnetからテストを試みる。

telnetによるテスト SMTH-AUTH(PLAIN編)

認証に使う文字列を確認しておく。
生成のために下記のコマンドを実行してみる。

perl -MMIME::Base64 -e ‘print encode_base64(“usernameusernameuserpassword”);’

NULL終端でユーザー名いれてパスワード。これで文字列ができあがるのでコピーでもしておく。

テストのためにコマンドを打ち込んでいく。ここではSubmissionポートで実験。

telnet localhost 587
EHLO localhost
(ここで、PLAIN方式をサポートしていることが条件)
AUTH PLAIN 上記で取得した認証文字列

うまくいけばここで、Successfulと出てくるはず。

mail from: <メールアドレス>
rcpt to: <メールアドレス>
data
testmail.

.

でメール送信テストが出来る。

saslのメモ

ユーザーのパスワードを変更したい時は、

# saslpasswd2 -u ドメイン名 ユーザー名

ユーザーの削除

# saslpasswd2 -u ドメイン名 -d ユーザー名

ユーザー一覧表示

# sasldblistusers2