Outlook के लिए OpenLDAP पता पुस्तिका

प्रविष्टि


कंपनी के पास कर्मचारियों के संपर्कों के साथ एक फाइल है, जो प्रबंधक के हाथों से भरी हुई है। मेल प्रोग्राम - एमएस आउटलुक, द बैट, मोज़िला थंडरबर्ड, आदि के लिए पते और दिखावे के साथ इसके बाहर एक सिंक्रनाइज़ एड्रेस बुक बनाना आवश्यक है।

मैं वास्तव में चाहता हूं कि यह बिना फ़िल्टर के "ऑलूक में पूरी सूची दिखाएं" के साथ संगत हो।

हमने कार्य को 4 भागों में काट दिया है:


OpenLDAP


Microsoft द्वारा मानकों के तुच्छ उपयोग के कारण, हमें पता पुस्तिका में सभी पते प्रदर्शित करने की असंगति है। चूंकि पहाड़ मुहम्मद तक नहीं जाता है, इसलिए आपको OpenLDAP को थोड़ा खोलना होगा।

विक्टर सुदाकोव ने यहां के पैच को पूरी तरह से समझा, जिसके लिए उन्होंने एडमिन को बहुत धन्यवाद दिया।

सर्वर पर एक ओएस के रूप में, जो आसानी से आभासी हो सकता है, कहते हैं, 8Gb डिस्क और 64Mb मेमोरी के साथ, CSS - एक शब्द में लिनक्स स्क्रैच (जेंटू) की गणना करें, जिसके लिए आप अपने पैच को आसानी से और स्वाभाविक रूप से बना सकते हैं।

pachimu


उन लोगों के लिए एक विषयांतर जो खूनी पैचवर्क नहीं करना चाहते हैं - बस मेरी परीक्षा शलजम कनेक्ट करें (इस तथ्य को नहीं कि मैं इसे अपडेट करूंगा): /etc/layman/layman.cfg में ओवरले जोड़ें:

overlays : http://www.gentoo.org/proj/en/overlays/repositories.xml https://raw.github.com/arrrght/openldap-outlook/master/overlay.xml 


हम सक्रिय और सिंक्रनाइज़ करते हैं:
 # layman -S # layman -a openldap-outlook 


हम /etc/portage/package.use में कुंजियाँ लिखते हैं:
net-nds/openldap experimental icu slp perl overlays ms-sssvlv

OpenLDAP स्थापित करें
 emerge openldap 


उन लोगों के लिए जो अपने हाथों से सब कुछ करना पसंद करते हैं, यहां पैच है ( यहां लिया गया है ):
 --- ./openldap-2.4.33/servers/slapd/schema_prep.c.orig 2012-12-07 09:54:56.000000000 +0700 +++ ./openldap-2.4.33/servers/slapd/schema_prep.c 2012-12-07 09:58:10.000000000 +0700 @@ -908,6 +908,7 @@ "DESC 'RFC4519: common supertype of name attributes' " "EQUALITY caseIgnoreMatch " "SUBSTR caseIgnoreSubstringsMatch " + "ORDERING caseIgnoreOrderingMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )", NULL, SLAP_AT_ABSTRACT, NULL, NULL, 


समायोजन


सेटिंग यहां सबसे सही ढंग से लिखी गई है - यह सिर्फ उन लोगों के लिए है जो LDAP में गंभीरता से जुड़ने का निर्णय लेते हैं। मेरे मामले में, सब कुछ सरल है - मुझे बस एक पता पुस्तिका की आवश्यकता है। मैंने /etc/openldap/slapd.conf फ़ाइल में डिफ़ॉल्ट रूप से लगभग सब कुछ छोड़ दिया। यहां यह पूरी तरह से, बिना किसी सूचकांक के, और सामान्य तौर पर, बहुत अधिक है:

 include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/java.schema include /etc/openldap/schema/openldap.schema include /etc/openldap/schema/nis.schema include /etc/openldap/schema/corba.schema include /etc/openldap/schema/dyngroup.schema include /etc/openldap/schema/misc.schema include /etc/openldap/schema/pmi.schema pidfile /var/run/openldap/slapd.pid argsfile /var/run/openldap/slapd.args modulepath /usr/lib64/openldap/openldap moduleload back_passwd.so moduleload back_ldap.so moduleload sssvlv.so database hdb overlay sssvlv suffix "dc=org,dc=com" checkpoint 32 30 rootdn "cn=Manager,dc=org,dc=com" rootpw secret directory /var/lib/openldap-data index objectClass eq   ,  ,    LDAP   entry.ldif: dn: dc=org,dc=com objectClass: dcObject objectClass: organization o: org.com</code>   ldif  : <code>slapadd < entry.ldif</code>    LdapAdmin     ou=ab,dc=org,dc=com. ,  ,      . <h4>XLS</h4>      smbget,    samba,   xls2csv.          getfile.sh: <source lang="bash"> #!/bin/sh SMBGET=/usr/bin/smbget LDAPSEARCH=/usr/bin/ldapsearch LDAPDELETE=/usr/bin/ldapdelete rm "temp.xls" ${SMBGET} "smb://domain;user:password@192.168.1.1/Share/Telephones.xls" -o temp.xls xls2csv -c~ -b\' temp.xls > temp.csv # delete all from ou=ab,dc=org,dc=com ${LDAPSEARCH} -b "ou=ab,dc=org,dc=com" "(uid=*)" | grep dn: | awk '{print $2}' | ${LDAPDELETE} -Dcn=Manager,dc=org,dc=com -wsecret 


