courier-imapがインストールされていない環境でmh2maildir.rbを使う

| No Comments

私のメール環境は2年ぐらい前にローカルのMH形式からサーバーのIMAP形式に移行したのだけど、過去のメールをIMAP形式に変更するのが面倒で放置していた。

しかしふと思い出したので今日調査...MH形式フォルダをMaildirに変換というそのままのがあった。サーバーで使っているのはcourier-imapなのでちょうどいい。と思って早速実行してみたのだけど。

> ruby mh2maildir.rb src dest
./maildir.rb:63:in `create_maildir': maildirmake (RuntimeError)
        from ./maildir.rb:36:in `initialize'
        from mh2maildir.rb:23:in `new'
        from mh2maildir.rb:23

と言われてしまう。Rubyわからないのでそもそも何が起こっているのかが分かるのにもちょっと苦労したのだけど、courier-imapに入ってる"maildirmake"というツールを呼び出しているらしい。今回はローカル環境でメール変換して結果だけをサーバーに持っていきたかったのでこれはちょっと困る。

これだけのためにcourier-imapインストールするのもいまいちだし、maildirmakeの互換品を作るのも面倒だし、ということで。

--- maildir.rb.orig     2011-07-16 03:42:57.000000000 +0900
+++ maildir.rb  2011-07-15 18:25:36.000000000 +0900
@@ -57,10 +57,10 @@

   private
   def create_maildir(maildir)
-    if test(?e, maildir) then
-      raise "#{maildir}: Maildir already exists"
-    end
-    system(*%W<maildirmake #{maildir}>) or raise "maildirmake"
+#    if test(?e, maildir) then
+#      raise "#{maildir}: Maildir already exists"
+#    end
+#    system(*%W<maildirmake #{maildir}>) or raise "maildirmake"
   end

   def tmpfile(mh)

としてmaildirmake関係を潰してしまって、

.folder: ../maildir.rb:47:in `initialize': No such file or directory - dest/.folder/tmp/1310758575.M117045P10412_0.local (Errno::ENOENT)

とか言われたらその都度自力でディレクトリを作る、というしょぼい方法で対応。今回は数が少ないからこれで充分。

出来たファイルはサーバーに持っていって、Thunderbirdで動作確認。ちゃんと変換できてた。これで懸案が一つ減った。

Leave a comment