70 lines
1.9 KiB
Python
Executable File
70 lines
1.9 KiB
Python
Executable File
#!/usr/bin/python2 -B
|
|
|
|
class getmailad(object):
|
|
|
|
""" get all email addresses from enabled(not disabled)
|
|
users/groups from active directory """
|
|
|
|
""" tested with windows 2003 domain """
|
|
|
|
def __init__(self):
|
|
|
|
self.addresslist = []
|
|
self.count = 0
|
|
|
|
#TODO: make this configurable via constructor
|
|
self._ldap_server = "ldap://dc2.aec.at"
|
|
self._bind_dn = "david@aec.at"
|
|
self._bind_pass = "xxxxxxx"
|
|
self._base_dn = "ou=adm,dc=aec,dc=at"
|
|
|
|
|
|
def get(self):
|
|
|
|
""" connect to active directory and get
|
|
a list of email addresses """
|
|
|
|
import ldap
|
|
|
|
try:
|
|
instance = ldap.initialize(self._ldap_server)
|
|
instance.simple_bind_s(self._bind_dn, self._bind_pass)
|
|
|
|
|
|
#ldap querry
|
|
result = instance.search_s(self._base_dn, ldap.SCOPE_SUBTREE, ("cn=*"), ["mail", "proxyAddresses", "userAccountControl"])
|
|
|
|
|
|
counter = 0
|
|
for item in result:
|
|
if item[1].has_key("userAccountControl"):
|
|
if item[1]["userAccountControl"] == ["512"] or item[1]["userAccountControl"] == ["66048"]:
|
|
if item[1].has_key("proxyAddresses"):
|
|
addresslist = item[1]["proxyAddresses"]
|
|
for address in addresslist:
|
|
if "SMTP:" in address or "smtp:" in address:
|
|
self.addresslist.append(address[5:].lower())
|
|
counter += 1
|
|
self.count = counter
|
|
|
|
except ldap.LDAPError, error_message:
|
|
pass
|
|
|
|
try:
|
|
instance.unbind()
|
|
except ldap.LDAPError, error_message:
|
|
pass
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
getmailadobj = getmailad()
|
|
getmailadobj.get()
|
|
for item in getmailadobj.addresslist:
|
|
print item
|
|
print "\nMail addresses found: %i" %(getmailadobj.count)
|
|
|
|
|
|
|
|
#end of file
|