2005/06/18(土)X をport forwardingするには

2005/06/18 23:00 PC(Linux)
ホスト側のsshd_configに、
X11Forwarding yes
の記述があればいい。設定変更の際はsshdを再起動するのを忘れずに……
あとはssh -Xで渡してけば通るはず。

中継点には設定してある必要ないんじゃないかなと思うのだけど未確認。いや手間がね。

2005/06/18(土)アタックがウザいので

2005/06/18 22:00 PC(Linux)
auth.logに
Jun 18 21:39:16 debian sshd[15732]: Failed password for root from 68.84.***.*** port 57445 ssh2
が延々来てうるさい。発信元は悪名高い(?)nj.comcast.comドメイン。こういうのってIP晒しでもいい気はするのだけど。で他にmysqlとかmailとかユーザ名色々叩いてるようだ。一応それなりには締めてあるので、そう易々と突破されることはないはずだが、LANコネクタの点滅が気になる。

止めるポイントは色々あるのだけど、とりあえず根本をちょっといじってみようってことで(時間もないし)hosts.allowでなんとかならないかなとやってみた。
ftpd: jp
sshd: jp
と修正。一応止んだらしい。sshdはiptables使っててもtcp wrapper効くんだよな。再起動とかは確か要らなかったはず。んー、tcpwrapperが止めたログってどこ行くんだろうか。知識が空きっ歯過ぎです。アクセス制御関連の知識を網羅してる本が欲しいやね。

そういやiptablesって未だにわかりやすい解説無いのかな。エラーが出る質のものではないので今ひとつ日記記事だと信用ならないというか……

2005/06/11(土)longhaulでの周波数調整

2005/06/11 21:00 PC(Linux)
VIA C3 + longhaulでの周波数調整。

めんどくさいので簡易メモ。

とりあえずカーネル構築時に、CPU関係のオプションをいれとけば調整可能になるはず。

/sys/devices/system/cpu/cpu0/cpufreq/がインターフェース。
#echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
とかで、最低周波数になる(C3 800MHzの場合,400MHz)。

動的周波数変更は忘れた…… userspace???

元に戻すには、powersaveをperformanceに書き変える。

なお、
#cat /proc/cpuinfo
でも確認可。

2005/05/03(火)ハードウェアモニタ

2005/05/02 25:00 PC(Linux)
HDDが熱暴走に類似した症状を呈したので、今後が不安。

ハードウェアモニタを導入し、熱くなってきたらファンの回転を上げるという対処療法スクリプトを使って様子を見てみることにする。

[smartmontools]
すでにsmartsuiteというソフトが入っていて、
#smartctl /dev/hda
なんかでステータスが見られるのだが、温度に関しては87万度とか異常な値が出ている。調べてみると、smartsuiteはすでにメンテナンスされておらず、smartctlはsmartmontoolsというソフトに受け継がれたらしい。

smartmontoolsをインストールする。
smartmontoolsはtesting以降じゃないと無いので、
# apt-get install smartmontools/testing

# smartctl -A /dev/hda |grep -i temp
ほい正常動作。

[lm-sensors]
kernelが2.6系なので、testingじゃないとダメ。
# apt-get install lm-sensors/testing sysvinit/testing coreutils/testing libacl1/testing libattr1/testing
依存で引っかかると、
Sorry, but the following packages have unmet dependencies
などのメッセージが出る。依存関係は1つ1つで見てくのが普通? perlとlibc以外はこのやり方で大騒動は起こらないんだろうけど。今回は手動で全部見た。

さて入ったので、
# sensors-detect
で、使われているチップを見る。Ez!goはWinbondのW83627HFで確定(この後蓋開けて基盤上でも確認)。
モジュールがちゃんとロードされていれば、
# sensors
で見られるはずなのだが……
sensorが見つからないと怒られる。

カーネルフォルダに戻ってあれこれモジュールをコンパイル->ロードしてみる。
i2c-isa, i2c-810, i2c-algobit, i2c-sensor, i2c-chardev, w83781d(W83627HF互換)
とやってみたのだが、センサーはちゃんと見つけているようではあるものの
 "ERROR: Can't get IN0 data!"
 ……
と出てデータが出てこない。

