ftsearch method

Upload: sidrah-tariq

Post on 13-Jul-2015

1.129 views

Category:

Documents


6 download

TRANSCRIPT

FTSearch methodConducts a full text search on all documents in a view and filters the view so that it represents only those documents that match the full text query. This method does not find word variants.

Defined inNotesView

SyntaxnumDocs% = notesView.FTSearch( query$, maxDocs% )

Parameterquery$ String. The full text query. See below. maxDocs% Integer. The maximum number of documents you want returned from the search. If you want to receive all documents that match the query, specify 0.

Return valuenumDocs% Integer. The number of documents in the view after the search. Each of these documents matches the query$.

UsageIf the database is not full text indexed, this method works, but less efficiently. To test for an index, use the IsFTIndexed property. To create an index on a local database, use the UpdateFTIndex method. After calling FTSearch, you can use the regular NotesView methods to navigate the view. The methods navigate to a subset of the documents in the view: for example, GetFirstDocument returns the first document in the view that matches the full text query, GetLastDocument returns the last document in the view that matches the full text query, and so on. Use the Clear method to clear the full text search filtering. The NotesView methods now navigate to the full set of documents in the view. Query syntax The syntax rules for a search query are as follows. Use parentheses to override precedence and to group operations.y

Plain text--To search for a word or phrase, enter the word or phrase as is, except that search keywords and symbols must be enclosed in quotes. To be on the safe side, enclose all search text in quotes. Remember to use double-quotes if you are inside a LotusScript literal.

y y y

y

y

y y

Wildcards--Use ? to match any single character in any position in a word. Use * to match zero-to-many characters in any position in a word. Hyphenated words--Use hyphenated words to find two-word pairs that are hyphenated, run together as a single word, or separated with a space. Logical operators--Use logical operators to expand or restrict your search. The operators and their precedence are not (!), and (&), accrue (,), and or (|). You can use either the keyword or symbol. Proximity operators--Use proximity operators to search for words that are close to each other. These operators require word, sentence, and paragraph breaks in a full-text index. The operators are near, sentence, and paragraph. Field operator--Use the field operator to restrict your search to a specified field. The syntax is FIELD field-name operator, where operator is contains for text and rich text fields, and is one of the following for number and date fields: =, >, >=, Button) then you really don't have much to worry about. If you ever do encounter anything strange, you'll be able to trace it with the information contained in the offending document. Don't let panic mongers scare you away from Notes!"

Why is email address type-ahead so slow compared to R4? There are two workaround for this so far: 1) install a directory catalog on the system and have it do lookups in this 2) type a comma (",") when you want it to auto-complete the name

It will hopefully be fixed in a future version of R5. When Are Database Subscriptions Checked? They are checked according to your mail poll interval.

How do you set the outgoing domain name in the SMTP MTA on a per user basis? This technique, which can be used to host multiple domains provided you have unique names across all the domains, applies to the Lotus SMTP MTA 1.05 and higher: You can edit the short name field in the user's Person document to include the domain name. For example, if your domain is "company.com", you can enter the user's name as "[email protected]" and the mail will be sent with that as a reply address. To be able to receive mail from more than one domain, be sure to add the other domain to the Internet Domain Suffix field in the Global Domain document.

Why aren't laptop user's database designs being updated? Check that the Server is given at least designer access to the Local database. A frequent error occurs like this. The database ACL is set up this way: Default {Editor}

LocalDomainServers {Manager} OtherDomainServers {Editor} Admin {Manager}

Since the Server is usually in the group LocalDomainServers, it has manager access when being evaluated against the Server's N&A Book. The problem occurs when the Laptop user makes a replica of the DB. On the laptop, the user has a local N&A book which is used to resolve Group Names when evaluating the ACL when it replicates with the Server. The Server is usually not a member of the group LocalDomainServers in that private N&A book, therefore no design changes are passed when the replication occurs.

Is Notes Year 2000 Ready? From Lotus' Knowledgebase Article#147238:

Lotus Notes is ready for the year 2000. In fact, support for the year 2000 has been part of the Notes architecture from the very beginning of its development. Therefore, all Notes releases, beginning with Release 1.0, fully support all year 2000 date functions, and no human intervention is necessary for Notes to continue functioning correctly when we move into the year 2000. When discussing the impact of year 2000 dates in Lotus Notes, there are three areas of Notes date functionality to consider. These are: 1. Date entry. 2. Date calculations. 3. Notes server time synchronization. Below are descriptions of each of these areas and explanations of how Notes handles each: 1. Date entry. Since Release 1.0 of Notes, it has been possible to enter dates for the year 2000 and beyond simply by typing all four digits of the year. For example, "1 1 2000". For all Notes releases prior to Release 4.5, if only two digits are typed in for the year, Notes assumes that the user means the date within the base century 1900. For example: If the date entered is "1 1 20", Notes releases prior to Release 4.5 will internally store the year as "1920". Beginning in Notes Release 4.5, if only two digits are typed in for the year and the two digits are a value between 50 and 99, then Notes will assume that the year is within the base century 1900. If the two digit year value entered is between 00 and 49, then Notes will assume that the century is base 2000. For example: If the date entered is "1 1 97", Notes will internally store the year as "1997". If the date entered is "1 1 00", Notes will internally store the year as "2000". This new feature in Notes Release 4.5 will allow data entry to be more intuitive for users as we move into the next millennium. The only place where Notes does not make this assumption is with the @Date function. If you enter an @Date formula with a year as two digits, Notes assumes you mean the literal year that is entered. For example, @Date(94;3;16) will evaluate as 03 16 0094, when you probably intended @Date(1994;3;16) which will evaluate as 03 16 94. This is true in all Notes releases, including Notes Release 4.5. 2. Date calculations.

All calculations using pre- and post-year 2000 dates in Notes will execute correctly. Notes' internal TIMEDATE structure stores the dates in such a way that they can be manipulated in formulas in anyway, regardless of the year or any other part of the date. Notes internally supports up to the year 32767 on 16-bit operating systems (limited by a 15-bit year quantity in our TIME structure), and the year 41247 on 32-bit operating systems (limited by a 24-bit Julian date quantity in our TIMEDATE structure), so it is well prepared not only for the year 2000 but for many millenniums beyond that. 3. Notes server time synchronization. When a Notes server is started for the first time, it picks up the time from the operating system it is running on and then keeps its own time from then on until the server is brought down again. The Notes server already knows how to manage the year 2000, so it will automatically roll its time from December 31, 1999 at 11:59:59 PM to January 1, 2000 at 12:00:00 AM. The Notes server also knows how to work with leap years and daylight savings time, so both of these will also be handled correctly during the year 2000.

Why isn't my @DbLookup background macro running properly? For any @DbLookup or @DbColumn that is run from a backgound macro, you need to put the ReplicaID of the database where the macro is being run into the ACL of the database which is being used for the source of the lookup. A background macro is executed by $Chronos which doesn't have an ID by itself. That's why it uses the replica ID of the database containing the macro for authentication. How do you bypass Enforce ACL DB security? You can addDisable_Local_Access_Control=1

to your notes.ini file and restart the server. The server restart is required for the setting to go into effect.

How do you run the Compact process on a schedule? Here is an example program document you can use. Make sure the Notes directory is in your system PATH. Basics Program name: $COMPACT.EXE Command line: -S 5

Server to run on: ServerName/Domain Comments: Compact databases with more than 5 percent whitespace. Schedule Enabled/disabled: ENABLED Run at times: 10:10 PM each day Repeat interval of: 0 minutes Days of week: Wed, Sat

Can you support multiple SMTP domains using the SMTP MTA? Yes, look at the FAQ on changing the outgoing domain name for the SMTP MTA.

How do you warn users that a server will be shut down? Use the Broadcast message from the server console:Broadcast "Server will be shut down in 10 minutes"

This will send the warning message to all users using the server.

How do you revert the .nsf ODS back to R4? To convert the file format (On Disk Structure) of .nsf databases back to R4's, use "compact -r ". This will convert the database back. The ODS format of template files are the same so this is not needed for templates.

How do you fix documents with bad ReaderNames fields? If you access the database locally on the server, you can reset all the bad ReaderNames fields by using an agent. ReaderNames fields are only enforced when you access the database from the server. This also applies to AuthorNames.

How do you specify a new location for the desktop.dsk file? You can add a line to the NOTES.INI file telling Notes where to find the DESKTOP.DSK file. By default it looks in the Notes Data Directory. E.g., the following line :DESKTOP=C:\NEWDIR\DESKTOP.DSK

will look for the desktop.dsk file in c:\newdir.

