新しいblogに移行しました

新ブログ "All Yout Bugs Are Belong To Ass" に移行しました!

2008-10-24

[Perl]Email::FilterとかEmail::Simpleでheaderメソッド使ってFromを取得するときの注意

2009-01-01 追記
この記事は盛大に誤爆しております。実際には、Email::FilterもEmail::SimpleもきちんとFromヘッダを取り回してくれますので、ご安心ください。
詳細は、この記事および、この実証記事をご確認ください。m(_ _)m


メールに自動返信するプログラムを書く際、Email::Filter-1.032Email::Simple-2.004を使ったりするんだけど、こいつらではうまく取得できないFrom値が存在するみたい。

例えば、SoftBankの705SHから送信されたメールのFrom欄。

<****************@softbank.ne.jp>


こういう風に、<〜>で囲われていて、かつ表示名称(※)が無いものは、これらのモジュールだとうまく取得できない。

以下、実証コード。


#!/usr/bin/perl
use Email::Filter;
use Data:Dumper;
my $email = Email::Filter->new;
my $log = '/tmp/email_filter.log';
open my $LOG, '>>', $log;
print $LOG Dumper $email->header( 'From' );
close $LOG;


これをpostfixで受けれるように、/etc/aliasesを編集。
test: "|/path/to/script.pl"


で、実際にメールを食わせてログ見てみると、
$VAR1 = '';


あまり暇が無いので、取り敢えずメモに止めておく。

※表示名称ってのはこういうのです。
山田 三郎 <****************@softbank.ne.jp>

(正式名称じゃないです。きっと。)

2008-10-16

[Linux]VMware Management InterfaceにSSHトンネル経由でアクセスできたよ!

遠隔地にVMware Server2がインストールされているマシンがあって、そこで稼働しているVMware Management Interfaceにアクセスしたい場合のメモ。

VMware Server2をデフォルトでセットアップしている場合であれば、80/TCP, 902/TCP, 8333/TCPの、3つのTCPポートをトンネリングする必要があります。

つまり。ターミナルを3つ開く必要があるみたいですね。
例えば、以下のAAみたいな状況。
[VMwareServer]
| 192.168.10.200
|
| 192.168.10.254
[Router]
| 123.45.67.89
==+=========
| Internet
==+=========
| xxx.xxx.xxx.xxx(Global-IP)
[Router]
| 192.168.0.254
|
| 192.168.0.100
[MyLinuxBox]


MyLinuxBoxから、
# ssh -L 80:192.168.10.200:80 user@123.45.67.89

# ssh -L 902:192.168.10.200:902 user@123.45.67.89

# ssh -L 8333:192.168.10.200:8333 user@123.45.67.89

の3つを実行してやって、https://127.0.0.1:8333/にブラウザでアクセスしてやると、VMware Infrastructure Web Accessのログイン画面になる。はず。(少なくともFirefox3ではそうなった)

追記
3つのコンソールを開かなくとも、以下のコマンドで代用可能。
※このコマンドではうまくつながらないです。この下に追記されているコマンドを試してください。
# ssh -N -f \
-L 80:192.168.10.200:80 \
-L 902:192.168.10.200:902 \
-L 8333:192.168.10.200:8333 \
user@123.45.67.89
後はLAN接続時と同様にVMの新規作成なりconsole開いてみるなり、ご自由にどうぞ。

2011-01-11 追記
上記コマンドではうまくつながらない模様。8222ポートが不足していた様です。以下のコマンドで接続できました。
# ssh -N -f \
-L 80:192.168.10.200:80 \
-L 902:192.168.10.200:902 \
-L 8222:192.168.10.200:8222 \
-L 8333:192.168.10.200:8333 \
user@123.45.67.89
が、認証が通らない模様。。。ぐぬぬ。。。

2008-10-09

[Perl]WWWクライアントなモジュールの使い分け

最近電波ばかり垂れ流していたので、たまにはPerlの話もしますよ><

WWWクライアントっちうても幅が広すぎるので、ここではいわゆる「Webスパイダー」の機能を実装するために使われるPerlモジュールの話題に限りますね。

まあ個人的には以下のように認識しておりますし、そういう使い分けをしています。
無論CPANには、これらのモジュール以外にも素晴らしいモジュールがたくさん登録されているので、使わない手は無いですね!

WWW::Mechanize


ある特定サイトに特化した自動化処理を実装するのに使う。
例:basic認証を通過して、その先のフォームに何かを入力してSubmitさせるとか。

Test::WWW::Mechanize


ある特定サイトを定常的に監視し、状態変化を検出するのに使う。
例:自宅鯖で運営しているwebサイトが死んでいないかを監視させたり。

Web::Scraper


サイト内の情報を定型化し、他の形式に変換する。
例:Yahoo!の天気予報の情報を抜き出して、JSONやらRSSやらxlsやらに変換。

本当はこれ以外にもあるのですが、良く使うのはこの辺ですね。
特にWeb::Scraperは楽チン。素晴らしいモジュールです。

2008-10-02

[電波]メールのsignatureに書いてあるURLが間違っていて涙目

うあああああああぁああっぁあああ><

http://yellowstore.blogspot.net/ て何だよオイラ。
http://yellowstore.blogspot.com/ だろjk><