色々調べて、最近のカーネルはW83627HF系の専用ドライバが出ているというのでカーネルアップ決断。
$ cd ~/kernel
$ wget     <a HREF="http://www.asahi-net.lkams.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.8.tar.gz" TARGET=_top>http://www.asahi-net.lkams.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.8.tar.gz</a>
$ tar -xvzf linux-2.6.11.8.tar.gz
$ cd linux-2.6.11.8
$ make menuconfig
で上記のもの(ただしw83781d->w83627hf)をモジュールではなくカーネル組み込みでごりごり追加し、
# make V=0
# make install
あーもう適当だ。ちょっとテンパってたのでカーネルの保存とか考えてないね。
再起動
# reboot

# sensors
w83627hf-isa-0290
Adapter: ISA adapter
VCore 1:   +1.50 V  (min =  +0.00 V, max =  +0.00 V)
VCore 2:   +1.28 V  (min =  +0.00 V, max =  +0.00 V)
+3.3V:     +3.28 V  (min =  +3.14 V, max =  +3.47 V)
……
ちゃんと表示されました! やった。

さらに、/sys/devices/platform/i2c-2/2-0290/の中を書き換えることでいくらかのコントロールが出来る。
echo 255 > /sys/devices/platform/i2c-2/2-0290/pwm1
でファンの回転がアップ。echoの値が2で通常。0でストップ。ただし、このマシンはBIOSでファン制御が強いのか20secくらいですぐ元に戻る。

で、やりたいことはHDDの温度が高いときにファンの回転をアップさせることなのでcron用の制御スクリプトを書く。最近はシェルスクリプトで失敗することが多いので、もうRubyでいいや。

/etc/cron.hourly/fancontrol_forHDD.rb
を作成し、
#! /usr/bin/ruby

$MAXTEMP=40