What can the Lotus SMTP MTA do to prevent SPAM? From a member of Lotus' SMTP team: The term 'SPAM' covers such a broad spectrum of SMTP mail 'attacks' that there is no easy solution to the prevention of 'SPAM'. The MTA provides rudimentary capabilities to deal with 2 types of 'attack'. 1. Relays These are messages sent to your SMTP server from an outside source that are not destined for a local recipient, but are for another external SMTP address. This results in your SMTP server 'relaying' the message onto the external destination. Before the explosion of the Internet and the use of DNS to provide 1 hop source to destination routing of messages this was an acceptable practice on the Internet. Infact the original concepts relied on it to provide source to destination routing across many interconnected hosts. However the ability to accept and transfer 'Relay' messages brings 2 problems to the modern Internet SMTP host administrator. Firstly it results in the local organization incurring transfer costs to handle messages that have no relation to that organization. Secondly, as SMTP is in general an unauthenticated protocol, it became a mechanism for the distribution of 'SPAM' mail. A host that was available to relay mail could be used as the 'distribution' point for a broadcast/offensive 'SPAM' message. Often the message would be constructed to make it look like it originated from that host domain, making to original distributor virtually anonymous. As a result, most SMTP servers directly connected to the Internet are configured to provide some measure of protection to deny the ability to relay messages through them. The initial SMTPMTA option to prevent relays was provided as a quick 'band-aid' to a growing problem. The MTA was designed to accept and support the concept of Relay messages. This was achieved by allowing the Inbound message converter to pass any message that is not destined for a local user to the Outbound Work Queue so that the Outbound Transport could route it out. The first 'band-aid' solution was an ini variable, SMTPMTA_REJECT_RELAYS=1. This ini variable switched off the Inbound Converters ability to perform relays. If the converter found a message that was supposed to be relayed, instead it would flag an error and place the message in state that the DRTask could generate a Non-Delivery report. This solution has a number of limitations: It cannot distinguish relays from external originators that need to be blocked and messages from local POP/IMAP clients that need to be relayed. Often the Originator address on a Spam relay message is bogus, so the NDRs often failed an ended up DEAD in either the Inbound or Outbound WQ's, which meant more work for the Administrator to have to monitor and clean up after. The check only occurred after the entire message has been received, which results in the hosting server incurring the cost of reading in the message. The check only looks for messages that were destined for the Outbound WQ from the Inbound WQ. There is a mechanism of addressing that can cause an MTA to deliver the message to mail.box, and the Router to deliver it back to smtp.box. This method of addressing circumvents this relay check, and is referred to in the internet as '% hack' addressing.

The MTA team had been aware of the potential of '% hack' addressing prior to the need to reject relays, and the MTA already had an .ini variable to handle messages that had an SMTP address that results in a Notes message that will be delivered back to SMTP. This is another 'band-aid' solution. It works, but there are drawback. The ini variable is SMTP_OCH_REJECT_SMTP_ORIGINATED_MESSAGES=1. When the MTA Inbound Converter creates a message in Mail.Box it writes a field called SMTPOriginator to hold the SMTP specific Originator information for NDR purposes. This .ini variable plays off of this functionality. It causes the Outbound converter to reject any message in SMTP.BOX that has an SMTPOriginator field (i.e originally came from SMTP). This will block the '% hack' relay case in SMTP.BOX. The downside is due to the way Notes does NDRs. When Notes sends back an NDR for a failed delivery it does not send back a new message. It will send back the original message, with all the original fields, but it adds additional information. This means that Notes NDRs to incoming SMTP messages will have an SMTPOriginator field and will be blocked by this .ini variable.

To overcome most of the limitations of the Reject_Relays ini variable the MTA implemented a new mechanism to handle the denial of relays. This is controlled by the SMTPMTA_ALLOW_KNOWN_DOMAINS=1 .ini variable. This allows the MTA to refuse any message which is deemed to be a Relay during the inbound transport session rather than in the Inbound Converter. For each incoming connection, and each incoming recipient the MTA makes a determination regarding the nature of the Connection and the nature of the Recipient, each can either be 'External' or 'Internal'. An 'Internal' Connection can send messages to both 'Internal' and 'External' Recipients. An 'External' Connection can only send to 'Internal' recipients, 'External' recipients will be rejected. The MTA determines the states as follows. The MTA knows which Internet Domains it is responsible for, from the Internet Domain Suffix list in the Global Domain Document. The Inbound Sessions Handlers have access to this list of domains. When an incoming connection is received the Session Handler can obtain the IP address of the host that is connecting to it from the IP stack. The Session Handler then uses the DNS to resolve the IP address into a host name. Once it has got the host name, it compares it to the list of 'local' domains. If the connecting host is in one of the 'local' domains, then the Connection is deemed 'Internal'. If the host name is not in a 'local' domain, or the DNS was unavailable, or unable to provide a hostname, then the Connection is not to be trusted and is deemed 'External'. As the connecting host goes through the SMTP protocol exchange, the Inbound Session handler checks each recipient address against it's list of 'local' domains. If the recipient is for one of the local domains, then it is considered 'Internal', anything else is 'External'. Once both states are know the Inbound Session handler can decide if it will accept that recipient or reject that recipients. This mechanism solves the previous problems: It has an ability to distinguish between external relays and internal POP/IMAP clients. It does not need to accept the message content before decided whether it is a relay or not. This reduces the network traffic and means no NDRs to clean up for the Admin. There are, however, still some potential limitations: Because it uses DNS reverse lookups to 'validate' an incoming connection, if local POP/IMAP

clients have IP addresses that are not in the local DNS, then they cannot be seen as 'Internal' If the incoming connection is through some Proxy Servers, this may mask the true IP address of the connecting host from the MTA, so that the MTA always sees the incoming host being the Proxy Server. If the Proxy Servers IP address resolves to a local host name, then all incoming connections are considered 'Internal' Because the Inbound Sessions handlers do not have access to the Router Routing tables, they cannot make a further determination as to whether a '%hack' type address to a local domain is truly an inbound message or a 'Relay'. As a result this option will not prevent inbound relays using a '%hack' address to a local domain, so the previous .ini variable may need to still be implemented to prevent these relays. 2. Attacks Whilst a Relay is technically an attack, it is primarily an attack against another system, using the local SMTP host as an unwitting carrier. It is also possible that a connecting system may attempt to deliver a message to a local address that is considered an attack. This maybe in the nature of an offensive message, or perhaps an unwanted message. Oftentimes these messages are repeated over and over continually, resulting in a degradation of the local mail service. These types of attack are harder to prevent ahead of time, as they often have no distinguishing features that separate them from ordinary acceptable messages. There are 2 possibilities to help combat them though. The first is to attempt to authenticate the connecting host to determine that it is a 'real' SMTP host and not an Internet client attempting to attack the server. Until true Server-Server authentication using a PKI setup is available there are a couple of mechanisms. The MTA provides one of these, however its usefulness is somewhat in question. When a host connects to the MTA, it provides a HELO/EHLO command with it's own hostname as a parameter. Early on it was thought that this could be used to 'authenticate' the connection, as most 'SPAM' attacks used a bogus name at this point. A number of vendors including the MTA implemented a check of this parameter by taking the incoming IP address, looking it up in DNS to get a host name and comparing the result to the HELO parameter. If they did not match then the connecting host is not to be trusted. Over time it has become obvious that this check is only of little value as there is no requirement that Internet SMTP hosts have the necessary reverse lookup entry in DNS. As a result this type of check can reject connections from otherwise perfectly valid SMTP hosts. Each Admin needs to bear this in mind when considering to implement this option. It is enables via the SMTPMTA_HELO_DOMAIN_VERIFY=1 ini variable. The second option is the provide a mechanism for admins to 'blacklist' connecting hosts/domains that have previously caused problems so that they cannot cause problems in the future. The MTA provides this via the SMTPMTA_Denied_Domains ini variable. This variable takes the path to a text file as a parameter. That text file should contain a list of hosts that the Admin wishes to refuse connections from, one per line. When this is enabled, the first Inbound Session Handler will take this list and perform DNS lookups to turn it into a list of IP addresses, which is then shared with all the other handlers. Each incoming connection is then compared to the 'blacklist' of IP addresses and the connection refused if there is a match.

As can be seen the MTA provides some basic measures for 'Anti-Spam' however it is by no means complete and Admins should look to R5 for a more complete implementation and ongoing mechanisms. Please check the Release Notes for exact details of all the .ini variables, including correct spelling and in what version they were first supported in.

You can also set up ASSP as an anti-spam proxy by following Andrew Pollack's Blog Entry.

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

How do you remove Stored Forms from documents? Create an agent with the following code:SELECT $TITLE="Form Name"; FIELD $TITLE:=@DeleteField; FIELD $INFO:=@DeleteField; FIELD $WINDOWTITLE:=@DeleteField; FIELD $BODY:=@DeleteField; FIELD $ACTIONS:=@DeleteField; FIELD FORM:="Form Name";

