IMAPメールボックスの危機 (2)

Imapのサーバーのユーザーディレクトリーに保存されているファイルの名前はMIMEではなく、UTF-7だそうです。

で、それを変換するperlスクリプトを作りました。作ったと言っても当該のCPANモジュールを呼び出すだけですが。

ただし、これには罠があって、CPANモジュールのIMAP-UTF-7の説明には間違いがあります。

use Encode qw/encode decode/;

ではなくて、

use Encode::IMAPUTF7;

としないといけません。ずいぶん昔から指摘されているのに、直っていません^^;

スクリプト付けときます。GNU GPL 3.0 or laterっちゅうことで。

#!/usr/bin/perl
# imapdecode.pl
# by I Hieda (JE1SGH), 22 Apr 2016
# GNU GPL 3.0 or later

use Encode::IMAPUTF7;

$filename = @ARGV[0];

$outname=Encode::decode('IMAP-UTF-7',$filename);
binmode(STDOUT,":utf8");

print $filename," : ";
print $outname,"\n";

使い方としては、

 for i in `ls`; do imapdecode.pl $i; done

などとします。

IMAPメールボックスの危機

自分のメールの管理は、昔からIMAPサーバーを立ち上げてやっています。これは個人営業のクラウドのようなもので、サーバーにアクセスできる限り、自宅LANからも外部からも、パソコン、iPhone、iPadなどで保存したメールすべてを同様にアクセスできます。どこからでも同じように閲覧・保存・操作ができるということで、年々メールが溜まっていくわけです。

とは言えメールに関してはパソコンのトラブル、サーバーのトラブルなどで完全消失したことが過去には何度もあり、現在残っている最古のメールは2002年11月です。

人によっては数百通のメールがありますが、文字コードの破損などで、メールボックスの構造が壊れているというか、ほつれつつあるところがあります。

クライアントの種類、接続の状況によって、正常だったり、異常だったりします。と言うことで完全に壊れている、というより「ほつれている」状態です。たぶん、文字コードのハンドリングが完璧でないクライアントでいじったりしたのが、ほつれをひどくしている原因だと思います。

あんまりいじるとさらにひどくなりそうなので、そっとしておくことにしますが、うっかり削除したり、どうしようもないほど回復不能になったフォルダーの回復法をメモっときます。

  1. Thunderbirdを使う。Local Foldersの場所をAccount settingで確認しておく。
  2. バックアップがあることを確認した上で、当該のフォルダーを削除して、Thunderbirdはいったん終了。
  3. 壊れたメールボックス(フォルダー)の場所(path)を特定して、バックアップツール(Time MachineやRetrospect)からそれに対応するファイルを探し出す。
  4. 復活させたいフォルダーのファイル、”フォルダー名”と”フォルダー名.msf”を安全なところに復活させる。
  5. その二つのフォルダーを1でみつけたフォルダーにコピーする。
  6. Thunderbirdを起動して、Local Foldersにある復活させたフォルダーの中身を確認して、IMAPサーバーにコピーする。

不可視フォルダーや、pathなどについては、省略^^; たぶん、解る人にはヒントになると思います(たぶん^^; おそらく^^;; )。

気をつけなければいけないのは、Thunderbirdでフォルダーの中身をぶっ壊した場合、Thunderbirdで同じフォルダーを復活させてもその後の処理はかなり危険と言うことです。

Thunderbirdは、どうも、この件に関してはかなり劣悪です。Apple Mailはまだましですが、バックアップから復活させたメールボックスファイルをインポートする方法が解らないので、今回は使い(使え)ませんでした。

また、GMailにIMAPでいったん上げて、GMailのWeb UIでいじるのは良い具合です。ただし、また、自営のIMAPサーバーに戻す時にトラブったりしますが。

メールクライアントからは、同じフォルダー内にあるというイメージ。IMAPサーバー的には、一つのメールボックスファイルとなっている。

固定電話やめるつもり

まだ,次のプロバイダー更新の時なので,3年先になりますが.

