есть почтовый сервер хранящий учетки юзеров в Postgresql
запускаем скрипт - perl ldap.pl (например по расписанию)
он выгружает нам email и ФИО на сервер openldap
далее мы может подключить как адресную книгу например в Outlook
upd1. косяк - создаются копии адресной книги, видимо каждый раз как скрипт срабатывает
сразу скажу что скрипт в стадии доработки, как дойдут руки прикручу фильтр(не все же выгружать ящики, есть и системные и просто тестовые), но что есть - работает
запускаем скрипт - perl ldap.pl (например по расписанию)
он выгружает нам email и ФИО на сервер openldap
далее мы может подключить как адресную книгу например в Outlook
upd1. косяк - создаются копии адресной книги, видимо каждый раз как скрипт срабатывает
сразу скажу что скрипт в стадии доработки, как дойдут руки прикручу фильтр(не все же выгружать ящики, есть и системные и просто тестовые), но что есть - работает
use Net::LDAP; use DBI; # имя базы данных $dbname = "mailbase"; # имя пользователя $username = "pgsql"; # пароль на БД $password = "123456"; # имя или IP адрес сервера $dbhost = "postgresql_server"; # порт $dbport = "5432"; # опции $dboptions = "-e"; # терминал $dbtty = "utf8"; $server = "openldap"; #ldap server $port = "389"; #port $binddn = "cn=root,dc=test,dc=com";# $passwd = "654321" ;#пароль для учетки cn=root,dc=test.com,dc=com $basedn = "dc=test,dc=com";# #подключаемся к базе postgresql $dbh = DBI->connect("dbi:Pg:dbname=$dbname;host=$dbhost;port=$dbport;options=$dboptions;tty=$dbtty","$username","$password", {PrintError => 0}); if ($DBI::err != 0) { print $DBI::errstr . "\n"; exit($DBI::err); } #подключаемся к таблице user_accounts1 $query = "SELECT * FROM user_accounts1"; $sth = $dbh->prepare($query); $rv = $sth->execute(); $ldap = Net::LDAP->new($server); $mesg = $ldap->bind($binddn, password=>$passwd); if (!defined $rv) { print "При выполнении запроса '$query' возникла ошибка: " . $dbh->errstr . "\n"; exit(0); } while ($ref = $sth->fetchrow_hashref()) { ($name, $mail) = ($ref->{'realname'}, $ref->{'email'}); #print "$name\t$mail\n"; $result = $ldap->add("cn=$name,ou=addressbook,dc=test,dc=com", attr => [ 'cn' => $name, 'sn' => $name, 'givenName' => $name, #'homePhone' => '555-2020', 'mail' => $mail, 'objectclass' => [ 'top','person', 'inetOrgPerson'] ] ); } $ldap->unbind; $sth->finish(); $dbh->disconnect();
Комментариев нет:
Отправить комментарий