imap_archiver
imap_archiver is a command line tool to archive messages on an imap server. You tell it what folders to archive and where to archive it. For every folder that is archived a series of folders (one for each month) is created inside the archive folder.
Installing
gem install imap_archiver
Configuration
Create a configuration file in ~/.imap_archiver.rb
ImapArchiver::Config.run do |config|
config.imap_server = 'imap.example.com'
config.username = 'jellehelsen'
config.password = "secret"
config.folders_to_archive = ["Shared Folders/Support" "Shared Folders/Backuplogs" "Shared Folders/Info"]
config.archive_folder = 'Archive'
config.base_folder = 'Shared Folders' # part to strip of source folder name to get archive folder name
config.archive_folder_acl = {'jelle' => 'lrswpcd'}
end
How it works
imap_archiver works by moving messages that are older then 3 months and that have been read and not flagged to a different folder. This helps in cleaning out public folders that get too big to work with.
Consider the following folder structure:
+ Shared Folders
- Support
- Backuplogs
- Info
Given the configuration above, this would be archive as such:
+ Archive
- Support
- Mar 2010
- Apr 2010
- ...
- Backuplogs
- Mar 2010
- Apr 2010
- ...
Known bugs
The documentation is sparse to non-existing. It has only been tested against my own cyrus-imap server and a dovecot test server. For all unknown bugs: file an issue report! Creating a patch yourself helps in getting it fixed quickly.
TODO
-
Make the archive period configurable
-
Make the archive folder name configurable
Note on Patches/Pull Requests
-
Fork the project.
-
Make your feature addition or bug fix.
-
Add tests for it. This is important so I don’t break it in a future version unintentionally.
-
Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
-
Send me a pull request. Bonus points for topic branches.
Copyright
Copyright © 2010 Jelle Helsen. See LICENSE for details.