2007年4月のアーカイブ

Search




TOPページへ

このブログのフィードを取得
[フィードとは]

Powered by
Movable Type 4.23-ja

template by tokyobuddha

 ■■■■■免 責■■■■■
このサイトを参考にしたために発生した一切の損害に「てきとー管理者」は一切関知しませんし、補償もしません。 また、本サイトの記述が正しいことも保証しません。
自己責任にてお願いします。
 -------------------------

Galler Chocolate
ベルギー王室御用達として認定されたチョコレートブランド、ガレー。

岩塩ならクリスタルキンガ
野菜、肉、魚など素材本来の味を引き出します。上質でクセがなく西洋料理はもちろん中華、日本料理にも幅広くお使い頂けます。

近所の食堂(レストランらしいが・・・)

休みになると息子が「あそこで食べた~~~い」と騒ぐ。
嫌なわけでは無いが、毎週言われると・・・(ё_ё)

ホルモンダブル定食
 ↑
「ホルモンダブル定食」

これで、どんぶり2杯はいけます。

ごっつあん です。

投稿時間: 22:25

MTのUPDATE

Version 3.35にしてみた。
コレと言って変わったところは無いような~~

投稿時間: 22:19

MTがいつのまにかバージョンアップ!

いつの間にか3.35にUPしているし。。。
そろそろUPDATEしてみようかな~

・・・って、GWの昼間に何やってるんだ?

投稿時間: 10:54

Mail relay test

やっと我が家の玄箱にもMTAが入った。
不正relayが気になるところ。

念のためチェックしておこう!

http://www.rbl.jp/svcheck.php

http://www.abuse.net/relay.html
でチェックできる。

ログを見てみると
====================================================================
postfix/smtpd[5297]: fatal: open database /etc/postfix/virtual.db: No such file or directory
postfix/master[2287]: warning: process /usr/libexec/postfix/smtpd pid 5297 exit status 1
postfix/master[2287]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
 ・
 ・
 ・
 ・
 ・
====================================================================

もちろんOKだった。

あれ? ログの時間が1時間ズレてるぞ?
システム時間がいつの間にかズレてるし。。。

投稿時間: 18:45

玄箱HGにMTA導入

先日構築したMTAの経験を基にpostfix+qpopper+dracに挑戦することにした。

postfixはパッケージにてインストール済みなので「/etc/postfix/main.cf」を先日設定した内容に基づき設定した。

portmapが必要になるので、インストールする
# yum install portmap

また、dumpも必要らしい。
# yum install dump
関連のパッケージもインストールされた。

dracのインストールも先日と同様に作業。
# cd /usr/local/src
# wget ftp://ftp.cc.umanitoba.ca/src/drac.tar.Z
# tar xvzf drac.tar.Z

Makefileを以下の個所を修正
================================
INSTALL = install
DEFS = -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDASH_C
CC = gcc
CFLAGS = $(DEFS) -g
LDLIBS = -ldb
RPCGENFLAGS = -C -I
MANLIB = 3
MANADM = 8
================================

# make
# make install
# mkdir /usr/local/man/man3 (事前にない場合にだけ)
# mkdir /usr/local/man/man8 (事前にない場合にだけ)
# make install-man
# cp libdrac.a /usr/local/lib

dracd-setup.linuxの以下の個所を編集して起動スクリプトを用意します。
daemon /usr/local/sbin/rpc.dracd -i -e 15 &

※このあとは先日の内容と同じなので略。

dracを起動。
# /etc/rc.d/init.d/dracd start

dracの動作確認
# cd /usr/local/src/drac
# ./testing localhost 1.3.5.7
# strings /etc/mail/dracd.db
 または # db_dump -p /etc/mail/dracd.db

# strings /etc/mail/dracd.db
の場合は

1177658454
1.3.5.7

これだけ!

# db_dump -p /etc/mail/dracd.db
を行うと
-bash: db_dump: command not found
えら~

必要なパッケージをインストール
# yum install db4-utils

もう一回
# db_dump -p /etc/mail/dracd.db
VERSION=3
format=print
type=btree
db_pagesize=512
HEADER=END
1.3.5.7
1177658454
DATA=END

