X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2Fdovecot_mailstore.rb;h=430c8e44bd3ec81863ac6e8e5fb3cf8a74c9edee;hb=1511b1d4bec6c53bcdb74fe60ee3b0fc4551b104;hp=a794032c246d3c171a33193ab56c1cc823429cec;hpb=198f0d2d3198311e4ccdf988cb5996f585071014;p=mailshears.git diff --git a/src/dovecot_mailstore.rb b/src/dovecot_mailstore.rb index a794032..430c8e4 100644 --- a/src/dovecot_mailstore.rb +++ b/src/dovecot_mailstore.rb @@ -12,15 +12,40 @@ class DovecotMailstore < Mailstore accounts = [] domains.each do |domain| - domain_path = File.join(@domain_root, domain) - usernames = Filesystem.get_subdirs(domain_path) + domain_path = get_domain_path(domain) - usernames.each do |username| - accounts << "#{username}@#{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