2002年1月17日 22:19:39
できてもいないのに名前を付けるのも、ちょっとさむって感じなんだが、名前つけてた方がやる気が出てくるかな・・と。
後にもひけなくなるし(笑)
というわけで、名前は「JAMCHI」に決定!! ぱちぱちぱち・・・・
一応Java Application Mail CHeker for IMAPの略です。
POPに対応させたら、JAMCHIPにしようかなーと(笑)
完成度は10%ぐらい・・・(^_^)
予定ではJava Web Startに対応させて、簡単にインストールが済むようにする予定。
2002年1月16日 21:01:06
どうも、設定ミスって、Webに来たアクセス全部SSLでつなげてたみたい。アホですな(笑)
ログも残らない、なぜ?(笑)
今、基本からJavaの勉強をやってる。だから、基本的なことが、どんどんここにメモされていくでしょう。
System.out.printlnのSystemってどこのパッケージかと思ったら、java.langだそう。
ところが、import指定なんかしてないぞ!!と思ったら、勝手に読み込まれるパッケージなんだって。
知らなかったけど、Javaはint型の変数をメソッドの引数に与えて、メソッド内で受け取った値を変更しても、呼び出し元には影響ない。
つまり、コピーが渡されている。
参照が渡されるのは、オブジェクトと配列だけらしい。つまり、普通のプリミティブ型の変数は中に入っている値の値渡しなのであった。
基本からやり直しているからか、今まで気づかなかったことを最近、いろいろ知る。
てっきり
import javax.mail.*;
となっていれば、
import javax.mail.internet.*;
も全部含まれると勘違いしていたが、そうではないみたい。
mail.*だと、mail.xxxxxというクラスが使えるようになるだけで、そのサブパッケージのinternetまでは使えないみたい。
だから、
ちゃんと、
import javax.mail.*;
import javax.mail.internet.*;
と二つ指定してあげないといけない。
作る前に昨日文章で要件事項をまとめてみたので、それを載せておく。
こういうのを先に書いておくと、なんか方向性がしっかりしてきて、いいように思う
(一からシステム構築したこと無いから、このあたり経験浅し・・・)
MailChecker必要要件
■概要
IMAP対応のメールチェッカー。
ヘッダによる通知フィルタ機能をつける。
ポート番号の指定ができるようにする。
■フロー(?)
ソフトを起動して、メールサーバーに関する情報を登録する。
メールサーバー情報はファイルでに残して、次回起動時も同じ情報を使用する。
起動後は定期的にIMAPサーバーに接続し、新着メールを確認する。
メールがあれば、ヘッダとフィルタリングリストを照らし合わせる。
新しいメールが来ていれば、ポップアップを表示して、知らせる。
■名詞(クラス分けの参考用)
・メールサーバー情報
・メール(ヘッダ)
・フィルタリングリスト
・ポップアップ
■メール保持形式の必要要件
・メール(ヘッダー)文字列全体の保持(処理が終わったら捨てても良い)
・メールは複数件あるので、複数のメールに対応できるような形式
・メール一つはFrom,Subject,本文などのデータを持つことができる
・From,Subjectなどのヘッダーを取得できる
・検索文字列をキーにしてヘッダーを検索して、メッセージを特定できる(フィルタリング)
・特定したメッセージのSubject,From,(できれば)Bodyを表示できる(通知)
→Vectorクラスを使用して、メール一件のヘッダー情報を保持したオブジェクトを入れる。
メール一件のデータはHashtableで、キー:From, 値:a-tak@dynodns.netというように、ヘッダごとにキーをつけて作成。
→VectorをEnumrationに入れて、一括処理ができるようにする。
■フィルタリング処理
■フィルタリングリスト形式
作成中
メール保持用のクラスMailDataクラスがほぼ完成。
サーバー名やユーザー名などのプロパティーを設定し、nextメソッドを呼び出すことで、一件ずつメールデータが取り出せる状態
次は呼び出し側の処理。
呼び出し側は、nextメソッドで読みとったデータをフィルタリングリストと照らし合わせて、データだけポップアップ表示クラスに送る。
2002年1月15日 0:16:39
たとえば、Java MAILのStoreクラスはServiceクラスを継承してできているので、connect()ソッドを持っているが、store.と打ってもconnectは出てこない。(しかし、コンパイルは可能)
スーパークラスのメソッドは出てこないのかなぁ・・・。
IMAPもPOPと同じように接続できる様子
http://www.a.mei.titech.ac.jp/~ksuga/Java/JavaMail/Introduction.html
2002年1月8日 0:01:31
デフォルトでは/usr/lib/courier-imap/etc/imapdに設定がある。
そのものPORTとなっているところがあるので、そこを変更する。
2002年1月6日 11:22:27
ウィルスバスターのリアルタイム検索が行われているのかも。
マウスの動きがカクカクになるほど重くなって、それでいてHDDにはそんなにアクセスが無い場合はたぶん、これが原因。
どうも、Jarなどの圧縮ファイルは一度解凍して、チェックを行うようで、JBuilderのように(Javaアプリ全般?)Jarをがんがん使うプログラムは結構遅くなる。
ウィルスバスター2002ではフォルダを指定して、チェックさせないようにできるので、JBuilderのフォルダをリアルタイム検索の対象から外せば、かなり早くなる。もちろん、危険にもなるけど。
なぜか、コンパイルができなくなってしまった原因調査。
"Login.java": エラー #: 300 : メソッド setAttribute(java.lang.String, com.a_tak.login.UserInfo) が見つかりません: インターフェース javax.servlet.http.HttpSession 行 84, 列 15 |
・JBuilderの補完機能も機能せず、ドットを入力しても候補に出てこない。
・JBuilderの「シンボルを調べる」を使って、classファイルを逆コンパイルしたが、確かにsetAttributeは出てこない
・Jarを自分で解凍して、上記を行っても確かに出ない。
・タイミング的にはXPに変えてから、一度もコンパイルできていなかった(もしかしたら、その前から?)
・JBuilder5のパッチを当てていたのを外したが×
・SunのXP用のJava Runtimeを消しても×
・コマンドラインからコンパイルしても×(javacはJBuilder付属のJDKの物。クラスパスを自分のパッケージとservlet.jarにも通した)
>javac login.java login.java:84: シンボルを解釈処理できません。 シンボル: メソッド setAttribute (java.lang.String,com.a_tak.login.UserInfo) 位置 : javax.servlet.http.HttpSession の インタフェース session.setAttribute(attributeName, attributes); ^ エラー 1 個 |
・JBuilderのQ & Aを見る
・ネットでズバリそのまま検索
http://www.t3.rim.or.jp/~yoko-k-h/java/servlet/programming/compile.html#archive
ははは、ありました。
やっぱり、見つからない物は元々無かったわけです。
ここには、Tomcatに入っている、servlet.jarを使いましょうと書いてある。
さっそくJBuilderのパッケージのパスをそれに変えると、すんなりコンパイル。
逆コンパイルしてみると、確かにsetAttributeがある。
俺が使っていたのは、解凍するとjswdk-1.0.1というフォルダができる物で、サンから落としてきた物だったと思う。
これに付属しているAPIドキュメントにはしっかりsetAttributeの記載があったので、当然一緒についてきているパッケージにも含まれていると思っていた。
が、現に見つからなかったと言うことは、ドキュメントと付属のパッケージのバージョンが違うのではなかろうか?
そういや、XP使う前は、Tomcatのjarを参照させていた気がする。
jswdk-1.0.1の方はドキュメント見るためだけに使っていたような・・・
しょーもないことで時間費やしました。
全くプログラムと関係なし!!(笑)
ほら、正月明けて収集もはじまったし(^_^)
http://www1.ocn.ne.jp/~tatsujin/ropework/
http://www1.ocn.ne.jp/~tatsujin/ropework/nidukuri/
メールサーバーをIMAPにしたものの、今まで使っていたメールチェッカーがIMAPに対応していない!!
ネットからIMAP対応のチェッカーを落としたけど、前使っていたWPBFにはあった、通知フィルタ的な機能が無いので、どんなメールにも反応しまくりで、困りもの。
MLなんかのメールはいちいち知らせてくれなくてよいのに・・・
というわけで、i-mode用Webメールはとりあえず、先延ばしにしてIMAP対応メールチェッカーを作るぞ。
と、ちょっとJava Mail APIの練習でメール送信の方を試してみたけど、これは簡単すぎ。
タイトルとか、本文に日本語入っていても、勝手に難しいことはこのAPIが済ませちゃうみたい。
エンコードなんて全然考えなくて良い。
簡単すぎて、ちょっと不安になってしまう・・・(ちょっと勉強にならないかも)
2002年1月5日 8:28:32
「/home/vpopmail/bin/vpasswd アカウント パスワード」で行う
http://qmail.visionmakers.net/vpopmail/faq.html
メールの受信サーバーにはPOP3とIMAPってのがある。
POP3が一般的な受信サーバーで、メールソフトで受信を行うと、POP3サーバーからメールをダウンロードしてきて、自分のPCにメールが取り込まれて、サーバーからはメールが削除される(削除しないようにもできるけど)。
一方、IMAPはサーバーに受信ボックスや自分で作成した各種保存用のフォルダがあって、それを直接見に行くようなイメージです。自分のPCにダウンロードする、というのとはちょっと違う。
IMAPの何が便利かというと、複数のマシンを使用していても、一括でメールが管理できる点。
基本的にPOP3の場合は、どこかのマシンでメールをダウンロードしてしまうと、他ではメールを見ることができない。
サーバーに残す設定もあるが、たとえば、会社で見る時はメールをサーバーに残して、家でメールチェックをすると、一度見たメールが受信箱にまたドカドカ入ってくるわけやね。
その点IMAPだと、会社で見た時点で、「これはごみ箱行き、これは保管用のフォルダに」と仕分けしておくと、家でメールチェックしても、受信箱にはそのメールは入ってこない。(ちなみにIMAPはサーバー上にフォルダを自由に新規作成できる)
おおっ、そう考えると便利かもIMAP。
本当は「何の必要性があるのかなー」という事を書こうと思ってたのだけど、これはこれで便利かも。
ただ、心配なのは情報の漏洩。
サーバーに自分の受信箱やその他のフォルダが置いてあるような状態だから、アカウントとパスワードがわかれば、メールの履歴がすべて見られてしまうというのが怖い。POP3ならば、とりあえず受信してダウンロードしてしまえば、メールはサーバーに残らないからね。
IMAPでも、転送を他の非公開のアカウントにかければ、多少安全にはなるね。
2002年1月4日 17:37:17
/etc/tcp.smtpに設定を記述する
ローカルのみからの送信を許可するならば、
localhost.:allow,RELAYCLIENT="" |
とする。
その後、
/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp |
を実行してアクセス制御データベースに書き込んでOK
qmailadminは使わないようにしたので、手動で設定↓以下に方法あり
http://www.phys.waseda.ac.jp/shalab/~matsu/linux/qmail-forward.html
/var/vpoper/domain/ドメイン名/ユーザー名/.qmailに転送先を「&メールアドレス」という形で指定すれば良い。
意外と簡単・・・。
メールをサーバーに残したい場合は「MailDir」のパスも書いておけば良い。
メールがなんで、届かんのじゃ、ぼけーと思っていたら、間違ってsmtpをフィルタリングしていました。
もちろん、a-tak@a-tak.com宛のメールはすべてフィルタリングの餌食です(笑)
あほでした。
あとで、エラーメールが怒濤のように届くでしょう(それか無事再送されて届くのかな?)
2001年12月29日 17:34:55
createuserなどのコマンドを実行したときにIs the postmaster running locallyエラーが出る場合は、postmasterを起動させているユーザーが間違っている。
そういや、俺も自動起動スクリプトでrootで実行してたような・・・
http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/start-psql.html
とりあえず、設置完了。
よくできるてるな、このimpというWebメールは。
a-tak@a-tak.comというメールができました。
Webで仕入れてきた設定でインストールしたが、絶対に/cgi-binにしか入らない。
正確に言うと、ログインボタンを押した先がどうしてもcgi-bin目指してジャンプしてしまう。
オプションを試したんですが、ならないのよね。
あんまり評判も良くなさそうなので、使用はやめる。
qmailのコマンドとか、設定ファイルでも同様の事ができるはずだ。楽は楽だけどね・・・・。
2001年12月27日
なんだろー。
make checkでエラーが出るのよ。
バージョンが最新の1.4.0でLinux Worldの1.3.11とは違うんだけどね。
INATALLファイルには、make checkの時にfailedが出る、と書いてあるところがあるけど、英語なんで詳細は不明。
make installはできたので、とりあえずそのまま進めてはいますが・・・・
2001年12月26日
ここで、新たな計画を。
なぜか、setAttributeメソッドが見つからないのもあるし(笑)
ちょっとメールサーバーをたててみるです。
Webメールもしてみるかなと。
さらに、JavaMail使って、i-mode用のWebメールも作ってしまおうかな。
そんな年の瀬です。
借りているLinux World二月号にWebメールの記事があったので、今それ見ながら設定中。
起動するときに、mod_jk.soを-DEAPIを使ってコンパイルし直せ、というようなエラーが出た場合は、mod_jk.soをno-eapi版じゃなくて、eapi版を使用すれば、とりあえず警告は出なくなった。
これで、いいのかわからないけど。
INSTALL読んだらgccの3以下ではコンパイルできないって書いてあるじゃーん。
GCC3の導入方法は以下にあった。コンパイルにはかなーり時間がかかります。
http://www.matsusaka-u.ac.jp/~okumura/linux/gcc.html
なぜかコンパイルができなくなっている。
設定の問題か?!
なぜだが、HttpSessionのsetAtributeが見つからない。JBuilderの候補内にも出てこないし・・・。なぜだ。
Windows2000やXPのファイルを圧縮するオプションを使っていると、やたらと遅くなる様子・・・。
2001年12月24日 12:09:49
ifup eth0 ifdown eth0 |
という感じでifupとifdownとデバイス名を書く。
dhcp自動取得のデバイスの場合UPと同時に取得も行いに行くみたい。
カーネルのアップは結局、駄目。というか2.2のアップでもすんなりいかん。
rtl8139.oのコンパイル方法を誰か教えてくれー(T_T)
Linux再インストールで2.4を導入しても良いが、やはり危険があるし、面倒。
将来的にもう一台マシンが確保できたときに考えよう・・・。
2001年12月23日 16:23:37
全部、太字にして逃げてみました(笑)
連休なので、Javaでも、と思ったけど、やっぱりカーネルもあげておきたい!!
だっていろんなソフトで2.4で動きますしか書いてないんだもんよ。2.2はどうなった?!
つーわけで情報収集すると、やっぱVineでうまくいってる人いるよ~。
http://toyoaki.bird.to/pc/diy/linux_kernel.html
なぜにすんなりいかないかなー・・・。
相変わらず、kernelの読み込みOKの時点で終了・・・。
http://yuki.sakura.ne.jp/museum/museum2.html
Vine2.1.5 + Kernel2.4.13という人もいるな・・・。
俺もこのバージョンでチャレンジしてみる。
よく忘れちゃうシリーズなので、メモ
tar -Ixvf ファイル名 |
ディストリビューションによっては-Iじゃなくて、-yもあるらしい。
しかし、bz2って解凍に時間かかるな・・・。
???、というか、-Iつけなくても解凍できるじゃん。なぜ?
(2003.3.17追記)
Redhat8.0では(?)、-j オプションで解凍できる
いまいち、見方がわからないが、これって2.4のカーネルで起動したときに2.2用(?)のSystem.mapを読んでいるということでは?
このあたり調べてみる。
Dec 23 19:27:10 linux kernel: Inspecting /boot/System.map-2.2.17-0vl10 Dec 23 19:27:10 linux kernel: Loaded 8386 symbols from /boot/System.map-2.2.17-0vl10. |
カーネルブートの部分の仕組みに関して情報を仕入れる必要がありそう。
わかってないので、勘すら働かない。
一通りLinuxJFの文章を読んでも、どうにもならなかったら、2.4へのアップは断念する。
時間がもったいない。
2.2の最新バージョンでセキュリティーホールが無い物を導入して終わりとする。
Redhatの最新バージョンを入れようかと考えたが、手間がかかりすぎる。
せっかく休みのうちにJavaを進展させようと思ってたのが、進まなくなってしまう。
新しいマシンを買った時にでも、最初から2.4カーネルのマシンを入れることにする。
とりあえず、調べるのは今日一杯までとする。
モジュールが組み込めない時に出るみたい。
2.2.20でLANのドライバを入れようとしたんだけど、駄目じゃん。
http://www.zdnet.co.jp/help/tips/linux/l0169.html
2001年12月22日 19:51:33
これで、秀丸と同等かな?
jarファイルのみをJBuilderのフォルダの/lib/extの中に入れておく。
設定は「エディタの設定」で出来るみたい。
http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=15392
たーだ、普通にコンパイルして、インストールすれば済むようだ。
特にバックアップも必要なさそう。
./configure make make install |
といういつもの手順でOK。
VB関係の情報はここには載せまいかと思ったけど、今後も引っかかりそうなのでメモ。
StrConvで全角文字を半角にしたり、その逆も可能だが、半角の\マークは全角に直してくれない。
これだけは、手動で変換してやる必要があるので、注意。