免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7026 | 回复: 12

[Lotus] Domino系统管理员的12个小贴士 (易读英文版),不是那个12个忠告版 [复制链接]

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-03 17:23:07综合交流区版块每日发帖之星
日期:2015-08-19 06:20:00综合交流区版块每日发帖之星
日期:2015-09-15 06:20:00
发表于 2006-10-14 00:13 |显示全部楼层
Administration Tips

1、What Virus scanning packages are available for Notes?  DOMINO NOTES能用什么杀毒软件
2、What can be done to optimize database performance?
3、How do you make a list of all groups a person is in?
4、Can you run console commands from a server program document?
5、How do you set up S/MIME?
6、Can users recall messages they've sent?
7、Why does a Mail Rule seem to keep running even after it's deleted?
8、Can you forward a copy of a user's mail and keep it in their mailbox?
9、How Do You Set Up Failover for Outbound SMTP Mail?
10、Why is my Notes client having trouble replicating over satellite links?
11、Can you have an Apache server handle Domino URLs on a different box?
12、Can you find out how long views take to rebuild?
13、How do you enable folder references for a database?





1、What Virus scanning packages are available for Notes?


McAfee's GroupShield and GroupScan (includes AIX)
Trend Micro's ScanMail for Lotus Notes (includes AIX support)
Group-WG's WatchDog
Cheyenne's InnocuLAN for Notes
Symantec's Norton Antivirus for Notes (includes Unix, AS/400 and S/390; Linux soon)
Command AntiVirus for Lotus Notes
Panda AntiVirus for Lotus Notes
Sophos Mail Monitor
Die Avast! Domino Edition
Kaspersky AntiVirus (includes Linux)
ESET's NOD32 for Lotus Domino


Applies to Notes Versions: 4; 4.5; 4.6; 5; 6; 6.5; 7
Last Modified: August 29, 2006

[ 本帖最后由 plumlee 于 2006-10-14 00:34 编辑 ]

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-03 17:23:07综合交流区版块每日发帖之星
日期:2015-08-19 06:20:00综合交流区版块每日发帖之星
日期:2015-09-15 06:20:00
发表于 2006-10-14 00:14 |显示全部楼层
What can be done to optimize database performance?


1. Don't have too many views - each time you change/add a document Notes will need to update every appropriate view.

2. Keep views simple - more columns means more calculation. It gets worse if the columns are sorted and worse still if the columns are categorized.

3. Don't use @Today or @Now in selection formulas - the views will never be up to date and the server will be forever recalculating them. If you need to use today's date in a selection formula then have a background macro running each day to set an environment variable in the server's notes.ini and reference this.

4. If you want to display compound information in a view column from multiple fields then calculate it in a hidden document field. The column should then reference this single field rather than carrying out the calculation.

5. To avoid the @DBColumns/@DBLookups used to generate keyword lists, etc.,
being generated at read time use something like:
@If(@IsDocBeingLoaded & !@IsNewDoc; @Unavailable; @DbColumn(""; ""; "By _Category (Main View)"))

for the formula. Editing documents will take just as long but document readers will notice a big improvement. The example above is from a keyword format formula.

6. Use column numbers not field names for lookups

7. If you are doing lots of lookups to multiple columns in a single view then append all of the data in a single column with a unique delimiter string and do a single lookup. The value returned can then be parsed with @Left/@Right/@Mid or @Explode to give you the separate field values.

8. Put 64 Mb of RAM in the server and push the buffer pool sizes to their limits. This is documented in the Knowledge Base.

An IBM Redbook is also available: Performance Considerations for Domino Applications.

A developerWorks article is also available: Troubleshooting Application Performance

Applies to Notes Versions: 3; 4; 4.5; 4.6; 5; 6; 6.5; 7
Last Modified: March 30, 2005

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-03 17:23:07综合交流区版块每日发帖之星
日期:2015-08-19 06:20:00综合交流区版块每日发帖之星
日期:2015-09-15 06:20:00
发表于 2006-10-14 00:15 |显示全部楼层
How do you make a list of all groups a person is in?


Create view in the NAB with a selection formula of "Select (Form = "Group").
Add the field 'Members' in first column.
In the propeties box for the first column, select sorting type 'categorized' and select 'show multiple values as separate entries'.
In the second column, put the field 'ListName'.

This is not recursive, so it won't show a person in a nested group.


An alternative way (from chowell@epd.renold.com) is to:
1) Load the Name & Address Book D/Base and select the "Groups" view
2) Enable the Search Bar (View, Search Bar) - the NAB has to be full text indexed
3) Key in the name of the person you are seeking - the Groups of which they are a member are identified in the view
or use the search string:
  FIELD Members contains "username or groupname"