Notes V4 has a new $ACTIONS field that must be also deleted.

Why do users get notified of new mail even though they don't have any? The database compaction process on the server will cause the new mail flag to be set incorrectly. Turn this off and the false new mail signals should stop.

If the new mail notification indicator stays on, the NewMailSeqNum=X variable in the Notes.ini file also may have gotten out of sync with the server. Shut down Notes, erase the "X" part of the variable and then restart Notes.

What would change the list of servers I see in the Database Open dialog? When you do a File/Database/Open, Notes will show you the servers for any database replica icons on your workspace. If you have renamed a server, it will continue to show up as long as you have an old replica icon from the old server on your workspace. If you select "Other...", it will show you all servers known by your home server.

What TCP/IP port does Notes use? Port 1352

How do you run Notes in "Kiosk" mode? Adding "/kiosk" to the Notes command line will bring Notes up without menus. Unfortunately, this clips the top of action buttons currently and you can still use the mouse to grab the Notes window, so it is not as useful as it could be. This appears to be fixed in Notes 4.61 and above.

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 Why can't users with Depositor access create documents even though I have enabled Public Access on the form? This can happen if you have any @DbLookups in fields on the form. Even if you enable users to have Public Access to the form and to the views used by @DbLookup, you will have to give Reader access to the Replica ID in the database to the ACL. For example, you would add an ACL entry of "85255CEB:0032AC04" with Reader access.

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 [email protected]) 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 [email protected] 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

Why do new documents not show up in views after a recent server crash? Running UPDALL -R should fix these views. However, this doesn't work all the time. When a server crashes, views that were marked for re-indexing and were queued for UPDATE tend to not be re-indexed. That can be a lot of views. Apparently they think they're indexed and don't mark themselves to be indexed again. Tell anyone who thinks something hasn't been updated to do a SHIFT-F9 while in the view that seems affected (not from their workspace).

How do you turn off Notes crash dumps (notes.rip files)? Disable Quincy (the crash dump program) by renaming the executable, QNC.EXE in the Notes directory. You can also uninstall Quincy using the command line "qnc -u".

How do you keep Notes from being started for mailto URLs? This applies only to Windows95 and Windows NT (from a MS tech support article).

Set Microsoft Internet Explorer Options 1) In Microsoft Internet Explorer, on the View menu, click Internet Options. 2) On the Programs tab in the Messaging section, click to select Microsoft Outlook as the default mail program, and then click OK. Set the Mailto Protocol 1) Double-click the My Computer icon. 2) On the View menu, click Options. 3) On the File Types tab click to select, URL:MailTo Protocol from the Registered File Types, and then click Edit. 4) In the Edit File Type dialog, click Edit. 5) Under Actions, click to select Open, and then click Edit. 6) Verify that the "Application used to perform action" reads ":\\Outlook.exe" -c IPM.Note /m "%1". For example:"C:\Program Files\Outlook\Office\OUTLOOK.EXE" -c IPM.Note /m "%1"

NOTE: This is only an example of an Outlook.exe application path. Your may vary. Check to make sure it is correct on each PC.). 7) Click OK, Close, and Close.

Set the Notes.ini File Entry 1) Click the Start, point to Find, and then click Files or Folders. 2) In the Named box, type Notes.ini, and then click Find Now. 3) Double-click to open the Notes.ini file in the Search Results window. 4) Type the following line after the [Notes] header:NotDefaultMailTo=1

5) Close and save the Notes.ini file.

Can you use the SMTP MTA over a dial-up link? If you have a dedicated IP address and don't have to worry about leaving your phone line connected all the time, this is no problem. You just have to set up NT or Win95 to automatically redial if the line gets disconnected. Your system is essentially on the Internet. However, if you have a dialup PPP account with dynamic IP (what most ISP's provide), it is more complicated. You have do several things: 1) Set up Win95 or NT to automatically dial when your Notes server needs to connect to the Internet. Do this by testing it with MSIE or Netscape. 2) Configure the SMTP MTA. Test sending mail and see if Win95 or NT automatically dials up and sends mail to an Internet address. 3) Ask you ISP to save all your mail in a multidrop POP3 account at their site. Your ISP should

virtual host your domain (company.com) and hold all mail going to it. Get a copy of POP3Fido and configure it to retrieve mail (this should cause Win95 or NT to autodial when needed). If you use OS/2 or are having problems with step (1), it is easier to use a Windows-based proxy such as WinProxy. These proxies can be set up to automatically dial the Internet. An additional benefit of this method is that they will also give your company dial-on-demand access to the web or to Usenet newsgroups. Notes R4.6 and R5 include dialup SMTP support via the ETRN command. However, it is not documented clearly that your ISP has to give you a static IP address and your ISP also has to support ETRN on their mail server. The reason this is so complicated is that SMTP is a "push" protocol (in Notes parlance). One of the destination SMTP servers is always expected to be available. Usually, your ISP's will set up their SMTP server as a backup in case your system is down. If you bring up your connection "for long enough", the ISP's SMTP server will send all the mail it has collected for you, but this still requires a dedicated IP address. This technique is not as reliable as a "push" (outgoing mail via SMTP MTA), "pull" (via a POP3 account) technique.

Can I set the default ACL on the N&A Book to Reader? Notes has been designed to have the default ACL set to Author with no create or delete privileges. Without this, people cannot edit the items in their person document like phone number, location, signature, picture, etc. They also cannot delete the ID file from the N&A book after installation. And worst of all, they cannot edit any groups that they have been given ownership of. You should make the default ACL set to Author (with both delete and create turned off). Can you keep multiple versions of Notes on the same system? Yes. On an install of a new version, you should: 1) Put the \Notes directory in your PATH. 2) For major revisions (3.x -> 4.x -> 5.x, etc.), keep a separate copy of the \Notes\Data directory because the Notes internal database format changes between each version; new major versions will upgrade old database versions to the latest which can then no longer be read by the old versions. You can point to the appropriate data directory by editing your notes.ini file; you will only need one per major revision (NoteData.3, NoteData.4, etc.) 3) After the install, move the notes.ini file into the \Notes directory. 4) Before installing a new version, rename the directory of the old version to something else (e.g., \Notes to \Notes.463). 5) Install into the same non-renamed directory (e.g., \Notes), but before doing this, copy your desktop.dsk file into this directory so it can be upgraded if needed. To use a specific version: 1) Make sure you are not running anything from \Notes (e.g., Notes Single Logon which is nsl.exe, the mail check in R5, the Notes client, etc.)

2) Rename the current \Notes directory to whatever version (e.g., \Notes to \Notes.463) it was. 3) Rename the directory with the version you want to \Notes (e.g., \Notes.50 to \Notes). 4) Start Notes. You have to keep the same directory structure because in later versions of Notes, there is information in the registry related to OLE automation. If you use separate directories for each version, OLE automation may not function correctly. With the caveat about OLE automation, you can run multiple versions simultaneously if you: 1) do not put the \Notes directory in your PATH 2) run the nlnotes.exe (or the appropriate executable for your platform be replacing the first character in the filename) instead of running notes.exe From Olivr Zsigmond ([email protected]) comes this tip on how to run the R5 server locally with multiple clients: Rename dirs of your existing versions of Notes R3, R4.x as described above. Move your NOTES.INI into the appropriate NOTES.EXE dir. Modify the Directory line in NOTES.INI to show the appropriate DATA dir. Install Domino R5 to \lotus\domino Install Notes R5 All Clients to \lotus\notes Both directories will have their own NOTES.INI file and DATA dir. Start Domino server and complete the setup. Start any of the Notes clients (R3,R4 or R5) from its directory and you can use the local R5 server. You can stop the client and start any other one without stopping the server. The new rules are that you can start only one client and you can't start the client from \lotus\domino because if you stop this client, it will stop the Domino server as well. Because of Windows Logo requirements, the \data directory structure in R6 is more confusing. There are some files in \lotus\notes\data underneath where you installed the main \lotus\notes executables, but there are also NSF files and the notes.ini file in "\winnt\profiles\\local settings\application data\lotus\notes\data". You can change to a similiar structure as R3/R4/R5 by moving the files and then changing the Directory attribute in the notes.ini to point to the new directory. In the registry, you should update the DATADIR value in the "HKEY_USERS\\Software\Lotus\Notes\Installer" key to point to the data directory you used so that the installer knows how to uninstall and update your current files. In addition, the following two keys should point to the data directory: "HKEY_LOCAL_MACHINE\SOFTWARE\Lotus\Notes\6.0\DataPath" "HKEY_LOCAL_MACHINE\SOFTWARE\Lotus\Notes\DataPath" Note that this will probably break R6's roaming user support. Installing multiple versions of Notes is something usually done by developers, so this should be a reasonable caveat.

