くまきち

山と旅と家族が大事。
でも激しい物欲が理性と財布のタガを飛ばす
最近は自転車も乗ってる

Postfix の inet_interfaces でハマる

2012-02-28 17:15:02 | SEまわり
 Postfix で珍しくハマった。

 ひととおりのセットアップが終わって、ローカルで 25/tcp につないでメール送信テストもできて、いざ同一ネットワーク上の別ホストからつないでみるとつながらない。


 環境は CentOS 5.7 なので、iptables で 25/tcp が開いているのも確認。

 はて。

 メールサーバ上で、netstat -an してみると、こんな感じ。比較のために httpd の部分を並べている。

  
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN


 なんか違う。 25/tcp はローカルホストインタフェースでしか待ち受けていない。

 main.cf を調べると、

  
inet_interfaces = localhost


 になってた。

 これを、

  
inet_interfaces = all


 としたら、直った。

  
# rpm -qa | grep postfix
postfix-2.3.3-2.3.el5_6


 というパッケージなんだけど、デフォルトで受信インタフェースが localhost になってるのかな。 そうだとしたら、これはハマるよなあ。

 時間を無駄にした。

syslog の先頭数字の意味

2012-02-27 17:09:20 | 雑記
syslog-ng でいろいろやっているときに、なかなかリモートの syslog-ng サーバでの振り分け処理ができず、その際に改めて RFC を見たのでメモ。

syslog のデータを tcpdump でキャプチャして、中身を見てみると、こんな情報が入っている

 
<147>Feb 27 16:22:40 sv httpd[17565]:.....(略)


先頭の <147> がどうやって facility と severity を表しているのかが分からなかった。

答えは次のとおり

1. 8 で割った商が facility
2. 同じく余りが Severity



で、それぞれの表がこちら。

まず Facility


                         
コードFacility
0カーネルメッセージ
1ユーザレベルメッセージ
2メール
3システムデーモン
4セキュリティ/認証
5syslogd 内部メッセージ
6プリンタ
7News
8UUCP
9クロック
10セキュリティ/認証
11FTP
12NTP
13ログ監査
14ログアラート
15クロック(note2)
16ローカル利用0 (local0)
17ローカル利用1 (local1)
18ローカル利用2 (local2)
19ローカル利用3 (local3)
20ローカル利用4 (local4)
21ローカル利用5 (local5)
22ローカル利用6 (local6)
23ローカル利用7 (local7)


続いて Severity (Level)。 全部にマッチする訳語が思いつかなかったので英文まま。


         
コードSeverity
0Emergyency
1Alert
2Critical
3Error
4Warning
5Notice
6Information
7Debug



syslog-ng で Connection がキレる

2012-02-27 15:34:58 | SEまわり
syslog-ng にて。

リモートからの受信でエラーが出る

送受信ともに syslog-ng を使って構成し、クライアント側から PHP スクリプトの syslog()
を使ってメッセージを出力させてみたところ、下記エラーが出てきた。末尾の行は PHP で
出力したもの

 
Feb 27 15:08:47 sv syslog-ng[17003]: EOF occurred while idle; fd='5'
Feb 27 15:08:47 sv syslog-ng[17003]: Connection broken; time_reopen='10'
Feb 27 15:09:12 sv php: error message from php


送信側の定義行は下記のように tcp() を使っている

 
destination logger { tcp("192.168.1.10" port(514)); };


この対処は、/etc/hosts.allow に以下を記述する

 
syslog-ng:ALL:ALLOW


例として ALL を使ったが、各ホストについて書くのが最良。

UDP クライアントを書こうと

2012-02-25 18:07:53 | SEまわり
ちょっとした思いつきから、簡単な UDP クライアントを作ろうと思い、本を引っ張り出してきた。



必要な内容は本に書かれているけど、中で unp.h というヘッダファイルが使われていて、この中身が不明。

本の中には、ftp://ftp.kohara.com/ から一式をダウンロードできると書かれているが、このドメインはすでに失効しているのか、コハラ株式会社というところ(kohara.co.jp)にリダイレクトされてしまう。

