たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
Page 1/1: 1
Thunderbirdには、LDAPでディレクトリサーバに問い合わせて、その結果をアドレス帳として表示したり宛先入力時のオートコンプリートに使ったりする機能がある。その際に、ディレクトリサーバないに格納されてる情報をアドレス帳の「名前」とか「(プライベートの)住所」とかにどのように割り当てるかを決めないといけない。Thunderbirdの初期設定では一般的なマッピングの指定が既になされているんだけれども、特殊な運用をしてる場合には、その情報がアドレス帳で表示されないということになる。
で、そのマッピングは隠し設定で変更できるんだけど、マッピングを変更すると検索結果が全く表示されなくなるという問題にぶち当たってしまった。
結論から言うと、これは複数の項目で同じLDAP属性を参照しているせいだった。
user_pref("ldap_2.servers.myldap.attrmap.HomeCity", "l");
こんな風に書くと、もうそれだけで動かなくなる。何故かというと、「l(小文字のL)」というLDAP属性はThunderbirdの既定のマッピングにおいてWorkCity(ldap_2.servers.default.attrmap.WorkCity)で参照されているから。この時検索結果が表示されなくなる問題を回避するためには、ldap_2.servers.myldap.attrmap.WorkCityでマッピングするLDAP属性のリストから「l」を外すか、ldap_2.servers.myldap.attrmap.HomeCityで「l」を参照するのをやめるかする必要がある。他の項目についても同じ事が言える。
まとめ:LDAP属性のマッピングを変更する時は既定のマッピングとかち合わないように気をつけましょう。
今まで「IMAPとはサーバ上だけにメールを置いておく物なのだ」と思い込んでたので、POPから移行するのに少し抵抗があったんだけども、そうじゃなくてIMAPはPOPを包含するものでありPOP的な運用もできるのだと知って、それならいっちょ本気出して移行してみるかなと思って移行してみた。
会社マシンのThunderbirdでメールに付けたタグをどうにかして自宅のマシンからも利用できるようにしたい、という事を前々から思っていた。というのも、自宅ではプライベートのアドレスに来たメールをGmail経由でBecky! 2で受信(SPAMフィルタ代わり)して仕事メールは基本的に閲覧のみ、会社ではプライベートのアドレスに来たメールを仕事用アドレス宛に転送してThunderbirdで利用してたんだけれども、Thunderbirdを使い始めてみるとタグが便利すぎて(Tag Dialog万歳)、アドオンのバグ報告を受信したらとりあえず「未処理」「bug」のタグを付けて、処理したら「未処理」タグだけ外す、というやり方でバグを管理するような運用が染み着いてしまいまして。気がついたら、自宅のBecky! 2ではどのメールが未処理なのかさっぱり分からなくなってしまったんですわ。
まあタグで運用しなくてもフォルダ分けでもいいかなって思うんだけど、それでもとにかく家と出先とで同じフォルダ構成でメールが見えてくれないと困るわけで。じゃあIMAPだよねってなるけど、でもオフラインでメールが見れないのはイザって時に困るわけで。
やりたいのは、家PC・会社PC・Gmailの3箇所で同じデータを同期させるという運用。それぞれにメールの本文が全部ちゃんとあって、1箇所でメールを消したらそれが他の2箇所でもちゃんと反映されて、という感じにしたかった。一般的なPOPの使い方のように「受信したらサーバからはすぐ消す」というのはするつもりはない(POPの時も2箇所で受信させてたし)。
まずはアカウントウィザードでGmailのIMAP用アカウントを作成する。
アカウントができたらGmail用に設定を変更しておく。
mail.server.server*.trash_folder_name
を追加し、値を[Gmail]/ゴミ箱
に設定する。新規にGmail IMAP接続用のアカウントを作るのなら、Gmail IMAP Account Setupを使った方が楽。これをインストールすると、アカウント作成のウィザードにGmailのIMAP接続用の項目が加わる。すでに手作業でアカウントを作ってしまった後では役に立たないので、早とちりして自分でアカウントを作ってしまった僕のような人はご愁傷様です。
あと、IMAPでの運用に限らないけど、Gmailっぽいスレッドフロート式の使い方をするためには以下の設定もしておくといい。
mailnews.thread_pane_column_unthreads
をfalse
にする。この変更を行っておかないと、スレッド表示とソートを併用できない。Gmailでまともにメールの整理をしてなかった人は、これを機に整理するようにしてみましょう(僕のことです)。
というあたりを踏まえてラベルをいっぱい作っておく。
mail.check_all_imap_folders_for_new
を探して値をtrue
にする。こうすると、フォルダごとのプロパティでそのフォルダを新着チェック対象に設定する手間が省ける。extensions.checkCompatibility
をfalse
にしておかないとインストールできないので注意が必要。この3つを組み合わせることで、
という運用が可能になる。
Shredderに取り込まれたパッチだけど、2つとも、「Thunderbird 2.0.0.xには入れらんないよ」と蹴られてしまった。「そんなに重要じゃないから」だそうです。ちょっと待ってよ、日本語環境じゃどっちもめっさ重要やん。そしてThunderbirdはレガシーなメールソフトが必要とされ続けてる日本でこそシェアの伸びが期待できるわけじゃないすか。それなのに。
Firefoxでは中野さんの頑張りのおかげかマーケティングの都合なのか2.0.0.x系のセキュリティアップデートでも日本語環境特有の問題の修正を入れてもらえてたそうだけど、人もいないしMozilla内部じゃ注目度も低いThunderbirdでは絶望的ですかね……
前のエントリに追記した通り、HTMLメールのデフォルトのフォントに日本語の名前のフォントを使えない問題で書いたパッチが採用されたんだけど、それに続いて設定ダイアログを開いた時に前回選んだフォントが選択されない問題のパッチも採用された。(ただしどっちもShredderの話で、Thunderbird 2.0.0.xに入れてもらうにはまだかかりそう。)
今までずっとアウトローな感じで野良パッチを垂れ流してた状態だったけど、こうしてちゃんとアップストリームに還元できるようになると、嬉しいものだなと思いました。
別に特殊な文字なんか使ってないのに、メールを送信しようとすると「変な文字が入ってるからISO-2022-JPじゃ送れないよ! UTF-8にする?」みたいな確認が出る、という問い合わせを受けて調査をしてたら、原因は表題の箇所にあった。
「MS P明朝」みたいに非ASCIIな文字を名前に含むフォントを使おうとすると、フォント名自体が文字化けしてしまって、その化けた文字がISO-2022-JPの範囲外なので上記の確認が表示されてしまう、というのが事の真相だった。
で、検索してみたらMozilla Japanのナレッジベースが引っかかったんだけど……
Mozilla Japan - Thunderbird サポート - ナレッジベース - HTML 形式のメッセージを作成中にフォントを変更できない
日本では HTML 形式のメッセージはあまり好まれませんので、シンプルなテキスト形式で作成していただくという方法もあります。
ちょwwwwwwwそりゃないよwwwwwwwwwwww
ナレッジベースからリンクされてたバグはEditorコンポーネント扱いになってたんだけど、自分が特定した限りでは原因箇所はThunderbird固有のフロントエンド部分だったので、分かりやすいようにと思って新しくバグを立てた。
パッチを見ての通り、修正点自体はほんとに些細です。なのに何年も見過ごされてたっていうのが、なんだかなぁ……
1月13日追記。池添さんに教えてもらいながらレビュー依頼したりとかなんとか。checkin-neededキーワードが付いて、どうやらパッチ採用してもらえそうな感じ? そして関連する別のバグにもパッチを書いてみた。
1月15日追記。Trunkにチェックインされたよ! これで僕もThunderbirdコントリビュータ!(←クレジット入れ忘れてるのできっと誰にも知られないまま)
2月23日追記。重要なバグじゃないからパッチは2.0.0.xには入れないと言われてしまいました。重要じゃないのか……最初から付いてる機能が最低限すらまともに働いてない事がそんなに些細な問題ですか……。
こないだからやってるNetscape Communicator 4.xからの移行、現地でのリリース候補版レベルでのテストでまた詰まった。自分とこで作ったテスト環境では問題なかったのに、実際の環境だとnsIMessengerMigratorのUpgradePrefs()
で謎の例外発生ですよ。
もういっそのこと処理を全部JavaScriptに移植してみるか? なんて不毛なことを考えてもみたけど、せめて現地でできる事はやり尽くしておこうと思ってMXRでソースを見ながら目デバッグし始めてみたら、冒頭でいきなりそれっぽい箇所を発見した。移行元の設定でmail.server_type
が未定義だと駄目らしい。よくよく調べてみたら、その環境ではnetscape.cfg内で指定されてる設定がたくさんあって、その値はユーザプロファイルの中のprefs.jsには保存されてないから、Thunderbirdが「全然設定が足りねえぞゴラァ!!」と怒ってた、と。
こんなん、今回うちで作った移行ツールじゃなくても本体の設定インポートでも普通に詰まるんじゃないの? どうなってんだまったく。
Netscape Communicator 4.xのメールデータとか設定はインポートできるのにアドレス帳だけインポートできないってどないやねん。
調べてみたら、鍵になるのはnsIAbUpgraderインターフェースを実装したコントラクトIDが@mozilla.org/addressbook/services/4xUpgrader;1
のコンポーネントらしいんだけど、これ、Mozillaのソースには含まれてないんだ……オープンソースになってなかったいくつかのNetscape製コンポーネントの一つらしい。これがないせいでThunderbirdはNC4.xのアドレス帳を直接読めないんだって。なんてこった。
どうしてもやりたい場合、考えられるやり方は以下のような感じ。
というわけで調べてみてた。
まずNC4.xのエクスポート機能を使う方法。多分これが一番手っ取り早い。LDIFかCSV等に書き出して、Thunderbirdのインポートツールでそれを読み込めばいい。ただ、手動でやらなきゃいけないってのがネックで、自動化できないから今回の仕事じゃちょっと使えない。
次に、Netscape 7を使う方法。NS7には上記のコンポーネントが含まれてるから、プロファイルのインポートで普通に*.na2を*.mabに変換できる。ということで拡張機能なりパッチなりを使ってNS7をアドレス帳変換専用ツールに仕立て上げてしまえば諸々の処理を自動化できるんだけど……インストール先のchromeフォルダを見たら、昔半泣きになりながらexUnregisterer.jsなんて自作ライブラリを作ってどうにかこうにか凌いでいたあのRDF地獄があって一気にやる気消失してしまった。最近Firefoxのアドオンを作り始めた人は知らんでしょうけど、昔はオーバーレイいっこあてるのにも物凄い苦労があったんですよ……
じゃあ例のコンポーネントが含まれてるDLLを直接呼んだらどうなんだ?ってことでcompreg.datを手作業で書き換えてあれこれやってみたけど、これもうまくいかなかった。例のコンポーネントが含まれてるっぽいabupgrade.dll以外にもそれが依存してる物があるのか何なのか、コンポーネントを無理矢理登録してみてもちっとも動いてくれなかった。というわけでこれもダメ。
他のツールはないのか!と思って検索してみたらDawnとかいう色んなメーラのアドレス帳の読み書きに対応したツールがあったんだけど、試してみたら日本語の名前や住所が見事に文字化けして全然使えなかった。ていうかそもそも自動処理できないっぽいし。
そんな感じでにっちもさっちもいかなくなったので、ヤケクソでpab.na2(NC4.xのデフォルトの個人用アドレス帳。Personal Address Bookの略でpabらしい……というのはどうでもいい話ですね)のバイナリとにらめっこしながらデータ構造の解析を試みてみた。試行錯誤した結果、全部のフィールドに違う値が入ってる時に関してはなんとか個々のカードの内容を吸い出せるようにはなった(!)んだけど、複数フィールドに同じ内容が入ってたり複数カードのフィールドに同じ内容が入ってたりすると、そこだけ圧縮かかるみたいで全然うまくいかない。どういう順番でどこを読みに行けばいいのかさっぱり分からん……
ちなみに、ここまでの時点でFirefoxのコードを参考にしてnsreg.dat(NC4.xのプロファイル名とプロファイルのありかが保存されているバイナリ)の解析には成功してるので、後はホントに*.na2の中身をどうにかして取り出せさえすればインポートを自動化できるのに!という非常に悔しい状態なのです。ああもうっ。
Tuhnderbirdには標準で、メールを暗号化したりデジタル署名を付けたりする機能(S/MIME)が含まれている。しかし、これに使う証明書はベリサイン等で購入する必要があるので、ちょっとテストしてみたいという場合にはけっこう難儀する。
これについて、いわゆるオレオレ証明書でS/MIMEのテストをやる手順を以下にまとめておく。テストした環境は、Ubuntu 8.04とWindows XP。
これで、秘密鍵と公開鍵のペアができた。次に、送信者側の設定。
これで送信者側の設定は完了。新しくメールを作成して、ツールバーの「セキュリティ」ボタン(錠前のアイコン)の右の▼をクリックし、署名するだけの場合は「このメッセージにデジタル署名する」にチェック、暗号化する場合は「このメッセージを暗号化する」にチェックを入れて、自分宛に送信してみよう。受信したメールを選択すると、Subjectや送信者名などが表示されている欄の右端に、錠前(暗号化されたメール)や封印(署名されたメール)のアイコンが表示されていれば、S/MIMEでメールを送信できた事が分かる。
ちなみに、この状態で署名や暗号化されたメールを他の人に送った場合、受信者側では、署名されたメールでは封印のアイコンにバッテンが付いたアイコン、暗号化されたメールでは錠前にバッテンが付いたアイコンに加えて「このメッセージを復号できませんでした」というメッセージが表示される。
というわけで受信者側でも以下の設定が必要になる。
本当はこの後「他の人の証明書」他部を選択して同じ手順で証明書(公開鍵)をインポートする必要があると思うんだけど、ここまでで出てきているmail.crtは適当に作ったオレオレ証明書で認証局証明書と兼用になってしまってるので、「他の人の証明書」でインポートしようとしてもうまくいかなかった。
ともかく、認証局証明書にオレオレ証明書を登録した状態で、先程の送信者からの署名済みメールを受け取ると、Subject等の欄の右端に表示される封印のアイコンからバッテンが消える。
暗号化の方はよくわかんない……オレオレ証明書を一個だけ作るんじゃなくて、認証局証明書と個人用証明書の二つを作ってもう一度実験してみないといけない?
Thunderbirdで受信メールをスレッド表示してると、スレッドのネストが深くなりすぎて後の方のメールが見えない状況になってきてしまったので、インデント幅を小さくした。以下の内容をThunderbirdのプロファイルフォルダ内のchromeフォルダ(無ければ新規作成)の中のuserChrome.css(これも無ければ新規作成)に以下の内容を書く。
@-moz-document url(chrome://messenger/content/messenger.xul) {
treechildren::-moz-tree-indentation {
width: 9px !important;
}
treechildren::-moz-tree-twisty {
padding-right: 0px !important;
}
treechildren::-moz-tree-cell-text(colNodeName) {
margin-left: 1px !important;
}
}
DOM Inspectorのインデント幅を減らすやつそのまんまですな。
ちなみに上記のままだとフォルダペインのインデント幅も小さくなってしまいます(僕はその方が都合がいい)が、スレッドペインだけに反映させたい場合はtreechildren
という箇所を#threadTree treechildren
とかなんとか書き換えてください。
イイね!
いや、のっけからナンだけれども。
会社のマシンに入れてみたんですけど、「検索フォルダ」機能いいわ。今風に言うところのタグ付けって奴ですか?
フォルダ振り分けだと、「MLのメールはMLのフォルダに」「個人宛のメールは個人のフォルダに」といった具合に、メールがそれぞれの決まった位置に保存されるため、「どこのMLの発言でも個人宛にダイレクトにもらったものでもいいから、とにかく誰某さんから送られてきたメール全てを見たい」と思った時には、いちいち条件を指定して「検索」しないといけない。
「検索フォルダ」は、この検索条件を仮想フォルダとして保存しておいて、いちいち条件を入力しなくても、フォルダを選ぶのと同じ感覚ですぐに呼び出せるようにする物。
今時のメールソフトだと、こういうのは当り前のように装備されてる物なのかしらん。GMailとかちゃんと触ってないからよく知らないし。普段使ってるのはBecky!2とSylpheedでどっちもこの機能無いし。
あ、でも想像するに、メールの件数が増えてくると当然重くなってくるだろうな。一体どのくらいまで実用的な速度で使えるのか、ストレステストのつもりでしばらく使いつづけてみるか……
Page 1/1: 1