Mike Kemp ([email protected]) uses this technique for running multiple simultaneous versions on NT/Win2K: So I could respond quickly to user's 'phone queries I had my desktop 'admin' workstation set up so I could run several Notes clients concurrently. The OS had to be NT (or W2K) - definitely not W9x. The set up is along the same lines as in your article, with the difference that the startup shortcut preferences point to the appropriate nlnotes.exe (rather than the more usual notes.exe) similar to this: for R4.5 client :- C:\NotesR45\nlnotes.exe =D:\NotesR45\Data\notes.ini for R4.6 client :- C:\NotesR46\nlnotes.exe =D:\NotesR46\Data\notes.ini for R5.x client (my main admin tool):- C:\R5Client\Notes.exe =D:\R5Client\Data\notes.ini. and even (as an experiment):- C:\NotesR33\_lnotes.exe =D:\Notes33\Data\notes.ini. Note that the R5 shortcut pointed to the Notes.exe and MUST be started first. With this structure in place I could + between the various clients at will and so be able to 'talk my callers' through a problem quite rapidly. I could also check the operation of a database development intended for the environment. The only drawback was the occasional entire machine 'lock-up' if I tried to use the Admin console in more than one client at a time - but this did not affect the servers. I have not had the opportunity yet to try out this procedure involving ND6.

Can you add a database icon which launches a program? There are several things you can do to run programs from the Notes desktop: 1) Use a smarticon or a button to launch a program:@Command([Execute]; "D:\\dir\\subdir\\executable.EXE"; "parameters")

2) If you are running a program, add this to the PostOpen event of the database script:Sub Postopen(Source As Notesuidatabase) Dim taskId As Integer taskId% = Shell("CALC.EXE", 1) End Sub

3) If your application is an OLE program, create a single document (with an embedded OLE object) in the database and set the form to automatically launch the first object in the form. Add this to the PostOpen event of the database script:

Sub Postopen(Source As Notesuidatabase) Dim workspace As New NotesUIWorkspace Dim uidoc As NotesUIDocument Set uidoc = workspace.EditDocument(0) End Sub

What programs will back up Notes databases without needing a Notes server shutdown?

Cheyenne ArcServe has a Notes agent which lets it back up open databases. The agent requires a "work area" of the size of your largest Notes database because it creates a replica of a database into a separate directory before backing up that database.