so you avoid false hits on the ListOwner and LocalAdmin fields.

And another way using the Notes API from agorlenko@manu.com but this only works on R5+:


Declare Function NSFBuildNamesList Lib "NNOTES" Alias "NSFBuildNamesList" _
( Byval S As String, Byval F As Long, hNL As Long) As Integer

Declare Function OSLockObject Lib "NNOTES" Alias "OSLockObject" _
( Byval H As Long) As Long

Declare Sub OSUnlockObject Lib "NNOTES" Alias "OSUnlockObject" _
( Byval H As Long)

Declare Function OSMemFree Lib "NNOTES" Alias "OSMemFree" _
( Byval Handle As Long) As Integer

Declare Function ReadInteger Lib "MSVCRT" Alias "memcpy" _
( N As Integer, Byval P As Long, Byval B As Long) As Long

Declare Function ReadString Lib "MSVCRT" Alias "memcpy" _
( Byval S As String, Byval P As Long, Byval B As Long) As Long

Sub Initialize
        Dim session As New NotesSession

        Dim x As String
        Dim m As String
        Dim p As Integer
        Dim I As Integer
        Dim n As Integer
        Dim hNL As Long
        Dim GroupCount List As Integer
        Dim a As String
        Dim abook As NotesDatabase
        Dim aview As NotesView
        Dim doc As NotesDocument
        On Error Goto oops
        Set abook = session.GetDatabase("", "names.nsf")
        Set aview = abook.GetView("People")
        Set doc = aview.GetFirstDocument
        Do Until doc Is Nothing


                a = doc.FullName(0)

         ' Get Names List handle (fails on R4)

                'On Error Resume Next
                NSFBuildNamesList a$, 0, hNL
                'On Error Goto 0
                If hNL = 0 Then
                        Print "Failed"
                        Exit Sub
                End If

  ' Get memory pointer
                Dim pNL As Long
                pNL = OSLockObject(hNL)

  ' Get number of entries, skip to first entry
                ReadInteger n%, pNL, 2
                pNL = pNL + 14

  ' Read the entries
                For i% = 1 To n%
                        x$ = String$(256, " ")
                        ReadString x$, pNL, 256
                        p% = Instr(x$, Chr$(0))
                        pNL = pNL + p%
                        If Not p% = 0 Then x$ = Left$(x$, p% - 1)

  ' each group is listed in x$ in this loop

                Next

  ' Discard the Names List
                OSUnlockObject hNL
                OSMemFree hNL
                'Exit Do
                Set doc=aview.GetNextDocument(doc)
        Loop

Exit Sub


Applies to Notes Versions: 3; 4; 4.5; 4.6; 5; 6; 6.5; 7
Last Modified: July 19, 2005

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-03 17:23:07综合交流区版块每日发帖之星
日期:2015-08-19 06:20:00综合交流区版块每日发帖之星
日期:2015-09-15 06:20:00
发表于 2006-10-14 00:16 |显示全部楼层
Can you run console commands from a server program document?


From kanellopoulos@byte.gr who found it in the notes.net discussion:

This Win32 program is used in program docs to execute any console command on schedule such as:
  Tell http restart
  Show tasks

Example:
  Program name:     nconsole.exe
  Command line:     SERVER/ACME "tell smtpmta compact all"
  Server to run on: SERVER/ACME

- nConsole.exe

You also have to have the server name in the Administrator section of the server document in the name and address book.


Applies to Notes Versions: 4; 4.5; 4.6; 5; 6; 6.5; 7
Last Modified: January 20, 2005

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-03 17:23:07综合交流区版块每日发帖之星
日期:2015-08-19 06:20:00综合交流区版块每日发帖之星
日期:2015-09-15 06:20:00
发表于 2006-10-14 00:19 |显示全部楼层
How do you set up S/MIME?


There is a good article on Developerworks that describes the setup process and tradeoffs: "Lessons in secure messaging using Domino 6".
http://www-128.ibm.com/developer ... essaging/index.html

Applies to Notes Versions: 6; 6.5; 7
Last Modified: February 1, 2005

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-03 17:23:07综合交流区版块每日发帖之星
日期:2015-08-19 06:20:00综合交流区版块每日发帖之星
日期:2015-09-15 06:20:00
发表于 2006-10-14 00:21 |显示全部楼层
Can users recall messages they've sent?


Gregg Eldred provided the nice agent below to do this. Caveats are that the user must ask an administrator to run the agent and the administrators have to have access to everyone's mail file. A copy of the sent message must be selected for the agent to run on:

Sub Initialize
Code: Dim db As NotesDatabase, mailDb As NotesDatabase
Dim s As New NotesSession
Dim doc As NotesDocument
Dim dc As NotesDocumentcollection
Dim notesdbdir As New NotesDbDirectory("mailserver/ou")
Dim mailDoc As NotesDocument
Dim thisLog As NotesLog
counter = 0