正常にでた!

「Maildir/」に対応したqpopperを使いたいが、後日対応と言うことで・・・・
今回は「/var/spool/mail」で行ってみよう!

作業領域に移動
# cd /usr/local/src
# wget http://www.ring.gr.jp/pub/net/mail/qpopper/qpopper4.0.9.tar.gz

Maildirに対応させる場合はパッチを取ってくる
# wget http://www.asteroid-b612.org/software/qpopper-mysql/qpopper-mysql-0.15-test.patch

その前にimapにも対応させたい
dovecotをインストールしてみた。
# yum install dovecot
# /etc/rc.d/init.d/dovecot start

では、qpopper~
# tar zxfv qpopper4.0.9.tar.gz
# cd qpopper4.0.9

Maildirを使う場合は次のパッチを当てる
# patch -p1 < ../qpopper-mysql-0.15-test.patch

オプションを指定。

# ./configure --with-drac=/usr/local/src/drac
※一行で記述

次に
# make

何もやっていないが、念のため綺麗にして
# make clean
# make install

xinet.dで起動させるので、/etc/xinetd.d/にpopperを作成して次の内容を記述
※そのままコピペ
======================================
service pop3
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/popper
server_args = -s -R
}
======================================
引数に意味で -s は受信時の詳細なログを記録するため。
-R はホスト名の逆引きを行わない。受信時間短縮させる場合。

# /etc/rc.d/init.d/xinetd restart

コレで下準備OK?

では実際にメールクライアントで送受信の確認して、完了っす。


次は「Maildir」対応と「apop」対応
ウィルス対策も必要だね。

投稿時間: 20:24

Postfixのインストール

客先からの依頼を受けてPostfixのインストールを行った。
今回のMTA要件としては次の通り。

POPbeforeSMTPに対応
Virtualdomainに対応

この条件を満たす一番簡単な方法をググってみた。

構成としてはこんな感じ・・・・
1.Postfix = ディストリビューションで提供されるRPMを利用
2.dovecot = ディストリビューションで提供されるRPMを利用
3.qpopper = 4.0.9
4.dtac
5.portmap

この内容で作業してみた。


■Postfix

先ずはPostfixの設定から
/etc/postfix/main.cf の編集を行う。
修正する箇所は次の通り

====================================================================
myhostname = sv.hogehoge.jp ホスト名
mydomain = hogehoge.jp ドメイン名
inet_interfaces = all すべて受信
local_recipient_maps = proxy:unix:passwd.byname $alias_maps ローカルユーザの存在をチェックし、不明なユーザは受信を拒否
mydestination = $myhostname, localhost.$mydomain, $mydomain メールの宛先として受け入れるホスト名の設定
mynetworks_style = subnet IP空間の設定
mynetworks = 127.0.0.0/8 POPbeforeSMTPに対応させるので、基本は自分のみ
smtpd_banner = $myhostname ESMTP $mail_name メールヘッダに記載されるMTAの表示の設定
relay_domains = $mydestination 信頼されない(mynetworks)のクライアント以外のメールは$mydestinationの範囲内しか配送しない。
home_mailbox = Maildir/ 各ユーザのホームディレクトリ内にMaildirをおく Maildirとは1メッセージ=1ファイルの形式にさせる。
====================================================================

設定が終わったら、postfixの再起動
# /etc/rc.d/init.d/postfix restart

参考までに25番portが開いているかを確認
# nmap localhost

が~
nmapがインストールされてないっす。

問題は無いと思うが、セオリー通りチェックしたいのでyumにてインストール
# yum install nmap

改めて確認してみる
# nmap localhost

25/tcp open smtp
↑これが出てくればOK。

次にtelnetで正常に通信できるかを確認
※内部配送確認するためテスト用のアカウントをあらかじめ作成しておく必要が有ります。
 test1
 test2

# telnet localhost 25

Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 hogehoge.jp ESMTP Postfix
HELO localhost --->開始メッセージ
250 hogehoge.jp
MAIL FROM: test1@localhost --->送信者
250 Ok
RCPT TO: test2@localhost --->受信者
250 Ok
DATA --->ボディ入力
354 End data with .
Send Test.
. --->メッセージ終了
250 Ok: queued as 2852DFE005
QUIT --->抜ける

