2006年9月30日土曜日

Zaurus 初期化

Zaurus SL-C1000 を初期化する方法は以下のとおりです。
なお、これは本体同梱の取扱説明書にもしっかりと書いてありますので。

充電している状態で電源を切り、
SD,CFカードやUSB端子からすべてをはずして
電池ぶたのロックを解除して電池ぶたをはずします。
30秒後にリセットスイッチ(電池の横の小さなスイッチ)を押し、
電池ぶたとロックスイッチを元に戻します。
[OK]キーを押しながら電源を入れると、
メンテナンスメニューが表示されます。
ここで[3.完全消去(フォーマット)]を実行すれば工場出荷状態に初期化されます。

2006年9月29日金曜日

wii.com

任天堂の新ゲーム機 Wii のプロモーションサイトとして wii.com が用意されているのですが、
いままで、"Coming soon" となっていたところがやっとすべて公開されました。

Wii に関しては、多分まだまだ秘密になっていることがあると思うのですが、
私が一番関心を寄せているのは「文字入力」についてです。
Webブラウザ "Opera" もそうですが、「伝言板」には文字を入力、
日本語の場合さらに漢字変換という作業が必要となります。
ところがこのあたりについてはまるで情報が公開されていません。
プレゼンでも巧みに隠しているように見えます。

というわけで公開されるのを楽しみに待っています。
以外に普通だったりして…

2006年9月28日木曜日

Zaurus バックアップ

以前の予告どおり Zaurus SL-C1000 の環境を再構築します。

これまで使っていた環境は、
かなりの数のアプリケーションをインストールして残りのストレージが1MBをきっている状態で、
しかもそのうちの多くはすでに使っていません。
かなり厳しい環境なのですが、
一応バックアップを取って最悪元に戻せるようにしておきます。
バックアップはアプリケーションとして用意されている「バックアップ/リストア」は使わず、
フラッシュメモリを丸々バックアップします。
方法は以下のとおりです。

本体に十分空き容量(150MBぐらい)のあるSDカードのみを接続します。
CFカードソケットやUSB端子、電源端子には何も挿しません。
電源オフの状態でバッテリーを抜いて
[D],[M]キーを押しながら電源端子にACアダプタを差し込み(給電開始)、電源ボタン押します。
これでdiagモードで立ち上がります。

[SERVICE(3/3)]-[2.BACKUP RESTORE MENU]-[2.NAND Flash Back Up] を実行すると
SDカードに"SYSTC100.DBK"のようなファイルができますが、
これがバックアップファイルとなります。
どこかに保存しておきましょう。
完了したら[Cancel]キーでメニューに戻れます。
なお、処理に10分程度かかります。

ちなみにこのバックアップしたファイルをdiagモード内で書き戻すこと(リストア)が可能です。

というわけで今回はこれまで。

2006年9月27日水曜日

PS3の熱暴走

ここに記事を書き始めて一ヶ月以上になりますが、
昨日初めて投稿を忘れてしまいました。
これで毎日投稿の呪縛から解き放たれました。
まあ、投稿を忘れたというよりも、時間を忘れてたんですが。
昨日は、少し前に行われた東京ゲームショーについて
一般方が書かれた体験記事を読みふけっていて、
気がついたら日をまたいでいました。

見ていたのはPS3の熱暴走ネタなんですけど。
見たいという方は "PS3 熱暴走" ぐらいでググルか
某巨大掲示板から探してみてください。
これらのことは結構事実も含まれているのでしょう。
PS3購入の予定がない私にはあまり関係のない話ですが、
SCEやそのサードパーティーの関係者には気の毒としか言いようがありません。

以前製造上のトラブル等も発表されていますが、
あまりにも先を見すぎて足元が整わないうちに見切り発車してしまったというところなんでしょうね。
SONY本社からBD採用を強制されたというようなことも考えられますので、
ことによってはSCE自身が被害者なのかもしれません。
あくまで私の想像ですけど。

2006年9月25日月曜日

Zaurus 環境再構築

私は SHARP製 PDA Zaurus SL-C1000 を使っがています。
So-net (社名変わりますね)の BitWarp PDA と組み合わせて、
ほぼいつも持ち歩いていますね。
通信費が月額2100円(So-netのクレジットカードで支払うと10%OFF)で
完全に使い放題です。
KDDIの携帯電話にダブル定額を組み合わせても
フルブラウザでの通信は対象でなかったりするので、
私にとっては Zaurus のほうが使えます。

が、最近調子が悪い。
通信確立時になぜかDNSサーバの設定ファイルのパーミッションがおかしくて、
ブラウザが使えないんですよね。
しょうがないのでいちいちchmodしていましたが、
我慢できなくなってきたので、初期化して環境作り直すことにしました。
次回からその作業をメモすることにします。



2006年9月24日日曜日

NintendoDS イヤホンマイク

NintendoDS用イヤホンマイク買いました。
月末にポケモンが出るので在庫がはける前にと思って。
結構感度がよくていいですね。
脳トレなんかしててもマイクに口を近付けなくてもいいので。
後はDS版Google Talkが出れば完璧ですね。

2006年9月23日土曜日

PS3値下げ

SCEのPS3が値下げされましたね。
廉価版にHDMI端子が追加されて49980円(税込)だそうです。
ただし、日本での価格が下げられただけですが。
こうなると高機能版の存在意義がかなり薄くなり、
廉価版しか売れないというようなことにもなりそうです。

私はというと今のところ特にほしいとは思いません。
正直ゲームは暇つぶしでしかないのもで。
次世代DVDの決着がBD勝利が確定し、
それに見合うテレビを購入したらBDプレイヤーとしてほしくなるかも知れませんが、
今のテレビが壊れない限り2011年までは購入しない予定です。
前提条件がかなり多いですが、
5年後には次々世代機が出るかも知れませんね。
そのころになれば、
フルHD対応のBD+HDDハイブリッドレコーダがこなれた値段になっているかもしれませんし、
そうなれば今までの私の伝統どおりSONY製品は買わないとうことになりそうです。

ちなみに一応 Wii は買おうと思っています。
あのリモコンとゲームの組み合わせも面白そうですが、
一瞬で立ち上がる無線LAN付きWebブラウザ端末というのは魅力ですね。
普段自宅ではノートPCを使っていますが、
(デスクトップは1年以上電源も入れてないですね)
メールもWebメールでやり取りできるので、
家でノートPCを立ち上げること自体がほんとに少なくなりそうです。
ここのBlogもWii + Operaで書き込めればと思っています。
ただひとつ心配なのは文字の入力方法です。
今までの発表の中ではこのことに一切触れられていないので、
何かサプライズがあることを期待しています。
WiiリモコンにUSBキーボードが接続できるとか…

2006年9月22日金曜日

メール環境改革 - procmail

procmail はメールフィルタとして働きます。
受信メールを fetchmail や qmail から直接 procmail に渡すことで振り分け等ができます。
まずは以下でインストールします。

# echo 'mail-filter/procmail ~x86' >> /etc/portage/package.keywords
# emerge mail-filter/procmail

これからは各ユーザの作業となります。
各ユーザのホームディレクトリに procmail 用の設定ファイルを作ります。
設定ファイルの名前はデフォルトでは .procmailrc ですが、
procmail を呼び出すときに引数で指定できるので任意でかまいません。
とりあえず以下を実行します。

$ cd ~
$ touch .procmailrc

procmail 設定ファイルの内容については後述するとして、
各プログラムとの連携方法について説明しておきます。

まず、qmail です。
qmail は各ユーザの ~/.qmail でメールの配信先が設定可能です。
また、ユーザ名<user> の ~/.qmail-<string> で <user>-<string> 宛てに届いたメールの扱いを設定可能です。
(メーリングリストやセカンドメールアドレスとして利用できます。)
内容的には、'#' で始まる行はコメント、
'.' や '/' で始まる行は保存先ファイル(mailbox形式)か(最後に'/'がつけば)ディレクトリ(maildir形式)
'&' で始まる行は転送先メールアドレスになります。
ここで、'|' で始まる行には外部コマンドがかけます。
すなわち、