unp.h で検索すると、外国語ページがたくさんヒットして、「どこにあるの?」という質問も多い。が、肝心の FTP サーバの移転先が分からない。


結局、日本語版出版元のピアソンエデュケーションをたどり、このページを見つけた。

[UNIX Network Programming]
http://www.kohala.com/start/unpv12e.html

ここから、目的のファイル群は入手できたのだが、ドメイン名が kohala.com


あれ?

どうも、ドメインの l と r を間違えていたみたい。

ただ、本の中に出てくる ftp の URL はアクセスすると basic 認証がかかっていて、結局はファイルはとれなかった。

Facebook にも SPAM メッセージ。きてた。

2012-02-19 11:13:10 | 雑記
気付いたら Facebook に SPAM メッセージが届いていた。



日付は3ヶ月前。 これだけ読まれなかったら SPAM 送る意味はないな。

もう1件のメッセージは知人からで、これは平謝り。
Facebook のメッセージって、届いたらメール通知とか、画面上に通知が出るといいんだけど、だんまりなんだよね。気をつけないと。


ちなみに、SPAM メッセージを改めて読んでみると、送り仮名間違ってる。 バカ。
だいたい、「Facebook 内では話しにくくて、メールだと話せる内容」って何だよ。 そういう呼び込みが なってないんだよ。

ナイジェリア詐欺(詳細は「ナイジェリアからの手紙」で検索するとすぐみつかる)なんか、ひっかかるやつの気が知れなかったが、ストーリーと下地(人物関係などの調査と組み立て)はよくできてたと思った。


あちこちのメールボックスを総合すると、月に数百通の SPAM を受信しているわけだけど、気合いの入ったつーか、丁寧に作り込まれたものがほとんど見当たらないのは逆に腹立たしい。

詐欺師って、才能と努力が必要で、バカで不勉強じゃダメだと思うんだよね。
やってることは犯罪だけど、その緻密な思考や準備、度胸は見習うべきところがある。

だから、簡単に考えて気持ちの入ってない SPAM に時間を浪費された感じがして腹が立つ。




ところで、この SPAM メッセージに書かれている(画像では消してある)メールアドレスは、アカウント部分(@の前)が2文字なんだけど、ezweb ってこんな短いアカウント部はアリなの? と思って調べてみたら、30文字までの制限はあっても、短い側の制限はなかった。

  
[迷惑Eメール防止方法(KDDI)]
  http://www.au.kddi.com/service/email/support/meiwaku/email_boshi/mail_address.html


へー

yum で HTTP 404 エラー

2012-02-08 23:34:28 | SEまわり

仮想マシンを整理してて、久しぶりにある CentOS 5.3 マシンを起動。
テスト用途で使いたかったので、yum を動かすとエラーが

  
http://centosk.centos.org/centos/5/contrib/i386/repodata/repomd.xml: HTTP Error 404: Not Found Trying other mirror.


ホスト環境が変わったから、名前解決に失敗してるのかもと思って、/etc/resolve.conf を調べて、host コマンドで解決できることも調べて、原因はそこではないと切り分ける。

yum はキャッシュ関係で正常に動かないことあるのを思い出し、makecache を試してみたが、似たようなエラー

  
[root@spare init.d]# yum makecache --disableplugin=fastestmirror
http://ftp.nara.wide.ad.jp/pub/Linux/centos/5.3/os/i386/repodata/repomd.xml: [Errno 14] HTTP Error 404: Not Found
Trying other mirror.
http://ftp.yz.yamagata-u.ac.jp/pub/linux/centos/5.3/os/i386/repodata/repomd.xml: [Errno 14] HTTP Error 404: Not Found
Trying other mirror.
http://www.ftp.ne.jp/Linux/packages/CentOS/5.3/os/i386/repodata/repomd.xml: [Errno 14] HTTP Error 404: Not Found
Trying other mirror.


 原因は、/etc/yum.repos.d/CentOS-Base.repo の mirrorlist。 baseurl の行が全部コメントアウトされているので、これを解除(行頭#を削除)すれば、正常に動いた。

  
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/



 yum 自体不慣れ(何年か使ってると思うけどね)とはいえ、こいつの切り分けって、いつも分かりにくい。

Dropbox 増量キャンペーン

2012-02-07 00:13:39 | 雑記
Dropbox という、ストレージサービスがある。

自分用のインターネットストレージとして使ってもいいし、写真を他の人に受け渡す場合にも重宝する。

その Dropbox ですが、最初に無料で割り当てられる容量が 2.0GB くらいだったかな。
それに、以前紹介キャンペーンをやってて、知人と紹介し合って増量し、今は 3.0GB ある。

今回、こんな記事を見つけたので、さっそくやってみた。

 [Dropboxの容量を無料で誰でも4.5GBも増加出来るよ!]
 http://www.hageatama.org/item_832.html

確かに増えた :-)

