Active Directory’de GAL Oluşturmak
22 Mayıs 2009Nokia E71 ve Mail for Exchange kullanmaya başladığımdan beri en büyük sıkıntım şirketin müşteri bilgileri veritabanını sorgulayamamak olmuştur. Bu sorunu aşmak için MS-Exchange’in Active Directory’den ürettiği Global Address List’i kullanmak gerekiyordu. Ancak herkese bir account açamayacağımıza göre bir çözüm bulmak gerekiyordu. Çözümü Contacts isimli bir organizational unit tanımlayarak içini contactlarla doldurmakta buldum.
Şirketin mevcut CRM veritabanından tüm müşteri bilgilerini CSV formatında export ettim. Daha sonra örnek bir contact oluşturarak linux’ten ldapsearch ile bu contact’taki hangi alanın hangi attribute’a karşılık geldiğini tespit ettim. Aşağıda yazmış olduğum script ile de CSV formatındaki ilgili kolona karşılık her bir veriyi ldif formatına dönüştürdüm.
#!/bin/bash # iletisim_bilgileri.csv dosyasının kolon sırası aşağıdaki gibi olmalı # first_name,last_name,phone_mobile,phone_work,phone_other,phone_fax,email,company IFS=" " for i in `cat iletisim_bilgileri.csv` do givenName=`echo $i | cut -d, -f1 | sed "s/^ //g" | sed "s/ $//g"` sn=`echo $i | cut -d, -f2 | sed "s/^ //g" | sed "s/ $//g"` pmobile=`echo $i | cut -d, -f3` pwork=`echo $i | cut -d, -f4` pfax=`echo $i | cut -d, -f6` email=`echo $i | cut -d, -f7` company=`echo $i | cut -d, -f8` nickname=`echo ${givenName} ${sn} | sed "s/ //g" | sed "y/ğüşıöçĞÜŞİÖÇ/gusiocGUSIOC/" | sed "s/[^a-zA-Z0-9]//g"` givenName2=`echo ${givenName} | sed "s/ //g" | sed "y/ğüşıöçĞÜŞİÖÇ/gusiocGUSIOC/" | sed "s/[^a-zA-Z0-9]//g"` sn2=`echo ${sn} | sed "s/ //g" | sed "y/ğüşıöçĞÜŞİÖÇ/gusiocGUSIOC/" | sed "s/[^a-zA-Z0-9]//g"` echo echo echo "dn: CN=$givenName $sn,OU=Contacts,DC=firma,DC=com,DC=tr" echo "objectClass: top" echo "objectClass: person" echo "objectClass: organizationalPerson" echo "objectClass: contact" echo "cn: $givenName $sn" if [ "${sn}x" != "x" ] then echo "sn: $sn" fi echo "givenName: $givenName" echo "distinguishedName: CN=$givenName $sn,OU=Contacts,DC=firma,DC=com,DC=tr" echo "instanceType: 4" echo "displayName: $givenName $sn" echo "proxyAddresses: X400:c=US;a= ;p=Firma;o=Exchange;s=${sn2};g=${givenName2};" echo "proxyAddresses: SMTP:$email" echo "targetAddress: SMTP:$email" echo "mailNickname: $nickname" echo "mAPIRecipient: FALSE" echo "name: $givenName $sn" echo "showInAddressBook: CN=Default Global Address List,CN=All Global Address Lists,CN=Address Lists Container,CN=Firma,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=firma,DC=com,DC=tr" echo "showInAddressBook: CN=All Contacts,CN=All Address Lists,CN=Address Lists Container,CN=Firma,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=firma,DC=com,DC=tr" echo "legacyExchangeDN: /o=Firma/ou=First Administrative Group/cn=Recipients/cn=$nickname" echo "objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=firma,DC=com,DC=tr" echo "textEncodedORAddress: c=US;a= ;p=Firma;o=Exchange;s=${sn2};g=${givenName2};" if [ "${company}x" != "x" ] then echo "company: $company" fi if [ "${email}x" != "x" ] then echo "mail: $email" fi if [ "${pwork}x" != "x" ] then echo "telephoneNumber: $pwork" fi if [ "${pmobile}x" != "x" ] then echo "mobile: $pmobile" fi echo "msExchALObjectVersion: 23" echo "msExchPoliciesIncluded: {CBEFB3AB-CFC6-4947-84B8-E2726B473828},{26491CFC-9E50-4857-861B-0CB8DF22B5D7}" echo echo done
Yukarıdaki script’i aşağıdaki gibi kullanarak ldif’i üretebiliriz.
# ./ldif_uret.sh > contacts.ldif
Daha sonra bu ldif’i active directory’ye Linux üzerinden aşağıdaki komutla import edebiliriz.
# ldapadd -x -h 192.168.36.24 -D "cn=Administrator,dc=firma,dc=com,dc=tr" -W -f contacts.ldif
Bu yöntemle Contacts OU altında 1500’ün üzerinde adres defteri bilgisini bir dakikanın altında bir sürede import edebildim. Artık hem Outlook ile hem de Nokia E71 üzerindeki Mail for Exchange ile gelen Comp Directory uygulaması ile telefon ve e-posta bilgilerini sorgulayabilir oldum.
Etiketler: active directory, AD, contact, CRM, E71, GAL, global address list, LDAP, ldapadd, Microsoft, nokia