$ echo '| /usr/bin/procmail' >> ~/.qmail

で、qmail が受信したそのユーザ宛のメールが procmail に渡され、
~/.procmailrc の設定に従って処理されます。

次に fetchmail との連携です。
fetchmail は各ユーザの ~/.fetchmailrc で設定可能です。
前回その内容について、1アカウント毎に

poll <IP address or FQDN of mail server A>
user <user name of mail server A>
password <user password of mail server A>
is <unix account in this server for storing received mail> here

のようにすればよいと書きましたが、is コマンドの替わりに mda コマンドを利用します。
以下のようにします。

poll <IP address or FQDN of mail server A>
user <user name of mail server A>
password <user password of mail server A>
mda "/usr/bin/procmail .procmailrc.server_a"

そして ~/.procmailrc.server_a に procmail の処理設定を記述します。
こうしておけば、周期実行等で fetchmail が起動された際に、
メールサーバ A にメールを取りにいき、
取ってきたメールは procmail 渡され、
~/.procmailrc.server_a の設定に従って処理されます。

連携の仕方については以上です。
次は procmail の設定ファイルの内容についてです。
詳細については

$ man procmailrc

で表示されますのでそちらを参照ください。
設定ファイルは環境変数の設定と制御内容で構成されます。
意味のある最小限の構成は以下のようなものと思います。

LOGFILE=$HOME/procmail.log

:0 c
* ! ^X-Loop: ttanimu@aaaa.jp
! ttanimu@bbbb.jp

先頭の "LOGFILE=$HOME/procmail.log" は動作ログを ~/procmail.log に書き込めということですが、
動作状況を確認するためにも、これは書いておいた方がいいでしょう。
その他の環境変数はデフォルトでもかまわないと考えています。
動作不良があった時点で追加すればいいのではないでしょうか。
環境によっては MAILDIR をきちんと設定しておかないと、受信メールのローカル保存が失敗するかもしれません。

その次が制御内容でレシピと呼ばれています。
レシピは複数記述でき、先頭から順にレシピの条件に当てはまるかどうかを調査し、
成立すればそのレシピを実行、その後のレシピは無視されるようです。
1つのレシピは先頭が ":0" の行から始まり、次の ":0" で始まる行の手前までとなります。

":0" の次の 'c' は fetchmail で取得したメールをローカルにも残すことを意味します。
'*' で始まる行は条件の指定で、一般的な正規表現を使ってあらわせます。
詳細は man procmailrc で確認ください。
この条件は、「 "X-Loop: ttanimu@aaaa.jp" で始まる行がヘッダになければ以下を実行」となります。
条件が成立したときに実行されるのが次の行で、
'!' は転送先のメールアドレスを ' ' で区切って複数個指定できます。
前述の場合、ttanimu@bbbb.jp へ転送ということになります。

一通り説明しましたが、
複数のメールアドレスを持っている場合、
qmail, fetchmail, procmail を組み合わせるとかなり高度な応用ができます。
ただし注意しなければならないのは、メールの転送がループにならないようにすることです。
さらに、必要なメールが消失しないようにすることです。
メーリングリスト宛てのメールのヘッダには自分のメールアドレスが一切かかれていないことがあるので、
フィルタ時に消失しないよう特に注意が必要です。

これでメールサーバに関するほとんどの設定が終わりました。
また何かあれば追記したいとは思っていますが、
いつになるかはわかりませんので、あまり期待はしないでください。
それではまたいつか。

2006年9月21日木曜日

メール環境改革 - fetchmail

fetchmail は特殊なメールクライアントで、
定期的にメールサーバに届いたメールを自動的にとってきてくれるという便利なものです。
メールサーバに自動転送機能がない場合に便利です。
他にも便利な場面はたくさんあります。
ではインストールです。
以下を実行ください。

# echo 'net-mail/fetchmail ~x86' >> /etc/portage/package.keywords
# emerge net-mail/fetchmail

あとは各個人で設定です。
自分のホームディレクトリの .fetchmailrc ファイルに設定を書きます。
以下を実行します。

$ cd ~
$ touch .fetchmailrc
$ chmod 600 .fetchmailrc

.fetchmailrc の内容については以下のようにします。
なお、'<','>'で囲まれている文字列に関しては'<','>'も含めて適当な文字列に置き換えてください。

defaults
protocol pop3
keep
no mimedecode
smtpaddress localhost

poll <IP address or FQDN of mail server A>
user <user name of mail server A>
password <user password of mail server A>
is <unix account in this server for storing received mail> here

poll <IP address or FQDN of mail server B>
user <user name of mail server B>
password <user password of mail server B>
is <mail address>

自動的にアクセスしたいメールサーバが複数あれば、
poll を先頭とする単位で設定を並べていくだけです。
これだと、サーバAから取ってきたメールを fetchmail が動作しているマシンのSMTPサーバの
<unix account in this server for storing received mail> ユーザ宛てに送り、
サーバBからのは <mail address> 宛てに送ります。
詳細は

$ man fetchmail

で見られるので必要に応じて調べてください。
この状態で自分のアカウントでログインし、

$ fetchmail

を実行すればメールを手動で取ってこれます。
設定ファイルに

set daemon <seconds>

を加えれば、<seconds> 秒毎に自動的にメールを取りに行きます。
ただ、周期起動に関しては、各個人で設定するより cron で周期起動した方がいいので、
設定方法を説明します。
以下を実行します。

# echo 'app-admin/sudo ~x86' >> /etc/portage/package.keywords
# emerge app-admin/sudo
# cd /usr/bin
# touch fetchmail_alluser
# chmod 500 fetchmail_alluser
# vi fetchmail_alluser
↓以下をファイル内容とする
#!/bin/bash
for dir in `ls -1 /home`; do
if [ -f /home/$dir/.fetchmailrc ] ; then
echo fetchmail $dir
sudo -u $dir -H fetchmail
fi
done
# echo '*/15 * * * * root /usr/bin/fetchmail_alluser' >> /etc/crontab

これで15分毎にすべてのアカウントについて fetchmail が実行されます。
これで十分だと思います。

最後になりますが、fetchmail の設定ファイルにはパスワードが平文で入ることになります。
パーミッションにはくれぐれも注意ください。
また、暗号化等されていない通常の POP や IMAP を使っているメールサーバに対して、
fetchmail で定期的にログインを繰り返すと、
ネットワーク上に平文なパスワードが定期的に流れることになります。
普通のメーラーを使っていてもそうはなっていますが、
fetchmail だと365日24時間休みなく流れることになります。
そんなに神経質になる必要はないのかもしれませんが、
このあたり認識した上で運用してください。

次は、メールフィルタ procmail についてです。

2006年9月20日水曜日

メール環境改革 - SMTP on SSL

さて、だいぶ時間があきましたが、SMTP on SSL の設定についてです。
やり方はサブミッションポートのときと似ています。
SSL については tcpserver に SSL パッチを当てなければなりませんが、
すでにあたっていました。ラッキー。
パッチの有無の確認ですが、

# tcpserver --help

したときに、-s, -n オプションの記述があればすでにあたっていると判断できます。
では早速設定です。
以下を実行します。

# cd /var/qmail/supervise
# cp -r qmail-smtpd qmail-smtpd-ssl
# cd qmail-smtpd-ssl/supervise/
# rm -f *
# cd ../log
# rm -rf *
# cd ../
# vi run
↓以下を編集
/usr/bin/tcpserver に -s 追加
${TCPSERVER_PORT} を 465 に変更
-n cert.pem 追加

SSL するにはサーバ側に証明書を作成する必要があります。
以下を実行します。

# cd /var/qmail/supervise/qmail-smtpd-ssl/
# openssl req -newkey rsa:1024 -keyout 1 -nodes -x509 -days 365 -out 2
# cat 1 > cert.pem
# echo "" >> cert.pem
# cat 2 >> cert.pem
# rm -f 1 2
# chmod 600 cert.pem

最後に以下を実行して起動させます。

# ln -s /var/qmail/supervise/qmail-smtpd-ssl qmail-smtpd-ssl

