                               ================
                               MAIL AGENT RULES
                                     BY
                                  E-MailWare
                                  Development
                               ================


Contents

1. Overview
 1.1 Features

2.    Installation
 2.1   Installation requirements
 2.2   Windows client installation
  2.2.1 Installation of the program
  2.2.2 Installation of the needed libraries
  2.2.3 Preparing the INI file
  2.2.4 Installation in program manager
 2.3 Back-end program installation
 2.4 Quick install
 2.5 Performance

3. Multiple post office configuration
 3.1 Separate installation
 3.2 LAN mode/HUB set-up
 3.3 Dynamic linking to post office directories

4. Configuration
 4.1 Command line options for the back-end
 4.2 Options/switches in MARULES.INI
 4.3 The exclude file for user-names (EXCLUDE.AM)
 4.4 The exclude file for post offices (EXCLUDE.PO)
 4.5 Windows client command-line options

5. The windows client program
 5.1 How to use
 5.2 Directory access

6. How the program works

7. DOS/OS2/MAC user interface
 7.1 Help request
 7.2 Create a new rule
 7.3 Cancel a rule
 7.4 Get the status of a rule
 7.5 Date Format (US)

Appendix A Frequently asked questions
Appendix B The manager/secretary problem
Appendix C Structure of the rules database
Appendix D Error codes
Appendix E Information about E-MailWare Development

1. Overview

Mail Agent Rules for cc:Mail allows a user to create a rule that will be
executed on the Post Office. This rule will forward their messages to a
colleague or auto reply to all messages while they are away from the
office.
cc:Mail for Windows 2.0 does allow you to create a rule that will auto
forward or auto reply to messages but it has a number of drawbacks:
 - You have to leave your PC switched on while you are away from the office.
 - Does not support Remote/Mobile users. 
 - The message is marked as read in your Mailbox, therefore you will have
   to remember which messages were answered by yourself or were forwarded
   by your rule.

The Mail Agent Rules program does not work on the user workstation so the
users can switch of their PC. To do this Mail Agent Rules consists of
two programs:
 
 1) The back-end program MARULES.EXE. This program runs from the cc:Mail
    router and registers rule changes and executes the rules.

 2) The Windows client/front-end program ABSENTEE.EXE. This program can
    be used to allow users to easily change their rules.

1.1	Features

Mail Agent Rules has many features, some of them make it even easier to use
for cc:Mobile users and large organisations:

- MAR does not allow any looping of messages. Looping of messages could be
  caused if two users both have a rule forwarding messages to each other at
  the same time. This could easily bring down an e-Mail Network. No other
  LAN e-Mail Rules software has this feature thus causing many large
  companies to use Mail Agent Rules.

- MAR comes with a user friendly interface running in Windows.

- It can work with any version of cc:MAIL (incl. DOS). If the windows
  software cannot be used for whatever reason, you can send messages
  manually via cc:Mail. If you send a help request to the MAR mailbox, you
  will get a blank new rule request which you can fill in and send.

- The Windows interface of MAR allows a user to select a name from the
  directory to forward a message to, just like you do in cc:Mail. This
  reduces the possibility of typing the names in incorrectly.

- The Windows interface of MAR has on-line context sensitive help available
  throughout the program. As the program is simple to use and has good help
  available, a manual is not required.

- MAR will confirm to a user that his/her rule was cancelled.

- A rule can be cancelled by sending a cancel rule message or using the
  stop date and time feature.

- MAR provides a header on each message that it replies to:
  =========================================================================
  John Valentine is absent from work and will return on the 31/03/1994.
  All messages will be automatically forwarded to Joe Smith
  A copy of each message will remain in their inbox until they return.
  =========================================================================

- Provides a header in each message that it forwards as it is confusing to
  suddenly start receiving message from people you do not normally receive
  message from:
  ============================================================
          Forwarded by Mail Agent Rules for John Valentine
  ============================================================
	
- The program allows the user to type in a message that will be included
  in the auto-reply message. This message shows together with the header.

- It also allows cc:Mobile user to dial in and receive their messages that
  have already been replied to.

- When users come back to their mailbox their messages are marked as
  unread (but flagged read by Mail Agent). This makes it easier to make a
  difference between the messages the user has replied to before his/her
  absence and the messages Mail Agent Rules replied to and/or forwarded.

- The administrator can create a list of users names that Mail Agent Rules
  will not reply to. These names will be stored in the EXCLUDE.AM file.

- The administrator can create a list of post offices that Mail Agent Rules
  will not reply to. These names can be stored in the EXCLUDE.PO file.

2. Installation

To install Mail Agent Rules you will have to install the back-end program in
combination with a program that can execute other programs on a specified
time. As the router supports this all, using the router for this is highly
recommended. You will also have to install the Windows client software on
all workstations from users who want to use the rules.

2.1	Installation requirements

The installation requirements for Mail Agent Rules are:

For the client software on the workstation:
 - Windows 3.1;
 - Visual Basic support libraries: VBRUN300.DLL and some VBX controls;
 - VIM support libraries: VIM.DLL, MEMMAN.DLL etc. and VIMVBWRP.DLL.

For the back-end program:

 - Any existing router running in DOS or any PC that handles other
   maintenance tasks like CHKSTAT and/or RECLAIM, NFT check, etc.

2.2	Windows client installation

To install the windows client software, you will have to do the following:
1. Install the program in a network directory;
2. Make the libraries available to all users that will use Mail Agent Rules;
3. Copy the INI file to the local workstations and change it;
4. Create an icon in program manager.
These points will be discussed in the next four paragraphs.

2.2.1	Installation of the program

You may wish to install all user ABSENTEE files in the same directory as
cc:Mail or make a separate directory on the network. A separate directory
will make the program easier to upgrade and is therefore recommended. The
only file that needs to be local on the workstation is EMAILW.INI. As INI
configuration files are read from the windows directory, this file must be
present in this directory. Please also note that the license file should be
copied to this directory for the program to work.

2.2.2	Installation of the needed libraries.

So, now the program files should be available via the network, but you may
not be able to start the program yet, as some of the shared parts of the
program (libraries) may not be available yet. The program needs the
following shared libraries:
 - Visual Basic libraries: VBRUN300.DLL, THREED.VBX
 - VIM libraries: VIM.DLL, MEMMAN.DLL etc.

If you already installed cc:Mail on each workstation, you don't have to
worry about the VIM libraries as they have already been installed.