これで約8GB使える。これはうれしい。


 [Dropbox]
 http://www.dropbox.com/



Google 翻訳

2012-02-06 22:22:02 | 雑記
とある RFC を読んでいて、長いし時間も無いので「たまには機械翻訳見てみるか」と、Google の翻訳ページを見てみた。

 


左側のフォームには、

 「テキストまたはウェブサイトのアドレスを入力するか、ドキュメントを翻訳します。」

と書いてあるので、http://tools.ietf.org/html/rfc5424 を貼り付けた。すると、右側のフォームに自動で値が入って、次のような画面になる。

 


 ちっとも訳されてない

 さらに、右のフォームの値がリンクになっているので、これをクリックすると翻訳された RFC が見えるのかと期待してクリックすると・・・・

 


 もうむちゃくちゃ。 ほっとくと、永遠に続いて、しまいにはブラウザがクラッシュするんじゃないかと思う。

 ナニコレ。

PHP 5.4

2012-02-01 11:06:33 | SEまわり
Twitter で知ったんだけど、PHP 5.4 の説明資料がすばらしいとのこと。

  [PHP 5.4 - Begin your love affair with traits]
  http://www.slideshare.net/predominant/php-54-begin-your-love-affair-with-traits-10118525


 分かりやすいし、スライドもきれいで目を引く。

 実はクロージャは現版でも実装されてたけど、説明を読んでも使い道が分からず放置してたのが、このスライドの例で理解できた。

 が、

  
$hello = function ($who='') {
 return "Hello ".$who;
}
echo $hello()."\n";
echo $hello('Dave');


は容易に理解できても、

  
class CustomHandler {
 public function syaHello() {
  echo "Hello";
 }
}
$handler = new CustomHandler();
$closure = [$handler, 'sayHello'];
echo $closure();


こいつが…

$closure に CustomHandler インスタンスとメソッド名を持った配列を入れとくと、それを echo に渡すと、(たぶん)$handler->sayHello() という動きをするんだと思う。試そうと思ったけど、手元環境は 5.3.9 なので下記エラーが出て動かない。もちろん、[a, b] 表記は旧来どおりの array(a, b) に書き換えてある。

  
$ ./test.php
PHP Fatal error: Function name must be a string in closure.php on line 11
Fatal error: Function name must be a string in closure.php on line 11


関数やオブジェクトが格納されている番地をコールして、そのときに引数としていくつかのポインタを渡してあげれば、別にそれが文字列であれメソッドであれオブジェクトであれ、結局ポインタには変わりないので、動きのイメージは分かるけど…… うーん…

この例で、sayHello() メソッドに引数を渡したい(Hello Dave と表示させたい)場合には、echo $closure('Dave') にすればいいのかな(もちろんsayHello()メソッドもちょっと変更する)。

クロージャって、インスタンスやら何やらをパックして扱うものと理解してもいいのかなあ。


trait については、インタフェースとクラスの間にある"何か"、という理解をしたんだけど、グローバルスコープの関数だけでなく、プロパティを含めた"何か"にした感じかな。 ただ、インスタンスとして存在するものではないので、結局は定数とグローバル関数で済みそうな気もする。 理解が浅いような気もするけど。


いずれにせよ、5.4 は楽しみ。