+ def list_users()
+ # Return a list of all users managed by this plugin.
+ raise NotImplementedError
+ end
+
+ def list_domains_users(domains)
+ # Get all usernames belonging to the given domains. If a username
+ # ends in @example.com, it belongs to the domain example.com
+ #
+ # This uses a naive loop, but relies only on the existence of a
+ # list_users() method which is guaranteed above. More efficient
+ # implementations can usually be made within the plugin.
+ domains_users = []
+
+ usernames = list_users();
+ domains.each do |d|
+ matches = usernames.select do |username|
+ username =~ /@#{d}$/
+ end
+
+ domains_users += matches
+ end
+
+ return domains_users
+ end
+