ここで実際に配送されているかを確認してみる
test2のホームディレクトリの覗くとMaildirが作成され、その中ににnewが有る
ここにメールが貯まる。
また、/var/log/maillogにもログが残っているかも確認しておこう!!


■drac
POPbeforeSMTPに対応させるためには「drac」が必要

先ず作業ディレクトリまで移動
# cd /usr/local/src
# wget ftp://ftp.cc.umanitoba.ca/src/drac.tar.Z
# mkdir drac
# cd drac
# tar xzvf ../drac.tar.Z

Makefileの修正

====================================================================
INSTALL = install
EBIN = /usr/local/sbin
MAN = /usr/local/man/man
DEFS = -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDASH_C
CC = gcc
RANLIB = :
CFLAGS = $(DEFS) -g
LDLIBS = -ldb
TSTLIBS = -L. -ldrac -lnsl
RPCGENFLAGS = -C -I
MANLIB = 3
MANADM = 8
====================================================================

終わったら

# make
# make install
# make install-man
# cp libdrac.a /usr/local/lib
# cp dracd-setup.linux /etc/init.d/dracd

dracdを修正する

daemon rpc.dracd&

daemon /usr/local/sbin/rpc.dracd -i -e 15&

※-iは起動時にdatabaseを初期化。 -eは承認の有効期限を15分に設定

chkconfigにてOS起動時に自動起動させたいが、そのままでは無理!

# vi /etc/init.d/dracd

====================================================================
#!/bin/bash
#
# dracd Startup script for the dracd
#
# chkconfig: - 87 15
# description: dracd
# processname: dracd
#
# Put this file into /etc/rc.d/init.d/dracd
# and link it intot he run levels you want to use it
# by doing "ln -s /etc/rc.d/init.d/dracd /etc/rc.d/rc./S99dracd"
#
# dracd-setup
====================================================================
に書き換える必要が有るらしい

# chkconfig --add dracd
# chkconfig --level 345 dracd on

これで、自動起動OKっす

次にdracd.allowを編集
# cp dracd.allow-sample /etc/mail/dracd.allow
# emacs /etc/mail/dracd.allow
====================================================================
#255.255.255.255 192.168.16.8 #<--コメントアウトしておく
255.255.255.255 127.0.0.1
====================================================================

起動してみる
# /etc/init.d/dracd start

# ps ax | grep dracd
7004 ? S 0:00 /usr/local/sbin/rpc.dracd

こんな感じの内容が出れば動いています。

動作テストを行う
# cd /usr/local/src/drac
# ./testing localhost 1.3.5.7 ← 適当なIPを打ち込む
# strings /etc/mail/dracd.db
または # db_dump -p /etc/mail/dracd.db

VERSION=3
format=print
type=btree
HEADER=END
1.3.5.7
1072008984
DATA=END
と出ればOK。15分後にアドレスと時間が消えていればバッチリです。

drac.dbのパーミッションを設定します。
# chmod 600 /etc/mail/dracd.db

■dovecot
標準でdovecotが入っている
そのままだとpopも有効になっているので、一部修正を行う。
/etc/dovecot.confを
protocols = imap imaps → pop3 が付いていたら削除

んで、再起動
# /etc/init.d/dovecot restart

※Imap のみ使えるように dovecotを残しておく。

■qpopper
次にqpopperを設定してみる
作業ディレクトリまでおりる
#cd /usr/local/src/qpopper
# wget ftp://ftp.qualcomm.com/eudora/servers/unix/popper/qpopper4.0.9.tar.gz
# tar xvzf qpopper4.0.9.tar.gz
# cd qpopper4.0.9
# ./configure --enable-drac
# make
# make install

xinetd起動用ファイルの編集
/etc/xinetd.d/popper(qpopper)を作成して下記の内容を記述する
====================================================================
 service pop-3
 {
 disable = no
 socket_type =stream
 wait = no
 user = root
 server = /usr/sbin/popper
 server_args = -s
 }