今回のプロバイダー切り替えでは,2月半ばに新しいプロバイダーが開通し,古いプロバイダーを2月末までで解約したかったんですが,光電話の切り替えが3月にずれ込んでしまいました.

新旧プロバイダーに確認したら,光電話の切り替えまで旧プロバイダーとの契約を続けないと,番号が引き継がれない,と言うのです.

2月の新プロバイダー月額料金は,無料でしたが,3月からは課金されますので,結局3月は,使ってもいない旧プロバイダーにも1か月分取られ,二重に支払うことになってしまいました.

まったく,電話番号を人質にした,ぼったくり行為です.

実はわが家の電話番号は,市外局番が4桁だった時,市内局番以下が,

○○-○△△△

という,非常に覚えやすいものでした.それへのこだわりもあり,また,家の電話番号を変えると後々面倒と思ったので,6,000円からのプロバイダー代をどぶに捨てることになりました.

たぶん3年後になると思われる次回のプロバイダー変更は,ちょうど定年を迎える時でもあり,その時には「電話番号を変える」と,家人に宣言しました.しかし,もう固定電話は要らないんじゃないかと思っています.本音としては,次回は固定電話は解約してしまうつもりでいます.

現在はその頭に○でも△でもない数字が一桁付きますが^^;

sendmailのIPv6設定

IPv6化は,完了していませんでした.

実は,IMAPのIPv6化を追求していたときに既に気がついていました.sendmailが,プロバイダーのメールサーバーにメールを送るときは,IPv6のアドレスで送るのですが,受け取るときは,いつもIPv4なのです.たまたまなのかと思っていましたが,LAN内のテストでも,IPv6で接続できないことが解りました.

で,まずは,何も考えずにネット検索です. “sendmail IPv6″で検索すると,sendmail.mcに,

DAEMON_OPTIONS(`Name=IPv4, Family=inet, Port=smtp')dnl
DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Port=smtp')dnl

の2行を追加して,sendmail.cfを作成せよ,という回答が多数を占めます.で,何も考えずにやってみますが,

daemon IPv4: problem creating SMTP socket

というエラーが出てしまいます.

さらに何も考えずに検索で見つかったことを片っ端から試しましたが,上記のエラーが出ます.

そこで,自分の頭で考えてみることにしました.そもそも,STARTTLSに対応させるために,私のsendmail.mcには,

DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl

というDAEMON_OPTIONSがあります.これが前述の追記したDAEMON_OPTIONSとコンフリクトするのでしょう.ということで,両者を合体させた,

DAEMON_OPTIONS(`Port=smtp, Name=MTA, Family=inet6')dnl
DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s, Family=inet6')dnl

というのに書き換えてみて,makeしたら,うまく動くようになりました(つまりDAEMON_OPTIONSはこの2行のみにした).

IPv4の記述(inet)はありませんが,なくても動くだろうという読みは当たりました(つまりデフォルトでサポートされているというか,IPv6に内包されている).

しかし,IPv6を使おうって意識の高い人たちが,STARTTLSを使ってない(使っていれば上記問題に遭遇するはず)ってのは理解不能です.

これも,解ってしまえばこれだけの話なんです.これだけのことで半日つぶしましたとさ.めでたしめでたし^^;

関連記事

Twitterまる6年

フォローもしてないボットから,「今日でTwitterを始めてまる6年ですね」というメッセージが届きました.ボットはblockしました.

6年は早いんだか遅いんだか^^; 小学校の6年間は長かったです.多くの人がそう言いますね.

大学の学部+修士課程の6年間は,長くも短くもなく,実感のある6年間でした.

東日本大震災に見舞われたのは,Twitterを始めてからまる1年経っていたんですね.当時東京に離れて暮らしていた長男は被災時には川崎市内にいて,Twitterでのみ連絡が取れました.その日のうちに東京に戻るのは得策ではないと伝え,川崎の知人宅に泊まらせました.

以後Twitterは欠かせないものになっています.

この6年間はいろいろあって,長いといえば長いでした.