require 'src/filesystem' require 'src/mailstore' class DovecotMailstore < Mailstore def get_domains_from_filesystem() return Filesystem.get_subdirs(@domain_root) end def get_accounts_from_filesystem(domains) accounts = [] domains.each do |domain| domain_path = get_domain_path(domain) if File.directory?(domain_path) # If domain_path isn't a directory, maybe the # domain folder doesn't exist? In that case, I # guess we want to report zero accounts. usernames = Filesystem.get_subdirs(domain_path) usernames.each do |username| accounts << "#{username}@#{domain}" end end end return accounts end def get_domain_path(domain) # Return the filesystem path for the given domain. # That is, the directory where its mail is stored. domain_path = File.join(@domain_root, domain) return domain_path end def get_account_path(account) # Return the filesystem path of this account's mailbox. account_parts = account.split('@') user_part = account_parts[0] domain_part = account_parts[1] domain_path = get_domain_path(domain_part) account_path = File.join(domain_path, user_part) end end