To make the Visual Basic libraries available to the workstation you can
do one of the following:

- Copy the files to a network directory that is in the path of all
  workstations. This is the quickest way. E.g.: each workstation has a
  special directory N:\LIBS in the path. Copying the file to this directory
  will make the libraries available to all workstations. Windows searches
  the windows directory, the windows system directory and the path for
  libraries. You can also use the shared cc:Mail directory or the shared
  network windows directory for this.

- Copy the files to the windows system directory of all workstations. This
  is the hardest way as this has to be done for each workstation separately.
  It however gives you the possibility to control the installed components/
  libraries on each workstation.

If this has been done, you are almost able to start the program. Only two
things have to be done to start the program from within program manager:
The INI file has to be created and edited and an icon has to be created in
program manager.

2.2.3	Preparing the INI file

The windows client program uses an INI file for its configuration settings.
This EMAILW.INI file needs to be copied to the windows directory, in most
cases C:\WINDOWS. After copying the file, it needs to be changed. You can
use an editor to do this:

[eMailWare]
Path=C:\EMAILW 		or =C:\WINDOWS or Network drive M:\WMAIL

[Absentee Manager]
Directory Entries=50

The path name in the [eMailWare] section must point to the directory where
you have the program files installed. The directory entries option is
discussed in paragraph 5.2: Directory access. The windows client program
is now installed on the workstation.

2.2.4	Installation in program manager

To let the user start the program in program manager, you have to create
an icon.

To do this you will have to:

- Select the program group where you want to add the icon to. If you want
  it to be added to a new group, create one with FILE/NEW, program group.

- Select FILE/NEW from the menu. 

- Select new program and select OK.

- Type the path-name of the ABSENTEE.EXE program or use the browse button
  to search for it.

- Type a description for the program, like Mail Agent Rules.

- Select OK to let program manager add the icon.

2.3	Back-end program installation

To install the back-end of Mail Agent Rules you must understand how the
router executes batchfiles. To get more information on this, please see
your router manual for more information.

There are two ways to install the back-end program:
 1) Install the program once and let the program serve one or more post
    offices.
 2) Install the program for each post office separately.

The first way has the advantage that you have only one set of files to
control. This installation will also be faster as the program has to be
executed only once to serve multiple post offices. This is the
recommended way.
The second way has the advantage that you can have different options for
each post office. However, this kind of installation will not be as fast as
the first way as the program has to be executed for each PO separately.

To install the back-end of Mail Agent Rules in either way, please do the
following:

- On your router PC create a separate sub-directory for each installation
  set. In case of only one installation for all your post offices MARULES
  is recommended as directory name, in case of multiple installations
  MARULES\<POST OFFICE NAME> is recommended (e.g. MARULES\HUB1). In this
  case you should create a directory for each post office. (Multiple PO
  installations is discussed in much more detail in chapter 3)

- Unpack the files in the ZIP file of the program (MAR???.ZIP) to the
  sub-directory you just created.

  E.g.: PKUNZIP -D A:\MAR26D M:\MARULES

  Please note that a minimal installation requires the following programs:
   1. MARULES.EXE (Main program)
   2. MARULES.INI (Configuration file)
   3. MARULES.LIC (License file : full or trial license)

- Create and/or edit MARULES.BAT. This batch-file will be used to start
  Mail Agent Rules from the router. As the program needs to find all kinds
  of files in the current directory, the batch-file should change the
  current directory to the program directory of MAR before starting the
  program. Therefore the batch-file should look as follows:

  @ECHO OFF
  REM .BAT file to execute AGENT for Mail Agent Rules
  REM Change in to the POFFICE directory.
  M:
  CD\MARULES
  REM Now execute the AGENT
  MARULES [/FP] [/D] [/L] ([]=optional. See command-line parameters later)

  Make sure that the directory names are correct.

- Edit the MARULES.INI file, see the following example (a more thorough
  description of all switches in the MARULES.INI file follows in
  paragraph 4.2):

  REM .INI for E-MailWare Mail Agent
  PONAME=XXXXXXXX
  POPASS=XXXXXXXX
  POPATH=XXXXXXXX
  TempDir=Y:\XXXXX\XXXXX
  ~AGENTPASS=XXXXXXXX

  The TempDir is the directory that all attached files will exported to and
  later deleted.

  IMPORTANT: Don't pick a directory that contains other files as all files
  will be deleted from this directory!

  Note: If you don't want to type in the passwords for the post office and
        the mailbox in the INI file for security reasons, you can also use
        command line parameters. See command-line parameters.

- Use the ADMIN.EXE program to add the following entry to your Post Office:

  Name: ~ABSENTEE
  Locn: R
  Addr: TASKMGR/B=M:\MARULES\MARULES.BAT
  Cmts: Entry for Mail Agent from e-MailWare

  Make sure the Addr: field points to the correct directory.

  Note: TASKMGR is the same as GATELINK . /B advises the Router to execute a
        batch file. If you have only one Post Office you can insert GATELINK
        or TASKMGR as the address and then change the name of the batch file
        to ~ABSENTEE.BAT. The Router will then look in the current directory
        for a batch file which has the same name as the directory entry
        (~ABSENTEE).

        PLEASE REFER TO YOUR ROUTER MANUAL FOR MORE INFORMATION

- Execute the Router Admin program to add a CALL list to your Post Office.
  (e.g. RTADMIN PONAME POPASS POPATH)

  Add the following entry to the call list of your post office:

  Name            : ~ABSENTEE
  Time            : Auto/15 
  Min Msgs        : 0
  Days            : SMTWTFS

  These settings are recommended. Also create another call-list entry to
  run only when a message is sent to ~ABSENTEE:

  Name            : ~ABSENTEE
  Time            : Auto 
  Min Msgs        : 1
  Days            : SMTWTFS

  Using these two Call lists you can get a quick response from Mail Agent
  Rules.

2.4	Quick install

- Copy all Mail Agent files to C:\MAGENT


- Add Icon for ABSENTEE.EXE on Windows.

  Note: Working Directory should be your cc:Mail directory, e.g. M:\CCMAIL

- Use ADMIN.EXE to add the following mailbox to your PO.

  Name: ~ABSENTEE
  Locn: R
  Addr: 
  Cmts: Entry for Mail Agent from e-MailWare
	
- Set password to PASSWORD for now.

- Edit the C:\MAGENT\MARULES.INI file:

  REM .INI for E-MailWare Mail Agent
  PONAME=DUBLIN-PO
  POPASS=PASSWORD
  POPATH=M:\CCDATA
  TempDir=C:\TEMP
  ~AGENTPASS=PASSWORD