'//evaluate the membership of the administrators group.  If user does not have access, then exit the routine
eval$ ={@IsMember("Administrators";@UserNamesList)}
admin = Evaluate(eval$)

'//check security level of the person running the agent - admin level
only
If admin(0) = 0 Then
Msgbox "You do not have the required access to recall messages.  Please contact your Lotus Administrator.  Thank you", 0+16, "Error - Security Level"
Exit Sub
End If

'//script will error if the mailDoc is not set, so force the script to resume next on any error
On Error Goto errHandler

'//get a handle to the current database
Set db = s.CurrentDatabase

'//get the first database in the directory on the server.
Set mailDb = notesdbdir.GetFirstDatabase(DATABASE)

'//get the documented marked for removal
Set dc = db.UnprocessedDocuments

'//check to make sure that a message(s) has been selected for recall. If not, then exit sub
If dc.count = 0 Then
Msgbox "You have not selected any messages to recall.  Please select the messages you wish to recall and run this agent again. Thank you.", 0+16, "Error - No Message Selected"
Exit Sub
End If

'//Due to server performance, get only one document at a time
Set doc = dc.GetFirstDocument

'//set the log file using some information from the document
Set thisLog = New NotesLog("Message Recall")
Call thisLog.OpenNotesLog("server/ou", "applog.nsf")
thisLog.LogActions = True


'//log brief information about the offending email for tracking purposes
Call thisLog.LogAction(" ********** RECALL STARTED ************* ")
Call thisLog.LogAction(db.title & " - " & doc.universalid)

'//check the database for the particular unid in question
While Not(mailDb Is Nothing)

  '//if the filepath of the database has 'mail' in it, then it should be a mail file
If Instr(mailDb.FilePath,"mail") Then
  
   '//in order to search by unid, you must open an instance of the mail file
  Call mailDb.Open("", "")
  
   '//Search for the document by unid
  Set mailDoc = mailDb.GetDocumentByUNID(doc.UniversalID)
  
   '//if the document matching is found, remove the
  document
  If Not(mailDoc Is Nothing) Then
   Call mailDoc.Remove(True)
   Call thisLog.LogAction("      -- document removed from db: " & mailDb.Title)
   
    '//count the number of databases that we remove the document from, for verification purposes
   counter = counter + 1
  End If
End If

  '//get the next database in the directory
Set mailDb = notesdbdir.GetNextDatabase
Wend

'//display message to the administrator
Msgbox "Recall Complete.  Please review log file for validation. Thank you and have a great day, " & s.commonusername,  0+64, "Message Recall"

'//finish up the logging and then close the log file
Call thisLog.LogAction(" Agent Completed -- " & counter & " databases were accessed.")
Call thisLog.LogAction(" ********** RECALL COMPLETE ************* ")
Call thisLog.Close

errHandler:
Resume Next
End Sub


Applies to Notes Versions: 4; 4.5; 4.6; 5; 6; 6.5; 7
Last Modified: March 14, 2005

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-03 17:23:07综合交流区版块每日发帖之星
日期:2015-08-19 06:20:00综合交流区版块每日发帖之星
日期:2015-09-15 06:20:00
发表于 2006-10-14 00:23 |显示全部楼层
Why does a Mail Rule seem to keep running even after it's deleted?


In a user's mail file, they should be disabling a mail rule before deleting it. That's because the actual ruleset lives in the CalendarProfile document and you have to update this ruleset by using the enable/disable buttons in the mail rule view. To get rid of an old rule that is still running, add a new rule, then use the view buttons to enable/disable it. Then delete the rule and all rules should be disabled.

Applies to Notes Versions: 6; 6.5; 7
Last Modified: March 9, 2005

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-03 17:23:07综合交流区版块每日发帖之星
日期:2015-08-19 06:20:00综合交流区版块每日发帖之星
日期:2015-09-15 06:20:00
发表于 2006-10-14 00:25 |显示全部楼层
Can you forward a copy of a user's mail and keep it in their mailbox?


You can use R6 Mail Rules in their mailbox, but the problem is that all the forwarded mail looks like it comes from you.

As an alternative, you can use this Before New Mail Arrives agent. However, it cannot include the Cc list directly; it has to be part of the mail message so a duplicate copy of the forwarded mail doesn't get sent to the original Cc list. This nice thing about this agent is that it retains the original "From" address so the user can reply to the sender directly.

Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim forward As NotesDocument
Dim forwardaddress As String
Dim rtitem As NotesRichTextItem
Dim rtnav As NotesRichTextNavigator

' **** set to the address that you would like to forward mail to ****
forwardaddress = "test@test.com"

