通过代理验证邮件组的成员是否在Domino目录列表里

简介:

近期公司调整了邮件架构出现了一些问题,这些问题其实是我们日常接触到的,只是想到了没有更好的去做而已,作为一个管理员应该会的东西,那是什么呢,具体是这样的,由于Domino目录下人员多,或者邮件组比较多的话,如果通过搜索的方式比较麻烦,非常慢没有效率,这样我们就通过手动的方式将编辑好的格式文件粘贴,这样容易出问题,如果名称写错,给相应的邮件组发送邮件会提示错误,说用户不在Domino列表中,那有什么好的方法来检测 邮件组的成员是否在Domino目录下呢,有,那就是通过代理来实现。

我本身在Domino运维上是一个菜鸟,在Domino开发上更是一个菜菜鸟了,近期看了很多资料跟看天书一样不懂,近期通过Lotus论坛、Lotus QQ群交到了一些朋友,通过互相了解互相信任及互相学习进步,了解了一点知识来实验测试该问题,具体见下“

我环境内有两台Domino server

Server1:Dsgrd-mail01

Server2:Dsgrd-mail02

Globle Name:Dsgrd.com

Domino列表下分别注册了一些用户,分别为注册在两个服务器上面,

User1、users2、user3注册在Dsgrd-mail01上

User11、user12、user13注册在Dsgrd-mail02上

clip_image002

然后创建相应邮件组(群组)

Test@dsgrd.com

Test2@dsgrd.com

Test3@dsgrd.com

clip_image004

我们在Test1添加用户;如果通过搜索的方式添加用户的话,其实是按照策略中设置按照用户的Listname进行搜索的,这个条件可以根据策略来更改;

我们通过搜索将user1、user11添加到邮件组,同时手动将user21、user31添加到该邮件组,(user21、user31Domino不在Domino目录列表中)

clip_image006

同理user2、user12添加到Test2邮件组内,同时手动添加user41、user51(user41、user51Domino不在Domino目录列表中)

clip_image008

同理user3、user13添加到Test3邮件组内,同时手动添加user61、user71(user61、user71Domino不在Domino目录列表中)

clip_image010

下面我们就是开始新建代理

我们都知道Domino是可以开发的,是通过通过Lotus designer组件

我们打开Lotus Designer

clip_image012

我们可以打开先用的应用程序,具体不细说了,

因为要新建一个代理,我们也可以在Names,nsf数据库上新建代理,但是为了保险起见,我们新建一个空白的数据库,然后再上面新建代理。

clip_image014

clip_image016

确认后自动打开该数据库的,

clip_image018

我们需要创建一个表单

clip_image020

名称任意写,

clip_image022

clip_image024

wKioL1MF0Sryr9_gAAL5fP2nsmU792.jpg

然后新建一个代理

代理名称最好跟本地的文件名称同名ag_get_person,当然也可以任意

clip_image025

我们打开代码

Sub Initialize

On Error Goto errhandle

Dim session As NotesSession

Set session = New NotesSession

Dim doc As NotesDocument

Set doc = session.DocumentContext

Dim db As NotesDatabase

Set db = session.CurrentDatabase

'打开人员数据库

Dim namedb As NotesDatabase

Set namedb = session.GetDatabase(db.Server,"names.nsf")

If Not namedb.IsOpen Then

Msgbox "找不到人员数据库"

Exit Sub

End If

'打开所有人员视图

Dim nameview As NotesView

Set nameview = namedb.GetView("_People")

If nameview Is Nothing Then

Msgbox "找不到所有人员搜索视图,请与管理员联系!"

Exit Sub

End If

'打开邮件用户群组视图

Dim emailview As NotesView

Set emailview= namedb.GetView("Groups1")

If emailview Is Nothing Then

Msgbox "找不到邮件用户群组视图,请与管理员联系!"

Exit Sub

End If

'得到邮件视图中所有群组条目

Dim vc As NotesViewEntryCollection

Set vc = emailview.AllEntries

Msgbox "邮件群组个数是:" & vc.count

If vc.count>0 Then

Dim i As Long

'循环所有试图条目

For i = 1 To vc.Count

'获取第i条视图的条目

Dim entry As NotesViewEntry

Set entry = vc.GetNthEntry(i)

'获取此条目的文档

Dim tempdoc As NotesDocument

Set tempdoc = entry.Document

Dim key As String

'Msgbox tempdoc.ListName(0)

Dim item As NotesItem

Dim l As Integer

Dim j As Integer

l=0

Set item = tempdoc.getfirstitem("Members")

If item.text<>"" Then

j = Ubound(item.Values)

For l = 0 To j-1

key=item.Values(l)

Dim key1 As Variant

key1=Split(key,"/")

Dim key2 As Variant

key2=Split(key1(0),"=")

'Msgbox key2(1)

Dim namedoc As NotesDocument

Set namedoc = nameview.GetDocumentByKey(key2(1),True)

If namedoc Is Nothing Then

Msgbox tempdoc.ListName(0) &"组下的"& key2(1) &"不在domino列表里!"

End If

Next

End If

Next

End If

Exit Sub

errhandle:

Msgbox Erl & Error

Exit Sub

End Sub

我们新建代理

clip_image027

clip_image029

然后单击保存即可;我们现在开始测试代理:

wKioL1MF0Wigg90FAAG_g7Zszqw727.jpg

我们打开表单:两种方法,第一,通过预览客户端,第二通过web打开

clip_image031

我们首先是通过client打开;

clip_image033

clip_image035

clip_image037

这样需要我们每次的确认来查看有问题的用户,非常的麻烦,我们通过第二种方法来操作

clip_image039

clip_image041

用户我们需要单独授权,在服务器文档可以单独授权

clip_image043

clip_image045

登陆进去我们发现什么也没有看见,如果单击测试我们就能通过Lotus console能看见状态,我们在单击前,先看看Lotus console状态

clip_image047

我们接下来单击测试

clip_image049


本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1179050,如需转载请自行联系原作者

相关文章
|
关系型数据库 Java Linux
03_Weblogic之配置简单域:启动和配置域,使用模板创建域,使用控制台
 1 域:概览 是Oracle Weblogic Server的基本管理单元 始终包含一个配置为管理服务器的Oracle WebLogic Server实例 域中可以包括一些称为受管服务器的Oracle Weblogic Server实例(可选) 还可以包含协同工作的服务器实例的集群。
2270 0
|
数据安全/隐私保护 Windows 容器
域策略+脚本实现客户端administrator帐号密码统一
用域策略+脚本实现把客户端administrator帐号密码统一更改     在写这贴之前,我在网上找过很多关于这个方面的资料,看到他们都是说的差不多,但是当一个新手来弄的话就比较难实现了。
1065 0
|
数据安全/隐私保护
Confluence 6 使用 LDAP 授权连接一个内部目录 - 拷贝用户到登录
在登录时拷贝用户(Copy User on Login) 这个选项在用户尝试登录的时候将会被触发。如果这个选择框被选择的话,当用户使用 LDAP 授权的用户名和密码登录系统的时候,用户将会在内部目录自动创建,用户的信息将会在每次用户登录的时候同步过来。
1391 0