====================================================================
んで、xinetdを再起動
# /etc/rc.d/init.d/xinetd restart

念のため /etc/hosts.allowにpopper : ALLを記述。

動作テストを行ってみる
# telnet localhost pop3
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Qpopper (version 4.0.9) at pacific starting.
と出ればOK。
quitで抜けます。


この状態でメールクライアントにアカウントを設定して送受信テストを行う。
test1からtest2に送ってみる。
正常に送信確認できた。
次に受信。
test1からtest1(自分から自分に)へ送ってみる。
送信はOK

ん?
受信が出来ないっす。
サーバ内部にはメールは有る
しかし、何度やっても受信できない。
各種Logを確認しても問題ない。
でも、受信だけが出来ない。

多分qpopperの問題だと思うので、ググってみる。

発見! qpopperは標準ではMaildir方式に対応していないらしい。
パッチを当てることでMaildirに対応するらしい。
しかし、簡単に済ませたいのでpostfix側を修正して対応する。
変更はmain.cfを変更
mail_spool_directory = Maildir/

mail_spool_directory = /var/spool/mail

postfixを再起動して、改めてtest1からtest1(自分から自分に)へ送ってみる。
送信はOK
/var/spool/mailにtest1が作成されている

次に受信
OK。

■バーチャルドメイン対応
バーチャルに対応させるためには、Postfixの編集とPortmapの起動が必要。
Portmapは既存の環境でインストール済みだったので、serviceを起動するのみ。
# /etc/rc.d/init.d/portmap start

postfixを編集する

/etc/postfix/main.cf に一行足す。
====================================================================
virtual_alias_maps = hash:/etc/postfix/virtual
====================================================================

/etc/postfix/virtual の編集
hogehoge.com anything
hogehoge.com anything

コレで対応OKっす。

あとは、ユーザー作ってマッピングさせればOKかな?


自分のサーバではMaildir方式に対応させたいっすね~
※qpopper4.0.9の場合、qpopper-mysql-0.15-test.patchが必要らしい。

投稿時間: 23:38

swatchが安定したら、侵入検知でも・・・・

今度はコレかな~~?

投稿時間: 16:41

監視サーバのPCMCIAのハングアップ?の続編

PCMCIAが死ぬと再起動するようになった。
また、PCMCIA再起動前にalertメールも飛んでくる。

しかし、監視している「/var/log/messages」ログローテーションのタイミングで動作がおかしくなるようだ。
古いログを監視し続け、最新のログは見ていない感じ。
※ログローテーションのタイミングで監視が止まってしまう。
 このとき、messages.1を見ていた。

この仕組みでは、MAX1日しか動かない(゜ε゜;)
ログローテーションの時間を調べ、ローテーションが終わった時を見計らって「swatch」を再起動。

しかし、この内容では100%安心できない。
たまたまログのローテーション時間が遅れた場合、1日は監視出来ない事になってしまう。
監視していないときにPCMCIAが死んでしまったら・・・・・

では、どんな方法が有るのだろうか?
ログローテーションのタイミング直後のswatch再起動が好ましい。
っとすると、ローテーションを管理している所で何とかするしかない・・・・

ローテーションを管理しているのは「/etc/logrotate.d/syslog」

このFileの