temp = `/usr/sbin/smartctl -A /dev/hda | grep -i temp`
temp = temp[/\s+(\d+)\s+\(Lifetime/, 1]

if $MAXTEMP < temp.to_i then
  (1..600).each {
    `echo 255 > /sys/devices/platform/i2c-2/2-0290/pwm1`
    sleep 1
        }
end
とした。40度を超えていたら10分回転アップを打ち続ける。cron.dの中がなんかちゃんと動いてないんだよな。ということでhourlyにしました。

さてこれでちゃんと動くかテストです。

[本家]
http://www2.lm-sensors.nu/~lm78/

2005/04/27(水)作業ログの取り方

2005/04/27 21:00 PC(Linux)
今の私の基本的なunix系OSのいじり方は、Windowsからputtyを使っての操作。
それを前提に、なんか色々なログ取り方法があるらしいので調べてみた。

・puttyのログ機能を使う
 今まではこれ。シェルによっては空白が飛んだり、テキストファイラーの画面は崩れるが、設定さえしておけば勝手に取ってくれるしファイル名にホストや時間もつけられるので管理が楽。

・screenのログ機能を使う
 screenメインで作業する人はこっちなのかな。screenは使わないので分からない。

・scriptコマンド
 ほとんどのUnix系OSにデフォルトで入っている。使い勝手は悪くないのだが、吐いたファイルにエスケープシーケンスなども混ざってしまうのでちょっと掃除するのが面倒。

・ttyrec
 scriptコマンドの上位版という感じなのだが、NetHackやFDの画面もカラーごと記録できる。しかし、記録ファイルは視認性がないし、再生の使い勝手は今ひとつ。停止、巻き戻し、無作業部ジャンプとかないとログという意味ではきつそう。遊んだり見せびらかす分には面白い。今度再生ソフトでも作るかね?

・vnc2swfとかx11rec
 Xのウィンドウを録画する。x11recなんかは意外とサイズ小(アニメgif)。

・劇場版 ディスプレイキャプチャー あれ
 Windowsのウィンドウを録画する。多分サイズでかいだろうなあ?(MPEG1?)

結論としては、やっぱりputtyのままひっぱることにした。ttyrec使ってみたけれども、まあ楽しいのだが作業ログとしてはいまいち。

#050503追記 前言撤回。puttyのログは相当化ける。これではちょっと使い物にならない。カットアンドペーストで頑張るか……
 

2005/04/16(土)cron.dに入れたファイルが実行されなかった理由

2005/04/16 22:00 PC(Linux)
cron.dに入れたファイルがきちんと実行されなかった問題。

なんと行末に改行が無かった所為だった。行末には必ず改行を入れること!
その他、debian限定? ファイル名は[a-zA-Z_0-9\-]+以外読んでくれないという噂。

確認。cron.d/内のファイルは編集後自動的に読み込んでくれるので、cronの再起動等の必要は無し。チェックは1分おき。

syslogを見るとloadはされているのに、何で動かないのか分からなかった……

2005/04/16(土)cronのメール投げを止める

2005/04/16 18:00 PC(Linux)
spamがcronに埋もれても困るので、本格的にcronからのメールを止めることにします。MAILTOに空白を指定すればメールが止まるのは以前書いたとおり。

/var/spool/cron/crontabs/root
/etc/crontab

のそれぞれに
MAILTO=""
の1行を追加。

止まったようです。

2005/04/16(土)fetchmailインストール

2005/04/16 17:00 PC(Linux)
spamassassinなどのテストのために、通常使用しているメールをサーバに一度キャッチさせIMAPの方へ廻すことにする。今のところ、チェックのみでそっちをメインにはしない。

[1]fetchmailのインストール
いつも通りaptで済ます。
# apt-get install fetchmail
[2]qmailの調整
fetchmailはデフォルトではローカルホスト(localhost)に投げる。今の設定ではlocalhostが自アドレスだと認識させていなかった。あとでmdaの設定もしたので無くても良いかもしれないが、qmailの設定に追加しておく。

/var/qmail/controlに
localhost
の1行を追加

忘れちゃいけないqmail再起動。
# /etc/init.d/qmail restart
[3].fetchmailrcで設定。
あとで/etcに移すが、今は間に合わせで/rootに置いておく。

/root/.fetchmailrcを作成し、以下の内容とする。
set postmaster urara
set nobouncemail

defaults
protocol pop3
keep
no mimedecode
smtphost localhost

poll dd.iij4u.or.jp
user urara
password ********
is urara here
mda "env QMAILQUEUE=/var/qmail/bin/qmail-scanner-queue.pl /var/qmail/bin/qmail-inject urara"

poll mail.big.or.jp
user urara
password ********
is urara here
mda "env QMAILQUEUE=/var/qmail/bin/qmail-scanner-queue.pl /var/qmail/bin/qmail-inject urara"
パーミッションを600に変更。

基本的に下のサイトの設定まんまだが、mdaに注意。
envでQMAILQUEUEを設定しないと、qmail-scannerを通らない。

[参考サイト]
http://www.aconus.com/~oyaji/mail2/fetchmail.htm

[4]テスト
iij4u,big-netアドレスにメールを送り、fetchmailを手動起動して
# fetchmail
メールがurara@dt8.jpに送信されることを確認。X-Spamヘッダが付いているかどうかなどqmail-scannerを通っていることを確認。

問題なし!

[5]cron設定
当面spamassassinがちゃんと動いているかどうかを知りたいのがメインなので色々考えたが、cronに5分おきでチェックさせクライアントのメーラーなどの自動ダウンロードは切っておくことにする。

で、/etc/cron.dで設定しようとしたのだが、どこをどうやっても動いてくれない。どうやらcron.d/は根本動いてないようである。こいつは保留して、しゃあないので、

/var/spool/cron/crontabs/rootに
0-59/5 * * * * /usr/bin/fetchmail
と書いたところ、ちゃんとチェックしてくれるようになった。

なお、debianの場合cronは/var/log/syslogにlogを吐く。

さあて、欲しいときにスパムが来ないな……

2005/04/16(土)SpamAssassinインストール(ハマリ編)

2005/04/16 5:00 PC(Linux)
ログがもう整理できる状態にないので、覚え書き程度に。

[1]ハマリ1

SpamAssassin's spamd daemon is incorrectly installed. You need to run it as:

spamd -F 0 ....

Please try again.

qmail-scannerを./configureしたときにでたエラーメッセージ。-Fオプションを指定していなかった。

[2]ハマリ2
Something like spamc for SpamAssassin detected - but not correctly installed
(didn't include a "X-Spam-Status: Yes" line in output) - ignoring...
同じくqmail-scanner ./configure時にspamassassinが見つかったが、ちゃんと動いていないよというエラー。

モジュールが足りていないので、
spamassassin -t < sample-spam.txt
とテスト起動して、足りないモジュールをチェック。
Can't locate HTML/Parser.pm in @INC (@INC contains: lib ../lib /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl . /usr/bin/lib /usr/bin/site_perl) at lib/Mail/SpamAssassin/HTML.pm line 32.
BEGIN failed--compilation aborted at lib/Mail/SpamAssassin/HTML.pm line 32.
Compilation failed in require at lib/Mail/SpamAssassin/Message/Node.pm line 42.
BEGIN failed--compilation aborted at lib/Mail/SpamAssassin/Message/Node.pm line 42.
Compilation failed in require at lib/Mail/SpamAssassin/Message.pm line 49.
BEGIN failed--compilation aborted at lib/Mail/SpamAssassin/Message.pm line 49.
Compilation failed in require at /usr/share/perl5/Mail/SpamAssassin/NoMailAudit.pm line 18.
BEGIN failed--compilation aborted at /usr/share/perl5/Mail/SpamAssassin/NoMailAudit.pm line 18.
Compilation failed in require at /usr/bin/spamassassin line 134.
BEGIN failed--compilation aborted at /usr/bin/spamassassin line 134.
HTML/Parserで怒られてるので、足りてないのは多分これ。
# apt-get install libhtml-parser-perl/testing

なお、sample-spam.txtはspamassassinのソースから取ってきた。これ以外にソースは使わなかったので、今にして思えばわざわざaptで取ってこなくてもという感じ。取ってくるときには例のごとく、
# apt-get source spamassassin
(注:カレントに放り込まれます)

[3]ハマリ3
これが一番きつかった。
# spamassassin -t < sample-spam.txt

error: rule 'GB2312_CHARSETContent-Type' has invalid characters (not Alphanumeric + Underscore)
error: rule 'X_MACKY_ID_PRESENTexists:X-Macky-ID' has invalid characters (not Alphanumeric + Underscore)
error: rule 'X_MACKYCATCODE_PRESENTexists:X-MackyCatCode' has invalid characters (not Alphanumeric + Underscore)
error: rule 'X_MACKYMEDIA_PRESENTexists:X-MackyMedia' has invalid characters (not Alphanumeric + Underscore)
error: rule 'X_MAILER_PRESENTexists:X-Mailer' has invalid characters (not Alphanumeric + Underscore)
Net::DNS version is 0.19, but need 0.34dnsavailable-1 at lib/Mail/SpamAssassin/Dns.pm line 1230.
Failed to run ROUND_THE_WORLD SpamAssassin test, skipping:
        (Can't locate object method "check_for_round_the_world_received" via package "Mail::SpamAssassin::PerMsgStatus" at lib/Mail/SpamAssassin/PerMsgStatus.pm line 2312.
)
Failed to run DIFFERENT_REPLY_TO SpamAssassin test, skipping:
        (Can't locate object method "check_for_spam_reply_to" via package "Mail::SpamAssassin::PerMsgStatus" at lib/Mail/SpamAssassin/PerMsgStatus.pm line 2312.
)
Failed to run CTYPE_JUST_HTML SpamAssassin test, skipping:
        (Can't locate object method "check_for_content_type_just_html" via package "Mail::SpamAssassin::PerMsgStatus" at lib/Mail/SpamAssassin/PerMsgStatus.pm line 2312.
)
Failed to run LOTS_OF_CC_LINES SpamAssassin test, skipping:
        (Can't locate object method "check_lots_of_cc_lines" via package "Mail::SpamAssassin::PerMsgStatus" at lib/Mail/SpamAssassin/PerMsgStatus.pm line 2312.
)
Failed to run FROM_NAME_EQ_FROM_ADDR SpamAssassin test, skipping:
        (Can't locate object method "check_from_name_eq_from_address" via package "Mail::SpamAssassin::PerMsgStatus" at lib/Mail/SpamAssassin/PerMsgStatus.pm line 2312.
)
Failed to run BAD_HELO_WARNING SpamAssassin test, skipping:
        (Can't locate object method "check_for_bad_helo" via package "Mail::SpamAssassin::PerMsgStatus" at lib/Mail/SpamAssassin/PerMsgStatus.pm line 2312.
)
Failed to run FROM_AND_TO_SAME SpamAssassin test, skipping:
        (Can't locate object method "check_for_from_to_equivalence" via package "Mail::SpamAssassin::PerMsgStatus" at lib/Mail/SpamAssassin/PerMsgStatus.pm line 2312.
)
Failed to run KNOWN_BAD_DIALUPS SpamAssassin test, skipping:
        (Can't locate object method "check_for_bad_dialup_ips" via package "Mail::SpamAssassin::PerMsgStatus" at lib/Mail/SpamAssassin/PerMsgStatus.pm line 2312.
)
Failed to run NO_MX_FOR_FROM SpamAssassin test, skipping:
        (Can't locate object method "check_for_from_mx" via package "Mail::SpamAssassin::PerMsgStatus" at lib/Mail/SpamAssassin/PerMsgStatus.pm line 2312.
)
Failed to run SUBJ_MISSING SpamAssassin test, skipping:
        (Can't locate object method "subject_missing" via package "Mail::SpamAssassin::PerMsgStatus" at lib/Mail/SpamAssassin/PerMsgStatus.pm line 2312.
)
Failed to run DATE_IN_FUTURE SpamAssassin test, skipping:
        (Can't locate object method "check_for_forward_date" via package "Mail::SpamAssassin::PerMsgStatus" at lib/Mail/SpamAssassin/PerMsgStatus.pm line 2312.
)
Failed to compile URI SpamAssassin tests, skipping:
        (Illegal declaration of anonymous subroutine at /etc/spamassassin/20_uri_tests.cf, rule MAILTO_TO_SPAM_ADDR, line 10.
)
Failed to run LINES_OF_YELLING_3 SpamAssassin test, skipping:
        (Can't locate object method "check_for_num_yelling_lines" via package "Mail::SpamAssassin::PerMsgStatus" at lib/Mail/SpamAssassin/PerMsgStatus.pm line 2312.
)
Failed to run BALANCE_FOR_LONG SpamAssassin test, skipping:
        (Can't locate object method "check_for_very_long_text" via package "Mail::SpamAssassin::PerMsgStatus" at lib/Mail/SpamAssassin/PerMsgStatus.pm line 2312.
)
Failed to run LINES_OF_YELLING SpamAssassin test, skipping:
        (Can't locate object method "check_for_yelling" via package "Mail::SpamAssassin::PerMsgStatus" at lib/Mail/SpamAssassin/PerMsgStatus.pm line 2312.
)
Failed to run LINES_OF_YELLING_2 SpamAssassin test, skipping:
        (Can't locate object method "check_for_num_yelling_lines" via package "Mail::SpamAssassin::PerMsgStatus" at lib/Mail/SpamAssassin/PerMsgStatus.pm line 2312.
)
Failed to run BASE64_ENC_TEXT SpamAssassin test, skipping:
        (Can't locate object method "check_for_base64_enc_text" via package "Mail::SpamAssassin::PerMsgStatus" at lib/Mail/SpamAssassin/PerMsgStatus.pm line 2312.
)
Failed to run RAZOR_CHECK SpamAssassin test, skipping:
        (Can't locate object method "check_razor" via package "Mail::SpamAssassin::PerMsgStatus" at lib/Mail/SpamAssassin/PerMsgStatus.pm line 2312.
)
Can't locate object method "handle_auto_report" via package "Mail::SpamAssassin::PerMsgStatus" at /usr/bin/spamassassin line 231.
またモジュール不足かと思ってあれこれやってみたのだが、
# apt-get install libnet-dns-perl/testing
とか、全く解決しない。

で、"Can't locate object method"と"PerMsgStatus"で海外のサイト調べたところ、設定ファイル等含めて全部消してインストールし直せと言う。あれこれやってるうちにどうも以前のバージョンのと色々混ざったらしい。
# dpkg --purge spamassassin
# rm -r /etc/spamassassin
# apt-get install spamassassin/testing
あ、うごいた。

[参考サイト]
http://article.gmane.org/gmane.mail.spam.spamassassin.devel/15172
http://article.gmane.org/gmane.mail.spam.spamassassin.general/60241/m
atch=+usr+share+perl5+mail+spamassassin+permsgstatus+

[4]ハマリ4
# ./configure

Hit RETURN to create initial directory structure under /var/spool/qmailscan,
and install qmail-scanner-queue.pl under /var/qmail/bin:
perlscanner: generate new DB file from /var/spool/qmailscan/quarantine-attachments.txt
perlscanner: total of 9 entries.
で、行ったまま帰ってこない。暴走。

qmailのulimitの値を12288まで上げると。
# ./configure
うーん、今度はインストールは完了。テストをすると……?
# contrib/test_installation.sh -doit

Sending standard test message - no viruses...
done!

Sending eicar test virus - should be caught by perlscanner module...
qmail-inject: fatal: qq temporary problem (#4.3.0)
Bad error. qmail-inject died
途中で落ちてしまいます。メモリ不足??

その後swapを弄ったらいつの間にか解決してしまいました。多分、swapが設定されていなかった事による単なるメモリ不足であったのでしょう。
OK キャンセル 確認 その他