postgreyの設定ミス
サーバの更新後、メールサーバを qmail から postfix に変更し、 ひとまず自宅ドメインへのメール送信もできるようにしていたつもりだけど、 設定に間違いがあった。 基本、自宅ドメインへのメールなんて、自分だけしか使わない。 だから、トラブルに気付かなかった。 でも、自宅blog(movable-type)への書き込みに、たまーに使っている。
トラブルの状況は、送ったメールが451エラーで送り返される。
Delivery to the following recipient failed permanently: ユーザ名@自宅ドメイン Technical details of permanent failure: Google tried to deliver your message, but it was rejected by the recipient domain. We recommend contacting the other email provider for further information about the cause of this error. The error that the other server returned was: 451 451 4.3.5 Server configuration problem (state 14).
メールのエラーログを見ると、以下のように、10023ポートへの接続エラー。 これより、postgrey への接続でエラーが出ていることがわかる。
... connect from localhost[127.0.0.1] ... disconnect from localhost[127.0.0.1] ... connect from mail-pz0-f44.google.com[209.85.210.44] ... warning: connect to 127.0.0.1:10023: Connection refused ... warning: problem talking to server 127.0.0.1:10023: Connection refused ... warning: connect to 127.0.0.1:10023: Connection refused ... warning: problem talking to server 127.0.0.1:10023: Connection refused ... NOQUEUE: reject: RCPT from mail-pz0-f44.google.com[209.85.210.44]: 451 4.3.5 Server configuration problem; from=<xxxx@gmail.com> to=<xxxx@xxxxxx> proto=ESMTP helo=<mail-pz0-f44.google.com> ... disconnect from mail-pz0-f44.google.com[209.85.210.44]
いろいろ説明を調べてみると、この記事が該当しているようだ。 設定時に、古い postgrey の記事を見たため、以下のような間違いがあった。
(( /etc/default/postgrey )) # POSTGREY_OPTS="--inet=10023" は間違い。 POSTGREY_OPTS="--inet=127.0.0.1:10023"
参照記事によれば、"–inet=10023"では、IPv6接続に勘違いされてしまうらしい。 だめだこりゃ…
forked-daapdなかなか良いけど
MacBookを使っていて、iTunesで保存しているデータも増えてきた。 サーバ側にデータも保存しておきたいということで、コピーを取っているけど、 せっかくだしそのデータを、家の中で共有したい。 このため、mt-daapd を試したけど、うまく動いてくれなかった。
いろいろ調べていたら、mt-daapdは更新もされていないので、他の方が プログラムを新たに作り直した、forked-daapdなるソフトが出ているみたい。 んで、今回試しに入れてみた。
(( install )) # aptitude install forked-daapd (( /etc/forked-daapd.conf )) # 書き換えたのは、1行だけ!! directories = { "ディレクトリ/iTunes/Music" }
使ってみると、iTunesを立ち上げるだけで、左側メニューの共有欄に、"My Music on XXXX" が表示される。ただし、曲数が多いとデータベースの更新で時間がかかった。 動き出せば、日本語の曲名も普通に表示できている。(一部文字化けもあるけど)
再生させても、普通に再生…といいたいけど、 1曲再生で、4分ほどの曲が3分ほどで停止してしまうものがある。 最後まで普通に再生できたり、うーん、よくわからん….
USBボイスモデムを使うsl-modem-daemon
改めて、ボイスモデムを使うために、安く購入したけど、ソフトウェアもでむだったみたいだな… でも、slmodem なるパッケージがあるみたい。
(( まずはmodemを調べる )) # lsusb Bus 002 Device 006: ID 0483:7554 SGS Thomson Microelectronics 56k SoftModem
付属のCD-ROMには、dgcmodemやらslmodemやらのドライバが入っているけど、 dgcmodemは vendor-id とかから調べると違うみたい。 んで、slmodem は、debian では、sl-modem-daemon という名前みたい。
(( インストール )) # aptitude install sl-modem-daemon だけど、以下のようなエラーで動かない Only access through ALSA is available on amd64 but slamr driver was chosen! Make sure that an ALSA driver for your chipset is available and is loaded and that access to SmartLink modem components is supported by it. invoke-rc.d: initscript sl-modem-daemon, action "start" failed.
/usr/share/doc/sl-modem-daemon/README.debian を読むと、 ALSAでなければ、/etc/default/sl-modem-daemonのSLMODEMD_DEVICEに、"hw:0"とか"hw:1"とかを指定しろって書いてある。
(( /etc/default/sl-modem-daemon )) SLMODEMD_DEVICE=hw:0 (( 動作確認 )) # /etc/init.d/sl-modem-daemon start # kermit -l /dev/modem C-Kermit> connect AT OK
おお、ちゃんと動き出した。さて、今から AT-command の確認。
/etc/default/keyboardなのか…
サーバを更新してから、バージョン上がっていったら、キー入力が変になってきた。 キーをタイプしても、打てないキーや不規則にキーが捨てられたり。 どうも、Caps Lock / Ctrl の入れ替えで小技を使っていたのが、 最近のパッケージの流儀に合わないらしい。
(( 設定を改めて更新)) # dpkg-reconfigure -phigh xserver-xorg
これによって、Xが立ち上がってもキーが利かなくなることはなくなったが、 当然ながら Caps Lock と Control が元通り。不便極まりない。 色々調べてみると、最近は、/etc/default/keyboard で変更するらしい。
(( /etc/default/keyboard )) XKBMODEL="a4techKB21" XKBLAYOUT="jp" XKBVARIANT="" XKBOPTIONS="ctrl:swapcaps"
Debian/testing に linux-image-3.0.0-1 登場、入れちゃった。
朝の暇つぶし、なにげに Debian のアップデートかけてたら、 ついに linux-3.0.0 が登場。メジャー番号が 2→3というと、大抵いろいろなトラブルが 発生するから、普通なら様子見なんだけど、 今回の、 2.6.39→3.0.0 はニュースを見ると大きな更新は無い。 2.4→2.6でさえトラブルが多かった(正確に言うとレガシーな設定を使い続けるヤツだから発生するトラブル)のに、 2.6→3.0 はすんなりNo Trouble あるね。
2.6.38→2.6.39 で ARP テーブルの管理が変わって、 自宅内の稼働しているネットワーク機器の状況が観測しづらくなっていたけど、 当然ながら、3.0 でも同じ。 おかげで、子どものゲーム機のネットワーク接続監視は、困難になった。
# なんかいい方法ないかなぁ…
USBRHをnagiosで警告メール
muninを使って、USBRHで室内温度の警告をさせていたけど、 警告状態になった時の連続メールがうざいので、 スクリプトを間に入れたけど、動きがおかしいので、 監視を nagios3 にさせてみようと実験。
nagiosであれば、管理画面で警告メールの送信などを、Webで止めたりできる!!
nagios3 でチェックするには、check_XXXX といったプログラムが必要だけど、 USBRH では、自作する必要がある。普通ならperlを使うんだけど、 簡単な処理で、巨大なPerlインタプリタを実行するのは避けたい。 以前から、モジュール機能の無い「組み込み専用Perl」が無いかと、 物色していたけど、Lua というプログラム言語を見つけた。 というわけで、初めての Lua で、check_usbrh を作ってみた。
(( Luaインストール )) # aptitude install lua50 (( /etc/nagios3/my-plugins/check_usbrh )) #!/usr/bin/lua -- arg[1] warning -- arg[2] critical if table.getn(arg) < 2 then print( "UNKNOWN" ) os.exit( 3 ) else warning = tonumber( arg[1] ) critical = tonumber( arg[2] ) end fh = assert(io.popen("/usr/local/bin/usbrh","r")) temp = tonumber( fh:read("*n") ) hum = tonumber( fh:read("*n") ) fh:close() if temp >= critical then print( string.format( "USBRH CRITICAL - %4.2f,%4.2f%%" , temp , hum ) ) os.exit( 2 ) elseif temp >= warning then print( string.format( "USBRH WARNING - %4.2f,%4.2f%%" , temp , hum ) ) os.exit( 1 ) else print( string.format( "USBRH OK - %4.2f,%4.2f%%" , temp , hum ) ) os.exit( 0 ) end (( /etc/nagios-plugins/config/usbrh.cfg )) # 'check_usbrh' command definition define command{ command_name check_usbrh command_line /etc/nagios3/my-plugins/check_usbrh '$ARG1$' '$ARG2$' } (( /etc/nagios3/conf.d/localhost_nagios2.cfg )) # USBRH define service{ use generic-service host_name localhost service_description USBRH check_command check_usbrh!32!35 }
Lua 、こりゃ、ほんとに軽そうな言語。数値が絡んだら、awk とか使ったりしてたけど、 これならsh変わりにも使えそう。
arpalertを使ってみる
Wi-Fi経由の勝手な接続などの検出ということで、arpwatchを使っていたけど、 携帯で3G経由で使った後だと、そのアドレスでWi-Fi接続を試すため、 いちいち警告メールが届くのが紛らわしい。 そこで、別のARP監視システムを探してみた。
arpalert は、監視して whitelist とか、発見時のスクリプトを指定できるので、 もう少しきめ細かな警告ができそう。
Debianのパッケージで入れて、警告時に起動するスクリプトに、付属のスクリプトを修正して登録してみた。動かすとサーバ自体の警告メッセージが送られてきた。 原因は、古いサーバとの互換性を考えて、1つのインタフェースに2つのIPアドレスを割り振っているためだった。チェックの度に、2つのアドレスで変わっているとみなされている。 しかたがないので、maclist.allow の最後に、ip_change フラグを付けて、 アドレス変化を無視させる。
(( インストール )) # aptitude install arpalert (( /etc/arpalert/arpalert.conf )) Debianのパッケージをそのまま。 (( /etc/arpalert/maclist.allow )) xx:xx:xx:xx:xx:xx 192.168.xx.xx eth0 xx:xx:xx:xx:xx:xx 192.168.xx.yy eth0 ip_change xx:xx:xx:xx:xx:xx 192.168.xx.zz eth0 ip_change (( /etc/default/arpalert )) ARGS="-e /etc/arpalert/send_alert.sh" (( メール送信のひな形をコピー )) # cp /usr/share/doc/arpalert/examples/scripts/contribs/send_alert.sh /etc/arpalert/ (( /etc/arpalert/send_alert.sh )) #!/bin/sh # Intruder MAC address intruder_MAC=$1 # Intruder IP address intruder_IP=$2 # Alert Type intruder_AlertType=$5 # Ethernet Vendor intruder_Vendor=$6 # Mail recipient mail_To="root" date=`LANG=C /bin/date` # Subject mail_Subject="[arpalert] IP/MAC alert" # Body and send mail cat << EOF | mail -s "$mail_Subject" $mail_To [arpalert] Intruder Detected Intrusion time stamp : $date Intruder IP Address : $intruder_IP Intruder MAC Address : $intruder_MAC Type of alert : $intruder_AlertType Ethernet Vendor: $intruder_Vendor EOF
perl CPANのアップデート
Debianでパッケージのアップデートで、通常は、"aptitude safe-upgrade"だけど、 時々install時に競合が多いので、久々に"aptitude dist-upgrade"かけてみた。 色々とアップデートされて、よかったけど、時間がたつと、自作perlスクリプトが 動かない。どうも、CPANで入れていた"Net::Google::Calendar.pm"が古いみたい。
google で "perl CPAN アップデート"を実行すると、やっぱり簡単に見つかる。 参考記事を見ながら、以下を実行。
(( アップデート可能なモジュールを一覧 )) # perl -MCPAN -e 'CPAN::Shell->r' (( 全部をアップデート )) # perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'
最近は、"aptitude install libXXXX-perl" で確かめて入れていたので、 必要最小限しか入っていないと思っていたけど、やっぱりいつのまにか CPANパッケージたっぷり入ってるな…
うーむ、Perlの更新の余波が…自作スクリプトに、関数呼び出しの do を使ってたのが 残ってた。 『Use of "do" to call subroutines is deprecated at …』なんてエラーが 出て、スクリプトが動かなくなってら…
linux-image-2.6.39-2にしたらARPモニタが…
自宅でネットワークに繋がっている機器の モニタリングということで、muninでarpを 観察させていた。 しかし、今回 linux-image-2.6.39-2 が配布されて OSを更新したら、出力グラフの表示のされ方が かわってきた。 arpのデータが廃棄されるまでの時間が延びたみたい。 うーむ….