===================================================
/var/log/messages {
daily
rotate 31
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
===================================================

===================================================
/var/log/messages {
daily
rotate 31
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
/etc/rc.d/init.d/swatch restart  ← ここに追加
endscript
}
===================================================
に追加記述

これで、ローテーション直後にswatchを再起動

これで行けるかな?
様子を見てみよう・・・・・・。

投稿時間: 13:16

監視サーバのPCMCIAのハングアップ?

会社で使っている監視サーバは、相当古いノートPCで行っている。
※SHARP Mebius PC-PJ1(CPU:MMX233)

2年前程まえにこの監視サーバ(Nagios)を作成したが、監視する必要が無くなったため、お蔵入りになっていたが、最近サーバ関連の監視が必要になった為、引っ張り出してきた。

2年前に使っていたときも、NICに負荷が掛かると「PCMCIA」が死んでしまう現象が出ていたが、これと言って対策は行っていなかった。
しかし、現在監視しているサーバの特性を考えると24時間365日の監視が必要になる。
監視サーバが死んでしまっては何にもならない・・・・。
っと言うことで、対策を行ってみた。

PCMCIAの死んでしまう原因は「負荷」に有るようで、NICを流れるトラフィックを制限することで回避出来そう。

CBQ(Class-based Queueing)を利用し、トラフィック制限を行ったが一向に改善されない。
通過するトラフィックは制限出来ても、負荷が掛かった状態のようだ。

そこで、負荷により死んでしまったNICを検知し、PCMCIAを再起動させる仕組みを取り入れる。
ググってみると「Swatch」と言うserviceが良いらしい。

最新のswatch-3.2.1.tar.gzをGETし「make」&「make install」するが、テンプレートが無い・・・。
テンプレートが無くても、問題は無いが何となく気持ちが悪い。
※インストール方法はココを参照

再度、swatch-3.1.1.tar.gzをGETし「make」&「make install」
テンプレートも出来ている。

出来たテンプレートを cp -pf swatchrc.personal /root/.swatchrc としてコピー

これで、準備OK

コピーした「.swatchrc」に必要な記述を行えば監視が出来るのだが、どのLogをどの様に関しすれば良いのだろうか?

NICが死んでしまうLogを探してみる。

色々探していると「/var/log/messages」のLogに書き込みされている
書き込み内容はこんな感じ・・・・

============================================
kernel: eth0: next frame inconsistency, 0xaa
last message repeated 26 times
kernel: eth0: Too much work at interrupt, status 0x54
============================================

過去のログを見ても同様の書き込みが有る。
ここでは「kernel: eth0: next frame inconsistency」の書き込みが有ったらアクションを起こさせよう。

watchfor /kernel: eth0: next frame inconsistency/
echo
mail=hogehoge1@hogehoge.com:hogehoge@docomo.ne.jp,subject=pcmcia service reboot
exec /etc/rc.d/init.d/pcmcia restart


監視内容は次の通りです。

「kernel: eth0: next frame inconsistency」がmessageLogに書き込まれたら、アクションを起こす。

今回は1つの内容でアクションを起こさせるが、複数を監視し何れかが該当した場合でも対応可能。
※ /ログ1 | ログ2/

今回指定するアクションは2つ。
メールを送って、コマンド実行。

メールの配送先は、PCを携帯電話へ通知した。
複数有る場合には「:」で区切ることで対応可能。
送るメールにsubjectを付けることも可能。

次にコマンド実行。
今回の現象はPCMCIAが死んでしまう現象。
PCMCIAを再起動すれば復帰する。
そこで「exec /etc/rc.d/init.d/pcmcia restart」を指定して強制的に復帰させる。

このほか、ベルを鳴らしたりすることも可能らしい・・・・

これで、大枠は完了した。

次に、OS再起動の際に自動的にswatchを起動する方法を検討。
方法は2つ。

1,/etc/rc.d/rc.local にswatch -c /root/.swatchrc -t /var/log/messages &を記述する
2,/etc/rc.d/init.d/にswatchを作成して、次の内容を過去込む。

============================================================
#! /bin/sh
#
# chkconfig: 2345 99 99
# description: tcpserver
# Source function library.
. /etc/rc.d/init.d/functions

RETVAL=0

# See how we were called.
case "$1" in
start)
echo -n "Starting Swatch: "
/usr/bin/swatch -c /root/.swatchrc -t /var/log/messages >/dev/null 2>&1 &
RETVAL=$?
echo
;;

stop)
echo -n "Stopping Swatch: "
killproc tail
RETVAL=$?
echo
;;

restart)
$0 stop
$0 start
RETVAL=$?
;;

*)
echo "Usage: swatch {start|stop|restart}"
exit 1

esac
exit $RETVAL
============================================================

そして、chkconfig swatch on

この何れかで行けるはず。

任意にstop&startを行いたいので、今回は「2」の方法を選択した。

では、serviceを起動して様子を見てみよう。。。

/etc/rc.d/init.d/swatch start


これで、NICが死ぬまで待ってみよう・・・(笑


投稿時間: 20:45