आगे मोती स्क्रिप्ट है जो सीएसवी को वांछित ldif फ़ाइल में परिवर्तित करती है, कुछ इस तरह से (जल्दबाजी में लिखी गई):

 #!/usr/bin/perl use strict; use encoding 'utf8'; open my $fh, "<temp.csv" or die 'Can\'t open file'; open my $fout, ">temp.ldif" or die 'Can\'t write to file'; my $org = ''; my $orgNum = 0; my $div = ''; my $userNum = 1000; my $ouDcDc = 'ou=ab,dc=org,dc=com'; while (my $line = <$fh>) { my $isNowOrg = 0; my $email = ''; chomp $line; my @f = split /~/, $line; if (!$org || $f[0]=~/\'/){ $org = clean($f[0]); $org =~s/^(.+)\"(.+)\"$/$2/; $org = firstUp($org); $isNowOrg = 1; $orgNum++; } $email = clean($f[5]) if $f[5]=~/@/; $div = firstUp(clean($f[0])) unless $f[1] || $email; my $name = clean($f[1]); my $post = clean($f[0]); my $telNum = clean($f[4]); $telNum =clean($f[2]) if $orgNum==3; $telNum =~s/\D/ /g; $telNum =~s/^\D*//g; #print "#$telNum#\n"; #$telNum = ~s/\W//g; my %names = givenName($name); if ($name && $post && $names{'firstName'}){ ++$userNum; print $fout "dn: uid=user${userNum},${ouDcDc}\n"; print $fout "uid: user${userNum}\n"; print $fout "objectClass: posixAccount\nobjectClass: top\nobjectClass: inetOrgPerson\ngidNumber: 1000\n"; print $fout "uidNumber: ${userNum}\n"; print $fout "givenName: ", $names{'firstName'}, "\n"; print $fout "initials: ", $names{'middleName'}, "\n"; print $fout "sn: ", $names{'lastName'}, "\n"; #print $fout "username: user${userNum}\n"; print $fout "homeDirectory: home_dir\ngecos: gecos\nloginShell: log_shell\n"; print $fout "telephoneNumber: ${telNum}\n" if $telNum; print $fout "physicalDeliveryOfficeName: ${div}\n"; print $fout "ou: ${div}\n"; print $fout "o: $org\n"; #print $fout "organizationName: ACME\n"; print $fout "title: $post\n"; print $fout "mail: $email\n"; print $fout "cn: ", $names{'shortName'},"\n"; print $fout "\n"; # print "ORG: $org, DIV: $div, POST: $post, NAME: $name, EMAIL: $email\n"; } } close $fout; close $fh; sub givenName(){ my $name = shift; my @s=[]; my %names = {}; @s = split ' ', $name; $names{'firstName'} = $s[1]; $names{'lastName'} = $s[0]; $names{'middleName'} = $s[2]; $names{'shortName'} = $s[0] .' '. substr($s[1],0,1) .'.'. substr($s[2],0,1) .'.'; return %names; } sub clean(){ my $name = shift; $name =~s/^\'//; $name =~s/\"\"/\"/g; $name =~s/^\"//; $name =~s/\"$//; $name =~s/\ *$//g; $name =~s/\ +/\ /g; return $name; } sub firstUp(){ my $name = shift; $name = lc($name); return ucfirst($name); } 

जिसके बाद, आउटपुट temp.ldif फ़ाइल होनी चाहिए, जिसे हम पहले से ही टीम को खिलाते हैं

 ldapadd -v -Dcn=Manager,dc=org,dc=com -wsecret < ./temp.ldif 


सर्वर साइड के साथ ऐसा ही कुछ। आउटलुक में क्लाइंट पर, हम करते हैं:

    -->   -->  --> LDAP--> IP:  IP        -->  -->  : ou=ab,dc=org,dc=com :   (  ) 


वह सब है। हम जांच करते हैं, मुकुट में पंजीकरण करते हैं, अनुकूलन करते हैं।
पुनश्च: ऑलूक पता सूची में संगठन को प्रदर्शित करने के लिए, आपको /etc/openldap/schema/core.schema फ़ाइल को पैच करना होगा: 'कंपनी' जोड़ें - मानक रिकॉर्ड ओ, लाइन 120 पर ध्यान न देने के लिए Microsoft का विशेष धन्यवाद।
 attributetype ( 2.5.4.10 NAME ( 'company' 'o' 'organizationName' ) DESC 'RFC2256: organization this object belongs to' SUP name ) 


** मेरी वेबसाइट a3r.me/posts/openldap-outlook.html से कॉपी-पेस्ट करें

Source: https://habr.com/ru/post/In183996/


All Articles