- Don't worry about other entries for now.

- Copy EMAILW.INI to C:\WINDOWS and edit,

  [eMailWare]
  C:\MAGENT

  [Absentee Manager]
  Directory Entries=20

- Run ABSENTEE.EXE from Windows and send a rule.

- Now run the Mail Agent,

  MARULES [/D] [/FP] [/L]

That's it, it is now working.

Mail Agent is now installed. If you have any major problems, please call
Frank Turley, e-MailWare Development or use the following e-mail address:

  X400       : c=us/a=telemail/p=langate/o=smdci/ou=davisblx/g=frank/s=turley
  CompuServe : 100140,601
  INTERNET   : Frank.Turley@emd.be

2.5	Performance

If you use the Router to execute MARULES.EXE then you are advised to use the
SWAP parameter. When using the SWAP parameter you can swap out the contents
of memory to the disk or memory. Note that swapping out to a local drive on
the PC will give better performance than a Network drive and swapping out to
higher memory will give even better performance. See Router Manual for more
information on the SWAP parameter.
It's also possible to use a RAM Drive as your temp directory. This means
that all messages will be exported and imported from a RAM drive.

Note: You may then be limited to the amount of memory on the machine, e.g.
      if you have a RAM drive of 6MBytes, then the biggest message you can
      handle is 6MBytes. This will not be a problem for most sites.

3. Multiple post office configuration

As already discussed in chapter 2, you have two ways to install Mail Agent
Rules for multiple post offices: To install it once and let it serve all
post offices or to install it for each post office separately. If you
install it separately, you will have to configure the MARULES.INI of each
installation set. If you have one installation set for all post offices,
you will have to let Mail Agent Rules know how to access the other post
offices (most of the time the down-streams). The first method is discussed
in paragraph 3.1, the second one in paragraph 3.2 and 3.3.

3.1	Separate installation

If you have a large site (e.g. 6 Post Offices) and you want to execute Mail
Agent Rules for each post office separately, the biggest issue you will face
will how to execute all Mail Agent programs for all post offices.

You have two options:
  1. Use the router always;
  2. Use a batch file. 

Use Router Always:
Here you will define a call-list entry on every post office and set up a
router to access the post office in turn for (1 minute or less) using the
parameter END/1M or END/0M. You will create a batch file that will execute
all the routers in turn with each Post Office. The Router will then execute
the MARULES.EXE file. This method should only be used if you have already
this kind of set-up for another automatic procedure
(e.g. watchdog for cc:Mail).

Use a Batch File:
Set-up a batch file to execute the Mail Agent Rules program in turn by
changing into each directory and executing MARULES.EXE. This is the most
simplest set-up. This batch file can be executed from one router for all
post offices.

3.2	LAN mode/HUB set-up

This is where you can specify that the Agent program should only be installed
on one Post Office per LAN and all Rule messages should be routed to it.
There you can specify that the program should only be installed on one post
office and all rule messages should be routed to it. This will mean having
the address of ~ABSENTEE as the HUB post office.

Directory Entry       Loc      Address  
~ABSENTEE              r       HUB_PO

Then you must specify all other LAN Post Offices in the MARULES.INI file and
their address. e.g. You have 4 Post Offices (1 Hub and 3 downstream):

  HubPo         =  LONDON_HUB
  Downstream 1  =  LONDON_SALES 
  Downstream 2  =  LONDON_PUR
  Downstream 3  =  LONDON_FIN

Then the MARULES.INI will look something like the following:

REM .INI for E-Mail Ware Agent

[Absentee Manager]
PONAME=LONDON_HUB
POPASS=PASS
POPATH=M:\CCHUB
TempDir=C:\TEMP
~AGENTPASS = PASSWORD
	
LONDON_SALES = I:\CCDATA
LONDON_PUR   = M:\CCDATA
LONDON_FIN   = N:\CCDATA

3.3	Dynamic linking to post office directories

The configuration described in the previous paragraph requires the router to
have a network connection to each directory with a post office. Sometimes
this just isn't possible because there are too many post offices and/or
there is a limitation on the number of connections that can be made. This is
the case with Novell Netware. The solution for this is dynamic linking to
directories that contains the post office. Mail Agent Rules uses the same
features as provided by cc:Mail to connect and disconnect to Network servers,
i.e. by enabling the use of batchfiles. See the cc:Mail manual for a detailed
discussion on these batchfiles (if you are using dynamic linking for the
cc:Mail Router you will have created these files already!). One can define
the use of a batch file (including path) by entering the /b parameter in the
MARULES.INI file after the definition of a downstream PO. For example:
PO-A = P:\CCDATA /BPO-A.BAT

An example of a configuration is as follows:

You have a hub post office and three down-stream post offices:
  1. LON_SALES
  2. LON_PUR
  3. LON_FIN

The entries in the MARULES.INI file will be as follows:

LON_SALES=I:\CCDATA /BLON_SALE.BAT 
LON_PUR=M:\CCDATA /BLON_PUR.BAT
LON_FIN=N:\CCDATA /BLON_FIN.BAT

In case of the post office LON_SALES, the post office directory I:\CCDATA
will be available after executing the batch-file LON_SALE.BAT. Note that you
enter the name of a batch files as well as the post office.
If Mail Agent Rules detects that the line in MARULES.INI contains /B it will
recognise the filename after the /B as a batch-file and it will execute the
batch-file twice: once using the parameter PRE (to get the connection) and
then using POST to break the connection, just as cc:Mail.

The exact parameters which are used to execute the batch-file are:
 1. Name of the post office that Mail Agent rules is trying to connect
    to/disconnect from; Makes it possible to use one batch-file for all
    your post offices.
 2. Type of connection change: PRE to connect and POST to disconnect;
 3. Name of the file for the output of the batch-file.

Please note the third parameter: To make debugging of errors in these
batch-files easier, all output from any programs called in the batch-file
should be redirected to this file-name! If you do this and debugging mode is
enabled with /D, the output will appear in the debug file MARULES.DBG.
This has been done, because otherwise the output would flash by on the
screen, without you having the chance to see what goes wrong. To redirect
output you can use the > and >> redirection symbols. The > symbol should be
used only on the first command that produces output (it will create debug
information in the file), the >> symbol should be used for any later commands
that produce output (it will append the information to the file!)

An example of the batch-file for the post office LON_PUR which is situated
on server "SERVER" on the "SYS" volume in directory "SYS:\DATA\CCDATA":

@ECHO OFF
rem ----------------------------------------------------------------------
rem   cc:Mail batch file
rem
rem   Name:   LON_PUR.BAT
rem ---------------------------------------------------------------------- 
rem   Used to attach to the correct file server and to create
rem   the correct drive mapping ...
rem ----------------------------------------------------------------------

ECHO Executing LON_PUR batch-file! > %3

if "%2"=="PRE"  goto Pre
if "%2"=="MID"  goto End
if "%2"=="POST" goto Post
goto End

:Pre
rem ---------------------------------------------------------------------- 
rem Pre: Create connection to server
rem ----------------------------------------------------------------------
attach SERVER\POSTMAN >> %3
map root M:=SERVER\SYS:\DATA >> %3
goto End

:Post
rem ---------------------------------------------------------------------- 
rem Post: Remove connection from server
rem ----------------------------------------------------------------------
map del M: >> %3
logout SERVER >> %3
goto End

:End
ECHO End of LON_PUR batch-file >> %3

4. Configuration

You can configure Mail Agent Rules in a number of ways. To configure the
back-end program, you can use command-line options, the configuration (INI)
file and exclude files. For the windows client program you will need the INI
file (not discussed here, see paragraph 2.2) and command-line options. In the
next paragraphs the following options will be discussed:
 - Command line options for the back-end in  4.1
 - Options/switches in MARULES.INI in  4.2
 - The exclude file for user-names (EXCLUDE.AM) in  4.3
 - The exclude file for post offices (EXCLUDE.PO) in  4.4
 - Windows client command-line options in  4.5

4.1	Command line options for the back-end

Mail Agent Rules accepts the following options on the command line:

/?  Provides a help screen that gives a list of all command-line parameters
    and more.

/D  This option makes Mail Agent Rules write all kinds of debugging
    information to a file called MARULES.DBG. This debug information also
    includes all program output of the programs it calls, including IMPORT/
    EXPORT. This parameter should not be used in production and should only
    be used when trying to study the program or detect a problem.

/L  Log rule changes: With this option enabled Mail Agent Rules will write
    each change in a rule to a log file. This can be used for debugging
    purposes or for security reasons.

/C	This option makes Mail Agent Rules display all options that were set on
    the command-line and in the MARULES.INI file. This should be used when
    installing Mail Agent Rules to make sure that all parameters entered in
    the MARULES.INI file and on the command line are OK.

/FP	Full Parameters: IMPORT.EXE and EXPORT.EXE version 5.XX have a different
    command-line format than earlier versions. It is necessary to give the
    parameters in full to ensure that they will work properly.

/P	Option for Post Office password. This allows you the possibility not to
    have to place the password in the MARULES.INI file. The password for the
    post office should be placed directly after the /P. Also one space should
    be given after the password, before any next command-line option.

/A	Option for ~ABSENTEE mailbox password. This allows you not to have to
    place the password in the MARULES.INI file. (See for other notes /P)

4.2	Options/switches in MARULES.INI

Some of the parameters in the INI file are required, while other ones are
optional: Most of the optional parameters were requested by companies so
Mail Agent Rules would work better in their environment.

Required parameters:

PONAME=               Name of the post office with the ~ABSENTEE mailbox.

POPASS=               Password of the post office with the ~ABSENTEE mailbox.

POPATH=               Directory of the post office with the ~ABSENTEE mailbox.

TEMPDIR=              Directory that can be used for temporary files. This
                      should be a directory that is not used by other
                      programs or the operating system as all files are
                      deleted from this directory.

Optional parameters:

ReplyFormat=US        The default format is European (dd-mm-yy) so this
                      allows the Americans to specify the US format.
                      (It's not what the US has done for you, it's what you
                      have done for the US)

AbsentName=           This option changes the reply author name of Mail Agent
                      Rules. Normally when MAR replies to a message, the
                      messages seem to come from a non-existing user called
                      Mail Agent Rules. If you want to change this, you can
                      use this option.

Agent=                If you don't like the default name of the MAR mailbox
                      ~ABSENTEE, you can use this option to change it.

OverWriteRule=1       If OverWriteRule is enabled, Mail Agent Rules will
                      overwrite a current rule for a certain user, if it
                      receives a new rule from that user. Normally MAR will
                      reject it and advise the user to cancel the current
                      rule first.

LOG=                  This option gives you the possibility to let Mail Agent
                      Rules write to another log-file than MARULES.LOG which
                      is the default. It does not enable the log-file! This
                      should be done with the /L command-line option!

LanguageFile=         This option lets you specify a language file, so Mail
                      Agent Rules will use another language to reply and
                      forward messages.

IgnoreOldDirupdMsg=1	This switch was added so on request Mail Agent Rules
                      would ignore old style directory updates sent to
                      cc:Remote users. These messages get into the in-box of
                      the user and are not processed anymore if Mail Agent
                      Rules changes the subject. With the switch enabled it
                      will ignore these messages, but also all other messages
                      that START with "Directory update #".

4.3	The exclude file for user-names (EXCLUDE.AM)

It's possible to place names in the file "EXCLUDE.AM" and Mail Agent Rules
will not reply to any message from a name listed in this file. This is
important if you receive message from an automatic procedure or a list
service on the Internet etc.
To set this file up, you just have to create a file named EXCLUDE.AM in the
program directory. You don't need to add any options to MARULES.INI!

Example of EXCLUDE.AM:

DaleWJ@World.std.com
John PJ Smith

Note:	EXCLUDE.AM must be in the same directory as MARULES.EXE and do not
      include any post office names in the addresses you put in the file.

4.4	The exclude file for post offices (EXCLUDE.PO)

This is very similar to exclude user list. All messages received from a
post office listed in EXCLUDE.PO will not be replied or forwarded to another
user.

This is an example of the EXCLUDE.PO file:

BEPHRI04
BEPHRI03
INTERNET

So as you can see any message received from the Internet will ignored
by Mail Agent Rules.

4.5	Windows client command-line options

In order to allow further command line parameters in the client, the path
can no longer be put in the command line on its own. See below for the new
command line parameters:

/P	This parameter contains the windows path. This is optional, but is
    recommended if you are having trouble finding the Windows directory.

/C  This parameter gives the current settings in the windows client of MAR.
    Use this option to check that all run-time parameters are OK. It reads
    the settings from the INI file etc. and displays all the run-time
    parameters to the user. It then ends execution.

5. The windows client program

The windows client program is the user-friendly windows interface of Mail
Agent Rules. The program lets you simply create and cancel a rule. The
program uses VIM to log-in to the users mailbox and send rule messages.

5.1	How to use

When you start the program it will show a log-in window, where you can type
and/or select your user-name, password and post office directory. After a
successful log-in the following information is presented to the user:

Start Date:        Type in the start date and time that you wish the
                   rule to start. The current date and time is automatically
                   inserted into the start boxes on start-up.

Stop Date:         The stop date and time allows you to stop the rule from
                   executing at a particular time. (e.g. You are away from
                   Wednesday to Monday and you want all your mail to be
                   automatically forwarded on Thursday and Friday only. Then
                   on Friday evening automatically cancel the rule as their
                   is no use forwarding your mail then.)

Auto-Forward:      Select the user from the cc:Mail directory that you wish
                   to forward your mail to. This name is selected form the
                   post office mail directory. As the program cannot
                   possibly show the whole directory, the user has to type
                   some characters of the name first. E.g.: you want your
                   rule to forward your messages to John Smith. Then you type
                   Smi in the combo-box and click on the down arrow of the
                   combo-box and the program shows all names starting with
                   Smi in the cc:Mail directory. However, the total number of
                   names that will be shown is limited.

Text Message:      You have also an option of typing in a message that will
                   be sent to each user (auto-reply message). This is
                   optional.

Auto-reply:        With this option enabled MAR replies to the messages sent
                   to this user. It is used in combination with the auto
                   reply message. This means that you cannot type an auto-
                   reply message if this option is disabled. On the other
                   hand, you don't have to type in an auto-reply message
                   when the auto-reply option is enabled.

Urgent messages:   This option tells Mail Agent Rules to send a reply for
                   urgent messages only. This will not influence the
                   forwarding of messages.

Reply only once:   This option makes Mail Agent Rules reply only once to
                   each user. To do this it creates a list for each rule
                   that has this option enabled. In this list it keeps the
                   users the rule already replied to.

The program has the following menu commands:

Cancel rule:       If you select cancel rule the program will send a special
                   cancel message to the back-end mailbox of Mail Agent
                   Rules. If the cancellation was successful MAR will send
                   back a confirmation that the rule has been deleted.

Send rule:         This command will send a new rule.

Force cancel:      This special option allows you to cancel a rule that was
                   not sent on this workstation. The windows program will
                   also register a rule that is sent, only on the current
                   workstation. The next time you start the program, it will
                   show you the rule you last sent. In this case you will
                   have to use the cancel rule command, before you can send
                   a new rule. This has been done this way, as the windows
                   program cannot look into the rules database to see if the
                   current user has a rule available.
                   However, in some cases it can happen that the workstation
                   you are working on does not have the information about the
                   rule that was last sent. This can happen if you log-in
                   from another workstation or someone else logs in on your
                   request. In this case you will not be able to use cancel
                   rule as there was no rule found, so you will have to use
                   force cancel.

Exit:              Leave the program.

The program also has speed-buttons to: send a rule, cancel a rule,
display help and to leave the program.

On line help is available for all areas of the Windows client program which
can be made available by pressing function key F1. You can also get help
with the menu commands in the help menu. The help file also includes a
step-by-step feature which describes how to use Mail Agent Rules, the
log-in Window, creating a rule, sending a rule, cancelling a rule etc.
Once you have typed in the necessary data then your are ready to select to
send the rule (by clicking on the send icon). The rule will then be sent to
the back-end program of Mail Agent Rules which is located on the post office.

5.2	Directory access

The windows client program uses the VIM API to link to the cc:Mail Directory.
To have access to the cc:Mail directory is extremely handy as it allows the
user to select a name from the post office directory to whom you want to
forward messages. This makes it almost impossible to make a spelling mistake,
thus causing the rule to fail.
As told before, the program cannot show the whole directory. The user has to
type a selection first to limit the number of users that will be shown. To do
this the user has to take the following steps:
 - Type in the first few characters of the user-name you want to forward
   messages to. E.g. "Smit"
 - Make the combo-box show its list by typing [Alt] + [KeyDown] or press
   enter. This can also be done with the mouse by clicking in the down arrow
   at the end of the combo-box.
 - The user will then see a selection of the cc:Mail directory.
 - The user can then use the mouse or the Arrow Keys to select the correct
   name from the directory.

IMPORTANT NOTES:

The total number of entries that can be shown in the list is limited.
This to prevent all kinds of problems with large directories and/or large
selections. The maximum number of entries that will be shown in the list is
given in the EMAILW.INI file, the configuration file of the windows client
program.

E.g.:
[Absentee Manager]
Directory Entries = 50

The maximum amount that can be typed in is 60!

If there are more than 60 Smiths in the company then the user should type
"Smith, ?" to get the correct name.

6. How the program works

Once the user creates a rule and selects send rule, the windows client
program generates a cc:Mail message and sends it to the ~ABSENTEE mailbox
on that Post Office. The message has the following layout:

DAYSTART=22/04/1994
TIMESTART=10:26
DAYSTOP=29/04/1994
TIMESTOP=10:26
AFUSER=Valentine, John
PASSWORD="U-Z)&.**W'$R/
REPLYMSG=1
MESSAGE=1
Text item: Message
Hi Sender,

I am travelling in ASIA for one week and may not be always able to dial into 
to my Post Office, when I do connect I will then receive all my mail. All 
messages will be forward to my colleague (John).

Regards,

Frank

This message is then exported and deleted by the back-end program. It then
reads the message and writes a rule to the rules database file. This message
could also be a cancel rule message where the rule would then be deleted
from the rules database.
The message item (Hi Sender....) is written to a ASCII text file (.TXT),
the name of the .TXT file is listed in the rule.

Mail Agent Rules then reads all the entries in the rules database and starts
to export unread messages (that it has not already read). If an unread
message is exported Mail Agent Rules does the following:

- Deletes message from Mailbox

- Imports message back to Mailbox with two changes:
  1. Adds header information;
  2. Adds Flag to the subject field (!AM!).

- Replies to the sender of message and attaches the user's message:
  =====================================================================
  Frank Turley is absent from work and will return on the 31/03/1994.
  All messages will be automatically forwarded to Joe Valentine 
  A copy of each message will remain in their inbox until they return.
  ===================================================================== 

  Hi Sender,

  I am travelling in ASIA for one week and may not be always able to dial in
  to my Post Office, when I do connect I will then receive all my mail. All
  messages will be forward to my colleague (John).

  Regards,

  Frank

- Forwards the message to colleague and adds following header,
  ============================================================
            Forwarded by Mail Agent for John Valentine
  ============================================================

  Note: The subject field is also changed in the auto-reply and auto-forward
        messages.

This process will continue until all unread messages have been read for all
rules listed in the rules database.

Note:
- Mail Agent Rules will not accept rules that have no password specified.
- It will also delete a rule if a password was specified, but it cannot
  export the users messages. This can happen if the user-name, the password
  or post office path is wrong. To prevent it from deleting a rule if a
  network connection is lost, the program checks the availability of the
  post office directory. If it is not available, it will not delete the rule!

7. DOS/OS2/MAC user interface

Mail Agent Rules only provided a Windows GUI interface when it was first
released but due to demand it now provides a text interface which allows
DOS, OS/2 and MAC users to create and cancel rules. The users sends a
formatted message to the Mail Agent Rules mailbox (~ABSENTEE).

There are three messages Mail Agent Rules will accept:
 1. Help request
 2. Create a new rule
 3. Cancel a rule
 4. Get the status of a rule

7.1	Help request

The user can request a blank form to fill in by simply sending a message
to ~ABSENTEE with HELP in the Subject field:

  To: ~Absentee
  Subject: HELP

The Agent will than send a blank form back to the user where the user can
reply and fill in the form.

7.2	Create a new rule.

You will have the following message in your draft folder (if you don't have
a draft folder the you can store it in some other folder), you will select
this message and fill in the date and other fields:

  To: ~Absentee
  Subject: Create New Rule
			
    ======================================= 
         NEW RULE FOR MAIL MANAGER   
    =======================================


  Your cc:Mail password                      : PASSWORD
    (Password is encrypted at Agent)  e.g.   : PASS

  Start Rule on Date ?  (Format DD/MM/YYYY)  :   /  /1996
   (e.g. : 20/01/1994)

  Time to Start Rule ?  (Format HH:MM)       : 00:00      
   (e.g.   12:00)
     

  Stop Rule on Date ?   (Format DD/MM/YYYY)  :   /  /1996
   (e.g. : 27/01/1994)         

  Time to Stop Rule ?   (Format HH:MM)       : 24:00 
           (e.g.   12:00)

  Forward your mail to ?                     : 
   (e.g.  : John Smith)
     
  Send reply message ?  (Format Y/N)         : Y

  Mark your Inbox messages as Unread  (Y/N)  : Y 

  Reply only to Urgent messages (Format Y/N) : N                    
     
  -----------------start of custom message-------------------
     
  I am away from the office today and will be back tomorrow
  All my mail will be forward to Henk
     
  ------------------end of custom message--------------------
     
  Note:  To create new rule then Subject must be "Create New Rule"    
         To cancel rule then Subject must be "Cancel Rule"

Please note that the exact format of this message can be obtained by
sending a help request.

7.3	Cancel a rule

You just need to send a message to the Mail Agent Rules mailbox (~ABSENTEE)
and your rule will be cancelled. If you don't have a rule in the database,
the request is ignored. You will receive a message from the program when
your rule is cancelled. To send a cancel request the subject of the message
should be CANCEL RULE.

7.4	Get the status of a rule

To see if you already have a rule registered in the database, you can send a
status request to the Mail Agent Rules mailbox. Just send a message to the
mailbox (most of the time ~ABSENTEE) and put STATUS in the subject field.

7.5	Date Format (US)

Believe it or not, some Americans don't like to type DD/MM/YYYY but
MM/DD/YYYY so we have to support this. If you wish to use this date format
then insert the following line in NEWRULE.HLP and don't forget to change the
example date shown.

  Subject must be: Create New Rule
  Date Format    : US
  =====================================
      NEW RULE FOR MAIL MANAGER 
  =====================================
  etc.

Appendix A	Frequently asked questions

Questions about the back-end:

Q1  I always get the error "IMPORT.EXE cannot be found in the path" or
    "EXPORT.EXE cannot be found in the path". However I can type EXPORT in
    the Mail Agent Rules directory and it is executed, so it must be in the
    path. What's wrong?

A1	Mail Agent Rules works from the temporary directory defined in the
    MARULES.INI file! When it checks for the existence of IMPORT or EXPORT
    in the path, it does this from the temporary directory. If you have
    relative path-names in your path, the results could be different than
    you expect. Relative path-names are path-names that depend on the current
    directory, e.g. a dot "." for the current directory or two dots ".." for
    the previous directory. If you have this kind of path-names in your path
    it is possible that the programs cannot be found when executed from the
    temporary directory, while they can be found from other directories.
    To check this, try executing IMPORT or EXPORT from the temporary
    directory. If you get bad command or filename, change your path. If
    they can be found, please report this to EMD.

Q2	I always get the error message that MARULES cannot access its mailbox
    and it ends. Still I have checked all parameters, like the mailbox name,
    mailbox password and post office path. Still it doesn't work.
    What can I do?

A2	Try running MARULES with the /D parameter enabled. To make that the
    MARULES.DBG file only contains the output of the last run, please rename
    or delete the file if it is already present. After running MARULES with
    /D, please look into the MARULES.DBG file which error the EXPORT
    program reports.

Q3	At the end the program always reports:

    Rules in database at start : 0
    Rules in database at end   : 0

    When I use the /D switch, the MARULES.DBG file always shows:

    Mailbox ~ABSENTEE is empty!

A3	This is not an error message. Mail Agent Rules advises that it couldn't
    find any message for a rule change in its mailbox. (in this case
    ~ABSENTEE).

    If you are sure that some rule changes were sent, please check the
    following:
    The windows client program should send its messages to the correct
    mailbox. If you have a multiple post office configuration, please check
    that the remote ("r" or "l") mailboxes in the down-streams have the
    correct address, so their mail is routed to the HUB post office defined
    in MARULES.INI.

Q4	I get the message: "Export process ended with error 3".

A3	If you are using IMPORT/EXPORT version 5.X then you should use the
    /FP command-line switch, to let Mail Agent Rules know that you use this
    version: e.g. MARULES /FP.

Questions about the windows client software:

Q1	When I start the program nothing happens! What's wrong?

A1	ABSENTEE.EXE needs the Visual Basic runtime libraries and the VIM
    libraries to run correctly. Please check if all needed libraries are
    available to the program (see  2.2.2: Installation of the needed
    libraries.)

Q2	I receive: "ABSENTEE.HLP not found"

A2	Apparently the program has ABSENTEE has problems reading your WIN.INI
    file, this mostly occurs when Windows is executed from the Network and
    Windows returns an invalid directory as the windows directory. To solve
    this, you will have to let ABSENTEE.EXE know your correct windows
    directory by using the /P parameter. To change this, select the icon
    from the program and select File/Properties. In the command-line box,
    you add: /P together with your correct windows directory,
    e.g. /PC:\WINDOWS

Q3  I receive the error message "CHARSET.DLL not found"

A3	CHARSET.DLL is part of the VIM libraries. Please, see answer A1.

Q4	I receive the message "Can't set message recipient" when I send a rule.

A4	The post office where the user logged in to, doesn't have a mailbox
    defined for Mail Agent Rules. The default name for this mailbox is
    ~ABSENTEE. The back-end program will pick up any rule change messages
    from this mailbox.

Q5	When I start ABSENTEE, my user-name and post office path is never shown
    in the log-in window, so I have to type them in again. What's wrong?

A5	cc:Mail stores all information about all users that have logged into a
    post office in WIN.INI. ABSENTEE uses this information to show the
    user-name and post office path of the user that logged in last in
    cc:Mail or cc:Mobile. When the log-in window does not show this
    information, the program apparently cannot find any cc:Mail information
    in WIN.INI or it cannot find WIN.INI. In the first situation you will
    have to use cc:Mail or cc:Mobile to create a user directory. In the
    second situation you will have to use the /P command-line parameter.
    (see answer A2)

Q6	I receive "Invalid File Format" when I start ABSENTEE.EXE.

A6	This is because the structure of EMAILW.INI has changed and you need to
    use the newer version of ABSENTEE.EXE (date: Feb. '95)

Q7	When logging in with ABSENTEE.EXE, I get the error:

    "Invalid Login Status: 5"

    and the program stops.

A8	You have a mixture of DLL files on your PC, just define your working
    directory for ABSENTEE.EXE as the cc:Mail program directory
    (e.g. M:\CCMAIL ).

Appendix B	The manager/secretary problem

The Manager Secretary relationship is a complicated one as far as writing
an e-Mail system is concerned if you were trying to offer all their possible
requirements. They have many requirements which are not supported by any
e-Mail system.

The more popular requests are:

- To auto-forward mail from the managers in-box to the Secretary and also
  have the choice to place these messages into a folder so they will not
  fill up the mailbox. This will allow the secretary to read all the users
  (Managers) mail.

- Allow the sender to define that a message is a confidential message so it
  will not be forwarded to the secretaries mailbox, this could be used by
  other Managers if they wish to send a confidential message.

- Allow the manager to dial in and receive his mail even though they have
  been read and forwarded to his secretary.

- Allow the secretary to send a message to the manager without receiving it
  back.

These features will really push your e-Mail system which you are using
whether it's cc:Mail, WordPerfect, MS Office, MS Mail etc. Even the third
party tools for auto-forwarding (redirecting) mail can not provide the
above functionality.
For cc:Mail many companies have tried to use an alias configuration but the
result of that is that the manager has no longer a mailbox and can never
send a message (unless he sends it from his secretaries mailbox). Also some
companies have tried using a mail list to split the message (one to the
manager and secretary) but this will not work if a users replies to a
message from the manager.
The three third party products for cc:Mail (Out of the Office,
Absentee Manager and C2C's Redirector) do not provide these features as they
were designed for simple Auto-forwarding and Auto-replying.

e-MailWare has now added this functionality to Mail Agent Rules.

HOW IT WORKS:

- To auto-forward mail from the managers inbox to the secretary and also
  have the choice to place these messages into a folder. The manager will
  have a rule defined in Mail Agent Rules that will automatically forward
  his mail to the secretary, !AM! will be added to the subject of the message
  automatically by MARULES. If the manager then wants to copy all !AM!
  messages to a different folder then he can define a rule in cc:Mail to do
  this on start-up (copy any message if the subject contains !AM!).

- Allow the sender to define that a message is a confidential message so it
  will not be forwarded to the secretaries mailbox. If a user wants to send
  a confidential message to the manager (that they do not want forwarded to
  his secretary) then the user must place !C! (confidential) as the first
  three characters in the subject of the message. Mail Agent Rules will then
  ignore this message and therefore not forward it to anybody.

- Allow the manager to dial in and receive his mail even though they have
  been read and forwarded to his secretary. After Mail Agent Rules has read
  a message it then deletes it from the users mailbox, edits the Subject
  (Adds !AM! to it) and imports the message as new back into the users
  mailbox. The message will then appear as new so when the user dials in
  all new messages are automatically send to him/her.

  Note: The user can also select to leave message marked as read if they do
        not want to use this option.

- Allow the secretary to send a message to the manager without receiving it
  back. If the secretary wants to send the manager a message (without
  receiving it back) then she can place !AM! as the first four characters in
  the subject field. The program will ignore this message and it will remain
  in the users (Managers) in-box. Therefore the manager can select to have
  only confidential mail and mail from his secretary in his/her mailbox.

SUMMARY

As you can see Mail Agent Rules is able to support all of the above
requirements which have been requested by many Mail Agent Rules customers.
If there are other features that you think should be added to better support
your users then please contact e-MailWare Development. Mail Agent Rules is
used by many companies for other tasks besides the normal replying and
forwarding of mail, one company uses it as a gateway to another e-Mail
system, another company has travelling users on a DEC systems sending a rule
to Mail Agent Rules which then forwards all mail to the DEC addresses.
So you can see that Mail Agent Rules is a very versatile product that can be
used to automate many cc:Mail procedures.

Appendix C	Structure of the rules database

The rules database MARULES.DB always has a number in the first line, if the
MARULES.DB file is deleted and MARULES.EXE is executed then 1000 is placed
in the first line. All other lines contain rules for each user.

There are 11 fields in each line that contains a rule:
  1.  User Name
  2.  Password
  3.  Start date
  4.  Start time
  5.  Stop date
  6.  Stop time
  7.  Forward name
  8.  Message reply filename.
  9.  Flag: If this flag is 1 then reply to messages is enabled.
  10. Flag: If this flag is 1 then the messages are marked as unread. This
      is also the default.
  11. Flag: If this flag is 1 then MAR will only reply to urgent messages.
  12. Flag: If this flag is 1 then MAR will only reply once to each user.
  13. Name of the file that will contain the user-names MAR has already
      replied to. (see field 12)

Appendix D	Error codes

When the program produces a run-time error, it will stop and give you the
following information on screen and if you used the /D command line option,
also in the debug file MARULES.DBG:

The program has stopped due to an error!
Please use the debug command line switch /D so the program will
show more information. Note: If you are using IMPORT/EXPORT
version 5.XX then you should use the /FP command line switch.
If the error isn't explainable with the information that the /D
switch gives or cannot be resolved by using the /FP switch, please
write down the information below!

Error information:
  Program        : Mail Agent Rules version 2.6D
  Error occurred : In ShellToDos routine
  Error number   : 7
  Error address  : 68974

Some errors are caused by certain circumstances in the environment Mail
Agent Rules runs in. The list of run-time error codes and their explanations
below may help you to diagnose a problem if one should arise.

Error	Description

2   Syntax error: A read statement tries to load string data into a variable
    that can only accept numeric values.
3   RETURN without GOSUB: A RETURN was encountered without a matching GOSUB;
    that is, there is nothing to return from.
4   Out of data: A read statement ran out of DATA statement values.
5   Illegal function call: This is a catch-all error related to passing an
    inappropriate argument to some statement or function.
6   Overflow: The result of a calculation is too large to be represented by
    the variable. (It doesn't fit)
7   Out of memory: There is not enough memory to do a specific action.
9   Subscript out of range: The index used to access an array is not valid.
    It is smaller than the minimum index or larger than the maximum index
    that can be used.
10	Duplicate definition: A dynamic array is created a second time with the
    same name, without first erasing it.
11	Division by zero: The program attempts to divide by zero or to raise
    zero to a negative power.
13	Type mismatch: A string value is used where a numeric value is expected
    and vice versa.
14	Out of string space: The memory to store strings is exhausted.
15	String too long: The string is too long to be stored. This can happen
    only if a string is longer than 32 KB.
19	No resume: Program execution ran to the physical end of the program
    while in an error-trapping routine. There may be a RESUME statement
    missing in the error handler.
20	Resume without error: The program executed a RESUME statement without an
    error occurring; that is, there is no error-handling subroutine to
    RESUME from.
24	Device time-out: A COM device did not respond within the specified
    time-out value.
25	Device fault: A hardware error has occurred, for example, with the
    printer interface or a communications adapter.
27	Out of paper: The printer interface indicates that the printer of out
    of paper. The printer can also be turned off or have some other problem.
50	Field overflow: Given the file's record length, the program attempted to
    define too long a set of field variables in a FIELD statement.
51	Internal error: A malfunction occurred within the PowerBasic run-time
    system.
52	Bad file name or number: The file number given in a file statement is
    not valid.
53	File not found: The file name specified could not be found on the
    indicated drive.
54	Bad file mode: The program attempted to read a sequential file in binary
    mode.
55	File already open: The program attempted to open a file already open, or
    tried to delete an open file.
57	Device I/O error: A hardware problem occurred when trying to carry out
    some command. This error may be generated during communications.
58	File already exists: The program tries to rename a file to a file name
    that already exists.
59	Bad record length: The program tries to read a record with a wrong
    record length.
61	Disk full: There isn't enough free space on the indicated or default
    disk to carry out a file operation. Please create some more free disk
    space and retry.
62	Input past end: The program tried to read more information from a file
    than it could read.
63	Bad record number: The program tried to read a record with an invalid
    record number.
64  Bad file name: The file-name in a KILL/FILES or NAME statement contains
    invalid characters.
67	Too many files: This error is generated when the program tries to create
    too many files in the drive's root directory or by an invalid file name
    that affects the performance of the DOS create file system call.
68	Device unavailable: The program tried to open a device that was not
    available on that machine.
69	Communications buffer overflow: The serial port buffer could not receive
    more characters as the buffer for the serial port exhausted.
70	Permission denied: The program tried to write to a write protected disk.
71	Disk not ready: The door of a floppy disk is open or there's no disk
    in the drive.
72	Disk media error: The controller board of a floppy or hard disk indicates
    a hard media error in one or more sectors.
73	Feature unavailable: The program tried an operation that requires a later
    version of DOS, e.g. network locking statements etc.
74	Rename across disks: The program tried to rename a file to a file on a
    different drive.
75  Path/file access error: A path-name is used in an inappropriate way:
    e.g. the program tried to open a sub-directory or tried to delete a
    directory still in use.
76	Path not found: The path-name specified does not exist.
201	Out of stack space: The stack space needed to store variables etc.
    is exhausted.
203	Mismatched common variables: The common program variables between two
    programs, where one program chains the other program do not match.
205	Mismatched program revisions: The program tried to chain another program
    which is of a different version of the PowerBasic compiler.
206	Invalid program file: The program tried to chain a program not compiled
    by PowerBasic.
207	Array is static: A statement or function for dynamic arrays is used on a
    static array.
208	Invalid string handle: An invalid string handle was passed. See error 242.
209	Incompatible mouse driver.
210	Huge array now allowed: Using a huge array is not allowed in this context.
211	Pointer is null: The program tried to use an invalid pointer.
241	Far heap corrupt: The far heap has been improperly overwritten. See error 242.
242	String memory corrupt: The string memory area has been improperly
    overwritten. This could be caused by an improper action of an assembly
    routine, by array access outside of the dimensioned limits, by an error
    within the PowerBasic run-time system or by a stack which is too small.
243	CHAIN/RUN from .EXE file only: The program attempted to chain another
    program from within the PowerBasic environment.
244	Missing library: The statement that is executed needs a library that was
    not included.
245	CHAIN/RUN too big: A program that is chained, doesn't fit in memory.
246	Invalid stack frame: The program attempted to execute an EXIT FAR branch
    or local error handler but discovered an external object module's routine
    with an invalid stack frame.

Appendix E	Information about E-MailWare Development

E-MailWare Development is an E-Mail/Group-ware support company and our aim
is provide the end user and e-Mail administrators with useful tools. We also
write programs for companies who wish to out-source their development.

Our main development tools are:
 - Visual Basic
 - Visual C++
 - Quick Basic
 - C (DOS)
 - MS ACCESS
 - Power Builder

Distributor in US is Johnson Consulting : Tel +1-617-9385206
European Countries call e-MailWare Development.: Tel +32-16-445463