Tivoli TSM (formerly IBM's ADSM) will back up open files and can back up databases incrementally.

Veritas's Backup Exec with the Open File Option (they also have a Domino agent).

Quadratec's Time Navigator can do full and incremental backups

Unix's tar (and ports of it to other platforms like NT and OS/2) will back up open files.

How do you get rid of all the deletion stubs in a database?

All document deletion stubs in a database can be purged by selecting File/Database/Information/Replication and setting the cutoff date ahead two days. Once this is done, the deletion stubs are purged immediately. NOTE: Depending upon the Notes platform, it may also be necessary to set the purge interval to one day as well as setting the cutoff date ahead. This is not required for all Notes platforms.

How do you get Notes to rebuild corrupted views? From the server window, run:load updall dbname -C load updall dbname -R

Dbname is optional. If omitted it will operate on all db's. -C builds indexes for all views that have not already been built. -R rebuilds indexes for all views that have already been built.

Who can I call to find my local reseller and licensing information? You can call Lotus at 1-800-782-7876 in the United States.

How do I get rid of the "Can't open view $DirectoryAssistance" error? This was a feature added in Notes 4.5 to enable servers to provide a single person/group directory for multiple Notes domains. However, it is a common mistake to put the standard names.nsf file in the Master Address Book field of the server document. The result is the error message above. To correct this problem, either remove names.nsf from this field, or create a new database named mab.nsf from the mab.ntf template and put mab.nsf in this field. If you really do have NABs for multiple domains on your server, you can set up Directory Assistance as specified in the on-line help.

How do you fix the Mail Archiving Agent so it keeps documents in the right folders? There is a sample modified database on The View's web site. What it does is create a categories field with a list of the folders the document belongs in so it can carry the folder location information with the document when it is moved into the archive. Pawel Bartuzi ([email protected]) suggested fixing Lotus' archiving agents instead. Modifications made to mail archiving agent ("Periodic Archive", Notes 4.6.5): In the Declarations section added:

'PB start Dim strlstFolders_g List As String 'PB end

In the ProcessDocuments procedure added an the very beginning::'PB Dim Dim Dim start doc_l As NotesDocument strUNID_l As String lngCount_l As Long

Forall a In dbSource.Views If a.IsFolder Then If (Not a.Name Like "(*)") Or (a.Name = "($Inbox)") Then Set doc_l = a.GetFirstDocument Do While Not doc_l Is Nothing strUNID_l = doc_l.UniversalID If Iselement(strlstFolders_g(strUNID_l)) Then strlstFolders_g(strUNID_l) = strlstFolders_g(strUNID_l) & ";" & a.Name Else strlstFolders_g(strUNID_l) = a.Name lngCount_l = lngCount_l + 1 If Not session.IsOnServer Then Print "Reading documents... " & a.Name & " - " & lngCount_l End If Set doc_l = a.GetNextDocument(doc_l) Loop End If End If End Forall 'PB end

and, an the beginning of the for...loop:'PB start If Not session.IsOnServer Then Print "Checking documents... " & i & " of " & numDocs 'PB end

In the ArchiveDocument procedure, add at the very end:'PB start Dim strFolders_l As String Dim strFolder_l As String Dim intPos_l As Integer If Iselement(strlstFolders_g(docSource.UniversalID)) Then strFolders_l = strlstFolders_g(docSource.UniversalID) intPos_l = 0 Do While Not Len(strFolders_l) = 0 intPos_l = Instr(1, strFolders_l, ";") If intPos_l = 0 Then strFolder_l = strFolders_l strFolders_l = "" Else strFolder_l = Left$(strFolders_l, intPos_l - 1) strFolders_l = Right(strFolders_l, Len(strFolders_l) - (intPos_l)) End If

Call docArchive.PutInFolder(strFolder_l) Loop End If 'PB end

Remarks: - Further optimizations can be done to minimize the size of the strlstFolders_g list by creating something like a "folder dictionary": then only folder IDs would be put in the list, it could be beneficial on very large mailboxes with very long folder names. - Modifications to the "Archive selected documents" agent are basically the same, with the exception that some global variable names differ (docSource->note, docArchive->newnote, session->s, dbSource->sourcedb), also you have to be more careful where you place modifications as there are fewer procedures in "Archive selected..." than in "Periodic Archive" and they are longer.

How do you manage ACL information across an organization? Notes R4 allows you to set a database's properties so that ACL's are consistent across all replicas. Notes R5 has built in tools for updating the ACL's across multiple databases. Percussion Software has a product called Server Admin Plus that will also let you manage and audit ACL information. Candle also has a system administration tool. IVES Technologies has a product called ACL Reporter Updater which is a platform independent administration tool that provides security management for enterprise-wide Lotus Notes/Domino networks.

Can fields be added to the N&A Book? There's no problem with adding fields and views, but don't change anything that is pre-existing. Do all your work in a template, and be very careful with the management of that template. There are two dangers: (a) losing your modified template due to inadvertant replication from a newly installed server that has a standard NAMES.NTF that is newer than your custome version, and (b) having two different templates for the NAB on different servers such that $DESIGN on each server re-inherits conflicting designs every night causing a "Design Storm" that can bring your whole network down. Do not name it NAMES.NTF, or it may be overwritten by a software upgrade. Make sure that the template name is not the default (StdNotesAddressBoook). You can either make it a replica of the original NAMES.NTF, or a copy.

If it is a replica, be sure to remove the original, be sure to let it replicate to all servers, and be especially sure that any time a new Notes version is loaded that you merge any changes in the new version's NAMES.NTF into your template and then delete that NAMES.NTF from your server before you allow the upgraded server to replicate with any other server. If it is a copy instead of a replica, it is best that you uncheck the setting that allows replication of the template name for your NAB and make sure that only one server in your organization is set up to inherit the NAB design from your modified template. Just for insurance it might be a good idea to use the ACL or selective replication to insure that your main hub server never accepts NAB design changes from any other server. For Notes R4 and R5, the preferred way of adding fields to the NAB is to use subforms.

How do you make the infobox reappear if it doesn't show up? From Lawrence Wagner ([email protected]): METHOD #1: Using the keyboard: 1. Select File, Database Properties. 2. Hold down the ALT key and press the spacebar. 3. If a menu appears, select Move. If not, type the letter "m". 4. Use the arrow keys (i.e., the up arrow) on the keyboard to move the InfoBox back onto the screen. You should eventually see a dotted line in the form of a rectangle. Once you do, press ENTER. The InfoBox will reappear on the screen. METHOD #2: The NOTES.INI variable that is responsible for the position of the InfoBox on the screen is:Win32InfoboxPos=

If you cannot find the InfoBox, modifying the values in the NOTES.INI to will also make it reappear. The values in this parameter refer to x, y coordinate locations. By changing these to numbers that fit within the pixel resolution (for example, 800x600), the InfoBox will reappear. Examples:Win32InfoboxPos=441 79

orWin32InfoboxPos=333 261

How do you install the Notes client without user intervention?

Thanks to [email protected] for pointing me at this IBM tech support article: To automate an install, you create an install response file that includes all the options you want users to have. After you create the response file, you package it with the install files and copy the files to a network for users to download. These steps describe how to set up a workstation installation so that users only need to click a shortcut to launch SETUP.EXE, with defined parameters in the command line, to install Notes with all the customizations you choose. 1. From the Install directory, type SETUP -R. This action creates the response file, SETUP.ISS, which is stored in your system directory. (Depending on the operating system, this file will be placed in theWINDOWS or WINNT directory.) 2. Go through the user setup dialogs, actually completing a normalinstallation. The response file records all the settings you specify. 3. Copy the entire Install directory to a network drive. 4. Copy the response file (SETUP.ISS) into the Install directory on thenetwork. The SETUP.ISS file must be in the same directory as the restof the installation files. 5. Right-click the SETUP.EXE file in the installation directory, andfrom the pop-up menu, select Create Shortcut. This will create a shortcutto SETUP.EXE in the installation directory. 6. Right-click the new shortcut, and from the pop-up menu, selectProperties. In the Target field, enter the following at the end of thepath and file name, making sure to place a space between the SETUP.EXEat the end of the path before the below text is added:-s -f1

where is replaced with the full path to the file, including the filename. This action creates a shortcut to run the Notes install program with the automated file. The shortcut can be renamed as desired, but keep in mind that the original SETUP.EXE will still be visible in the installation directory as well. You will want to somehow direct users as to which item in the directory they need to double-click on to run the Notes installation with the automated feature. Although all the installation files must be in one directory, the shortcut can be placed in a different directory if desired. Alternately, the full command can be entered into the Windows Start -->Run command window as follows:\SETUP.EXE -s f1 \SETUP.ISS

Note: There is also a -f2 switch which is used to specify the location ofthe log file. The log file is created during the installationprocess and if no location is specified, the log file will be put in the same directory where the .iss file was found. Please note that the syntax is very important. Extraneous spaces andcharacters will either cause the switch to not work or to bemisinterpreted. One customer reported that spaces between the switch"-f1" and the start of the path caused the switch to not workproperly.

Example of Correct Syntax: setup.exe -s -f1c:\myresponse.iss-f2c:\logdir\mylog.log Supporting Information: When the Notes Installation is run silently using the steps detailed in this document, you will see no indication that the install is running. No program windows are opened, and no dialog boxes or progress bars are displayed. When the installation is completed, the Lotus Product Registration windows will appear on the screen, to be filled out or closed by the user. Note: For an in-depth look at the methods and options of theInstallShield Silent Install, refer to the following URL, at the InstallShield (http://www.installshield.com) web site: http://support.installshield.com/kb/default.asp?action=Display&documents_id=101901&product name=&category=&code=&documentnumber=Q101901&selectproductname=InstallShield__5& selectcategory=&selectkeyword=&documentnumber2=&old_document_number=&rn_descriptor =&contents=Creating%20a%20Silent%20Installation%20&org=search&onlyOne=yes&date_pu blished=1/1/90

How do you put a Notes Database on a CD? From [email protected]: The following steps are necessary to put a database onto a CD or other read-only media: 1. Select the database and choose Design - Views and make sure that all views are unhidden (i.e. do not have parentheses around their names). It is important to temporarily unhide the hidden views so that the view indexes for these views can be created (see Step 2 below). 2. Open the database and press CTRL+SHIFT+F9. This key combination will rebuild all of the views in the database. This includes both open and hidden views, as well as server-based or local databases. It is important to build the view indexes before copying the database to the CD or other read-only media as, if they are not created and stored in the NSF file prior to adding it to the read-only media, Notes will attempt to create them and will not be able to because it cannot write to the media. Note: If a view is not built, pressing CTRL+SHIFT+F9 will cause Notes to build the view. If the view is already built, pressing CTRL+SHIFT+F9 will cause Notes to update the view, not rebuild it. 3. Create the full-text index for the database if you intend for the database to be queried using Notes' full-text indexing capabilities. You can do this using the File - Full Text Search - Create Index command. This index must be created prior to putting the database on the read-only media for the same reason described for view indexes in Step 2 above.

Note: Most CD mounting software conforms to the ISO 9660 standard which does not allow for periods in directory names. When creating full-text indexes in Notes, it by default creates a directory with the extension .FT (period - FT) which is against the ISO 9660 regulations. For example, if your database is called DATABASE.NSF, then Notes will create a subdirectory called \DATABASE.FT underneath the directory which contains the file DATABASE.NSF. To workaround this issue, do the following a. Create another directory which has the same name as the database, but with no extension (i.e. \DATABASE instead of DATABASE.FT). This new directory name must be the same as the database name. b. Copy all of the files created for the full-text index from the original directory into the new directory. c. Delete the full-text index files from the old directory name (the name with the .FT extension) and remove the directory from the system. Notes will now see the new directory and use the full-text index files inside of it. It does not require the .FT extension to be on the directory name. The .FT is only used as a naming convention when creating the directory for full-text indexes so that those directory names wouldn't show up along with the other directory names in the File - Open Database dialog box. 4. Do an operating system level copy (such as using the DOS or OS/2 COPY command) of the .NSF file from the writeable media which you are currently using onto the media which will be used to press the CD or other read-only media. Be sure that you do an operating system level copy during this step and not a File - Database - Copy from within Notes as using Notes to copy the database will remove the view indexes.

Also, be aware that Notes databases on a CD can only be viewed by the same major version of Notes that the Notes database was indexed with. The view index and full text index are improved with each major version, i.e., R5 can't read R4 DB on CD, etc. To work around this with old CDs you may still want to view, you can copy the .nsf file to your local system, follow the procedure above, then copy all the files onto a new CDR because CDRW drives are so inexpensive now.

Can you run Notes 4.6 and 5.x clients simultaneously? Yes, you can type these on the command line and change the paths appropriately: SET NOTESPARTITION=1 START c:\notes\program\nlnotes.exe =c:\notes\data\notes.ini Note that this is unsupported by Lotus. Use at your own risk, etc.

What is involved in deploying Notes to International users?

From a posting by

Kevin Urbanek:

"There are some questions you will need to answer before a decision can be made. First the legal stuff. Legally, a NA ID file can not leave the US or Canada (unless the US State Dept grants you an exception). NA Notes servers can talk to Non-NA Notes servers just fine with one exception, encrypion keys (all keys would need to be International for them to be used worldwide). Note that not all countries allow encrypted data or have rules/laws governing encryption. Some questions: 1. Do your applications and/or users use encryption regurally? BTW: make sure to check out encryption laws in the different countries (France,Russia South Korea and others have laws governing encryption and the keys) 2. Do your users travel internationally? (i.e a NA Notes ID travels to Europe) If you want to keep your NA setup that you currently have, when you setup the International users/servers, you will need to create a new Organizational certifier that is International. Even though you can create an International ID from a NA certifier, this International ID still carries enough of the NA encryption info (I do not know exactly what part) to make it illegal to export. So, you would end up with 2 Organizational certifiers, which means you need to cross certify the organizations. You can still use one Domain if you wanted. Depending on number of users, you may want to look at 2 Domains, one NA and one International. If you answered "Yes" to the above questions, then you might want to think about migrating to World Wide Security (International version) or appy to the US State Dept. for an exemption. If you look to migrating, make sure you plan the migration of IDs and also review the Notes applications you have for encyption and sections. If you keep the naming conventions you have in place, Reader and Author names should not be a problem."

How do you create a database that is usable as an address book for name lookup? You only need to have the views ($Users), ($PeopleGroupsFlat), and ($PeopleGroupsHier) in your database. You also need the ($NamesFieldLookup) view if you want people to be able to begin typing the name in the To: field and have Notes find it automatically in the address books and fill in the rest. In the person form, you must include the following fields:FirstName (Type: Text) LastName (Type: Text)

FullName (Type: Names) MailAdress (Type: Text) Type (Type: Text) with default value "Person"

Then add the database to the notes.ini file as a cascaded address book.

How do you move databases onto a different drive without the user knowing about it? You can use a directory link to put all the databases into what the user sees as a subdirectory in the Notes client. In the Notes data directory, create a file named .dir where is the name of your subdirectory. The first line in the file is a directory name which can include a drive letter (e.g., "e:\data2"). Lines after the first line are hierarchical names for people that can go through this directory link ("e.g., */MyCompany") so you can use directory links as a security tool. You can also use a database link. To do this, move the database to your new directory. In the Notes directory where the database used to be, create a file with the same filename as the old database. In this file, put the path to the new location of the database (e.g., "e:\data\db.nsf"). When Notes accesses this file, it will automatically look for the database using the path you specify. If you are using OS/2, you can install the Toronto Virtual File System (TVFS) from one of the many OS/2 ftp archives. This file system allows you to merge directories and files into a "virtual" directory that you can then use for the Notes data directory. Note that all of these methods will slow down file access a little, but the slowdown should be negligible.

[How can I use a POP3 client, such as Netscape or Eudora, to access my mailbox in Notes?] There are two parts to this: 1) On the server, load the POP3 Server task with "load pop3"; you can also add it to your "TASKS=" line in your notes.ini file if you'd like. 2) Create a person document for the user and fill in the HTTP/Internet password. The user will have to log in using their user name (fully qualified if you specify a Notes domain) and this password in their POP3 client. Note that even if these users do not have a Notes ID, there is a Lotus per user charge of $30 for each Domino/POP3 mail user.

How do you unhide a database design? There are a lot of ways to do this in Notes 3.x, but here are a few:

1) If you have multiple servers, copy the database from one server to another. This will unhide the design in the new copy. The database will still show as hidden, so change the name to a template file(ntf) and create a new database from this template. This will insure the database is truly unhidden. 2) Make the locked database a design template. Create a new database. New database inherits design from template. Refresh design from template. 3) Modify a byte in the .nsf file; this is typically done to hack an application that was sold, so this technique will not be described here. Lotus provides a database Hide Design tool (implemented in Notes 4.x and 5.x) that secures the database design more thoroughly. It is not possible to unhide a database design in these later versions of Notes without the original unhidden template; i.e., you can't unhide it by modifying a few bytes in the .nsf file. In addition, if the original design included LotusScript files from the file system when an agent or design element was saved, you'll need these files in the right directories to modify the corresponding agent or design element.