これで、メールクライアントからメールを送信する際に、
メール送信サーバまでのパスを暗号化できます。
その先は平文なのでただの気休めなんですけどね。
これでも、Outbound Port 25 Blocking は回避できますし。
当然 SMTP before POP で不正利用できないようにしてあります。

これでメールサーバに関しては設定完了です。
次回は自動的にメールを取ってきてくれる fetchmail についてです。

2006年9月19日火曜日

吉野家の牛丼

とりあえず今日一日だけ復活の吉野家の牛丼食べてきました。

混んでるといやなので中途半端な時間に行ったのですが結構お客さん多かったです。

味は、まああんなものかなという感じでした。

多分3年ぶりぐらいに食べたのですが、その期間に味を美化しすぎていたことも原因でしょう。

これからはちょくちょく食べにいこうかな。

 

2006年9月18日月曜日

WINGROAD の車速パルス

私の愛車 NISSAN WINGROAD(Y12) の6ヶ月点検をしに行きました。

特に何もなかったのですが、

以前から気になっていたカーナビへの車速パルスのとり方について聞いてみたことろ、

ディーラーの方がヒューズブロックの奥の方から拡張端子を探し出してくれました。

自分でもよく探したところなんですが…

ちなみにその端子は4ピンで白い端子差込口を茶色のプラスチックで覆ってあり(写真をつけておきます)、

青の配線(写真でいうとの左から2番目のピン)が車速パルスのようです。

ついでにいうとピンクの配線(写真でいうとの一番右のピン)がパーキングブレーキの信号みたいです。

これでGPS信号が捕捉できない屋内駐車場でも移動を検知してくれるようになりました。

心持誤差がありますが、設定を初期化してしばらく学習させることにします。

 

ここに書いてあることはあくまでも私の車のケースであり一切保障しませんので、

ご自分の車を触る場合のリスクは自分で負ってください。

 

2006年9月17日日曜日

Wii の価格

昨日ヨーロッパでの Wii の価格が高いと書きましたが、

ちょっと調べたところ、

PS3(安い方)も、米国で499ドル、ヨーロッパで499ユーロですね。

貨幣の相対的価値(為替)というより絶対的価値(物価)の問題のようですね。

そういえば、ユーロ圏ではありませんが英国に行ったことのある友人が物価の高さに文句を言っていたので、

そういうことなのかもしれません。

まあユーロ圏には行ってたとしても短期旅行でしょうからあんまり関係ないですけどね。

 

2006年9月16日土曜日

Wii 世界展開

昨日に続き Wii の話題です。

現時点までに、全世界の状況が明らかになりました。

このなかで驚きなのがヨーロッパです。

価格がなんと 179ポンド/249ユーロ だそうです。

本日の為替レートで 4万円程度になります。

ヨーロッパの物価についての知識がないのでよく分からないのですが、ちょっと高すぎ。

輸送費やローカライゼーションの手間もあるのかもしれませんが、それにしても…

セット内容の違いもありますが、結果的に日本がもっとも安い価格設定になっています。

ちょっと得した気分。

 

2006年9月15日金曜日

Wii 発売日決定

ついに Nintendo の新世代ゲームコンソール Wii の詳細が発表されました。
12月2日に25000円で発売されます。
多分発売日に購入します。その前に予約します。

価格、発売日ともに妥当なところでしょうか。
どうやら量産を開始したのがつい最近(9月に入ってから?)のようであることと、
年末までにワールドワイドで400万台の出荷を見込んでいることから、
月産100万台のペースで製造すると推測されます。
となれば日本での販売台数は年内100万台と仮定して、
12月頭までに75万台確保できるというところでしょう。
任天堂としては在庫不足による混乱と機会損失は避けたいでしょうから
本当はもっと積み増ししたいでしょうね。
米国のホリデーシーズンと日本の年末商戦を考えれば、
これ以上の遅延ができないのは明らかですけど。

価格については発売後多分だれかが分解してレポートしてくれるでしょうから、
それをみて原価を想像してみることにしましょう。

2006年9月14日木曜日

iPod リニューアル

米国時間で9月12日に iPod のラインナップがリニューアルされ、
映画やゲームのダウンロードについての発表がありました。
まあ、半分予想が当たってたというところでしょうか。

驚いたのは、新 iPod shuffle と 開発中の iTV ですね。
新 iPod shuffle についてはクールなのですが、
PCとUSB接続する際クレードルが必要ということで、
私としては今一歩です。
PCのUSB端子に直接挿せるSDカードなんてのがありますが、
あんな感じで本体だけで接続できれば、
USBストレージとして常に持っていてもよかったんですけど。

iTV はなかなか考えましたね。
リビングルームにPCをみたいなことをやるよりも、よほど現実解です。
最近はSTBでVODが流行っている(?)らしいですが、
購入したコンテンツが手元にないのは何か損した気分なので、
ダウンロード & プレイ な iTV 方式の方が好みです。
などといっていますが、WOWOWで十分な私なんですけど…

2006年9月13日水曜日

9.11

9.11 と言っても政治や思想の話ではありません。
私は米国同時多発テロの直前までサンフランシスコに滞在していました。
あの時は一週間飛行機が飛ばなかったので、
もし何かあって帰国が遅れていたら足止めを食らうところでした。
ただそれだけです。

2006年9月12日火曜日

M.シューマッハ 引退

現地時間の昨日行われたF1 イタリアGP直後の公式会見で
ついに自ら引退することを発表したM.シューマッハですが、
よく考えると、私は彼のデビューレースから見ていました。
その当時F1に凝っていて全GPをVTRに撮ってましたが、
探せば1991年のベルギーGPのテープも見つかるでしょう。

デビュー戦の結果はリタイヤでしたが
その予選はルーキーとは思えない速さだったと記憶しています。
彼の行動やその周囲での出来事は、時に物議をかもすこともありましたが、
偉大なチャンピオンであることに間違いはありません。
私は若いころの彼はあまり好きではありませんでしたが、今の彼は好きです。
昔に比べて丸くなったというか大人になったというか。
少し前に、マクラーレンのK.ライコネンがフェラーリ入りするとの確度の高い情報がリーク(?)されたとき、
現セカンドドライバーのF.マッサの処遇について心配したのですが、
シューマッハはそのことも考慮していたことが会見から伺えました。
昔の彼からなら想像できませんが、今の彼らしいですね。

来年以降どうするのかはわかりませんが、
F1での彼の勇姿を見られるのは残り3戦となってしまいました。
是非チャンピオンシップのドライバーズタイトル奪取でカッコよく去ってほしいですね。

ただ心残りは今年ベルギーGPが開催されなかったことでしょうか。
最後にスパを走ってほしい、走らせてあげたかったですね。

2006年9月11日月曜日

黄色い暴君ハバネロ

東ハトから発売されている「暴君ハバネロ」ですが、スーパーで黄色いのを見つけました。

「魅惑のインド篇」だそうです。

この前まで緑のやつもありましたが、それが見当たらなくなっています。

さて味ですが、やっぱり辛い。ただオリジナルよりマイルドな気がします。

で、やっぱり一息に食べてしまいました。

 

2006年9月9日土曜日

メール環境改革 - サブミッションポート

今回は Outbound Port 25 Blocking を回避するため、
サブミッションポートでメールが送信できるよう qmail を設定します。
最初に、前回の設定からかなりの時間が経過しているので Gentoo Linux のメンテをしました。
メンテといっても以下を実行しただけです。

# emerge sync

しかし、トラブルが発生しました。
/usr/portage/profiles/default-linux/x86/make.defaults がどうのこうのといわれたので、

# cd /etc
# ln -sf /usr/portage/profiles/default-linux/x86/make.defaults make.profile

しましたが、ARCH が定義されていないとか言われて emerge が正常に動きません。
とりあえず、

# echo 'ARCH="x86"' >> /etc/make.conf

すると動くようになりました。
何か弊害があるかもしれませんが、そのときはまた考えるということで。