munin-limitsで警告メール
USBRHで室温監視ができるようになったけど、 暑くなったのに気づかなければいけないので、 munin-limits でメールを送るように設定。
/etc/cron.d/munin-nodeを見ると、警告を送るコンタクト名は”nagios”になっているので、 “contact.nagios.command” に送付先の携帯のメールアドレスを登録することにする。 Debianなら、余計な設定ファイルは細かく触らないに限る…
(( /etc/munin/munin.conf )) # メールの送り先とSubjectの設定 contact.nagios.command mail -s "[Munin] ${var:group}::${var:host}" 携帯メアド contact.root.command mail -s "[Munin] ${var:group}::${var:host}" root # a simple host tree [localhost.localdomain] address 127.0.0.1 use_node_name yes # USBRHの警告範囲 usbrh.tempreture.warning 31 usbrh.tempreture.critical 34 # CPU負荷の警告 load.load.warning 2.5 load.load.critical 3.5 # ディスク使用量の警告 df._dev_sdc1.warning 70 df._dev_sdc1.critical 90 df._dev_mapper_lvm_lvm0.warning 70 df._dev_mapper_lvm_lvm0.critical 90 # プロセス総数の警告 processes.processes.warning 300 processes.processes.critical 400 # S.M.A.R.Tの警告文章は大量で長いから報告させない smart_sda.contacts no smart_sdb.contacts no smart_sdc.contacts no