Well, I'm not too proud, but this on a cron job does what I need! If I get some time to dig into the sup source, I might have a stronger opinion about how/whether to integrate this sort of thing. My instinct is "no", sup copes with messages being moved around under it, and offlineimap does the right thing too. #!/usr/bin/ruby require 'mail' BASE = "/home/mattbee/mail" SOURCE = "#{BASE}/sup.sent" FROM_ADDRESS_TO_SENT_FOLDER_MAP = { "matthew@work" => "#{BASE}/Work/Sent", "matthew@personal" => "#{BASE}/Personal/Sent", "matthew@othercompany" => "#{BASE}/Othercompany/Sent" } %w( cur new ).each do |d| d = "#{SOURCE}/#{d}" Dir.new(d).entries.each do |e| f = "#{d}/#{e}" next unless File.file?(f) mail = Mail.read(f) maildir = FROM_ADDRESS_TO_SENT_FOLDER_MAP[mail.from.first] if !maildir STDERR.print "Unknown From address in #{f}\n" else # STDERR.print "Moving #{f} to #{maildir}\n" File.rename(f, "#{maildir}/cur/#{e}") end end end