それではサブミッションポートを設定しましょう。
まず、/etc/services にポートの設定を入れておきます。
以下を実行してもいいですが、
このファイルにはポート番号の若い方から順になっているので、
適切な位置にテキストエディタで書き加えた方が後で見やすいでしょう。

# echo 'submission 587/tcp msa # mail message submission' >> /etc/services
# echo 'submission 587/udp msa # mail message submission' >> /etc/services

ところで、サブミッションポートでは SMTP 認証を入れるべきらしいので、
cmd5checkpw をインストールします。
以下を実行します。

# emerge net-mail/cmd5checkpw

さて qmail の設定です。
以下を実行します。

# cd /var/qmail/supervise
# cp -r qmail-smtpd qmail-smtpd-sub
# cd qmail-smtpd-sub/supervise/
# rm -f *
# cd ../log
# rm -rf *
# cd ../
# vi run
↓以下を編集
/usr/bin/tcpserver の -x オプションを削除
${TCPSERVER_PORT} を 587 に変更
qmail-smtpd の引数に /bin/cmd5checkpw /bin/true を追加
# cd /service
# ln -s /var/qmail/supervise/qmail-smtpd-sub qmail-smtpd-sub

これで、サブミッションポート(ポート587)からのメール送信ができました。
しかし、SMTP 認証で不正なログインをブロックできません。
qmail インストール時のビルドファイルを見ると、
smtp-auth パッチはすでに適用されているような気がしますが、
今さらパッチを当てて再ビルドも面倒なので SMTP 認証はやめにします。
まあ、なくても Outbound Port 25 Blocking は回避できるので問題ないでしょう。
SMTP 認証の代わりに SMTP before POP を残すことにします。
以下を実行します。

# vi /var/qmail/supervise/qmail-smtpd-sub/run
↓以下を編集
/usr/bin/tcpserver の -x オプションを復活
qmail-smtpd の引数の /bin/cmd5checkpw /bin/true を削除
# pkill qmail-smtpd-sub

とここまでやったのですが、
よくよく見ると受付ポート番号だけが異なる2つのプロセスが立ち上がっており無駄ですし、
さらに別のセキュリティ上の理由もあり、
別の方法を使うことにしました。
上記ではふれていないのですが、
cmd5checkpw ではすべてのアカウントに対するパスワードを1つのファイル (/etc/poppasswd) に
平文で書かなければならず、私の好みではないのです。
というわけで、まず先の作業を以下で取り消します。

# cd /service
# rm qmail-smtpd-sub
# pkill qmail-smtpd-sub

さてその別の方法ですが、
NATを使って TCP 587 ポートへのリクエストを TCP 25 にふるだけのことです。
以下を実行します。

# iptables -t nat -A PREROUTING -p tcp --dport 587 -j DNAT --to <mail server's IP address>:25
# /etc/init.d/iptables save
# /etc/init.d/iptables restart

結果、この3行だけで解決したことになります。
えらく遠回りしてしまいましたが、終わりよければすべてよしということで。
次回は SMTP on SSL の設定についてです。

メール環境改革 - メーリングリストのアーカイブ

前回の予告どおり、メーリングリストのアーカイブを Web ブラウザで閲覧可能にしましょう。
ezmlm には過去メールをWebブラウザで閲覧する ezmlm-cgi がありますので、まずこれを試してみます。
以下を実行します。

# ebuild /usr/portage/net-mail/ezmlm-idx-mysql/ezmlm-idx-mysql-0.40-r2.ebuild unpack
# cd /var/tmp/portage/ezmlm-idx-mysql-0.40-r2/work/ezmlm-0.53/
# make
# cp ezmlm-cgi /var/www/localhost/htdocs/cgi-bin
# cp ezcgirc /etc/ezmlm
# ln -s /etc/ezmlm/ezcgirc /var/www/localhost/htdocs/cgi-bin/.ezcgirc

ここで前回設定した、admin@<sub domain name> メーリングリストの過去メールを閲覧するには

# echo '3;200;/var/vpopmail/domains/<sub domain name>/admin;admin@<sub domain name>;[Home]=http://<web server name or IP address>;iso-2022-jp' > /etc/ezmlm/ezcgirc
# chmod 755 /var/vpopmail/domains/<sub domain name>
# chmod 755 /var/vpopmail/domains/<sub domain name>/admin
# cd /var/vpopmail/domains/<sub domain name>/admin
# chmod 755 archive
# chmod 755 archive/0
# chmod 755 archive/authors
# chmod 755 archive/subjects
# chmod 755 archive/threads

を実行した上で、"http://<web server name or IP address>/cgi-bin/ezmlm-cgi?3" を開けばよい。
ただし、archive の下にはメール100件毎に新しいディレクトリが作られるので、
その度にパーミッションの設定をしなければならないことと、
セキュリティや機能や十分でないので、これは使わないことにしました。

というわけで、mhonarc + namazu でアーカイブの Web 閲覧と検索の機能を構築することにします。
以下を実行します。

# emerge net-mail/mhonarc
# emerge app-i18n/kakasi
# emerge app-text/namazu
# emerge app-i18n/nkf
# emerge app-text/chasen
# emerge net-mail/mhonarc
# cd /etc/namazu
# cp namazurc-sample namazurc
# echo -e 'Index\t/var/www/localhost/htdoc/ml/search' >> namazurc
# echo -e 'Replace\t/var/www/localhost/htdocs/\thttp://<web server name or IP address>/' >> namazurc
# echo -e 'Lang\tja' >> namazurc
# echo '$NKF = "/usr/bin/nkf";' >> mknmzrc
# mkdir /var/www/localhost/htdocs/ml
# cp /usr/libexec/namazu.cgi /var/www/localhost/htdocs/ml/
# cd /var/www/localhost/htdocs/ml/
# echo 'Options +ExecCGI' > .htaccess
# echo 'AddDefaultCharset EUC-JP' >> .htaccess
# echo 'AddDefaultCharset ISO-2022-JP' > mail/.htaccess
# mkdir /etc/mhonarc/
# vi /etc/mhonarc/rc
↓ 以下をファイルの内容とする
<CHARSETCONVERTERS>
plain; iso_2022_jp::str2html; iso2022jp.pl
iso-2022-jp; iso_2022_jp::str2html; iso2022jp.pl
</CHARSETCONVERTERS>

<DEFCHARSET>
iso-2022-jp
</DEFCHARSET>

<DECODEHEADS>
<NOMAILTO>

<TEXTCLIPFUNC>
iso_2022_jp::clip; iso2022jp.pl
</TEXTCLIPFUNC>