Set db = s.currentdatabase
Set doc = s.DocumentContext

Set forward = New NotesDocument(db)
Call doc.CopyAllItems(forward, True)
Set rtitem = forward.GetFirstItem( "Body" )
Dim newtext As String

     'navigation element in order to place header in front of body text
Set rtnav = rtitem.CreateNavigator
Call rtnav.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)

     'determines if this is an internal message or not
Dim nn As New NotesName(doc.GetItemValue("From")(0))
Dim cc As New NotesName(doc.GetItemValue("CopyTo")(0))
Dim sto As New NotesName(doc.GetItemValue("SendTo")(0))

     ' Set up a header that will be attached to the email which
' specifies additional info about the original email since we include the Cc list directly
Dim testcopy As String
If doc.GetItemValue("CopyTo")(0) = "" Then
testcopy = "no one."
Else

Forall x In doc.GetItemValue("CopyTo")
  If testcopy = Null Then
   testcopy = x
  Else
   testcopy = testcopy + x + ", "
  End If
  
End Forall

End If


If nn.IsHierarchical Then 'if it is then get their internet address
If nn.Addr821 <> Null Then
   'if they have one then use this as the from address
  Call rtitem.BeginInsert(rtnav)
  Call rtitem.AddNewLine( 1 )
  Call rtitem.AppendText( "Original message sent to " + sto.Addr821 + " and copies were sent to " + testcopy)
  Call rtitem.AddNewLine( 3 )
  Call rtitem.EndInsert
  
  Call forward.RemoveItem("CopyTo")
  Call forward.RemoveItem("BlindCopyTo")
  Call forward.ReplaceItemValue("From", nn.Addr821)
  Call forward.Save( True, True )
  
Else
  ' otherwise if this is an internal message and the internet address of
           ' that user is not populated, use the agent signer's return address
  Call rtitem.BeginInsert(rtnav)
  Call rtitem.AddNewLine( 1 )
  Call rtitem.AppendText( "Original message sent to " + sto.Addr821 + " and copies were sent to " + testcopy)
  Call rtitem.AddNewLine( 3 )
  Call rtitem.EndInsert
  
  Call forward.RemoveItem("CopyTo")
  Call forward.RemoveItem("BlindCopyTo")
  Call forward.ReplaceItemValue("iNetFrom", nn.Addr821)
  Call forward.Save( True, True )
End If
Else
'otherwise this came in from the internet, so just use the from address as the inetfrom
Call rtitem.BeginInsert(rtnav)
Call rtitem.AddNewLine( 1 )
Call rtitem.AppendText( "Original message sent to " + doc.GetItemValue("SendTo")(0) + " and copies were sent to " + testcopy)
Call rtitem.AddNewLine( 3 )
Call rtitem.EndInsert

Call forward.RemoveItem("CopyTo")
Call forward.RemoveItem("BlindCopyTo")
Call forward.ReplaceItemValue("iNetFrom", doc.GetItemValue("From")(0))
Call forward.Save( True, True )
End If
forward.Send False, forwardaddress
Call forward.RemovePermanently(True)
End Sub


Applies to Notes Versions: 5; 6; 6.5; 7
Last Modified: April 12, 2005

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-03 17:23:07综合交流区版块每日发帖之星
日期:2015-08-19 06:20:00综合交流区版块每日发帖之星
日期:2015-09-15 06:20:00
发表于 2006-10-14 00:26 |显示全部楼层
How Do You Set Up Failover for Outbound SMTP Mail?


In your server configuration document, there is a field for setting the relay host for messages leaving the Internet domain. If you put a comma separated value in there (can be IP addresses or hostnames), the SMTP router will try all the outbound relay hosts you specify when trying to send outbound SMTP mail.

Applies to Notes Versions: 5; 6; 6.5; 7
Last Modified: December 7, 2005

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-03 17:23:07综合交流区版块每日发帖之星
日期:2015-08-19 06:20:00综合交流区版块每日发帖之星
日期:2015-09-15 06:20:00
发表于 2006-10-14 00:27 |显示全部楼层
Why is my Notes client having trouble replicating over satellite links?


There is a lot more latency on satellite links. Craig Wiseman suggested these parameters for your TCP/IP adapter that connects to your satellite modem:
TCP RECEIVE WINDOW : 224360
WINDOWS SCALING : YES
TIME STAMPING : NO
SELECTIVE AKS : YES
PATH MTU DISCOVERY : YES
BLACK HOLE DETECTION : NO
MAX DUPLICATE AKS : 3
TTL : 64
MTU : 900

You can use DrTCP to make these changes.


Applies to Notes Versions: 3; 4; 4.5; 4.6; 5; 6; 6.5; 7
Last Modified: June 30, 2006
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP