SMTP Display Name Utility
Novell Cool Solutions: Cool Tool
Construct SMTP Display on GWIA from eDirectory Attributes.
|Posted:||5 Mar 2003|
Please read the note from our friends in legal before using this file.
Many branches of the Government are becoming more and more concerned about being able to identify email users. While PKI and digital signatures are coming, the Army is already requiring that email Display Name fields identify the user as a Government employee or Contractor and what company they work for.
This is a problem for GWIA, since the Display Name is automatically created from your username or First and Last name fields. With this utility, you can recreate the Display Name field on all outbound messages from other users property values in eDirectory.
A user EShinseki with a given name of Eric and surname of Shinseki Would normally have a GroupWise Display Name of
"Eric Shinseki" <Eric.Shinseki@us.army.mil>
This Utility could change it to:
"GEN Eric Shinseki (Government/Army Chief of Staff)" <Eric.Shinseki@us.army.mil>
A Contractor might show up as:
"Mr. Fred McMullen (Contractor/CST Inc)" <Fred.McMullen@us.army.mil>
Or with the Last Name order switch applied it would show up as:
"McMullen, Mr. Fred (Contractor/CST Inc)" <Fred.McMullen@us.army.mil>
This utility is pure Java and runs in the GWIA SMTP Service Queues. It requires the eDirectory schema to be extended and anonymous LDAP Access to eDirectory.
SMTP Display Name Setup
This Utility requires the following LDAP attributes to work. Some of these are already in eDirectory and some will have to be added:
These attributes may have to be added.
To Extend the Schema, launch the Schema Manager under the Tools Menu in ConsoleOne.
Choose the Attributes TAB.
Create the following four attributes with the following properties. Be sure to use the exact spelling and case for the attribute Names.
company as Case Ignore String and Single Value, Synchronize Immediate and public read
isContractor as Boolean and Synchronize Immediate and public read
employeeClassification as Case Ignore String and Single Value, Synchronize Immediate and public read
personalTitle as Case Ignore String and Single Value, Synchronize Immediate and public read
If any of these attributes are already created, that's okay. It should still work.
Please make sure the above attributes are correct before continuing.
Now Click on the Classes TAB and find the User Class and click on the Info Button, Use the "Add Attribute" Button and add all the newly created attributes to the user class.
Installing the Software
Installing the software is the simplest part; simply unzip the SMTPDisplayName.zip on to the SYS Volume of your Netware server running GWIA. Then use ConsoleOne to create a SMTP Service Queue.
To create the SMTP Service Queue, launch ConsoleOne and right click on the GWIA object and choose properties. Now find the "Server Directory Settings" TAB and then find and click on the "Advanced" button. Create a new directory somewhere on your GWIA server. I typically use VOL:\Domain\SMTPQ.
Now setup your SMTPDisplayName Properties File in SYS:\JAVA\Applications directory.
Set LdapHostName to your LDAP Host server. I suggest setting up your GWIA server To be your LDAP server.
Set LdapSearchBase to the highest organization or organization unit that contains all your users
Set SMTPQueuesDirectory to the Directory that normally handles your GWIA mail. Typically it is VOL:\Domain\WpGate\GWIA
Set SMTPServiceQueuesDirectory to the new Service Queue directory that you created in the step above
Use SMTPDomainName 1, 2 and 3 to list the valid email domains that match users in your tree
Set OfficeTag to the default name for your Government Office
Set useOfficeTag4Gov either as True or False to use the Office Tag Value set above
Set useEDirEmployeeClass as True or False; When True employeeClassification value is used to construct the Display Name. If False the String "Government" or "Contractor" is Used
Set LastNameOrder as True or False to choose Display Name order
Set StatusInterval to the number of minutes between on screen status displays
Set DebugMode as True or False to display address conversions on the screen
Set ErrorLogDirectory to the directory you wish to write the error log to
How it works
You are all setup and ready to run. The Utility is really simple. Every outbound email is caught and filtered for the email header. If the email address's domain matches any domain listed in the properties file, it looks for the email address in the mail attribute of eDirectory. Once it finds the email user it uses the new attributes to build the new SMTP Display Name and add it back into the email. Then it passes it back to GWIA to mail.
The properties work as follows:
personalTitle is used for Ranks i.e. GEN, LTG, MG, BG, COL, LTC, MAJ, CPT, LT, etc
or for Dr. Mr. Mrs. Ms etc
employeeClassification is used for one of classifications like Military, Civilian, and Contractor
company is used for the company name or Army Office name.
isContractor is self-explanatory
Now use ConsoleOne and find the "Other" TAB on user object. Add the attributes above and fill in the correct values for that user. When I get around to writing a ConsoleOne snapin, I will add it to this package, but for now you simply use the Other TAB.
To run the Utility, setup your SMTP Services Queues in GWIA and Exit and Restart GWIA. Then type SMTPDisplayName at the Console to launch the Utility. Once running, the Utility pulls from eDirectory and caches the user attributes. Every 10 minutes, it refreshes the eDirectory and re-reads the properties file. You can push 'F6' at the console at any time to schedule an immediate refresh from the properties file and eDirectory. Use the 'F7' followed by the 'F1' key to gracefully exit the utility.
NOTE: When this utility is NOT running, no email is flowing in or out of GWIA.
Fixed Keyboard entry problem and null pointer exception on bad formatted 822 MIME messages
Minor bug fix