<VARREGEX>
\$([^33\$]*)\$(?![^33]*33\()
</VARREGEX>
# vi /usr/local/bin/mlarc2html
↓ 以下をファイルの内容とする
#!/bin/bash
#
# convert ezmlm mailing list archives to html
#
# 2004.12.26 ttanimu
#

index=/var/www/localhost/htdocs/ml/index.html

rm -f $index
touch $index
chmod 644 $index
echo '<html><head><title>mailing list archives</title></head><body><h1>mailing list archives</h1><ul>' > $index

for name in `ls -1 /var/vpopmail/domains/<sub domain name> | sed -e '/postmaster/d' -e '/vpasswd/d' -e '/vpasswd.cdb/d'` ; do
echo '<li><a href="./mail/'$name'/maillist.html">'$name'@<sub domain name></a></li>' >> $index
mkdir -p /var/www/localhost/htdocs/ml/mail/$name
if [ -a /var/www/localhost/htdocs/ml/mail/$name/maillist.html ] ; then
add=-add;
fi
mhonarc $add -reverse -treverse -multipg -modtime -idxsize 20 -rcfile /etc/mhonarc/rc -outdir /var/www/localhost/htdocs/ml/mail/$name /var/vpopmail/domains/<sub domain name>/$name/
archive/[0-9]*/[0-9]*
done

echo '</ul><hr><ul><li><a href="./namazu.cgi">search</a></li></ul></body></html>' >> $index

mkdir -p /var/www/localhost/htdocs/ml/search
env LC_ALL=ja_JP.eucJP mknmz -k -O /var/www/localhost/htdocs/ml/search /var/www/localhost/htdocs/ml/mail
# chmod 755 /usr/local/bin/mlarc2html
# mlarc2html

これで、Web ブラウザで http://<web server name or IP address>/ml を開けばメーリングリストの閲覧と検索ができます。
ただし、これは mlarc2html を実行した瞬間のスナップショットであので、
常に最新の状態になるよう定期的に mlarc2html を実行する必要があります。
この作業を自動的に行うため以下を実行します。
なお、これは毎日6:00,12:00,17:00に更新を行う場合の設定です。

# echo '0 6,12,17 * * * /usr/local/bin/mlarc2html' >> /etc/crontab
# /etc/init.d/vixie-cron restart

これだと誰でも閲覧できセキュリティ面で問題があるのでパスワードでユーザ認証をかけます。
以下を実行します。

# cd /var/www/localhost/htdocs/ml
# vi .htaccess
↓以下を最後に追加
AuthUserFile /var/www/localhost/htdocs/ml/.htpasswd
AuthGroupFile /dev/null
AuthName "mailing list archives"
AuthType Basic
require valid-user

パスワードの設定は以下を実行する。

# htpasswd2 -c .htpasswd <ユーザ名> <パスワード>

ただし、-c オプションは初回のみ必要で、.htpasswd ファイルがすでに存在するなら

# htpasswd2 .htpasswd <ユーザ名> <パスワード>

としなければなりません。


長かったですが、ここまで複数回にわたって書いてきたことが、
かなり昔に設定した部分です。
次回からはつい最近設定した SMTP-SSL や サブミッションポート、
fetchmail や procmail について書いていきたいと思います。

2006年9月8日金曜日

吉野家の牛丼復活


アメリカ産牛肉の輸入再開にともない
2006年9月18日(月)に吉野家の牛丼が復活するそうです。

よく覚えていませんが2,3年ぶりでしょうか?

調達量が十分でないので、とりあえずは一日だけということで、ぜひ食べにいっておきたいところです。

ものすごい混雑が予想されるので、朝早くにでも行ったほうがいいかもしれませんね。

私は吉牛大好きなので復活はうれしいですね。

といってもそんなしょっちゅう食べに行くわけではないですけど。

私がアメリカ産牛肉を食べるのは多分吉野家でだけですね。

そういえば今年仕事でアメリカに行ったときに十分食べてました。

特定危険部位も入ってたかもしれません…

 

2006年9月7日木曜日

PS3発売延期

すごいニュースが入ってきました。

いろいろなサイトでも取り上げられていますが、

欧州を中心とする地域でのPS3の発売が2007年3月に延期になるそうです。

しかも、今月から量産開始だった予定が一ヶ月先にずれ込み、

日本での初回出荷台数が10万台程度になるそうです。

正直私はPS3要らないのでどうでもいいんですが、かなりお粗末ですね。

私は Wii 買います。多分。

2006年9月6日水曜日

メール環境改革 - メーリングリスト

本格的なメーリングリストとして ezmlm-idx を利用します。
また、Web上で管理できるよう qmailadmin も利用します。
ついでに仮想ドメインに対応する vpopmail も入れますが、
私にとっては必要ないので、仮想ユーザに対する POP3 等は提供しません。
今回、メーリングリストのドメインにはサブドメインを割り当てますので、
DNS サーバへの設定も必要となりますが、これはすでに完了しているとして話を進めます。
最初に以下を実行します。
なお、'<','>'で囲まれている文字列に関しては'<','>'も含めて適当な文字列に置き換えてください。

# emerge net-mail/ezmlm-idx-mysql
# /usr/bin/mysql_install_db
# rc-update add mysql default
# /etc/init.d/mysql start
# vadddomain <sub domain name>
# echo 'net-mail/qmailadmin ~x86' >> /etc/portage/package.keywords
# emerge net-mail/qmailadmin
# vi /etc/apache2/conf/apache2.conf
↓ 以下を最後に追加
<Directory /var/www/localhost/cgi-bin>
AddDefaultCharset EUC-JP
</Directory>
# /etc/init.d/apache2 restart

その後 Web ブラウザで http://<サーバ名 or IPアドレス>/cgi-bin/qmailadmin を開くと設定画面が表示されます。
ユーザは "postmaster"(管理者)、ドメインとパスワードは先に vadddomain を実行した際に入力した物となります。
ログインできたら "新しいメーリングリスト" へ進み、各種設定を行います。
たとえば、ここでメーリングリスト名に "admin" を設定すると "admin@<sub domain name>" がメーリングリストの送信アドレスとなります。
なお、プレフィックスに "admin:#" とすると自動的にメールのタイトルの頭に "[admin:1]" 等が付加されます。
メーリングリストへの参加等はこの Web 設定ページで管理者が制御できますし、
各個人が admin-*@<sub domain name> にメールを出すことでもできます。
このあたりは ezmlm や qmailadmin のマニュアルを参照ください。

これでメーリングリストの運用ができす。
次回はこのメーリングリストの過去メール(アーカイブ)の Web ブラウザでの閲覧について書きます。

2006年9月5日火曜日

Wiiの発売日の発表日決

任天堂の新世代ゲーム機 Wii の発売日が来週9月14日に発表になるようです。
14日に日本とアメリカ、15日にヨーロッパで Wii
に関する重大な発表があるとのことなので間違いないでしょう。
任天堂自身9月に発表すると公言していましたし。
時差を考えると発表は日米欧の順になり、同社からみた市場の重要性と一致するのではないでしょうか。
さてその内容についてですが、はたしてどうなんでしょうか?
色々なうわさがありますが、個人的には11月初めに20000円程度の価格で発売されると想像しています。

2006年9月4日月曜日

メール環境改革 - Webメール

WebメールとはWebブラウザでメール送信と受信メールの閲覧ができる機能のことですが、
これには Web サーバが必要ですのでApache2 をインストールします。ついでに SSL 接続も利用することにします。
また、スクリプトエンジンとして PHP を導入します。
以下を実行してください。
なお、'<','>'で囲まれている文字列に関しては'<','>'も含めて適当な文字列に置き換えてください。


# emerge net-www/apache
# cd /etc/apache2/conf/
# vi apache2.conf
ServerName <server name (IP address or FQDN)> ←追加
# vi commonapache2.conf
ServerAdmin <administrator's mail address> ←変更
# vi /etc/conf.d/apache2
APACHE2_OPTS="-D SSL" ←追加
# emerge dev-php/mod_php ←数時間かかるかも知れないので注意
# vi /etc/conf.d/apache2
APACHE2_OPTS="-D SSL -D PHP4" ←変更
# rc-update add apache2 default
# /etc/init.d/apache2 start


システムの準備ができたので Web メールのアプリケーションをインストールします。
SquirrelMail と携帯電話向けに websylpheed 拡張版を利用することにします。
まず、SquirrelMail のインストールのため以下を実行します。


# emerge mail-client/squirrelmail
# cd /var/www/localhost/htdocs/squirrelmail
# ln -s squirrelmail s
# cd config
# ln -s config_default.php config.php


これで https://<サーバ名 or IPアドレス>/s/ からアクセス可能です。
なお、各自ログイン後、[Option]-[Display Preferences]で言語を日本語にする必要があります。
次に websylpheed拡張版 を入れます。
ただし、PHPの標準のインストールではモジュールが足らないので入れなおす必要があります。
以下を実行します。
ただし、前もって "websylpheed-ext_040806-ttanimu_050708.patch" ファイルを作成ください。
内容については補足として後述します。


# ebuild /usr/portage/dev-php/php/php-4.3.8.ebuild unpack
# cd /var/tmp/portage/php-4.3.8/
# touch .compiled
# cd work/php-4.3.8/
# './configure' '--prefix=/usr' '--host=i686-pc-linux-gnu' \
> '--mandir=/usr/share/man' '--infodir=/usr/share/info' \
> '--datadir=/usr/share' '--sysconfdir=/etc' '--localstatedir=/var/lib' \
> '--with-apxs2=/usr/sbin/apxs2' '--with-ndbm=/usr' '--with-db4=/usr' \
> '--with-mcrypt=/usr' '--with-mhash=/usr' '--without-interbase' \
> '--without-ming' '--without-swf' '--without-sybase' '--with-gdbm=/usr' \
> '--without-fdftk' '--without-java' '--without-mcal' \
> '--without-unixODBC' '--without-pgsql' '--without-snmp' \
> '--with-xpm-dir=/usr/X11R6' '--without-gmp' '--without-mssql' \
> '--with-pdflib=/usr' '--without-gd' '--with-png=/usr' \
> '--with-png-dir=/usr' '--with-jpeg=/usr' '--with-jpeg-dir=/usr' \
> '--enable-exif' '--with-tiff=/usr' '--with-tiff-dir=/usr' \
> '--without-mysql' '--with-freetype-dir=/usr' '--with-ttf=/usr' \
> '--with-t1lib=/usr' '--with-gettext' '--with-qtdom=/usr/qt/3' \
> '--with-pspell=/usr' '--with-openssl=/usr' '--with-imap=shared' \
> '--without-ldap' '--with-dom=/usr' '--with-dom-xslt=/usr' \
> '--with-dom-exslt=/usr' '--without-kerberos' '--with-pam' \
> '--disable-memory-limit' '--disable-ipv6' '--without-yaz' \
> '--without-curl' '--disable-dbx' '--with-zlib=/usr' \
> '--with-zlib-dir=/usr' '--with-sablot=/usr' '--enable-xslt' \
> '--with-xslt-sablot' '--with-xmlrpc' '--enable-wddx' '--with-xml' \
> '--enable-mbstring=all' '--enable-mbregex' '--with-bz2=/usr' \
> '--with-crack=/usr' '--with-cdb' '--enable-pcntl' '--enable-bcmath' \
> '--enable-calendar' '--enable-dbase' '--enable-filepro' '--enable-ftp' \
> '--with-mime-magic=/usr/share/misc/file/magic.mime' '--enable-sockets' \
> '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--with-iconv' \
> '--enable-shmop' '--enable-dio' '--enable-yp' '--without-ncurses' \
> '--without-readline' '--enable-inline-optimization' '--enable-track-vars' \
> '--enable-trans-sid' '--enable-versioning' \
> '--with-config-file-path=/etc/php/apache2-php4' '--without-pear'
# ebuild /usr/portage/dev-php/php/php-4.3.8.ebuild merge
# make
# make install
# cd /var/www/localhost/htdocs/
# wget http://www.xyz.gr.jp/~musa/websylpheed/websylpheed-ext_040806.tar.gz
# tar zxf websylpheed-ext_040806.tar.gz
# patch -d websylpheed-ext_040806 < websylpheed-ext_040806-ttanimu_050708.patch
# cp websylpheed-ext_040806 websylpheed
# ln -s websylpheed w
# touch /etc/websylpheed.sess
# chown apache:apache /etc/websylpheed.sess
# chmod 600 /etc/websylpheed.sess
# vi /etc/apache2/conf/apache2.conf
↓ 以下を最後に追加
<Directory /var/www/localhost/htdocs/websylpheed>
php_flag register_globals On
php_flag track_vars On
php_flag magic_quotes_gpc Off

php_flag output_buffering On
php_value output_handler mb_output_handler

php_value mbstring.internal_encoding SJIS
php_value mbstring.http_input auto
php_value mbstring.http_output SJIS
</Directory>
# /etc/init.d/apache2 restart


これで https://<サーバ名 or IPアドレス>/w/ からアクセス可能です。
本編はここまでということで、
次回はメーリングリストの設定でもしておきましょうか。


- 補足 -

さて、websylpheed-ext_040806-ttanimu_050708.patch の内容は下記の通りです。
コピーして1つの空ファイルに貼り付けてください。
パッチの内容は以下の3点です。
websylpheed/common.php
dl('imap.so'); ← 最初の"<?PHP"の次の行に追加
websylpheed/maillist.php
@i18n_convert ← 3箇所あるi18n_convertの前に@を追加
多数のファイル
メール送信時に任意の from ヘッダをつける
本当はパッチファイルごとアップロードできればいいのですが、
このサイトって画像ファイルしかアップロードできないんですよね。
今回初めて気がつきました。
というわけで次行からがファイル内容となります。


diff -c websylpheed-ext_040806/address.php websylpheed-ext_040806-ttanimu_050708/address.php
*** websylpheed-ext_040806/address.php Fri Aug 6 23:04:16 2004
--- websylpheed-ext_040806-ttanimu_050708/address.php Fri Jul 8 12:00:10 2005
***************
*** 6,11 ****
--- 6,12 ----
include "functions.php";
include $db_include;

+ $from2 = urlencode($from);
$to2 = urlencode($to);
$cc2 = urlencode($cc);
$bcc2 = urlencode($bcc);
***************
*** 28,33 ****
--- 29,35 ----
<INPUT type="hidden" name="sess" value="<?=$sess?>">
<INPUT type="hidden" name="mbox" value="<?=$mbox?>">
<INPUT type="hidden" name="top" value="<?=$top?>">
+ <input type="hidden" name="from" value="<?=$from2?>">
<input type="hidden" name="to" value="<?=$to2?>">
<input type="hidden" name="cc" value="<?=$cc2?>">
<input type="hidden" name="bcc" value="<?=$bcc2?>">
***************
*** 40,46 ****
if ( $to == "" ) {
echo '宛先が選択されていません';
} else {
! $header = "From: " . $mail_addr;
$header .= "\nDate: " . date("r");
if ( $cc != "" ) {
$header .= "\nCC: ".$cc;
--- 42,48 ----
if ( $to == "" ) {
echo '宛先が選択されていません';
} else {
! $header = "From: " . $from /*$mail_addr*/;
$header .= "\nDate: " . date("r");
if ( $cc != "" ) {
$header .= "\nCC: ".$cc;
***************
*** 116,121 ****
--- 118,124 ----
<INPUT type="hidden" name="mbox" value="<?=$mbox?>">
<INPUT type="hidden" name="top" value="<?=$top?>">
<INPUT type="hidden" name="submit_flg" value="<?=$submit_flg?>">
+ <INPUT type="hidden" name="from" value="<?=$from2?>">
<INPUT type="hidden" name="to" value="<?=$to2?>">
<INPUT type="hidden" name="cc" value="<?=$cc2?>">
<INPUT type="hidden" name="bcc" value="<?=$bcc2?>">
diff -c websylpheed-ext_040806/common.php websylpheed-ext_040806-ttanimu_050708/common.php
*** websylpheed-ext_040806/common.php Sun Aug 8 13:58:12 2004
--- websylpheed-ext_040806-ttanimu_050708/common.php Thu Jul 7 17:00:12 2005
***************
*** 1,8 ****
<?PHP
/* ログインチェック */
$connstr = '{' . $server . ':' . $port . '}';
$imap = false;
! @$imap = imap_open($connstr, $user_id, $passwd);
if ($imap == false) {
header("Location: index.php");
exit;
--- 1,10 ----
<?PHP
+ dl('imap.so');
+
/* ログインチェック */
$connstr = '{' . $server . ':' . $port . '}';
$imap = false;
! $imap = imap_open($connstr, $user_id, $passwd);
if ($imap == false) {
header("Location: index.php");
exit;
diff -c websylpheed-ext_040806/functions.php websylpheed-ext_040806-ttanimu_050708/functions.php
*** websylpheed-ext_040806/functions.php Fri Aug 6 23:04:20 2004
--- websylpheed-ext_040806-ttanimu_050708/functions.php Fri Jul 8 11:05:06 2005
***************
*** 155,161 ****
}
}
} else {
! $body[] = trim( i18n_convert(imap_body($imap, $msgno, $flg), $internal_encoding, "AUTO"));
}

return array($body, $attach);
--- 155,167 ----
}
}
} else {
! $s = imap_body($imap, $msgno, $flg);
! if($mbody->encoding == 3) {
! $s = imap_base64($s);
! } elseif($mbody->encoding == 4) {
! $s = imap_qprint($s);
! }
! $body[] = trim( i18n_convert($s , $internal_encoding, "AUTO"));
}

return array($body, $attach);
diff -c websylpheed-ext_040806/mail_send.php websylpheed-ext_040806-ttanimu_050708/mail_send.php
*** websylpheed-ext_040806/mail_send.php Fri Aug 6 23:04:20 2004
--- websylpheed-ext_040806-ttanimu_050708/mail_send.php Fri Jul 8 11:56:02 2005
***************
*** 4,9 ****
--- 4,10 ----
include "common.php";
include "functions.php";

+ $from = urldecode($from);
$to = urldecode($to);
$cc = urldecode($cc);
$bcc = urldecode($bcc);
***************
*** 88,93 ****
--- 89,97 ----
新規メール作成
<br><hr>
<form action="address.php" method="post">
+ FROM:<br>
+ <input type="text" size="16" <?=$textmaxlength?> name="from" value="<?=$mail_addr?>"> <br>
+
TO: <?=$to_submit?> <br>
<input type="text" size="16" <?=$textmaxlength?> name="to" value="<?=$to?>"> <br>

diff -c websylpheed-ext_040806/maillist.php websylpheed-ext_040806-ttanimu_050708/maillist.php
*** websylpheed-ext_040806/maillist.php Fri Aug 6 23:45:00 2004
--- websylpheed-ext_040806-ttanimu_050708/maillist.php Wed Sep 22 15:18:12 2004
***************
*** 13,19 ****
if ($mbox == "INBOX") {
$boxName = "受信箱";
} else {
! $boxName = i18n_convert( decode_imap_utf7($mbox), $internal_encoding, 'UTF-8' );
if ($personal_folders != "" ){
$boxName = ereg_replace("^".$personal_folders, "", $boxName );
}
--- 13,19 ----
if ($mbox == "INBOX") {
$boxName = "受信箱";
} else {
! $boxName = @i18n_convert( decode_imap_utf7($mbox), $internal_encoding, 'UTF-8' );
if ($personal_folders != "" ){
$boxName = ereg_replace("^".$personal_folders, "", $boxName );
}
***************
*** 99,105 ****
//if ($subject == "") $subject = "(無題)";
//$subject = zen2han($subject);
//$subject = substr($subject, 0, 20) . " ";
! $subject = zen2han(i18n_convert(i18n_mime_header_decode($header->Subject), $internal_encoding, "AUTO"));
if ($subject == "") $subject = "(無題)";
$subject = substr($subject, 0, 20) . " ";
$subject = htmlSpecialChars($subject);
--- 99,105 ----
//if ($subject == "") $subject = "(無題)";
//$subject = zen2han($subject);
//$subject = substr($subject, 0, 20) . " ";
! $subject = zen2han(@i18n_convert(i18n_mime_header_decode($header->Subject), $internal_encoding, "AUTO"));
if ($subject == "") $subject = "(無題)";
$subject = substr($subject, 0, 20) . " ";
$subject = htmlSpecialChars($subject);
***************
*** 112,118 ****
$from = $header->fromaddress;
}
//$from = zen2han(i18n_mime_htmlSpecialChars($from));
! $from = zen2han(i18n_convert(i18n_mime_header_decode($from), $internal_encoding, "AUTO"));
//$from = ereg_replace("&quot;", "", $from);
$from = ereg_replace("\"", "", $from);
$from = substr($from, 0, 20) . " ";
--- 112,118 ----
$from = $header->fromaddress;
}
//$from = zen2han(i18n_mime_htmlSpecialChars($from));
! $from = zen2han(@i18n_convert(i18n_mime_header_decode($from), $internal_encoding, "AUTO"));
//$from = ereg_replace("&quot;", "", $from);
$from = ereg_replace("\"", "", $from);
$from = substr($from, 0, 20) . " ";
diff -c websylpheed-ext_040806/websylpheed.php websylpheed-ext_040806-ttanimu_050708/websylpheed.php
*** websylpheed-ext_040806/websylpheed.php Fri Aug 6 23:05:06 2004
--- websylpheed-ext_040806-ttanimu_050708/websylpheed.php Fri Jul 8 11:02:36 2005
***************
*** 43,48 ****
--- 43,49 ----
mb_http_output('SJIS');
mb_internal_encoding('SJIS');
ob_start("mb_output_handler");
+ mb_language("Japanese");

extract($_GET);
extract($_POST);
Common subdirectories: websylpheed-ext_040806/ws_check and websylpheed-ext_040806-ttanimu_050708/ws_check

2006年9月3日日曜日

メール環境改革 - メールサーバの補足設定

メールの自動転送は各ユーザのホームディレクトリの .qmail ( .forward でも可らしい)にて設定できます。
すでに存在する .qmail.sample がそのサンプルとなるので参考にしてください。


サブドメインを切って、そのサブドメイン用のメールサーバを別に立てる場合は以下を実行してください。
ここでは、"example.jp" のサブドメイン "sub.example.jp" のメールサーバを
ローカルの "mail.sub.example.jp (192.168.1.1)" と仮定します。


# cd /var/qmail/control/
# touch smtproutes
# chmod 644 smtproutes
# echo 'sub.example.jp:192.168.1.1' > smtproutes
# /etc/init.d/svscan restart


さらに、サブドメイン用メールサーバが sendmail の場合、
こちらでも以下を実行する必要があります。
なお、example.jp のメールサーバは "192.168.0.1" と仮定します。


[mail.sub.example.jp]# cd /etc/mail
[mail.sub.example.jp]# echo '192.168.0.1 RELAY' >> access
[mail.sub.example.jp]# makemap hash access.db < access
[mail.sub.example.jp]# echo 'sub.example.jp' > local-host-names
[mail.sub.example.jp]# /etc/init.d/sendmail restart


サブドメイン用メールサーバが qmail なら、多分以下を実行すればよいでしょう。


[mail.sub.example.jp]# echo 'sub.example.jp' >> /var/qmail/control/rcpthosts
[mail.sub.example.jp]# echo 'sub.example.jp' >> /var/qmail/control/locals


あるとき imap, pop3 にてログイン不能となり、調べると認証モジュールの不具合のようなので、
とりあえず "/etc/courier-imap/authdaemonrc" の最後の
authmodulelist="${authmodulelist} relay-ctrl-allow"

authmodulelist="authpam relay-ctrl-allow"
になおし、関連するデーモンを再起動すると直りました。
再起動時には以下のコマンドを実行しました。


/etc/init.d/authdaemond stop
/etc/init.d/courier-imapd start
/etc/init.d/courier-imapd-ssl start
/etc/init.d/courier-pop3d start
/etc/init.d/courier-pop3d-ssl start↑


これ以降大きなトラブルは発生していません。

以上でメールサーバの基本設定については終了です。
次回は Web メールについて書こうと思います。

2006年9月2日土曜日

メール環境改革 - IMAP,POPサーバインストール

前回でメールがサーバまでは届くようになりましたが、
これをクライアント PC から読めなければどうしようもありません。
そこで IMAP,POPサーバ courier-imap を準備します。以下を実行します。


# emerge net-mail/courier-imap
# cd /etc/courier
# mkimapdcert
# mkpop3dcert
# rc-update add courier-imapd default
# rc-update add courier-imapd-ssl default
# rc-update add courier-pop3d default
# rc-update add courier-pop3d-ssl default
# /etc/init.d/ courier-imapd start
# /etc/init.d/ courier-imapd-ssl start
# /etc/init.d/ courier-pop3d start
# /etc/init.d/ courier-pop3d-ssl start


特定のマシンから imap4, pop3 へのアクセスを制限できるようにしておきます。
これは、パスワードクラックを仕掛けてくるマシンからのアクセスを排除する目的で行います。
まずアクセス制御データを生成するツールを準備します。
本当は courier-mta をインストールすれば簡単なのですが、
qmailと競合してしまうので半自動インストールをします。
以下を実行してください。


# cd /usr/portage/mail-mta/courier
# ebuild courier-0.46.20040816.ebuild unpack
# ebuild courier-0.46.20040816.ebuild compile
# cd /var/tmp/portage/courier-0.46.20040816/work/courier-0.46.20040816/courier
# mkdir /usr/lib/courier
# mkdir /usr/lib/courier/courier
# cp makedat /usr/lib/courier/courier
# cp makedatprog /usr/lib/courier/courier
# cd /usr/lib/courier/courier
# chmod 755 makedat


アクセス制御を有効にします。以下のように /etc/courier-imap/imapd, pop3d を編集します。


# cd /etc/courier-imap
# vi imapd
TCPDOPTS="-nodnslookup -noidentlookup"
↑の行を↓に変更
TCPDOPTS="-nodnslookup -noidentlookup -access=/etc/courier-imap/access.gdb"
# vi pop3d
TCPDOPTS="-nodnslookup -noidentlookup"
↑の行を↓に変更
TCPDOPTS="-nodnslookup -noidentlookup -access=/etc/courier-imap/access.gdb"


アクセス制御ファイル /etc/courier-imap/access を編集します。
このファイルの中身の各行が制御単位となり、IPアドレスと制御内容の間は1つのTABで区切ります。
例えば、10.0.0.1 からのアクセスを拒否するには以下のようにします。


# cd /etc/courier-imap
# vi access
中身を↓に変更(各行先頭の空白は削除)
127.0.0.1 allow
192.168 allow
10.0.0.1 deny
* allow


アクセス制御ファイル /etc/courier-imap/access.gdb を作成し、デーモンを再起動します。
/etc/courier-imap/access を変更した際に必ず行わなければならない処理です。
以下を実行してください。


# cd /usr/lib/courier/courier/
# ./makedat -src=/etc/courier-imap/access -tmp=/etc/courier-imap/access.tmp -file=/etc/courier-imap/access.gdb
# /etc/init.d/courier-imapd restart
# /etc/init.d/courier-imapd-ssl restart
# /etc/init.d/courier-pop3d restart
# /etc/init.d/courier-pop3d-ssl restart


ローカルアドレス(たとえば "192.168.*.*")からは無条件でメール送信が可能とすると便利。
以下を実行すればよい。


# echo '192.168.:allow,RELAYCLIENT="",RBLSMTPD=""' >> tcp.smtp
# tcprules /etc/tcp.smtp.cdb /etc/.tcp.smtp.tmp < /etc/tcp.smtp


ローカルアドレス以外からのメール送信のため smtp before pop(imap)を設定します。
以下を実行してください。


# emerge net-mail/relay-ctrl
# echo "*/15 * * * * root envdir /etc/relay-ctrl /usr/bin/relay-ctrl-age" > /etc/crontab
# echo 900 > /etc/relay-ctrl/RELAY_CTRL_EXPIRY
# vi conf-smtpd
↓追加(コメントアウトされているのでコメントインする)
QMAIL_TCPSERVER_PRE="${QMAIL_TCPSERVER_PRE} envdir /etc/relay-ctrl relay-ctrl-ctrl relay-ctrl-chdir"
QMAIL_SMTP_PRE="${QMAIL_SMTP_PRE} relay-ctrl-check"
# vi /etc/courier-imap/authdaemonrc
authmodulelist="${authmodulelist} relay-ctrl-allow" ← 最後に追加
# vi /etc/courier-imap/imapd
PRERUN="${PRERUN} envdir /etc/relay-ctrl relay-ctrl-chdir" ← 最後に追加
# vi /etc/courier-imap/imapd-ssl
PRERUN="${PRERUN} envdir /etc/relay-ctrl relay-ctrl-chdir" ← 最後に追加
# vi /etc/courier-imap/pop3d
PRERUN="${PRERUN} envdir /etc/relay-ctrl relay-ctrl-chdir" ← 最後に追加
# vi /etc/courier-imap/pop3d-ssl
PRERUN="${PRERUN} envdir /etc/relay-ctrl relay-ctrl-chdir" ← 最後に追加
# vi /etc/courier-imap/imapd
AUTHMODULES="authdaemon relay-ctrl-allow" ← 変更
# vi /etc/courier-imap/pop3d
AUTHMODULES="authdaemon relay-ctrl-allow" ← 変更
# /etc/init.d/svscan restart
# /etc/init.d/ courier-imapd restart
# /etc/init.d/ courier-imapd-ssl restart
# /etc/init.d/ courier-pop3d restart
# /etc/init.d/ courier-pop3d-ssl restart


ここまでやれば立派にメールサーバとして運用できます。
次回は補足事項を記述します。

2006年9月1日金曜日

メール環境改革 - SMTPサーバインストール

最初にメールサーバのインストールについて記述しますが、
かなり古い情報ですので、これを見ながらインストールする場合はあちこち読み替えてください。
なお、ここに書いてあることについて私は何も保証しませんので、
くれぐれも自己責任で行ってください。


OSは私の好みで Gentoo Linux (install-x86-universal-2004.2.iso) を使っています。
これは普通にインストールすればよいです。
それからメールサーバを DNS サーバに登録しなければ他からメールが届きません。
もちろんその DNS サーバ自身が公的なDNSサーバである必要があります。
Dynamic DNS に対応したフリーで使える DNS サービスを利用するなど、
各自工夫してみてください。
もし、自分で DNS サーバを運用しているなら、
MX レコードでメールサーバを指定してください。
これらはすでに行っている事を前提に話を進めます。


メールサーバとしては送信(MTA)に qmail、受信に courier-imap を用います。
受信プロトコルは pop3, imap の通常版とそれぞれの SSL 対応版の4種を用意します。
送信プロトコルには smtp の通常版を用いますが、スパムの踏み台にならないように
smtp before pop (imap) を設定ます。とりあえず送信可能最大時間は15分にします。

最初に qmail をインストールしますが、
デフォルトで MTA の ssmtp がインストールされているのでこれをはずす必要があります。
ルート権限で以下を実行します。
なお、'<','>'で囲まれている文字列に関しては'<','>'も含めて適当な文字列に置き換えてください。


# emerge unmerge ssmtp
# emerge mail-mta/qmail
# cd /var/qmail/alias
# echo "&<manager account>@<your domain>" >> .qmail-mail-daemon
# echo "&<manager account>@<your domain>" >> .qmail-postmaster
# echo "&<manager account>@<your domain>" >> .qmail-root
# config-fast <mail server host name>.<your domain>
# echo "localhost" > /var/qmail/control/locals
# echo "<mail server host name>.<your domain>" >> /var/qmail/control/locals
# echo "<your domain>" >> /var/qmail/control/locals
# echo "localhost" > /var/qmail/control/rcpthosts
# echo "<mail server host name>.<your domain>" >> /var/qmail/control/rcpthosts
# echo "<your domain>" >> /var/qmail/control/rcpthosts
# echo ".<your domain>" >> /var/qmail/control/rcpthosts
# ln -s /var/qmail/supervise/qmail-send /service/qmail-send
# ln -s /var/qmail/supervise/qmail-smtpd /service/qmail-smtpd
# rc-update add svscan default
# source /etc/profile
# /etc/init.d/svscan start


もしメールの中継を拒否したいドメインが "example.com" と "example.net" なら以下を実行しておきます。


# echo "example.com" > /var/qmail/control/badmailfrom
# echo "example.net" >> /var/qmail/control/badmailfrom


次にメールを受け取るユーザの設定を行います。
メールを受け取るためには各ユーザのホームディレクトリに格納用のディレクトリを作成する必要があります。
この後に追加するユーザに関しては追加時に自動的に生成されるはずですが、
すでに存在するユーザでは手動で作成する必要があります。
その手順は以下のとおりとなります。
なお、ここではシステム的に<groupe>グループに属す<user>の設定とする。


# cd /home/<user>
# cp -R /etc/skel/.maildir ./
# chown -R <user>:<groupe> .maildir
# cp /etc/skel/.qmail.sample ./
# chown <user>:<groupe> .qmail.sample


これで、メールの送信と他のメールサーバからの受信ができるようになります。
次回は届いたメールを読めるようにします。