How do you prevent groups from being expanded when sending mail? The group expansion only happens for groups in your personal NAB. You can do the following to disable this expansion when sending mail: Modify your memo form to include a hidden field named "ExpandPersonalGroups" with Text type and Computed when Composed with a value of "0". This will cause personal groups to NOT be expanded. Changing the value to "1" will cause the groups to expand. The other solution is to use group alias names, but this technique only works in R3.x. For example, if you have a group named Managers make it Mgrs;Managers instead. Aliases are not expanded. That way, if you want it to NOT expand send the memo to Managers. If you DO want it to expand them, send it to Mgrs.

How do I get rid of the encap2.ond attachment on outgoing Internet mail? These attachments are used to send Notes rich-text-format messages to other Notes users across the Internet. In the SMTP MTA section of your server document, set the Message Content field to "Users without Lotus Notes"; you probably have this set to "Users with Lotus Notes". Your users can still manually send fully-formatted messages to Notes users via Internet mail by using Actions/SpecialOptions when creating a new mail message.

How do you shut the server down for backups?

If you are running Notes as an NT service, look at this FAQ instead. You can use the following command to tell the Notes server to shut down: notes server -quit After your backup is complete, issue this command to restart the Notes server: notes server

How do I add additional N&A books to the address lookup dialog? In your notes.ini file, you should modify the line that reads "Names=NAMES.NSF" to read "Names=NAMES.NSF,MYNAMES.NSF". This will cause Notes to look up names in both the NAMES and MYNAMES N&A books. Are there any large-scale deployment guidelines? For large-scale Notes deployment, standards should be defined for:

Notes network topology & replication strategy

Hardware and software configurations

Hardware and software installation guidelines

User, group, and server naming scheme

Notes mail integration strategy

Notes & non-Notes data integration strategy

Server management guidelines

Operations guidelines

Security and ACL guidelines

Application design guidelines

Application implementation guidelines

Training guidelines

Support guidelines

Staffing requirements

Group naming standards

ACL standards

Database location standards

Establishing test, development and production environments

Name and Address Book control

Centralization or distributed ID creation

Replication strategy

How do you update the SmartIcons on all your users' workstations via LotusScript? If you put the following code in a button in an email message and attach all the icon files to the same message, your users can update their SmartIcons by simply clicking on the button when they receive the email:'====================================================================== ' Code Documentation '====================================================================== 'Originally Written By: James Fox @ Com Tech Communications 'Originally Created On: 1/3/97 'Last Updated By: James Fox 'Last Updated On: 1/3/97 '====================================================================== ' Declare Variables '====================================================================== Dim session As New NotesSession Dim ws As New NotesUIWorkspace Dim uidoc As NotesUIDocument Dim doc As NotesDocument Dim rtitem As Variant Dim iconPath As String Dim retvalue As Variant Dim fileName As String On Error Goto errorRoutine '====================================================================== ' Warn User what is going to happen '====================================================================== x = Messagebox("SmartIcon Installer is about to setup the new Com Tech SmartIcons. Your current universal SmartIcon set will be overridden with the new SmartIcon set. Your original set will be backed up to a file called universe.bak. Press OK to Continue", 1 + 64 + 0 + 0,"SmartIcon Installer") If x 1 Then x = Messagebox("SmartIcon Setup has been Aborted Thank you.",0 + 48 + 0 + 0,"SmartIcon Setup") End End If '====================================================================== ' Get and Set Icon Path '====================================================================== iconPath = session.GetEnvironmentString("WinNTIconPath", True) + "\" Chdrive Left(iconPath,3) Chdir iconPath '====================================================================== ' Backup current universal Set '===================================================================== fileName = Dir$(iconPath + "universe.bak", 0) If fileName "" Then Kill iconPath + "universe.bak" End If Name iconPath + "universe.smi" As iconPath + "universe.bak"

'====================================================================== ' Detach Files in memo (overwriting existing files) '===================================================================== Set uidoc = ws.CurrentDocument Set doc = uidoc.Document Set rtitem = doc.GetFirstItem( "Body" ) notesEmbeddedObject = rtitem.EmbeddedObjects If ( rtitem.Type = RICHTEXT ) Then Forall o In rtitem.EmbeddedObjects objectName = o.Name fileName = Dir$(iconpath + objectName, 0) If fileName "" Then Kill iconpath + fileName End If Call o.ExtractFile(iconPath + objectName ) End Forall End If '====================================================================== ' Notify User of SmartIcon Installer Status '===================================================================== x = Messagebox("SmartIcon Setup has completed Successfully. Your original smartIcon set has been saved as Universe.bak. Please close and restart Lotus Notes to use your New SmartIcons",0 + 64 + 0 + 0,"SmartIcon Setup") End '====================================================================== ' This is the general error routine '===================================================================== errorRoutine: x = Messagebox("SmartIcon Setup is Incomplete. Please advise MIS via email. Thank you.",0 + 48 + 0 + 0,"SmartIcon Setup") Name iconPath + "universe.bak" As iconPath + "universe.smi" End End Sub

How do you add Quoted Reply support to Notes' mail templates? Quoted replies let you precede each line of the mail you are replying to with a ">"; it is a standard way of indicating what you are replying to when replying to Internet mail (similiar to how people use color to indicate their replies in Notes). Here is a button you can add to the forms of the standard mail templates. Add an Action Button called "Quoted Reply" to the following forms: Memo, Reply, Reply with History. This button is hidden when: Previewed for reading, Previewed for editing, Opened for editing. The limitation is that it can only quote up to around 15K worth of text because of LotusScript's limitation with GetFormattedText. Put the following script in the Click action:Sub Click(Source As Button) Dim uiws As New NotesUIWorkspace Dim uidoc As NotesUIDocument

