Maildirからmboxにpackするスクリプト書いてみた

MLのシステムをfmlからmailmanに移行しようと検討中です。移行にはMaildirからmboxに変換する必要があるらしく、もうあったんだけどそんな動きをしそうなスクリプトを書いてみました。うーん、すごく雑だ。突っ込み希望です。

#!/usr/bin/ruby
def main
  maildir = Dir.open(ARGV[0]) rescue usage("can't read directory")
  mbox = ''
  maildir.each do |file_name|
    path = maildir.path + '/' + file_name
    next if File.directory?(path)
    file = File.open(path)
    mail, from, wday, day, month, year, time = ['']*7
    file.each do |line|
      if line =~ /^Date:\s+(.+)/
        wday, day, month, year, time = $1.delete(',').split(/\s+/).values_at(0, 1, 2, 3, 4)
        mail += line
      elsif line =~ /^Return-Path:\s+<(.+)>/
        from = $1
      else
        mail += line
      end
    end
    file.close
    mbox += "From #{from} #{wday} #{month}  #{day} #{time} #{year}\n"
    mbox += mail
  end
  maildir.close
  begin
    file = File.open(ARGV[1], 'w')
    file.write(mbox)
  ensure
    file.close
  end
  puts 'complete!'
end

def usage message
  puts message
  puts 'usage: maildir2mbox maildir mbox'
  exit
end

main