Dim doc As NotesDocument Dim uidocReply As NotesUIDocument Dim rtitemBody As Variant Dim sBodyOriginal$ Dim sBodyConverted$ Dim vntMailDbFile,vntMailDbServer Set uidoc=uiws.CurrentDocument Set doc = uidoc.Document Set rtitemBody=doc.GetFirstItem("Body") sBodyOriginal=rtitemBody.GetFormattedText(False,0) vntMailDbServer=Evaluate("@Subset(@MailDbName;1)") vntMailDbFile=Evaluate("@Subset(@MailDbName;-1)") Set uidocReply=uiws.ComposeDocument(Cstr(vntMailDbServer(0)),Cstr(vntMailDbFile(0 )), "Reply") sBodyConverted=ManipulateReplyText(uidoc, sBodyOriginal) Call uidocReply.FieldSetText("Body", sBodyConverted) End Sub Function ManipulateReplyText (Source As NotesUIDocument, body As String) 'Adding > to the begining of each line of the "History text" and 'Aligning the text Left (wrapping) Print "Formatting ""History"" text" Dim bd As Variant Dim note As NotesDocument Dim Header As NotesItem Dim dateItem As NotesItem Dim InFrom As NotesName Dim GetInternetFullName$, HeaderString$, pos%, tmpString$, pos1%, dont%,tmp$ Dim y%, x%, b%, xx%, xb Set note=Source.Document 'dividing the text to lines and addding the > sign If note.hasitem("$AdditionalHeaders") Then 'starting here: inbound messages seem to have $AdditionalHeaders Set Header=note.GetFirstItem("$AdditionalHeaders") If Header.values(0) = "" Then 'GetInternetFullName=note.InheritedFrom(0) GetInternetFullName=note.From(0) Goto Continue End If Else If Not note.HasItem("tmpAdditionalHeaders") Or note.tmpAdditionalHeaders(0)="" Then 'GetInternetFullName=note.InheritedFrom(0) GetInternetFullName=note.From(0) Goto continue End If Set Header=note.Getfirstitem("tmpAdditionalHeaders") End If HeaderString=Header.values(0) pos=Instr(HeaderString,"From: ") tmpString=Mid(HeaderString,pos+6) pos1=Instr(tmpString,"" y=1 b=1 For x=1 To Len(body) xx=Asc(Mid(body,x,1)) If xLen(body) Then xb=Asc(Mid(body,x+1,1)) 'Now that we know the current and the next characters we can consider whether they will cause a line feed, so we can insert our ">". If xx=10 Or xx=13 Or xx=11 Or xx=12 Then 'if this combination occurs then we skip the next one so we don't LF twice. If xx=10 And xb=13 Or xx=13 And xb=10 Then x=x+1 tmp=tmp & Chr (xx) & Chr (xb) & ">" Else tmp=tmp & Chr(xx) & ">" End If b=1 Else tmp=tmp & Mid(body,x,1) b=b+1 End If Next ManipulateReplyText=tmp End Function

Why won't the incremental installer work? This typically happens if you install Notes/Domino optional components inconsistently. E.g., you installed Notes 4.61 with Advanced Services, but then you didn't with 4.62. When you try to

install 4.63, it detects some old files from the 4.61 install that are not at the 4.62 level (failing a checksum). You can see which files these are by looking at the UPGRADE.LOG file in the Notes directory. Usually, you can keep deleting these old files and re-running the incremental installer until it works (the installer stops when it detects the first file that fails the checksum).

How can you have multiple users on one workstation? Each user has to have a separate notes.ini file and desktop.dsk file. There is a freeware utility called SmartSwitcher that does all this for you and provides a nice user interface. It can be

picked up by clicking

here. This only works for Notes 3.x

A few settings (like workspace textured background) are not preserved for Notes 4.x users in SmartSwitcher. There is a commercial utility named MultiUser Logon Utility from Rein&McBride that does handle Notes 4.x. Another commercial utility that reads the ID files from a database is SwitchID from Sollazzo Consulting. You can also use location documents in Notes 4.x and higher. Important caveats: 1) users share the same desktop so one user can rearrange icons/bookmarks and totally confuse the other users, 2) they will get false "you have new mail" indications, and 3) the user ID files for all the users will be in one location. Here are some tips from Laurence Wagner ([email protected]) on how to do this:

Do a normal install for the first user, then do the following: 1. Change the User Preferences Select File / Tools / User Preferences from the menu. In the Navigator panel, with icons labeled "Basics, International, Mail, and Ports", click on Basics. There are four check boxes to the immediate right of the Basics icon. Select the box labeled "Prompt for location". Now when Notes is re-started, it will prompt the user to select a named location document. The original location documents given with Notes are named for a variety of network connections that these users will not need to use, but do not delete them. 2. Copying the Notes ID files to the Workstation Get these files from your Notes admin. These can go to the Notes\Data directory or a network drive, as long as it will be available to your users. Once on the workstation, each person should

log in and reset their password from the default value. This can be done after the location documents are created for each person. 3. Add an action button, labeled "Make Location Doc", to the People view of the LADWP Name and Address Book. Switch to the user's ID file before you run this. The code for the button is as follows:Sub Click(Source As Button) Dim session As New Notessession Dim notesdirectory As String notesdirectory = session.GetEnvironmentString( "Directory", True) Dim keyfilename As String keyfilename = session.GetEnvironmentString( "KeyFilename" , True) Dim whois As String, realwho As String Dim workspace As New NotesUIWorkspace Dim doc As NotesUIDocument Dim uidoc As NotesUIDocument Set uidoc = workspace.EditDocument(False) Dim item As NotesItem Dim first As String, last As String, mailserver As String, mailfile As String Dim mailserver1 As String, mailfile1 As String Dim short As String Dim short1 As String Dim udir As String Dim full As String Dim ppass As String Dim thisdb As NotesDatabase whois = session.CommonUserName realwho = session.UserName Set thisdb = session.CurrentDatabase Set uidoc = workspace.EditDocument(False) first = uidoc.FieldGetText("FirstName") last = uidoc.FieldGetText("LastName") short = uidoc.FieldGetText("ShortName") mailfile = uidoc.FieldGetText("MailFile") spaceposition = Instr(1,mailfile, "\") short = Mid( mailfile, spaceposition + 1) mailfile1 = "mail\\" + short mailserver = uidoc.FieldGetText("MailServer") If first "" Then full = first + " " + last Else full = last End If Call uidoc.Close Print "got Person data" ' ' Build new rec Set uidoc = workspace.ComposeDocument ( "", "names.nsf", "Location" ) Call uidoc.FieldSetText("Name",full) udir = notesdirectory short1 = keyfilename

Call Call Call Call Call Call Call Call Call Call Call Call Call Call Call ' ' '

uidoc.FieldSetText("Userid", udir + "\" + short1) uidoc.FieldSetText("Domain","LADWP") uidoc.FieldSetText("DST","1") uidoc.FieldSetText("Enabled","0") uidoc.FieldSetText("NameLookupPref","2") uidoc.FieldSetText("ExhaustiveNameLookup","1") uidoc.FieldSetText("Images","0") uidoc.FieldSetText("LocationType","0") uidoc.FieldSetText("MailFile", mailfile) uidoc.FieldSetText("MailServer", mailserver) uidoc.FieldSetText("Source","*") uidoc.FieldSetText("TimeZone","8") uidoc.FieldSetText("WebRetriever","Netscape Navigator") uidoc.Save uidoc.Close

Add the mail database to the workspace

If whois = full Then spaceposition = Instr(1, mailserver, "/") If spaceposition = 0 Then spaceposition = 30 End If mailserver1 = Left$( mailserver, spaceposition - 1) Call workspace.AddDatabase( mailserver1 , mailfile1 ) Messagebox "the mail database for: " & full & Chr(10) & " has been added to the workspace, and " & Chr(10) & "Location Document added to Address Book" Else Messagebox "Location Document for: " & full & " added to Personal Address Book" End If End Sub

A company called DNI Systems makes a workstation sharing solution called Notes Profiler. It accomodates roaming users. Note that this is no longer necessary as of Notes 6.01. Notes 6.01 supports roaming users so their Notes desktops go with them to each machine. It also supports multiuser installs of the Notes client on a single machine so each logged on user doesn't have to install their own separate copy of Notes and waste disk space. Can you have specific notes.ini files per user? You can modify your Notes startup icon to use this as the command line:notes.exe =notes.ini

This uses the specified notes.ini file. You can then place this with a user's personal data files on a file server.

How do you change how long logs are kept in log.nsf? There is a LOG= setting in the NOTES.INI. You specify LOG=,, 0,, Do not set document size too large or the server will not be able to compact the log database very well.

How do you limit the size of users' mail boxes? Notes 4.x has Database Quotas that you can apply to a database; you can access these under the Database Tools of the Server Administration menu. If you would like to warn users more directly, you can put this in the mail templates's Database Script PostOpen event:Sub PostOpen(Source as Notesuidatabase) Dim db As NotesDatabase Dim MaxSize As Double, CurrSize As Double Set db=source.Database Maxsize = 20 'Megabytes CurrSize = Round( db.Size/1000000, 2) If CurrSize > MaxSize Then MsgBox "Your mail database exceeds the corporate " _ & "maximum size of " & MaxSize & " Mb. Your mail " _ & "database is " & CurrSize & " Mb and contains " _ & db.AllDocuments.Count & " documents. Please " _ & "remove or archive old messages. If you " _ & "require assistance, please contact IS.", 0, _ "Mail Database Needs Archiving" End If End Sub

Other techniques suggested by [email protected]: 1) I created a DeleteAttachments button in our Inbox & All Docs views that *deletes* the attachments in any selected doc. This lets them keep the doc itself, but remove the large attachments. 2) I created a Size column [ @Round(@Sum(@DocLength )/1024) ] in the above views that lists the size of each document. It really helps for the users to see the size of every doc w/ attachments (Wow, it's THAT big?!?!?!? :-) Lotus added a similar column to the R5 mailbox, but they display bytes instead of KB. I think that clutters up the view, and wastes column space. The above formula shows KB, and that's what I use for the column heading - KB.

3) I created an agent that loops through all of the mail files, checks the size, and sends them and myself an e-mail that says it's too big. The agent is signed by the server, so it looks like it came from the server, not from me. 4) I added code to the Initialize event for the mail template that also checks the size of the db, and pops up a messagebox that says "your mailbox has exceeded XX megabytes". 4b) Part of me hated to have to implement this next feature, and I regularly apologize to my users for having to implement it. Since it is human nature to just click OK to the above warning, the code pauses for 10 seconds for every 5 meg. So it displays a message for 25 meg, pauses 10 secs, displays another for 30 meg, pauses, etc. So the more you abuse the system, the longer you have to wait. 5) I also added the above code (via a script library, of course) to the New Memo buttons. If the user ignores all of the above methods/warnings, they have to wait for the above messages and pauses each time they try to create a new memo. 6) I created an Attachments view in the mail template that only displays docs with attachments. A Size column displays the size of each attachment. 7) I soon discovered that even all of the above steps were not enough to stop the determined email quota abuser. So I created a new "over quota" mail template with the following features: 7a) A "before mail" agent that compares the user's quota to the size of their mailbox. If they are over their quota, a Readers field is used to hide the new message from the user (but it's still in their mailbox, so it still counts toward their quota). A message also gets deposited into their Inbox that says "You have mail being held from . Subject: ". The body of that note tells them that the message will get released after they cleanup their mailbox, and it contains links to self-help documents in our FAQ database. 7b) A scheduled agent that compares the user's quota to the size of their mailbox. If they are UNDER their quota, it unhides all hidden messages by removing the Readers field. Schedule this agent as often as your users are willing to wait for email to get released, but not so often that you overload your servers. 7c) A hidden view that shows messages that have been hidden by the "over quota" agent. This is used by the agent to loop through hidden messages, and by the admins to look for hidden messages during troubleshooting. 7d) Since this creates 2 agents for every mailbox that uses this template, I only convert a user to use this "over quota" template when I notice that they are regularly close to their quota

How do you set up remote users with a local replica of a new database?

Create a mail message to the remote users with 1) a copy of the database as an attachment 2) a database doclink Also in this mail message, add some instructions on how to detach the attachment and where to place it (in the Notes data directory). After the attachment has been detached, the instructions should ask the user to click on the doclink. This will search for the database replica locally and open it; it will also place the database on the replication workspace page. If the attachment is large, you should warn remote users that you are sending it to them so they don't think that the replication is hung.

How do you refresh Private View designs on clients? Delete the database icon from the user's workspace and re-add it. Deleting the database will cause all the Private Views to be removed. When the user re-opens the database, new Private Views (with the updated design) will be created. You can do this via a macro that is sent to users via email:@Command([WindowWorkspace]); @Command([FileOpenDatabase];........); @Command([FileCloseWindow]); @PostedCommand([EditClear]); @PostedCommand([FileOpenDatabase];.......)

Why does my mail say it is sent from someone else? If you have the calendar profile (Actions/CalendarTools/CalendarProfile) mail file owner set so that it doesn't match your user name, mail will be sent from that person specified in that field. The mail will also say it is really sent by you though. You will also see error messages in the Notes log ("SchedMgr: Error processing calendar profile document") if you rename a user but do not change their calendar profile.

How do you get the Notes R4 workspace in R5? Some users who have gotten truly used to the R4 workspace with the tabs and database icons are more productive in it. This is only needed if you installed R5 fresh instead of upgrading an R4 installation: 1. Copy over the desktop.dsk from your R4 data directory into the R5 directory. 2. Delete your bookmark.nsf file. 3. Restart R5 so it can migrate the R4 workspace and database icons into R5 bookmarks.

If you upgraded R4 to R5, you will only have to follow the next step: In your databases bookmarks, you will have a Workspace database. Right click this bookmark and click on "Set Bookmark As Home Page". Can you run console commands from a server program document? From [email protected] 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.

How do you add a disclaimer/signature to all outgoing SMTP mail? From Matt Chant: There's an unsupported way, which is exactly the same as the unsupported way in the MTA

. The only difference is that the database is now Mail.Box and not MTAForms.nsf. The problem is that this is only likely to work if messages are in CD format and being converted to MIME on that particular system. As you migrate to R5 and the client is now submitting the MIME, then this won't work. There is an outstanding enhancement request for this feature. It's not as simple as it might sound, as there are pluses and minuses to doing on a server (Hard to inject additional content into existing MIME, Can't do it for S/MIME at all )and pluses and minuses to doing on the client (Solves the MIME,S/MIME problems but then there are problems in trying to support disclaimers for only external recipients.), so it's going to take some figuring out how to achieve it cleanly in the modern Domino environment.

Can you run scheduled server commands? Yes, this was added in R5. Use this for a program name (this example is for Wintel32 systems) in the program document: nserver -c "" Example: nserver -c "load replica" nserver -c "tell http restart"

How do you convert an R5 database back to R4 format? You have to run the "compact -R" on the database. You can then rename it w/ a .ns4 extension so the R5 server will not convert it back to R5 format on the next compaction.

What are .IIB files? These files are generated by the Lotus Incremental Installer. They are backups of the files that the Incremental Installer changed. You can delete these files if you are satisfied with the incremental upgrade. If not, run the same Incremental Installer again and it will ask if you want to uninstall the upgrade. Note: If you're running a CF incremental, do *not* delete the IIB files. When Lotus releases another normal incremental, it will try backing out the CF incremental by using the IIB files; if they don't exist, the incremental will fail. Can Domino prevent MS viruses from getting into user's mailboxes? "Pre-Delivery Agents" were added to Domino R5. This lets you run an agent before a mail message is deposited into a user's mailbox. You can use this new feature in R5's mail template (mail50.ntf) to strip out all .vbs and .shs attachments from users' incoming mail. Create an agent named "Remove MS Viruses" in the R5 mail template. Set the agent to run "Before New Mail Arrives". Sign this agent with an ID that can run restricted agents on the server. Put this code in the agent's Initialize event:Sub Initialize Dim session As New NotesSession Dim doc As NotesDocument Dim rtitem As Variant Dim p1 As Integer Dim p2 As Integer Dim filename As String Set doc = session.DocumentContext Set rtitem = doc.GetFirstItem("Body") If (rtitem.Type = RICHTEXT) Then

If (Isarray(rtitem.EmbeddedObjects)) Then Forall obj In rtitem.EmbeddedObjects If (obj.Type = EMBED_ATTACHMENT) Then filename = Lcase(obj.Source) p1 = Instr(1, filename, ".vbs", 5) p2 = Instr(1, filename, ".shs", 5) If ((p1 > 0) Or (p2 > 0)) Then Call obj.Remove Call doc.Save(True, True) End If End If End Forall End If End If End Sub

The most common Win32 extension types to worry about are (there may be others):

.com, *.exe, *.bat, *.vbs, *.vbe, *.js, *.jse, *.hta, *.wsf, *.wsh, *.shs, *.scr, *.pif, *.xml, *.lnk, *.eml

In R6+, you can define server rules to remove messages that have certain extensions.

Are agents failed over when clustering? Only "Before Mail Delivery" fail over when clustering. The other agent types do not because they will run once the failed server comes back up.

Can you force a messagebox for broadcast messages? In R5, if you broadcast a message preceded by "(!) ", it will show up on clients via a messagebox instead of showing up in the status bar.

Why is a user not getting the proper roles? From Barry Wand ([email protected]): The user is in an ACL as a member of a Group that has Editor access to a database and has been included in a Role that is authorized to modify a field in a Controlled Access Section. The user is also listed explicitly with Designer access. The user still cannot edit that field although other people in the same group can.

Explicit ACL entries always override Group document entries. If your Group entry has the Role assigned but your explicit entry does not then you do not have the Role assigned to you. In this case you have Designer access but without the Role assigned. You will need to adjust the ACL to assign that Role to your explicit entry also.

Why do I get att1.unk or winmail.dat attachments?From Bjarne Sloth ([email protected]):

These attachments are sent from users of a Microsoft email system. The att1.unk file is received by Notes if the original message was transmitted with MIME encoding. The winmail.dat file is received if the Microsoft email system UUEncodes the message. Here are some links