AutoShare 3.0 Documentation



AutoShare, a freeware EIMS companion application.
A list server and auto-responder for the Macintosh.
The AutoShare software and documents are copyright © 1994-1998 Mikael Hansen.
The credits are located in the AutoShare application About boxes.


AutoShare 3.0.2 offers minor improvements and bug fixes.

AutoShare 3.0 introduces two database formats for subscribers as its major feature and furthermore offers support for list-specific languages for subscribers, MIME digests as attachments and additional commands for remote administration by e-mail. As always, support for more bounce formats has been added. See also the notes on upgrading, post-releases and minor improvements and bug fixes.

The major feature in AutoShare 2.0 is Multiple instances of preference sets.

To subscribe to the AutoShare Talk list, send mail to autoshare-talk-on@frutiger.staffs.ac.uk.

If you're in a rush or find the documentation daunting at first, the quick tutorial is for you :-)


Table of Contents

Welcome to AutoShare

Getting started

Running the server

Moving on Technical specifications Improvements and bug fixes The small print


Welcome to AutoShare

Hello there! Glad to have you here. By November 1994, so many nice people had requested copies of my Internet Interviews that I decided to not only put the article on a web server, but also write software automating the process of getting it by e-mail. While it is easy to take things for granted in this computer day and age, no list server software was available for the Macintosh back then, so AutoShare swiftly turned into the humble beginnings of that too in December 1994. The rest is history, as they say.

About Macintosh mail servers

EIMS and SIMS are Macintosh SMTP and POP3 mail servers and support simple mailing lists.

For further information on SMTP and POP3, see RFC 821: Simple Mail Transfer Protocol and RFC 1225: Post Office Protocol, Version 3.

What are EIMS and SIMS?

Information on EIMS (Eudora Internet Mail Server, formerly AIMS and MailShare) is available here.


AutoShare 2.2 is compatible with the message file format changes introduced in EIMS 2.1 and furthermore benefits from its New User AppleScript command.

With the release of version 1.2.1, SIMS (Stalker Internet Mail Server) too may be used with AutoShare. Click here for instructions.


About AutoShare

AutoShare, a Macintosh list server and auto-responder, is about sharing e-mail messages in an automated fashion. AutoShare communicates with the mail server by exchanging message files in a speedy fashion.

What is AutoShare?

AutoShare, a freeware EIMS (Eudora Internet Mail Server, formerly AIMS and MailShare) companion application for the Macintosh, is a list server (which distributes mail to the subscribers of discussion lists) as well as an auto-responder and a vacation notice service (which both return automated mails to users). It is robust, speedy and requires little memory. The 68K and PowerPC native server applications, tested with Mac OS 8.0, are fully scriptable and may be configured using the AutoShare Admin, an administration application with balloon help.

Are you ready for AutoShare? The highly configurable feature cornucopiua puts the sizzle in this razzle-dazzle extravaganza. AutoShare is truly the house of generosity when it comes to features and functionality. And yet at the same time, AutoShare is a jumping jackpot racing to do its thing without asking for much memory, even when your lists has tens of thousands of subscribers. AutoShare is the fun town that never sleeps!

Using AutoShare for the first time

If you are a first-time user of AutoShare, you may want to decide on a few issues before putting it to work.

When configuring your EIMS accounts and your AutoShare preferences, always test your configuration first before letting your subscribers do it.

Before setting up your first list server list, decide whether subscriber addresses should be based on the RFC From address (where to reply to) or the SMTP envelope sender (where it is coming from) of the subscription requests; if the former, then configure accordingly. RFC is an abbreviation for Request for Comments, which comprises more than just e-mail related matters.

Upgrading AutoShare

When upgrading to a new version of AutoShare, please study this document thoroughly and make sure to clear your current log file (AutoShare Log in the AutoShare folder, where the AutoShare preferences are stored, inside the System 7 savvy Preferences folder) and the current archive files (in your Archives folder) before installing the version, as the format of these may have changed in the new version. You can clear the log by pressing the Now button using the Times menu item in the server application, as sending logs initializes the logs at the same time. The current files in the Archives folder are simply the archive files, whose names begin with Current and which can be cleared by renaming them, and also the digest files, which can be cleared in a way similar to the logs.

Version 3.0 introduces the Verify File, SetSubscriberDB and GetSubscriberDB commands. It also adds the Database and Language properties to the List Options class, the Bounce Grace Period property to the Misc Options class and the standardSub property to the GetSubscribers command.

Version 2.4 adds the Bypass Blank property to the Write Log AppleScript command and the Notice property to the Filters Options class. The Clear property in the Filters Options class has been refined. The SetRes and GetRes commands have been restructured and expanded.

Version 2.3 adds the Unknown Addresses property to the Misc Options.

Version 2.2 updates the AppleScript dictionary by applying enumerations (constant classes). 'SetMisc Options {Log: "Brief"}' as an example is now to be replaced by 'SetMisc Options {Log: Brief Log}'. The advantage is that a compiled script will reveal an invalid enumerated property value (perhaps due to a typo) as an immediate syntax error (when compiled or when run), whereas a string value is a matter of contents rather than syntax and as such cannot be detected by the AppleScript language per se.

A total of 15 enumerations including 51 enumerators and 60 enumerator instances have been changed in the server application. Affected are 4 classes (List Options, Misc Options, Times Options and Filter Options) and 7 commands. The AppleScript dictionary, which is merely the tip of the iceberg as the code to support it took the most time, illustrates how the property values are placed along with the property names rather than in the comments.

The sets of enumerated values in the AppleScript dictionary correspond to the sets of radio buttons in the Admin, as they both reflect the same multiple choice situations.

The comments for boolean and enumerated values have been fully updated in the dictionary to reflect defaults whereever not indicated previously. The same goes for optional and read-only indicators.

Additionally and extending the above totals, the value for the Lists parameter in the GetFilters command is now enumerated as well.

The Listserv property in the Folder Options class has been renamed to List Server. The Listserver Name property in the Misc Options class has been renamed to List Server Name. The Listserver Label property in the Misc Options class has been renamed to List Server Label. The XSeeAlso property in the List Options class has been renamed to List Help.

The RunScript AppleScript command has furthermore been added, which is used to call the Script process extender via the AutoShare server.

Version 2.1 updates the AppleScript dictionary by adding the Bypass Add to the Subscribe command. The Misc Stuff and List Stuff properties (aimed at my fence-sitting) in the Misc Options and List Options respectively may be used with various letters, whose functionality is described elsewhere in this document.

When upgrading to version 2.0, notice that the AutoShare Temp folder has been moved into the AutoShare folder inside Preferences folder; you may go ahead and delete the Temp folder at its former location in the Preferences folder.

Version 2.0 also updates the AppleScript dictionary by adding the Suppress Command, Listserver Label and Locking properties to the Misc Options. A new AppleScript property in the Stat Options is LockingFiles. New optional AppleScript parameters in the Send Mail command are File Quote and File Delete. New AppleScript commands used with multiple preferences sets are SetPreference, GetPreference and GetPreferences. Furthermore, the SetKeepUp, GetKeepUp and GetCreatorApp commands make the Keep applications up feature completely scriptable.

If you are using EIMS 2.0, please notice that the Mail Folder has been moved inside the EIMS 2.0 application folder, which means that you must reconfigure your Incoming Mail folder in AutoShare.

When upgrading to version 1.4, be aware that new file extensions (.text and .txt) have been assigned to digests and text archives.

Version 1.4 also updates the AppleScript dictionary in a number of ways. The Quote property in List Options has been changed from a boolean value to a number (indicating a percentage). New List Options properties are RFC Headers, List Stuff, Address Protection, Tip Of The Day, Approval Both and Hard Unsubscribe. All boolean types in List Options have changed to non-boolean types to accommodate the default/override values. New Misc Options properties are Line Format, Keep Up, Processing, Status Window Position, Hide Window (formerly a command!) and Misc Stuff.

EIMS and AutoShare

AutoShare runs along with EIMS on the same Macintosh or on two different Macintoshes on the same AppleTalk network.

AutoShare supports EIMS as the mail server sending and receiving mail, and transactions between the two servers are based on the use of fast file transactions rather than the use of mail protocols. The basic flow is that EIMS stores received message files in a Filed Mail folder for AutoShare and that AutoShare processes the message files and puts them as outgoing mail in the Incoming Mail folder for EIMS.

In order to use AutoShare, a thorough knowledge of the EIMS account types is required (EIMS documentation is available here):

AutoShare relies heavily on these EIMS forwarding options. Please be aware, that the name of the Incoming Mail folder is up to EIMS and cannot be changed by the EIMS/AutoShare administrator. EIMS supports aliases however, so an alias called Incoming Mail may point to a folder elsewhere.

Services

The primary services of AutoShare are list serving, auto-responses and vacation notices.

What is a list server?

A mailing list is simply a list of e-mail addresses of people. Eudora supports this the client way, EIMS supports it the server way. By turning the mailing list into an automated list server list, the people become active subscribers on a discussion list and as such may post messages directly to a list (thereby being distributed to all subscribers) without the manual assistance of an administrator. List server requests (such as subscription requests) are handled by mailing the list server address, which is different from a list address aimed at list contributions! AutoShare turns your EIMS server into a list server, offering you one list server address and as many lists as you would like.

MLM (mailing list manager, e.g. AutoShare), MTA (mail transfer agent, e.g. EIMS) and MUA (mail user agent, e.g. Eudora) are abbreviations that you are likely to come across from time to time. More common terms however may be list server, mail server and mail client respectively.

You may also have heard of complex Unix software with specific names such as LISTSERV, Majordomo or ListProc (to obtain the MLM software FAQ, write 'get mlm-software faq' in the body of mail to listserv@listserv.net). You may be aware of commercial Macintosh list server software such as StarNine's ListSTAR (formerly eMOD) as well, which was released June 26 1995.

The list server feature has been developed as a natural extension within AutoShare and of EIMS. The list server account is merely an auto-response account with a number of special features added to it; the list server lists are set up using separate EIMS accounts (although not possible here, integrating the list server features into the list account itself would lead to far too dangerous events: imagine you wanted to unsubscribe from a list, but misspelled the command, then everyone on the list would receive the message!).

Auto-responses

You may have heard of automated e-mail response systems or the more specific term MailBot, which return automated mails to the sender. AutoShare auto-responses offer a number of features and is easy to use.

Each auto-response service may optionally include a BinHex enclosure.

Vacation notices

Vacation notices are offered in AutoShare. The one vacation notice only feature is supported, so that AutoShare does not return more than one mail to any given address.

Getting started

Following a brief mention of basic concepts, the quick tutorial is helpful when installing and configuring your initial AutoShare environment.

Installing AutoShare

Please read this document in its entirety for further information. Also, make sure to have your Map Control Panel configured properly as well as EIMS fully configured and running.

System requirements

AutoShare runs on any Macintosh model, but does require System 7.5 or later (for the scriptable Finder). The 68K native server application requires 768K of memory.

Applications

The AutoShare server application generally resides inside its own AutoShare folder.

Folders

The following lists the most important AutoShare folders:

AutoShare (or similar)   = folder with AutoShare server application

Filed Mail (or similar)  = EIMS, Saved as files folder
Incoming Mail            = EIMS, Incoming Mail folder
Documents (or similar)   = folder with user named subfolders with text files
List Server (or similar) = folder with list server mailing lists
Archives (or similar)    = folder with archive files
Filters (or similar)     = folder with filter files

AutoShare                = folder storing preferences, logs and more
AutoShare Temp           = folder storing outgoing mail until completed
The last two folders reside inside the System 7 savvy Preferences folder, with the latter residing inside the former.

The illustration below puts the folders in perspective.

When doing the initial configuration (see also the quick tutorial below), it is recommended that you start out creating a folder, e.g. Auto, inside the harddisk root folder for your AutoShare folders. Then create the Filed Mail folder (and other folders) inside the Auto folder. As for EIMS, the Saved as files accounts must specify the Filed Mail folder.

Files

The following lists the most important AutoShare files:

AutoShare                 = server application

Default etc               = list server and auto-response documents
Default.hqx etc           = Binhex 4.0 enclosures for auto-responses
Subscriber list files     = EIMS mailing lists in list server folder
Archive files             = list server list archives
Filter files              = filter documents

AutoShare Preferences     = preferences file
AutoShare Log             = log file
In the Documents folder (e.g. inside the Auto folder), user subfolders should be created, one per account; the following documents are likely to reside within each subfolder:

A user subfolder is named after its account user name. The AutoShare list server account in particular holds many documents, each specifying the text contents of a given list server command returned to the subscriber.

Folder and file names

Much of the configuration of AutoShare is done by creating target folders and file names that match source names, commands or subjects. To locate the appropriate target matching the source, the following rules are applied:

A quick tutorial

Easy Does It. If you would like to set up AutoShare quickly (sort of a right out of the box solution), the following shows you one way of doing so, based on an unmodified AutoShare software package located on your Mac.

An introductory tour

The following is a quick introductory tour to AutoShare: first stepping into the basic configuration and then moving onto AutoShare as a list server and an auto-responder. A list server distributes mail to the subscribers of discussion lists, and auto-responses return mails to users.

The folders on your server

First of all, the basic folders for AutoShare are placed in convenient locations. This is how it looks.

Configuring AutoShare and EIMS

The basic flow is that EIMS stores mail in a Filed Mail folder for AutoShare and that AutoShare processes the mail and puts it in the Incoming Mail folder for EIMS.

Let's get going on the initial configuration for the AutoShare server.

As the List Server and Documents folders already contain the files for the Fun-L list and AutoReply auto-response services, we'll now configure EIMS accordingly.

To create another auto-response service, AutoShare requires you to create a Default document inside a new folder (named after the service) in the Documents folder, and EIMS requires you to create an auto-response account.

To create another list service, AutoShare requires you to create a list document (named after the service) in the List Server folder, and EIMS requires you to create one account configured as Save As Files and two accounts configured as Mailing List.

The following illustration shows how AutoShare interacts with all of its standard folders (not including folders for the software, the documentation or the preferences).

When a request for an auto-response is processed, the document in question is fetched from the Documents folder, and before the auto-response file is created, the filter file in question is checked in the Filters folder. Commands to the list server also use the list files in the List Server folder, and list contributions furthermore update the digest and archive files in the Archives folder.

Testing AutoShare as a user

It's time to test! Congratulations! You have now completed the introductory tour of setting up AutoShare as both a list server and an auto-responder. Extend and verify your server configuration step by step as you move along, and you will soon have a full-fledged AutoShare server offering several services to many users on the Internet!

Running the server

The following discusses the AutoShare configuration in detail. The application interfaces are mentioned initially, and the many features of AutoShare are then described.

Interfaces

The AutoShare server application offers a basic user interface, while the AutoShare Admin application offers a complete user interface allowing you access to configuration of all features. The AutoShare server furthermore has a fully scriptable interface, which is how the AutoShare Admin communicates with the AutoShare server.

AutoShare server application

The initial configuration of the AutoShare server is very important! As much has already been said about the AutoShare folders and documents, the following focuses on the essential basic settings, which may be configured in the AutoShare server choosing Miscellaneous from the Preferences menu.

Enter the addresses for the administrator and bounce accounts first. When people send personal mails to the administrator, they use the administrator address. Mail to the bounce address, often error messages, on the other hand is originated by your or other servers (the domain of the bounce account must indicate the domain of your server!).

The other basic settings are Log, Format and Commands. The log setting determines how detailed your logs should be (Brief is fine for most purposes). The format setting indicates whether your archives should be formatted as text and/or HTML. The commands setting decides where AutoShare is looking for list server commands in subscriber mails (Body is recommended).

Bounce account

The bounce account serves several purposes: The RFC header and the SMTP envelope are concepts discussed elsewhere in the AutoShare documentation (also described in the EIMS documentation).

Logs

The log file entitled AutoShare Log resides in the AutoShare folder (where the AutoShare preferences are stored) inside the System 7 savvy Preferences folder.

You may configure AutoShare for various amounts of log information:

     Off    = no logging
     Always = important messages that are always logged (unless Off)
     Brief  = a single line per transaction
     Tech   = detailed information per transaction
Logs are automatically being mailed to the AutoShare administrator and initialized at scheduled times configured in the Times dialog box (from the Preferences menu, choose the Times menu item). The scheduled times for the digests are configured in the dialog box as well; choose digests from the pop-up menu at the top.

You may schedule the times for a particular interval of days and within the day a specific time. If either every <number> days or at <time> has changed and you press the OK button, the new settings take effect immediately; you may update the settings for both logs and digests with a combined single OK.

If the settings have just been updated, every <number> days implies that the first log or digest will be mailed in <number> of days (if set for 1 day, then tomorrow). If you want it to happen later the same day of the configuration, click at that time in the Now checkbox without altering any other settings; you may use the Now checkbox whenever you need more frequently mailed logs or digests in a temporary situation.

The primary transaction information listed as single lines (formatted as a series of transaction information tokens using space delimiters) in the logs applies to the following transaction types (the tokens are listed after the colon):

AutoShare Admin application

The AutoShare server does all the actual processing of message files. It is the AutoShare server, which receives the message files from EIMS, processes them in a speedy fashion and hands over outgoing message files to EIMS. Basic configuration is available from the menu interface; it is there, but it is basic and does not support list-specific configuration. The AutoShare server also offers another interface, as it is fully scriptable; the scriptable interface offers complete configuration, and you may script it directly using for instance AppleScript or indirectly by using:

The AutoShare Admin(istrator) offers a visual interface allowing you complete configuration of AutoShare. The AutoShare Admin communicates, locally or remotely, with the AutoShare server application by acting as a client sending AppleEvents. The Admin behaves very gentleman-like and for instance does not update the AutoShare Preferences file directly, but rather asks the AutoShare server application to do it. The sole role of the AutoShare Admin is the configuration of the AutoShare server by sending events to it, even if the two applications run on the same Mac.

The Admin is written using FaceSpan version 2.1 and includes many scripts taking full advantage of the scripting dictionary of AutoShare. It is FAT, thereby being native to both 68K and PowerPC, and comes as a Miniature application, which means that the FaceSpan Extension must reside in the System 7 Extensions folder for the Admin to work.

The FaceSpan Extension is expecting to find the QuickTime and QuickTime PowerPlug extensions in the system before it can be resolved. Both of these extensions are part of a standard MacOS install. If you are experiencing such problems using the AutoShare Admin, it is more than likely they have been turned off via the Extensions Manager.

The AutoShare Admin may be used on any Mac on the same AppleTalk network that the Mac running AutoShare is located on. Please read about the AutoShare scriptability for configuration of Program Linking. When using the Admin remotely, be sure to put a copy of the AutoShare application on the Mac (preferably in the same folder as the Admin) on which you are using the Admin, so that the AutoShare AppleScript dictionary can be read by the Admin. Or you may use the ResEdit file entitled AutoShare (must reside in the Admin folder), which contains the AutoShare AppleScript dictionary only.

Balloon help, serving as brief reminders of the documentation that you are reading here, has been added to all windows, so that you may instantly read about the various fields of these windows. Further details on configuration are available in the section describing the AutoShare Preferences and list-specific configuration.

As the user interface of the Admin forms a complete and well-structured version of the basic user interface of the server application, no manual on the Admin is available per se. Simply keep in mind that the Miscellaneous and Lists windows are the key to the AutoShare configuration.

Menu selections

The menu selections in the Admin (some of these in the server application as well) are available using the Command key and one of the following letters:
File menu:
 (N = New)
 (O = Open)
  W = Close
 (S = Save)
 (P = Print)
  Q = Quit

Edit menu:
  Z = Undo
  X = Cut
  C = Copy
  V = Paste
 (A = Select All)

Preferences menu:
  M: Miscellaneous
  J = More Miscellaneous
  F = Folders
  K = More Folders
  T = Times
  U = Multiple Preferences

Configuration menu:
  E = Where
  L = Lists
  D = Documents
  I = Filters
  H = Hosts
  Y = Keep Applications Up

Extras menu:
 (no letters used)

(B, G, R are not used)

AutoShare scriptability

The AutoShare Admin application communicates with the AutoShare server application via scripting.

Apple Events scripting using AppleScript is perhaps the most important addition to System 7. This was enhanced in System 7.5 by introducing the scriptable Finder. AutoShare is fully scriptable, allowing you a convenient way of remote configuration. If you haven't tried using AppleScript, please locate the part of your System software that includes the files such as the Script Editor.

Once you have completed the installation of the Apple Events system software, you may want to look into features like Program Linking, which enables you to control scriptable software from another Mac on the same AppleTalk network, even if you have access to the network via AppleTalk Remote Access (ARA). Program Linking is configured this way.

The various commands and properties in AutoShare's Apple Event dictionary may be viewed by dragging the AutoShare icon onto the Script Editor icon. The following discusses these commands and properties, but not in complete detail, as they are already explained in the displayed dictionary. Further details are available in the section describing the AutoShare Preferences and list-specific configuration.

A number of AppleScript commands, SetRes, GetRes, Analysis, Subscribe, Unsubscribe, GetSubscriber, GetSubscribers, SetList, GetList, GetLists, SetMisc, GetMisc, SetFolders, GetFolders, SetTimes, GetTimes, SetHosts, GetHosts, SetKeepUp, GetKeepUp, GetCreatorApp, SetFilters, GetFilters, Review, Write Log, GetStat, File Mail, Send Mail, SetPreference, GetPreference, GetPreferences and RunScript, have been added to AutoShare's support for scripting. The required commands, Run and Quit, are of course still supported. Furthermore, a single AppleScript script can perform several changes.

On the topic of errors, it is important to distinguish between actual AppleScript errors (most often unlikely) and a given AutoShare request not being successful (likely to happen from to time). When issuing for instance the GetSubscriber command, no result will be returned, if an AppleScript error, e.g. when fetching a property, occurs. On the other hand, an empty result will be returned, if there are no AppleScript errors, but, say, the subscriber could not be found. Your AppleScript scripting should take these kinds of situations into consideration.

AppleScript commands

The following presents the formats for some of the supported AppleScript commands.

The two AppleScript commands, SetRes and GetRes, set and get 'STR#' (or 'STR ') resources in the AutoShare Preferences file (or another file). The feature is aimed at users who prefer not to use ResEdit (for the few times that is needed).

The AppleScript syntax for both commands is:
SetRes (or GetRes) Options {resID:<resID>, resIndex:<resIndex>, resString:<resString>, resFile:<resFile>, resStr:<resStr>}
returns <resource string>
The server application's AppleScript dictionary explains the various properties and the general use. A STR# resource for test purposes is located at 1999,1 (the resID is 1999, and the resIndex is 1). It is recommended that you issue a GetRes command and look at the result before issuing a SetRes command.

Another three AppleScript commands, Analysis (generate an Analysis file), Subscribe (subscribe a user) and Unsubscribe (unsubscribe a user), have been added, as they may come in handy for remote configuration using Program Linking.

The Unsubscribe command supports the list being all, so all lists are processed.

The AppleScript syntax for Analysis is:
Analysis [Email <Email>]
returns nothing
If no Email parameter is used, then the Analysis file is mailed to the main listmaster, otherwise it is mailed to the specified address.
The AppleScript syntax for Subscribe is:
Subscribe List <List> Email <Email> [Name <Name>]
returns <status>
If the optional Name parameter is not used, the name defaults to the e-mail address.
All or some of four properties may be added, using the optional parameter Options:
Subscribe List <List> Email <Email> [Name <Name>] [Options {Subscriber Conceal:<True or False>, Subscriber Digest:<True or False>, Subscriber Mail:<True or False>, Subscriber Ack:<True or False>}]
returns <status>
The AppleScript syntax for Unsubscribe is:
Unsubscribe List <List> Email <Email>
returns <status>

The AppleScript syntax for GetSubscriber is:
GetSubscriber List <List> Email <Email>
returns <set of options>

The AppleScript syntax for GetSubscribers is:
GetSubscribers List <List> [fromIndex <fromIndex> counterIndex <counterIndext>]
returns <list of a list's subscriber addresses>

The AppleScript command, SetList is aimed at configuring the list-specific settings. When the List property is not used, the remaining properties are directed towards the general list settings.

The AppleScript syntax for SetList is:
SetList Options {<various properties>}
returns <status>
The GetList command returns the information about a given list. The only useful property to be used is the List property; if you would like the general list settings to be returned, then simply omit the Options parameter.
The AppleScript syntax for GetList is:
GetList [Options {<various properties>}]
returns <set of options>
The GetLists command returns a list of lists.
The AppleScript syntax for GetLists is:
GetLists
returns <list of lists>
The AppleScript commands, SetMisc, SetFolders, SetTimes and SetHosts, are directed towards the configuration also accessible via the AutoShare server user interface. The AppleScript syntax is much like that of SetList:
The AppleScript syntax for SetMisc is:
SetMisc Options {<various properties>}
The AppleScript syntax for GetMisc is:
GetMisc
returns <set of options>
The AppleScript syntax for SetFolders is:
SetFolders Options {<various properties>}
The AppleScript syntax for GetFolders is:
GetFolders
returns <set of options>
The AppleScript syntax for SetTimes is:
SetTimes Options {<various properties>}
The AppleScript syntax for GetTimes (use File) is:
GetTimes [Options {<various properties>}]
returns <set of options>
The AppleScript syntax for SetHosts is:
SetHosts Options {<various properties>}
The AppleScript syntax for GetHosts is:
GetHosts
returns <set of options>
The AppleScript syntax for SetFilters is:
SetFilters Auto <File> Options {<various properties>}
The AppleScript syntax for GetFilters is:
GetFilters Auto <File> [Lists <Type>]
returns <list of filters>
The AppleScript command, Review, enables a subscriber list to be mailed to the main listmaster or a specificed e-mail address. Write Log enables you to send and insert a string into the log. GetStat returns various status information. File Mail lets you create a message file in the Filed Mail folder, as if a sender sent a command to the list server, and Send Mail is a scriptable way of sending your own mail .

The Review command supports the list being all, so all lists are processed.

The AppleScript syntax for Review is:
Review List <List> [Email <Email>]
returns <status>

The AppleScript syntax for Write Log is:
Write Log logString <logString>
returns nothing

The AppleScript syntax for GetStat is:
GetStat
returns <various status information>

The AppleScript syntax for File Mail is:
File Mail Name <Name> Email <Email> Command <Command>
returns <status>
The AppleScript syntax for Send Mail is:
Send Mail To {Email: <Email>, Ename <Name>} From {Email: <Email>, Ename <Name>} [Subject <Subject>Body String <Body String>Body File <Body File>File Quote <true/false>File Delete <true/false>Precedence <Precedence>Body Header <Body Header>Body Footer <Body Footer>]
returns <status>
The AutoShare Sample Script in the Scripts folder includes all of the above commands. The folder also includes scripts for each individual AppleScript command, and a CGI subfolder contains scripts for an AppleScript CGI for AutoShare. You may also want to read The AutoShare AppleScript Tutorial.

Running a list server

The user name of the central list server address is autoshare (as in autoshare@...). With the list server account configured as Save as files specifying the Filed Mail folder, you can run a list server supporting all list server commands. In order to apply list server lists configured as EIMS mailing lists, you must specify a List Server folder in AutoShare by choosing Folders from the Preferences menu. After having created the actual folder as well, put the various subscriber list files in the folder and make sure that the EIMS mailing list accounts are updated to correspond to the folder (see .m and .d list files below). Within a mailing list, AutoShare supports the address (name) format.

Since the list server account is also an auto-response account, remember to create an autoshare subfolder inside the Documents folder. Inside the autoshare subfolder, create the Default document as well as documents for all list server request commands, each getting its file name from the command. Each document (except the Default document) should include a token for the respective command (e.g. /=LIST for the LIST command), while the rest of the text contents is up to you.

List server list archives, formatted as text and/or HTML, are created automatically. A set of archive files (e.g. Current.text and Current.txt), located in a subfolder (named after the list) inside the Archives folder, will accumulate continuously. Digest files accumulate temporarily.

Whenever a list contribution takes place, the set of digest files (Digest.text and Digest.txt) and the set archive of files (e.g. Current.text and Current.txt) are updated: the message and toc (table of contents) parts are formatted and then appended to the respective files. With the GET command, further formatting is added to form a single text or HTML document (within the begin/end block of the returned message following the GET request).

The list server commands in subscriber mails appear in special command lines (either the subject or the first line(s) of the body), which trigger certain events. Other commands, e.g. including HELP, can be made available as well of course.

List server and list basics

Creating a new list server list requires no more than placing an empty text file in the List Server folder and configuring three accounts in EIMS. This and other issues are described in the following on the basics of list serving.

List server commands

The command is the first word in a body line (or a subject, if configured) of a mail sent to the list server address by a user:

     LIST
     REVIEW <list> [<e-mail>]
     SUB <list> [<name>]
     UNSUB <list>     SET <list> <option>     INDEX <list>     GET <list> <file>     WHICH
     RELEASE
     QUERY <list>     SEARCH <list> <string>
Several alias commands are available as well:

     SUB:    subscribe
     UNSUB:  unsubscribe, signoff
     LIST:   lists
     REVIEW: rev, recipients, who
     INDEX:  ind
     GET:    send
All may be used for the Unsub, Query, Set, Index, Get, Review and Search commands to apply the command to all subscribed lists, e.g. query all.

There is no HELP command, but it is surely okay to create a document called HELP.

If your list server has been configured to accept command requests in the body, the subscriber may include several such requests in one and the same mail. When 1. a body line is found which does not begin with a valid command, or 2. there are no more body lines, AutoShare will stop processing the mail.

sub fun-l Mikael Hansen
set fun-l ack
set fun-l conceal
query fun-l
review fun-l
blah blah
list
In the above example, the first five command lines will be processed and returned as five separate mails; the sixth line is not valid (and will generate no response mail), and so the processing halts.

Request addresses

Special built-in request addresses are supported for some basic list server requests and require no other specification by the subscriber than the e-mail addresses themselves:
<list>-on@domain = subscribes
<list>-off@domain = unsubscribes
<list>-sub@domain = subscribes
<list>-unsub@domain = unsubscribes
<list>-digest@domain = turns digests on
<list>-nodigest@domain = turns digests off
<list>-request@domain = list commands
All commands, formal or informal, requiring no parameter or just the list parameter may also be used with the request address format, as in <list>-<command>@domain.

The <list>-request specification requires a command in the body (or the subject, if so configured). If further parameters are called for, they are pushed one word to the left, as the standard command format includes the list name as the second word, not needed when using a request address.

The creation of corresponding mail server accounts is needed.

When adding the letter G to the List Stuff field (see the Admin or AppleScript), the List-Subscribe and List-Unsubscribe RFC fields show this type of request format.

Subscriber list files and formats

Standard subscriber format

List subscribers are stored in subscriber list files inside the List Server folder. The file name of each list file is the list name, and a list is considered defined by the mere creation of the list file in the List Server folder.

Each subscriber takes up a separate line within a list file.

The format per line is:
<user>@<domain> (<optional comment>)
or phrased differently:
<address> (<name>)
The reduced form is okay as well:
<address>
The expanded form includes list server status codes:
<address> (<name>..<codes>)
If concealed, then:
<address> (<name>..0)
or simply:
<address> (..0)
List server status codes supported by AutoShare are:

     0: concealed (if visible, then no 0)
     1: digest (if messages, then no 1)
     2: no mail (if mail, then no 2)
     3: acknowledgement (if not, then no 3)
     4: not allowed to post (if post, then no 4)
Examples:

     meh@dnai.com (Mikael Hansen)
     meh@dnai.com
     meh@dnai.com (Mikael Hansen..0)
     meh@dnai.com (..0)
     meh@dnai.com (Mikael Hansen..012)
     meh@dnai.com (..01234)
The codes 5 and upwards are not used.

Built-in database format

The built-in database format for subscribers is aimed at going beyond the current subscriber format (including e-mail, name and options only) by having additional (optional) fields.

The built-in database format is enabled via the Database property in the AppleScript List Options (use dbBuiltin) or via the Database Format field in the Admin's More List window.

While the list file is still required in the List Server folder, this file may be empty as the subscribers are automatically stored in a file (having the same name) in the Databases folder inside the AutoShare preferences folder.

List files in the old standard format can be converted to the new built-in database format by dragging the list file in the List Server folder onto the AutoShare application icon (set to dbBuiltin first).

While business is then as usual, two new AppleScript, SetSubscriberDB and GetSubscriberDB, may be used additionally to access the new (optional) fields (it is suggested that standard pre-database AppleScript commands such as Subscribe and GetSubscriber be used for the standard pre-database subscriber data).

The AutoShare archive includes an Optional Fields sample process extender, which illustrates how to automate the use of optional fields in the built-in database format.

Script database format

The external script database support for subscribers is also aimed at additional (optional) fields and stores subscribers in external databases, one each per list.

The external database support is enabled via the Database property in the AppleScript List Options (use dbScript) or via the Language field in the Admin's Yet More List window.

The AutoShare server application communicates with the external database application via scripting. The AutoShare archive includes a Database sample process extender targeted for FileMaker Pro. While the approach illustrated by the sample is complete, it has also turned out to be a good deal slower than using any of the built-in formats.

Searching and sorting subscriber lists

The subscriber lists have always been updated by AutoShare to reflect a ordered list by domain, because some mail servers are able to speed up the throughput of outgoing mail this way, and because it may come in handy when manually browsing list files.

The change is that AutoShare now offers binary searches of the line-based subscriber lists, so that a search for a given address is completed much faster than before. This is in part accomplished by verifying at start-up that the lists are sorted, and when not, sort them using a QuickSort algorithm.

The searching, sorting and insertions for lists are configured using the List Sort property in the Options (Misc); the new status will be saved to the disk settings immediately, but will not become active until the Run command has been issued or AutoShare is restarted. The property may be set to Domain, User or Unsorted; when configured as the latter, AutoShare will not check for lists being ordered when starting up and will apply a simple linear search when looking up subscribers; new subscribers will in this case be appended to the end of the list file.

When sorting, the AutoShare application heap memory is utilized as tightly as possible. Each subscriber takes up 4 bytes plus the number of characters in the address line in question. With an average subscriber string length of 36 characters, a list file of 1,000 subscribers requires around 40K at the time of sorting. It may be noted that if you stick with the same configuration from day one, no sorting will ever have to be applied as new subscribers are placed in their proper location from the very beginning, always leaving the list file sorted.

When subscriber records are added (sub), replaced (set) or deleted (unsub) for a ordered list, an efficient file processing technique optimizes the speed dramatically. Even huge list files will require little time to stay fully updated at all times.

The message and digest list files

The basic flow is that EIMS stores received message files in a Filed Mail folder for AutoShare and that AutoShare processes the message files and puts them as outgoing mail in the Incoming Mail folder for EIMS. List server lists are made possible through the efficient use of EIMS mailing lists. Three EIMS accounts must be created for any list server list: Whenever a list contribution takes place, the .m (message) and .d (digest) list files are automatically created and updated by AutoShare based on the main subscriber list files: message subscribers receive list contributions immediately, while digest subscribers receive digests when these are mailed. AutoShare uses EIMS mailing lists quite efficiently this way.

EIMS supports the SMTP EXPN command, which is an optional part of RFC 821: Simple Mail Transfer Protocol. This allows anyone to telnet to your server on port 25 and 'expand' an EIMS mailing list to the full list of addresses. If you don't want the names of your subscribers accessible to the public this way, you can enter an alternate name for the EIMS .m and .d accounts in the Work Lists field of AutoShare Admin's List window. Someone could still telnet to your server, but unless they can guess the account name you supply, they won't be able to EXPN your list. For example, you could enter xyzzy in the work lists field. In EIMS, name your accounts xyzzy.m and xyzzy.d. In the field at the bottom of the EIMS account setup window, where you give the path to the mail list file, use the same path you normally would. In other words, if your list is called Fun-L, you'd continue to use Fun-L.m and Fun-L.d as the names of the actual lists, since using the Work Lists field has no effect on those names. Work Lists merely gives an alternate name for the EIMS accounts that point to the mail list files.

List server documents and tokens

List server documents are stored in a subfolder inside the Documents folder. The subfolder is named autoshare, as this is the name of the list server auto-response account. The file name of each document is named after the command.

The contents of a list server command document is mostly text that you decide on your own how to reflect the context of the command. Standard list server documents also include at least one token line to trigger a given action. Each token pair (a switch and a command) comes without any delimiter.

Standard tokens:

/=original   = picks up the original message

Command tokens:

/=list       = displays the lists
/=review     = lists the subscribers for a given list
/=sub        = confirms the subscription of the user
/=unsub      = confirms the cancelled subscription
/=set        = updates various options:
                 conceal: conceals the subscriber (review)
                 nonconceal: makes the subscriber visible
                 digest: one daily mail with all list messages
                 nodigest: individual mail messages
                 mail: you receive list mail
                 nomail: subscribed, but no mail
                 ack: you receive a list contribution copy
                 noack: no acknowledgment contribution copy
                 post: allowed to post (admin only)
                 nopost: cannot post (admin only)
/=index      = lists the archive files for a list
/=get        = returns a list archive file
/=which      = informs you of the lists you are on
/=release    = information about the list server software
/=query      = information about your subscription status
/=search     = returns the hits of an archive search

Token lines are placed in documents at appropriate locations depending on the text contents. While the /=original token can be placed in any document, command-specific tokens should only be added to respective command documents.

List-specific documents

While the standard list server documents stored in the autoshare subfolder inside the Documents folder are not list-specific, there are several ways to create list-specific documents. "Sub.<list>" (e.g. Sub.Fun-L) and "Unsub.<list>" (e.g. Unsub.Fun-L) documents are allowed.

All of the list server documents may be made list-specific by replacing the document with a folder having the same name and including documents inside this folder with names of "Default" or the list. This also applies to both standard documents for commands without a list parameter and non-standard documents such as Help and Info, as long as the list name is specified as the only parameter.

List types

The standard list types are Subscription (contributions require subscription), Open (contributions do not require subscription), Moderated (the listmaster views contributions before being posted), Announcement (only the listmaster may post contributions) and Private (subscriptions are not allowed).

When a contribution is sent to a moderated list, it gets redirected to the listmaster, who may choose to post it or not; if the moderator uses Eudora, the Redirect (or Redirect To) is recommended when posting other people's contributions. When a contribution is sent to an announcement list, the contribution is returned to the sender. In both cases, only the listmaster is able to post to the list. The listmaster address is fetched from the administrator address (from the Preferences menu, choose Miscellaneous).

It may be added that the list-specific configuration enables list-based defaults for the subscription Options. If you prefer subscribers to for instance receive copies of their own contributions without any separate update of the subscriber's options, this is the way to go.

Posting privilegies may be turned on or off for individual subscribers (subscription, open and private lists). The post and nopost tokens may be applied as any other SET option, but with one important restriction: the subscriber cannot successfully use the two new tokens as a valid option within a SET command. They are administrative tokens only (whose option code is '4') to be used by the administrator (scripting commands, remote administration by e-mail or direct editing of main list files).

Moderators

The post subscriber option may be applied to moderators of moderated and announcement lists. If you would like moderators to be not the main listmaster and the list-specific listmaster, but rather all post option enabled subscribers, then include the letter c in the List Stuff field in the Admin's Yet More List window (the List Stuff property in the AppleScript dictionary's List Options). When enabling this feature, be sure to verify the post option of all subscribers in your moderated and announcement lists - and make the necessary changes, if needed.

A simple script has been included in the samples folder (the SetAllSubscribersToNoPost1 script is interesting, but the SetAllSubscribersToNoPost2 script is much faster), which disables posting for all subscribers for a given list, whose name is specified at the top of the script. When a non-moderator contributes to a moderated list, the contribution is forwarded to all moderators (never more than the first 20 in a list though).

The SetAllSubscribersToNoPost2 script illustrates a hidden high-speed trick of the Subscribe AppleScript command: when the e-mail address is @, the option changes are applied to all subscriber entries!

Tip of the day lists

Any list may be additionally configured to be come a tip of the day list in AppleScript by the Tip Of The Day property in List Options; in the AutoShare Admin, see the More List window. When configured as such, list contributions will not be posted immediately, but rather one at a time at given intervals. Tip of the day list contributions are currently being posted when digests are sent.

Subscriber addresses

An Internet mail message (see RFC 822: Standard for the Format of ARPA Internet Text Messages. ) contains two parts: 1. the visible contents, which includes a header of RFC fields as well as an optional body and 2. the (usually) hidden envelope, which includes delivery information. Two of the RFC field headers may be From and To, which often (but certainly not always) are identical to the envelope's sender and recipient respectively. EIMS stores the contents and the envelope in the message file's data fork and resource fork respectively.

AutoShare has historically used the envelope sender, not the RFC From field, to determine the address of a list subscriber, as the envelope sender is generally considered to be the real address, although not visible when viewing the mail message. The SMTP envelope sender is where the mail actually came from, while the RFC From address is where a reply should go to. This definition of the RFC From address is however aimed less at server replies (e.g. EIMS) than at client replies (e.g. Eudora), as POP-based e-mail software (and POP-based list server software too!) cannot download the SMTP envelope and so has no choice (unlike e.g. SMTP-based or file-based list server software, which has access to the SMTP envelope information needed).

If you would like new subscriber addresses to be extracted from the RFC From field, you may use the RFC From property in the AppleScript Options (Misc) to enable this. This means that the list files will contain the RFC From addresses for new subscribers, which will be used whenever a list server request or a list contribution takes a place. The envelope recipient of a list server request to be returned will furthermore be updated to the address in the RFC To field.

Subscriber address protection

The address protection feature of AutoShare hides the e-mail addresses of subscribers and replaces them with special address tokens. When a given list has this feature enabled, it is applied to list contributions, the digests, the standard archives and the fully automated web archives.

Using address protection prevents the action of harvesting e-mail addresses for unauthorized purposes.

When a subscribe command takes place, the list-specific index file in the Protected Addresses folder inside the AutoShare folder of the System 7 savvy Preferences folder is updated (entry is added). Same for an unsubscribe command (entry is removed). When a review command is issued, the e-mail addresses are replaced by corresponding address tokens.

When a subscriber posts, nothing is initially different. But when the list server receives the list contribution, the RFC From field body is replaced with a special address token, and all RFC X-Sender fields are removed. It is important that the body of your list contribution does not display your e-mail address.

When the subscriber would like to e-mail another subscriber off the list, the mail, with '<list>space<address token>' placed in the subject, is sent to the 'protected@<domain>' e-mail account, which redirects the mail to the recipient.

The envelope recipient gets updated, and the mail message is moved to the Incoming mail folder. If there is no match for the envelope recipient in the index file, the mail is returned to sender.

When sending an initial mail this way, it is encouraged that you be brief and merely state the purpose of your initiative, so that the communication may switch to the direct use of actual e-mail addresses on both sides. It is not intended that the server be allowed access to the contents of your mails more than necessary.

The address protection feature is enabled in AppleScript by the Address Protection property in List Options; the Admin, see the More List window.

We now move onto the issue of what is entitled spam, a term generally used loosely for various abuse of e-mail. You may think of spam as junk mail of many flavors.

It is next to impossible for a computer to figure out if a given mail is abusive, as the contents isn't reviewed in a meaningful fashion. Several steps may be taken though: 1. applying address protection prevents the spammer from harvesting e-mail addresses, 2. spam mails are often lengthy, and limiting the number of lines for list contribution bodies often helps, 3. writing a Before Processing process extender, which parses the mail for various words and optionally deletes the message file before it gets processed, and 4. using mail-back confirmation requires an additional effort from the spammer, who often prefers to move onto another easier target.

Subscriber aliases

The list index files in the Subscriber Aliases folder inside the AutoShare Preferences folder automatically create a correlation between the envelope sender and RFC From addresses whenever new subscribe requests (standard message files only) take place.

The format per entry is alias address, so if the subscriber addresses are envelope sender based, the RFC From address becomes the alias, and if the subscriber addresses are RFC From based, the envelope sender address becomes the alias.

When an unsubscribe request (standard message files only) takes place and the address isn't found in the main list file, the address will then serve as an alias and be looked up in the index file, and if the corresponding address is present in the list file, this address will be unsubscribed.

To make this feature active, you may use the Subscriber Aliases property in the AppleScript Options (Misc).

List-specific logs

Logs are mailed to both the primary administrator (the overall listmaster gets the complete log) and the secondary administrators (the list-specific listmasters get respective list logs for lists, whose list-specific administrator address is specified).

Archives and digests

A couple of years ago when AutoShare was nothing more than some unrefined thoughts in the mind of yours truly, the command set of Unix list servers such as LISTSERV, Majordomo and ListProc served as a valuable inspiration. It quickly became obvious that digests and archives are two very different beasts and had to be viewed as such. AutoShare of today continues to uphold the clean distinction between the two.

A digest is a text formatted collection of list contribution messages, mailed to digest subscribers often every day at a given time, and the digest file is then emptied on the server, thereby being ready for a new day.

A list archive carries a quite different rhythm in time. In order to prevent an extraordinarily large number of archives, they are generally rolled over after a substantially longer time has elapsed. The archive roll-over, which may be triggered by perhaps 100 list contributions, does not delete, but instead renames the archive file in question, so that it may later be accessed via the Index and Get list server commands.

AutoShare offers both text formatted and HTML formatted list archives. The feature of the fully automated web archives takes it all the way. Once initially configured, the listmaster can sit back and relax, knowing that the continuous stream of incoming list contributions is reliably turned into an at all times fully updated hierarchy on the web server, which may be accessed by the subscriber directly across the Internet using a web browser.

Text and/or HTML archives

Text archive files now no longer use the .html and .toc extensions. The new unique file extensions are .text for the main file and .txt for the table of contents file. As these extensions reflect text formatted contents and not HTML formatted contents, the digests now also use this new set of extensions.

It is strongly recommended that you update all current files in your Archives folder to reflect the new convention!

You may choose both text and HTML formatted archives (rather than just one or the other). Having chosen this option (in the AutoShare application or using AppleScript; the Admin, see the List window), both text and HTML formatted archive files are created if necessary and updated when a list contribution is processed. The Index command will list both .text and .html file names. The Get command will format according to the file extension. The Search command will search both .text and .html files.

Rollover of archive files

The automatic archive file rollover is based on the number of list contributions. A maximum value may be configured. Default is set to 0, which means no rollover. This value may be changed using the Messages property in the AppleScript List options. The Current.html and Current.toc files get renamed <date>.html and <date>.toc; likewise with the corresponding .text and .txt files.

When a rollover archive file is created, a note is added to the log file, so that the listmaster becomes aware of it. In the case of HTML formatting selected, the listmaster may then choose to issue a GET command to receive the fully formatted HTML file by mail, save it to a text file and store it in a folder on a web server, thereby offering a convenient access to the archives. This may be further enhanced by using the new search and indexing tool Apple e.g. at www.cybertech.apple.com/.

Automated web archives

Automated web archives need only an entry point folder path to be configured. An entry point folder may be viewed as a subtree inside your web server folder and contains one subfolder per list. Each subfolder holds complete html files created on the fly based on the html and toc files from the standard archives. Both the entry point folder and its subfolders also get fully updated index.html files to piece everything together.

The entry point folder path is configured within the list-specific settings, in AppleScript using the Web Path property in the Options (List). You may apply the one that is used most often as a general setting, but given lists such as private lists may choose to override with another path using a setting specific to the list. By assigning an invalid path, no web folders or files are created.

If you prefer to use your own html file in the entry point folder, then simply give this file a name other than index.html and make references to this file. It is assumed that your file references the index.html files inside the list subfolders.

Whenever a contribution takes place and the standard archives are updated, so are the web archives plus both the entry point level index.html file and the list subfolder index.html file.

A few changes have been made: all archived files now use hyphens instead of spaces, and some cosmetic changes have been updated for the archive files. It is recommended that prior archives be updated to reflect the new changes.

Specific to individual lists only (the general setting is always the above complete tree), the entry point folder may be configured to be the list folder itself; the upper layer of the subtree (the top-level folder and the top-level index.html) is not created, and the list folder is moved up one level to match that of the entry point folder. In AppleScript, use the Web Archives property (Complete versus Minimal) in the Options (Misc) to configure this selection.

Both Mac-to-HTML and MIME-to-HTML character conversions are automatically applied to both the standard and the fully automated web archives.

MIME digests as attachments

Digest attachments in the multipart/digest MIME format (see also MIME RFC fields) allow the subscriber to reply to individual messages in a digest. This format is supported by several mail clients such as Eudora, which creates a separate mailbox for each digest's messages (in Eudora, see Settings, Attachments, check Receive MIME digests as attachments).

The list-specific MIME digest as attachment feature is enabled by adding the letter L to the List Stuff field (see the Admin or AppleScript).

Advanced features

Some advanced features of AutoShare list serving are listed below, while others are mentioned elsewhere within specific contexts.

Multi-domain hosts

The AutoShare multi-domain hosts feature serves as a domain verification of mails processed by AutoShare and is aimed particularly at list serving. If a mail message is returned indicating that the (SMTP envelope) "recipient address is not valid" (an error message introduced with the unknown accounts feature), its domain is different from the default domain specified as part of your bounce address, and you must specify the needed non-default domain in your AutoShare Hosts file. The domains in the RFC header of processed list contributions will furthermore be updated to reflect the domain of the original RFC To header.

The AutoShare Hosts file was added to ease the use of EIMS non-default domains with AutoShare. Assuming that the EIMS default domain is used with the AutoShare bounce address, the domains in the AutoShare Hosts file must match the remaining EIMS domains for list contributions to work properly.

You create the AutoShare Hosts text file in the AutoShare folder inside the System 7 savvy Preferences folder; type in one domain name per line. Verify the list of domains by choosing the AutoShare Analysis menu item from the server and viewing the AutoShare Analysis file; the bounce address is listed first followed by the domains in the hosts file.

Automated bounces

Configure your bounce account in EIMS as Save as files. Until you feel comfortable with the following bounce feature, it is recommended that the Keep copy box be checked, assuring you that things happen as before (the mail goes to the EIMS bounce mail account). The Save as files part should be configured in EIMS to point to a new folder, also configured in the More Folders window in the Admin (use an empty path to not use this feature).

When using the automated bounce feature, it is strongly recommended that the bounce account not be identical to the EIMS postmaster account, as mail received by the bounce account is for AutoShare only. And as usual, it is a must that the domain of the bounce address reflect that of the mail server.

Whenever bounce mail arrives, AutoShare's bounce module will process the message file and subsequently send the admin a mail if a list subscriber could not be located. Otherwise the list subscriber is updated in the Bounces On Hold file located in the AutoShare folder inside the System 7 savvy Preferences folder. The subscriber address, the list name, a sent counter (initialized to zero), a received counter (initialized to zero) and an entry created time are the five pieces of information, which are added to each entry in the Bounces On Hold file.

Every so often (using the Bounce Send Mail property in the Miscellaneous Options), AutoShare sends a mail to each entry in the Bounces On Hold file, and the sent counter is incremented by one. If the subscriber address continues to bounce, the new bounce message causes the received counter of the entry to be incremented by one (additional bounces will not cause the value of the received counter to grow beyond the value of the sent counter, as it should not be a factor how busy the given list is), and once the received counter hits a given threshold (using the Bounce Received Threshold property in the Miscellaneous Options), the subscriber get unsubscribed, and the entry is removed from the Bounces On Hold file.

If the subscriber address does not continue to bounce, the sent counter continues to grow while the received counter does not, and once the difference of the two values is beyond a given threshold (using the Bounce Sent Threshold property in the Miscellaneous Options), the entry is considered stable and removed from the Bounces On Hold file.

Entries are also deleted when the current time exceeds the entry created time by a given threshold value (using the Bounce Delete Threshold property in the Miscellaneous Options). The purging takes place every time test bounces are sent.

The Bounces On Hold file includes entries based on soft bounces only. Hard bounces get unsubscribed immediately per the default behaviour (which includes sending a mail to the listmaster), but may be configured to act as soft bounces. A hard bounce is defined as a sender situation which is not likely to change (such as the sender's address not known), while a soft bounce relates to a temporary situation (e.g. the mail server of the sender may be down due to a network problem). Of the bounce formats supported by AutoShare, the 550 code (user unknown) is the only one so far to trigger a hard bounce status.

Version 2.1 significantly expands on the number of supported bounce formats and also incorporates subscriber alias files as one of several refinements. Test bounces include an X-AutoShare-Bounce-List header, making it easier to identify the list name within the bounce message caused by a test message. Furthermore, if the Misc Stuff property in the Miscellaneous Settings contains the letter f, AutoShare removes the subscriber from all lists rather than just the list in question.

Version 3.0 extends the bounce module to take into account bounces that may arrive after a subscriber has been softly unsubscribed, so that the listmaster no longer receives unresolved bounce mails for these. The Bounce Grace Period property in the Miscellaneous Options (with this as well as the above, see alternatively the More Miscellaneous window in the Admin) specifies the length of additional time.

Miscellaneous features

AutoShare offers many list serving features. Some are listed below, while others are mentioned elsewhere within specific contexts.

List- and X- RFC fields

The List- and X- RFC fields in list contributions serve as helpful information.

The List- and X-List- RFC field headers and respective field bodies are:

List-Software, List-Owner and List-Help were formerly known as X-Listserver, X-Administrivia-To and X-See-Also respectively.

Other related field headers and respective field bodies are

All of the List- fields used to be X-List- fields.

All of the above fields may optionally and individually be turned on and off on a per-list basis (with the exception of the List-Software field), see the list-specific configuration for AppleScript or the Admin.

Further information is available at RFC 2369: The Use of URLs as Meta-Syntax for Core Mail List Commands and their Transport through Message Header Fields.

Monthly help files

Monthly help files are mailed to list subscribers at the beginning of every month on a per-list basis when line-based "Month.<list>" files are added to the Documents/autoshare folder. An example is "Month.fun-l".

Both message and digest subscribers receive the monthly help files.

If several lists are to share one monthly help document, you may create aliases reflecting the normal file name format and pointing to the same document.

Subject prefixes

The Subject Prefix property has been added to the Options (List) in AppleScript, so that a list-specific prefix may be inserted in the subject line of list contributions. The prefix will appear in front of the subject itself, or if the subject starts with Re:, then immediately after this, so that e-mail clients may still sort messages correctly.

If a + (plus sign) is appended to the prefix, the prefix will appear at the end of the subject instead.

Headers and footers

Headers and footers appear in list contributions when line-based "Header.<list>" and "Footer.<list>" files are added to the Documents/autoshare folder. An example is "Footer.fun-l".

Headers and footers also appear at the beginning of and end of digests. The "Header.<list>" and "Footer.<list>" files are used in digests, unless "HeaderD.<list>" and "FooterD.<list>" files are present.

For a moderated list, the list contributions forwarded to the list master do not include headers or footers. They will be inserted when the list master posts the contribution to the list.

If several lists are to share one header or footer document, you may create aliases reflecting the normal file name format and pointing to the same document.

Rotating banners

Rotating banners can be applied by simply putting your banner text files in a folder and replace your regular header and/or footer file with a Finder alias to the folder. AutoShare will then randomly select the banner(s) each time a list contribution or a digest are processed.

Other list related issues

A setting now holds the maximum of lines in the body of a message contribution, as defined by the listmaster. Default is no maximum applied. When the number of lines has been exceeded, the message gets forwarded to the listmaster, who determines whether to forward it to the list or not.

To reinforce that the unquoted part of a response contribution must be at least a given percentage of the complete message body, change the proper list-specific setting to this percentage. If it does exceed more than the percentage, the message is returned to sender. John Norstad's NewsWatcher applies this restriction to news responses (50% only though), if the news server in question is configured to reject postings which contain more quoted text than new text.


Running an auto-responder

There is one auto-response service per EIMS account. Each account is able to return a default message or one taken from a multitude of different messages based on the contents of the subject line.

Auto-response documents are located in subfolders inside the Document folder. The subfolder names must correspond to the user names of the AutoShare accounts in EIMS. Inside each subfolder, create a default document called Default. This document is used for senders not specifying a particular string in the subject line. Alternate documents may be created, and the subject line of the sender's e-mail must match one of the names of these documents for it to work. The character '-' (minus) in an alternate file name will match the character ':' (colon) in a message subject.

Auto-response tokens

Auto-response documents are stored in subfolders inside the Documents folder. The subfolder is named after the user name of the mail account. The file name of each document corresponds to the subject field in various user mails ('-' in a file name will match ':' in a subject), and the Default document is used whenever no match is found for the subject field.

The contents of an auto-response command document is mostly text that you decide on your own how to reflect the context of the command. Standard auto-response documents also include at least one token line to trigger a given action. Each token pair (a switch and a command) comes with or without any delimiter.

Standard tokens:

/=original          = picks up the original message

Auto-response tokens:
/=subject <field>   = overrides the RFC Subject field body
/=reply-to <field>  = inserts an address in the RFC Reply-To field
/=poll              = activates poll mechanism
/=header            = picks up the original RFC header only
/=rfcfrom           = updates envelope recipient to RFC To
/=forward <address> = sends copy of original message to address
/=include <file path> or <file name> = inserts contents of file
/=mailback          = processes message file as mail-back
/=rfcsame           = kills message if RFC To is not env recipient
Token lines are placed as separate lines in documents at appropriate locations depending on the text contents.

Setting up a poll

An account name with the user name of Poll has been turned into a very special auto-response account. No extra configuration is required, it's just like setting up a regular auto-response account.

Anyone may vote on a given topic by sending a mail to the Poll address. The topic of the vote is based on the specific subject line. The actual vote of the sender is based on the first line of the body. Whenever a sender tries to vote, the overall vote statistics are returned. If it's the sender's first try, the pool of votes gets updated, and following attempts results in informing the sender of the number of attempts so far.

The poll account may be used to gather all kinds of distribution data based on the key strings (max 20 characters each) in the body. The poll account rejects all subjects which have no corresponding document or uses the Default document. The poll action is triggered by the /=poll token, which should be placed in all documents, also the Default document, in the poll folder. The poll status returned to the sender shows the overall distribution sorted by selection, and graph bars help illustrate the results.

A set of pre-defined key strings may be attached to a poll. When an invalid key string is encountered, AutoShare returns a note to the sender asking for another try. The series of case-insensitive key strings resides in the 'STR ' resource, beginning at 1001 and upwards, of the poll file in question; you can use the SetRes AppleScript command or the Admin's Resource window to configure this.


Running a vacation notice service

Having an EIMS account configured as Save as files combined with Keep copies ensures proper handling for vacation notices.

Filtering can be enabled, so that vacation notices are not returned to for instance list server lists or mailing lists. The filtering applies to From, To, Subject, Reply-To, Sender or any header being one of the five. Inside the Filters folder, documents containing the filter definition lines are named according to the user names of the AutoShare accounts in EIMS.

A particular aspect is the ability to configure a user's filter file, so that any given sender will receive one vacation notice only regardless of how many messages the sender mails to the user on vacation.

In order to reduce of the risk of vacation notices being returned to list server lists, filtering is automatically applied to any messages with a Precedence RFC header field having a field body of bulk, list or junk. In the case of an AutoShare list server, a Precedence RFC header field is added to list contributions.

To prevent forwarded messages, the /=rfcsame token in vacation documents and other standard auto-response documents compares the RFC To field address with the SMTP envelope recipient address, and if they are not identical, the processed message is filtered and no message is returned to the sender.


UUCP gateway

The (outgoing) UUCP-EIMS gateway feature is aimed at Eudora users on a LocalTalk network with no access to TCP/IP-inside-AppleTalk encapsulation via a DDP/IP router connected to Ethernet including an EIMS server. This MacTCP-less solution is based on simple file transport on AppleTalk, and UUCP has been chosen, because the UUCP mail spool format is adequate and because Eudora supports it; UUCP mail per se is not used.

Incoming UUCP: The EIMS POP account is configured as 'Save as archive' to an inspool folder/user (e.g. 'EIMS HD:Misc:inspool:meh'); this forwarding option satifies Eudora's expections of the mail drop being in the standard Unix mailbox format. The Eudora part (Settings, POP Account, e.g. '!EIMS HD:Misc:inspool:meh') is made possible thru the use of file sharing applied to the EIMS server's harddisk.

Outgoing UUCP: The Eudora part (Settings, SMTP, e.g. '!MEH HD!EIMS HD:Misc:Filed Mail:!meh!0000') is possible thru the use of file sharing to the standard Filed Mail folder. AutoShare automatically acts upon detection of the D./X. UUCP pair of files by converting them into one properly formatted file sent to the EIMS Incoming Mail folder and finishes by deleting the UUCP pair of files.

The contents of the D. file is transferred directly to the data part of the new mail file; the resource part is updated based on the X. file (sender (appends the domain from the Bounce address) as well as (multiple) recipient(s)).

It is recommended that you choose to reduce the file sharing to include the two above folders (the inspool folder and the Filed Mail folder). The mail spooled by Eudora to the Filed Mail folder will stay there for a very brief moment and as such poses no major risk in terms of security. Access to the inspool folder may be adjusted to include the individual user only.


Keep applications up

The Keep Applications Up feature allows AutoShare to launch various applications every so often, if they are not already running. The Keep Up property in the AppleScript Misc options defines how often AutoShare should launch given applications.

The AppleScript configuration of unique application creator codes is accomplished via the SetKeepUp (adds or deletes an application creator), GetKeepUp (returns the list of active creators) and GetCreatorApp (returns an application name from a creator) commands.

The Admin's Keep Applications Up window makes the configuration particularly easy, in part because the window's Select button allows you to choose an application without knowing the creator in advance.


Cron

AutoShare offers Cron support for other applications. Cron originated in the Unix environment as a timing utility aimed at launching applications. While Paul A Vixie's version is the most widely used Unix Cron, the first Cron version was created at Bell Labs.

The name Cron is a little known linguistic misunderstanding. While it is common in Greek mythology to have just about everything personified, time as such is an exception from this rule. Cronos (Cronus, Kronos), a titan who dethroned his father Uranos and ruled the universe until dethroned himself by his son Zeus, did not personify khronos, Greek for time. The Greek words khronos (that the word chronological is derived from) and Cronos (that the word Cron can be said to be derived from, although that was probably not the intention at Bell Labs) are not linguisticly related. The conception of the twelve titans, Cronos in particular, lead to the creation and motion of time however!

Put Finder application aliases in Launch and Quit folders inside the AutoShare folder inside the System 7 savvy Preferences folder. The syntax for the file names of the Cron aliases is Minute Hour Date Month Dayofweek; 0-59, 0-23, 0-31, 1-12 and 1-7 respectively, and * may be used to specify any time for a given token. When applied to the Launch folder, "0 * * * *" launches the application every hour on the hour, "0 22 * * *" launches the application every day at 10 pm, "0 12 * * 2-6" launches the application every Monday through Friday at noon, "0 12 1,15 * *" launches the application every 1st and 15th of the month at noon. A combo such as "-5,8-10,12,15- * * * *" is fine. For system restarts and shutdowns, use aliases to the Finder application.


Moving on

Congratulations on coming this far on your AutoShare journey! You may want to take a break at this time to digest the documentation above. If you however are not out of breath, there is yet more to come below.

Advanced features

AutoShare is packed with many nifty features to make the server adventure more pleasant for you. The following describes some advanced features.

Suppressing messages using filters

AutoShare filters, aimed at suppressing given outgoing mails based on incoming mails, may be general or specific in nature.

General filters

One of the nice things about AutoShare is that it applies the Precedence: bulk by suppressing responses and list contributions for mails including it. And outgoing list contributions get it inserted automatically. This means less of a risk of vacation notices being posted to lists.

Auto-replies and vacation notices also insert Precedence: bulk. Furthermore, incoming messages with Precedence: junk and Precedence: list also get suppressed.

Specific filters

Filters directed at complete or partial addresses, e.g. list servers or individuals, may be used to safeguard against messages without a Precedence: RFC field header. In the Filters folder, the filter files are named based on the list name just like in the List Server folder.

The filtering applies to the five fields below in the e-mail header. It also applies to any header being one of the five. Below, the first column indicates which field is to be applied, and the second column lists how to begin a definition line; the rest of this line is a substring aimed at searching in the e-mail header line in question.

     From:       'From: '
     To:         'To: '
     Subject:    'Subject: '
     Reply-To:   'Reply-To: '
     Sender:     'Sender: '
     Any Header: ''
If the definition line
From: qualcomm
is applied to the e-mail header line
From: majordomo@qualcomm.com
then majordomo@qualcomm.com will receive no vacation notices.
The definition line
qualcomm
applies to all five fields and respective e-mail header lines.
If a '*****' (5*) line is added to the end of the file, the one vacation notice only feature is enabled. AutoShare will automatically append new addresses to the file, whenever a message is received from a new sender.

Examples:

Simple filter file:

qualcomm
yalevm.cis.yale.edu
The one vacation notice only feature added:

qualcomm
yalevm.cis.yale.edu
*****
When user@domain mails you, it will look like this:

qualcomm
yalevm.cis.yale.edu
*****
user@domain
And later:

qualcomm
yalevm.cis.yale.edu
*****
user@domain
user2@domain2
Remember to clear and move the file, when you return!

List server requests on lists

While list server requests containing list server commands are supposed to be mailed to the list server list address, subscribers occasionally mail these to the list address instead by mistake. To avoid such requests being posted to lists, AutoShare suppresses them by default and returns the message to the sender.

You may choose to configure this behaviour differently. The level of suppression of list server commands in subjects and first body line is configured using the Suppress Command property in the AppleScript Misc Options: 1 = always suppressed, 2 = never suppressed, 3 = body only is suppressed.

List-specific language support

List-specific language support allows sets of alternative user (subscriber) strings based on language documents in a folder. Aimed at both list server request responses and list contribution alerts, the admin is able to target a given list to subscribers in a given language.

The configuration per list requires a language document (see sample template) to be put in the Languages folder inside the AutoShare preferences folder and then have its name be specified via the Language field in the Admin's Yet more list window.

Loop detection and elimination

One of the worst things that can happen to a list on your list server is to have a mailing loop develop. AutoShare takes several precautions against this type of unpleasant events.

First of all, it is important to understand the difference between real and RFC header addresses: while the RFC header addresses reside in the e-mail RFC header of the message, the real addresses are found in the resource part of the message file, namely the STR (8192, From) and the STR# (8192, To) resources (in the world of UUCP, the D. file reflects the data part, whereas the X. file reflects the resource part).

Taking advantage of the bounce feature (either On or Empty is an important step towards limiting potential problems with loops (circular references). For all auto-responses and admin log mailings, the STR resource will be updated as coming from the bounce account rather than the auto-response account in question (no change in the e-mail header's From field). This ensures that all messages, which bounce back to your server, are sent to your bounce address (and this one only).

It is recommended that you configure your AutoShare preferences, so that the Admin address is set for a Listmaster account and the Bounce address is set for a dedicated account for error messages. It certainly does not have to be so, but it does serve as an excellent and easy-to-remember solution.

The following examples illustrate various loop situations, in which real addresses tend to differ from RFC header addresses.

Your basic bounce

The list server (in fact any AutoShare account) returns an auto-response to a user, whose mail system is malfunctioning at the time. The message bounces back to the mail system of your list server, but although the list server account is listed in the To field of the e-mail header, the bounce account receives the mail: it is the actual recipient because it was originally the actual sender.

Mail to the same account

You have enabled the vacation notice feature; in terms of EIMS, this means that you have turned on 'Save as files' with the 'Keep' button checked. After having sent the message, your account receives the message; furthermore, the other copy is put in the Filed Mail folder: AutoShare compares the To and From resources, and since they are identical, no vacation notice is triggered. This feature applies mostly, when the bounce feature is not used.

Incoming list mail

An example involving not AutoShare, but EIMS only is messages generated from a mailing list being put into the Filed Mail folder: the To in the e-mail header is the list address, while the To in the resource is the final recipient. While this is not a loop issue per se, it illustrates the difference between the two types of To addresses (this distinction relates to the feeding of the archives thru the use of the 'Save as files' Archives account, which AutoShare benefits from).

NewsWatcher

You have enabled the vacation notice feature and then press Command-Option-L in NewsWatcher, which mails you the news article. The actual sender is you, not the person who posted the article, so there is no problem.

Mail to Cc recipient

This example affects the e-mail header only, but I'll include it anyway. An AutoShare account receives a message, and the address of this account is placed in the Cc field. In this case, AutoShare doesn't use the address in the To field when creating the From address for the auto-response message; instead the newly created From resource is inserted into the From field in the e-mail header.

Remote administration

Remote administration by e-mail

Whenever a file arrives in the Filed Mail folder with a first body line beginning with your admin password, remote administration sets in. The list-specific admin password is configured in AppleScript by using the SetList command (or using the AutoShare Admin), as the following example illustrates:

SetList Options {List: "fun-l", Remote Password: "rosebud"} When applying remote administration by e-mail, let the first body line (if the subject mode for list server requests, then the subject field instead) follow this word pattern:

<password> <command> <e-mail> <list> <rest>
for instance
rosebud subscribe a@b fun-l Mr. X
Commands supported so far are subscribe (the 5th word is just the rest of the line), unsubscribe (the name is not needed), set (the option is the 5th word), review (use a dummy e-mail address as the 3rd word) and analysis (the password and the command are adequate). The password is case-sensitive, the remaining parameters are not. All of these commands returns an e-mail to the sender with a status; the original command line is included, but the password is replaced by a generic word for safety reasons.

The post command is different from the above commands in several ways. You may use it to post to a list regardless of your client software's configuration, as the e-mail address and user name are picked up from the e-mail and rest tokens respectively. The list token is used to update the recipient, so the contribution gets posted to the list; no e-mail is returned to the sender or the contributor. The body of the contribution message is what follows the initial passworded line (if the subject mode, then put the passworded line in the subject and the subject as the first body line).

The password command may be used to change the password. Enter the new password as the 3rd word. If no list is specified, the request is aimed at the overall password. Both the old and the new passwords are replaced by generic words in the returned message. An e-mail is returned to the sender with a status.

The application and system commands have been added to accomplish remote launching and quitting of applications as well as system restart and shutdown. For either command, you may enter Launch or Quit as the 4th word, and the application command requires the 4 character creator (signature) code of the application in question in the 5th word. The 3rd word is ignored. List may be used as the 4th word with the application command to a receive a list of processes. Dir may be used as the 4th word with the system command to a receive a list of items in a folder, whose path is specified as the 5th word.

The log command mails log messages beyond the scheduled time. If the remote password for the main listmaster is roseall, the following command mails log messages to the listmasters similar to when the logs are scheduled, except that the log file is not initialized by default.

roseall log
When a list name is specified, the log for that list only is mailed to the listmaster in charge. The remote passwords for the list-specific or main listmaster are both valid. E-mail addresses without @ or with @ only are ignored as such.
rosebud log x fun-l
If a non-existing list name is specified by the main listmaster, only the main log is mailed.
roseall log x bad-l
The log file may furthermore be initialized using the main listmaster's password, if the e-mail address specified is the @ character and no list name is specified.
roseall log @
If an e-mail address is specified, the log(s) may be sent to this address.
rosebud log a@b fun-l
The alias command (main listmaster password only) may be used to create a Finder alias file for a target file on the Macintosh running AutoShare. Enter the absolute path of the target file as the 5th word (or more words if needed), and enter the file name of the Finder alias as the 4th word. The 3rd word specifies a code for the folder, in which the alias is to be created (the Apple Menu Items folder is amnu, the Startup Items folder is strt, the Desktop folder is desk, etc). To move the alias file to another folder, the rename command of an ftp client can be used if you have an ftp server running on the server Macintosh.

You may also specify the alias folder path as a regular path ending with a colon (as the command line is likely to become longer this way, it is recommended to turn off word-wrapping in your mail client). If you want to delete an alias file (or another file), omit the target path (the 5th word). And if the 3rd word is not four characters long or does not end with a colon, the 5th word is interpreted as a path to be resolved.

roseall alias disk:aliaspath: aliasfile disk:targetfolder:targetfile
The setres, getres and run commands (main listmaster password only) function much like their AppleScript counterparts. The setres command updates a STR# value in the AutoShare Preferences file, and the getres command returns it. As many preference values are also loaded into memory at start-up, the setres command often needs to be followed by the run command to make sure that the values in memory reflect the values stored in the disk file; list-specific settings at STR# 1001 and upwards though are not kept in memory. The section on the AutoShare Preferences file and its list-specific configuration describes the STR# value structure of the preferences file.
roseall setres 1999 1 blah...
roseall getres 1999 1
roseall run
Multiple lines using the above remote format are supported (in the body mode only). AutoShare stops processing the body once there are no more lines beginning with a valid password. While a post line must be the last of one or several passworded lines, it need not be the first.

For safety reasons, I highly recommend the recipient be autoshare@....

The passwords for remote administration by e-mail have been made list-specific in version 1.3, so you need to update all of your passwords to make your configuration current, using the Admin or AppleScript (if you edit your Preferences using a resource editor, please pay close attention).

If AutoShare detects a valid list in 4th word, the list-specific password works as well as the overall password, which works whether or not a valid list has been specified.

It may be added that the somewhat more complex Script By Mail AppleScript sample package offers the alternative of issuing AppleScript commands via e-mail.

Subscriber and administrator web forms

AutoShare offers web form support for both subscribers and administrators. The sample web form HTML files (designed by James Berriman and Bill Suarez) in the Samples folder illustrate how these forms are filled out and then e-mailed to the server once a button is pressed.

Upon arrival, AutoShare parses the message body to determine if the message stems from a web form with a mailto: action (does not rely on the Content-type: application/x-www-form-urlencoded RFC field anymore) and subsequently turns the mirrored web-originated message files into standard message files (list server requests and remote administration by e-mail respectively). Complete URL decoding is applied to the data received from the web browser.

A subscriber form may use the command, list, name and option tokens as well as the subscribe, unsubscribe, set and review commands.

The remaining commands, new in version 1.4, are: list, index, get, which, release, query, search and help, and new tokens are file (for Get) and string (for Search).

An administrator form may furthermore use the password and email tokens as well as the analysis command (the post, password, application and system commands are not supported in web forms).

New in 2.0 is the comments token, which comes in handy when addressed to auto-response addresses, as the body of the token forms the body of the standard message file.

Mail-back confirmations

The mail-back confirmation is a new feature requiring the user to respond to a handshake confirmation before the mail message is processed. Since the user must reply to a return message with a keyword which is included in the reply, the server knows for sure that the mail message in fact is from that one user.

Two new folders are introduced, the Mail Back folder and the Hold Mail folder, which must be specified in order to enable mail-backs (see the More Folders window in the Admin). The mail-back feature works on a per account basis, so if you would like mail-back enabled for a given account, you re-configure the EIMS Save as files account to point to not the Filed Mail folder, but the Mail Back folder instead. Once the message file appears in the Mail Back folder, AutoShare moves it to the Hold Mail folder and puts a new message file in the Incoming Mail folder, asking the user to confirm by replying to the mail; the first line in the body (or in the subject if you add the letter J to the Misc Stuff field) displays the confirmation key, which is the unique name of the original file generated by EIMS. When the confirmation message file arrives in the Mail Back folder, AutoShare checks the first line in the body, and if it matches the name of a file in the Hold Mail folder, this file is moved into the Filed Mail folder, and the confirmation file is deleted.

The contents of the returned mail-back message to the user will go beyond including just the confirmation key in the first line of the body, if you put a line-based text file entitled Mailback in the Documents/autoshare folder. A blank line and the contents of this file will be added, thereby explaining the user what to do. The /=original and /=subject tokens are supported in the Mailback file (if the confirmation keyword is configured to appear in the subject, the /=subject token string is in front of the keyword).

Deletion of unconfirmed message files takes place automatically. The Hold Mail Check property in the Options (Misc) indicates in minutes (default is 10 minutes) how often AutoShare should check for expired files, and the Hold Mail Expire property indicates in minutes (default is 600 minutes = 10 hours) the duration before expiration takes place from the time the file was created by EIMS.

The AutoShare account is a unique and more complex case, as you may want some commands enabled for mail-back and others disabled. To feature this, a new list-specific Mailback property is introduced in the AppleScript Options (List). If the string is blank, the general setting is looked at, and if the string there is blank too, no mail-back is enabled for the given list. You may add N (None) to the list-specific string to avoid use of the general setting.

The A (All) enables mail-back for all commands for a given list, and if a command does not contain a reference to a list, the general setting is used. Here are the letters for the various commands: S=sub, U=unsub, E=set, Q=query, R=review, I=index, G=get, H=search, W=which, L=list, C=release.

The list-specific string SUQL indicates that the sub, unsub and query commands are mail-back enabled, while others are not; the status of the list command is determined by the general setting, as it is not specific to any given list.

If both the general and list-specific mail-back strings are blank (default), no mail-back takes place for the list server account. It therefore doesn't matter whether the EIMS account points to the Mail Back folder or the Filed Mail folder.

Process extenders

An AutoShare process extender, an external application, extends the processing of the AutoShare application itself. The term hook is used to designate the entry-point in AutoShare, where the external application, often a script application, is launched if necessary and its action is being processed.

When AutoShare comes across a hook, AutoShare sends an AppleEvent to the process extender is question, if available. A list of parameters, which the process extender may use, is included in the AppleEvent.

The parameters in the passed list of the AppleEvent are

Depending on the context, the 10th parameter may serve one of these purposes: Depending on the context, the 16th parameter may serve one of these purposes: Depending on the context, the 18th parameter may serve one of these purposes: The following table indicates which list parameters are passed with which process extender types.
       BP AP SU US AD CA TB SY FI SC ST SD BL EL DB OF
1-8    x  x  x  x  x  x  x     x
9         x  x  x  x  x  x  x  x  x              x  x
10                    x     x  x  x              x
11-13  x  x  x  x  x  x  x     x
14                          x                    x  x
15-16                       x                    x
17-19                                            x
For suggested variable names for the above parameters, see the Template process extender sample of type Before Processing, which is located in the Sample Process Extenders folder.

AutoShare script commands are processed and returned immediately in process extenders. Be sure however to leave the script at a reasonably calm state when AutoShare script commands are called.

Process extenders reside at the top level inside the Process Extenders folder, which resides in the same folder as the AutoShare application. Aliases are supported for process extenders, so that these may physically reside elsewhere.

There are several sample process extenders inside each sample type folder. One from each folder may be made active by placing it at the top level inside the Process Extenders folder. All sample files are script applications with the source preserved ("Save As..." Application with both "Stay Open" and "Never Show Startup Screen" enabled).

The following describes the various AutoShare process extenders and also makes references to some of the sample process extenders. The class and event IDs used are in parenthesises after the process extender name.

Before Processing ('AuBP', 'aUBP')

The Before Processing hook is placed at the very beginning of the processing of a message file in the Filed Mail folder. The execution of the Before Processing process extender is triggered by AutoShare becoming aware that a file resides in the Filed Mail folder.

Within the Before Processing sample folder, the Template process extender illustrates the basic starting-point. The main AppleScript handler merely picks up the call from AutoShare. The purpose of the idle handler is to reduce processing time being allocated to the application when the main handler is not being called.

The List Parameters process extender displays the various parameters being passed from AutoShare. Be sure to have AutoShare running in the background when testing this sample.

The Unconditional Filter process extender intercepts the main AutoShare processing by copying the message file to another folder and completes this task before AutoShare begins its actual processing of the file. If the process extender deletes or moves the file, AutoShare is left with no processing of its own to do.

The Write Log process extender writes a line to the AutoShare log. This sample is particularly interesting, as the sample application calls the very same AutoShare application, which triggered it. AutoShare waiting for the process extender to complete its task causes a Catch-22 situation, because AutoShare does not respond to high-level events during instances of its main processing phase to avoid various high-level event and open file conflicts. The trick is to let the process extender have its calls to AutoShare bypass its requests for high-level event replies; the actual task will be processed instantly though.

As it may be nice for users themselves to be able to turn on and off vacation services and furthermore update the wording of vacation notices without the assistance of the administrator, the Before Processing Vacation sample makes this possible and requires no modification to be used. The idea is that a user sends a mail to an auto-response account entitled vacation@ and specifies one of three words in the subject:

You can change the vacation(@), On, Off and Doc words by simply editing the beginning of the process extender script. PS: mail-backs are recommended for the vacation@ account!

After Processing ('AuAP', 'aUAP')

The After Processing samples resemble those of Before Processing. The only difference is the time of being triggered and thereby the message file. This type of process extender is executed just before the final processed file is copied to the Incoming Mail folder.

Subscribe ('AuSU', 'aUSU')

The Subscribe Write Log sample writes a line to the AutoShare log. Be sure not to have your process extender delete, move or otherwise change the message file.

The FileMaker Pro sample creates a new record in a FileMaker Pro database file having a very simple data structure.

The Send Message sample sends a basic welcome message to the new subscriber.

Unsubscribe ('AuUS', 'aUUS')

The Unsubscribe Write Log sample writes a line to the AutoShare log. Be sure not to have your process extender delete, move or otherwise change the message file.

The FileMaker Pro sample looks up the subscriber in the database and sends a message of when the original subscription took place.

After Digest ('AuAD', 'aUAD')

The After Digest Write Log sample writes a list-specific line to the AutoShare log.

Contribution Alert ('AuCA', 'aUCA')

The Contribution Alert Multiple Alerts sample illustrates how to return a list of strings to AutoShare; note the AppleScript return command in particular. The row of lines will override the default text of the given alert message.

You distinguish among the various contribution alert types by using the code of the contribution alert type parameter. The sample shows this in full.

Test Bounce ('AuTB', 'aUTB')

The Test Bounce Write Log sample writes a line to the AutoShare log.

As the parameters reflect the Test Bounce file in the AutoShare Temp folder, you may choose to delete this file and instead send another message to the subscriber in question.

Remote ('AuSY', 'aUSY')

The Remote Write Log sample writes a line to the AutoShare log for each of the various commands (used to be System only) in remote administration by e-mail. The Send Message sample returns a notification to a new subscriber upon remote subscription.

Filter ('AuFI', 'aUFI')

The Filter Write Log sample writes a list-specific line to the AutoShare log. The Copy File sample copies the Filed Mail file to another folder before it is being deleted. The Send Message sample informs the sender that the mail has been filtered.

Script ('AuSC', 'aUSC')

The Script New List Mail Accounts sample illustrates how the process of creating a new list server list in AutoShare can include automatically creating the corresponding mail server accounts using the New User script command in EIMS 2.1. The AutoShare Admin uses this process extender, if present.

Startup ('AuST', 'aUST')

The Startup Write Log sample writes a line to the AutoShare log just before entering the main processing loop. The Startup Subscriber Count sample logs the number of subscribers for each list file.

Shutdown ('AuSD', 'aUSD')

The Shutdown Write Log sample writes a line to the AutoShare log just after having exited the main processing loop.

Begin Log ('AuBL', 'aUBL')

The Begin Log Write Log sample writes a line to the AutoShare log just after a new log file is created.

End Log ('AuEL', 'aUEL')

The End Log Write Log sample writes a line to the AutoShare log just before a log file is completed.

Database ('AuDB', 'aUDB')

The Database FileMaker Pro sample illustrates how to use the external script database format. For experienced AppleScript users only.

Optional Fields ('AuOF', 'aUOF')

The Optional Fields Subscribe sample illustrates how to automate the use of the optional fields in the built-in database format.

MIME RFC fields

AutoShare may be configured to use MIME Quoted-Printable encoding.

When the MIME property in the AppleScript Options (Misc) is set to Text Plain (default), the following MIME RFC field is inserted after the Mime-Version field:

     Content-Type: text/plain
And when the property is set to MIME QP or QP Always, the following MIME RFC fields are inserted after the Mime-Version header field:
     Content-Type: text/plain; charset="iso-8859-1"
     Content-Transfer-Encoding: quoted-printable
Mac-to-MIME conversion is applied accordingly in the body of the outgoing message.

MIME QP: The MIME property makes a difference for the outgoing message files that are originated by AutoShare and not directly derived from message files arriving in the Filed Mail folder (such as logs, digests and admin notifications). For list contributions and auto-responses, Mac-to-MIME conversion will depend on the MIME RFC fields of the original message as well; the Mac-to-MIME conversion does not take place unless the 'Content-Transfer-Encoding: quoted-printable' field is located (besides the MIME property being set to MIME QP).

QP Always: The MIME Quoted-Printable encoding takes place whether the message file is originated by AutoShare or not.

AutoShare offers MIME Quoted-Printable support for auto-responses with enclosures as well. (The name of the enclosure file will be added to STR# 8193,1 (2-5 are also used) of the outgoing message to insure that boundary lines are inserted correctly at the time of the Mac-to-MIME conversion.) It may be added that if the original mail requesting an auto-response with an enclosure is having a MIME header and no CTE QP header, MIME enclosure handling will be enabled.

See also RFC 1341: MIME (Multipurpose Internet Mail Extensions): Mechanisms for Specifying and Describing the Format of Internet Message Bodies.

Multiple instances of preference sets

The default preference set, created automatically when AutoShare is first started up, is stored in the AutoShare folder within the System 7 savvy Preferences folder and comprises primarily the AutoShare Preferences file, the AutoShare Log file and the AutoShare Temp folder.

The AutoShare Preferences file is designed to run one instance of for instance the list server, and the user interface of the server reflects the actions within one status window.

AutoShare 2.0 offers multiple preference sets, so that you may run multiple instances of for instance the list server, with each instance displayed within its own status window. This comes in handy when configuring EIMS 2.0 to handle multiple domains, as you can also have one list server address per domain.

Non-default preference sets are created in the above AutoShare folder by simply creating empty subfolders having names beginning with the @ sign. When starting up, AutoShare creates respective preference sets within such non-default subfolders.

The configuration of each AutoShare 2.0 preference set must generally correspond to the account configuration of a given EIMS 2.0 domain. It is however possible to arrange for multi-preference sets within a single-domain environment as long as you avoid conflicting user names for the special accounts (autoshare@, poll@, protected@), which is accomplished by adding trailing labels to these user names; use the Listserver Label property in the AppleScript Misc Options to configure the labels.

When using the Listserver Label, it is suggested that no label be configured for the default preference set, so that the list server user name remains autoshare@ for the default preference set. By applying a label of 1 to a non-default preference set, the listserver user name becomes autoshare1@ for this preference set (and so forth).

The user%domain@server configuration in an EIMS multi-domain environment is only necessary when you need to configure a client's POP account to tell the server what domain the account is in.

AutoShare distributes the processing of the preference sets in a round robin fashion. When configuring a given preference set, you must first set it to be the only activated preference set temporarily. You may accomplish this via the Multi-preference entry from the Preferences menu in the AutoShare server user interface by selecting a given preference set. Once the configuration has been completed, you may return to normal processing by selecting All via the same Multi-preference entry.

Temporarily activating a given preference set is also supported by the AppleScript commands entitled SetPreference (which activates a given preference set: <name>, Default or All), GetPreference (which returns the current preference set selection) and GetPreferences (which lists the preference set names).

Unknown accounts

The unknown accounts feature in AutoShare is reminiscent of the any-name account EIMS 1.x, the unknown addresses specification in EIMS 2.x and the unknown account in SIMS. The simple, yet powerful idea is that when the mail server encounters an undefined account, the decision of what to do with the message is passed onto AutoShare via the Save As option specifying the Filed Mail folder.

By doing so, the mail server configuration of all accounts normally specifying AutoShare's Filed Mail folder is no longer necessary! No <list>@ accounts, no autoshare@ account and no auto-response accounts need to be individually configured.

When processing, AutoShare will initially perform all special cases, and when it then is about to process the standard stuff, a check will be done: if the recipient address is not a list (based on a file in the List Server folder) or an auto-response (based on a subfolder in the Documents folder), then the address is unknown and subsequently processed according to your Unknown Addresses configuration in AutoShare (see the Admin or AppleScript):

Mail server Save As accounts for bounces and mail-backs, which are normally directed to the Bounces and Mail Back folders respectively, may now be directed directly to the Filed Mail folder, in which case mail-backs for auto-responses are enabled using the /=mailback token in the Default document and mail-backs for list contributions are enabled adding the letter H in List Stuff (see the Admin or AppleScript). The only Save As account needed to be created on the mail server is the unknown address account.

Miscellaneous features

The following discusses various features not mentioned earlier.

Folders and aliases

In the Folders dialog box in the AutoShare server application, aliases are resolved immediately when using the Select buttons. Path aliases are also resolved when pressing the OK button, as paths may be entered manually.

The AutoShare folder in the System Preferences folder may figure as a folder alias. The alias to the actual folder located elsewhere is resolved when AutoShare starts up.

AutoShare Temp folder

When starting up, AutoShare creates a folder entitled AutoShare Temp on its Mac in the AutoShare folder inside the System Preferences folder; aliases are not supported for this new folder. All processed files will enter this new folder first before a fast move (or copy/delete, if on separate disks) takes them to the Incoming Mail folder.

Processing modes

There are two processing modes. The first is called simply the processing mode, and the second is called the non-processing mode. In the normal processing mode, AutoShare performs all standard tasks. In the non-processing mode, AutoShare allows only events (including AppleEvents) and Keep Applications Up to be processed, thereby restricting message files from being processed. This may come in handy, if for instance you would like to inspect message files arriving in the Filed Mail folder.

The normal processing mode may be manually disabled and enabled, either via the toggling disable/enable processing menu item in the server Preferences menu or via the AppleScript NonProcessing property in the SetStat command. If you accidently leave AutoShare in the non-processing mode, there is no reason to worry, as AutoShare will check every so often (defaults to 60 minutes) to see if it is okay to re-enter the normal processing mode.

Locking files

Locking files in the Incoming Mail folder comes in handy if you would like to inspect processed message files, as EIMS does not process locked (or otherwise busy) files.

It may be manually disabled and enabled, either via the toggling disable/enable locking menu item in the server Preferences menu or via the AppleScript LockingFiles property in the SetStat command. If you accidently leave AutoShare in the locked mode, AutoShare will check every so often (defaults to 60 minutes) to re-enter the normal unlocked mode.

Resource fork verification

A sanity check is performed on the resource fork of the AutoShare preferences file(s); if the verification fails, the AutoShare server application shuts down. The sanity check may be performed on any file's resource fork using the Verify File AppleScript command.

Out of memory and low on disk space

When AutoShare is close to running out of memory or the server Mac is almost out of disk space, two types of reminders take place. Firstly, the incident will appear in the log file, and secondly, the administrator will receive an e-mail indicating that prompt attention is needed. Beware though that the reminders may not happen when starting up AutoShare, as the preferences must be fetched before logging or e-mailing can take place; AutoShare may shut down gracefully or enter the non-processing mode, if unsafe to proceed.

Situations relating to AutoShare being low on memory are often temporary, so one reminder only per incident will be issued. Future transactions will be processed in a normal fashion, although some specific transactions may cause history to repeat itself, at which times further reminders will be issued.

When a disk is close to being full, the situation is not likely to change much by itself. Both periodical and pre-processing checks applied to all involved volumes will be performed based on a worst-case scenario, and when the threshold has been hit, the processing of the current task will be completed if possible, the reminders will be issued, and AutoShare enters the non-processing mode. Once the situation has been resolved, AutoShare resumes normal processing.

When AutoShare gets low on disk space, it no longer shut downs, but instead moves into the non-processing mode. Messages are mailed to the listmaster every hour to inform of the low disk space situation. When adequate disk space has been restored (checking for this every so many minutes (defaults to 60); AppleScript, see the Processing property in Misc Options; the Admin, see the More Misc window), AutoShare returns to normal processing.

Shutdown alert dialogs

Unlike standard dialogs which are generally activated by the user, alert dialogs generally owe their presence to a decision made by the software. And when the software is unattended server software, blocking dialogs are less than desirable, which is why AutoShare alert dialogs are likely to automatically close after a given number of seconds (default is 20 seconds), if not already closed by the user.

Alert dialogs come in handy as they offer an explanation of why for instance the server may shut down just after being started up, e.g. because another AutoShare process is already running.

Drag and drop onto AutoShare

One or several line based text files can be dragged and dropped onto the AutoShare server application icon. The contents of each file wil be appear in the body of a message mailed to the main list administrator, which is the default behaviour unless one of the following conditions takes place.

If the name of a dropped file is that of a list, the file's address lines create respective subscription message files in the Filed Mail folder, which is a convenient way of adding many new addresses at one time while also providing the subscribers with returned notifications. Notice though that the dropped file may not be any list file in the List Server folder for this to occur.

If the dropped file however is a list file in the List Server folder and the list is configured for the built-in database format, then the list's subscribers are imported into the respective database file in the Databases folder. If the list is not configured for the built-in database format, nothing happens.

If the name of a dropped file contains an '@' sign, then the first e-mail address of each line will be extracted and output to another text file, whose name is appended with '.1'. The output file may then be used as a standard list file. If the output file already exists or if the input file name contains more than 29 characters, nothing happens.


Undocumented features

The list server address may be change from autoshare@ to listserv@ by updating STR# 1984,1 in the AutoShare Preferences file to '1' (is normally '0'). The autoshare folder inside the Documents folder should also be renamed to listserv, and the EIMS list server account must be renamed as well. Keep in mind though that this change is not encouraged as the makers of the LISTSERV list server may consider the listserv term their trademark.

Technical specifications

While technical specifications are, well, technical, they may lead to insight not offered elsewhere in the documentation and so serve as a useful source of information.

AutoShare Preferences and list-specific configuration

You may skip the section on The AutoShare Preferences file and its list-specific configuration, if you prefer to do so. All preferences, only in part supported by the user interface of AutoShare, are fully scriptable as described in the notes on the AutoShare scriptability. You may also wish to go straight to the AutoShare Admin application, whose user interface benefits from the full scriptability of AutoShare and so has access to all preferences.

The terms default and override are used often in this section. The generic meaning of these two words is applied to the list-specific configuration of AutoShare to indicate, that if you don't go out of your way to configure a given setting for a list, the respective general setting will be used instead. Many lists frequently share the same settings, which conveniently may be configured on the general level (a list-specific setting defaults to a general setting), whereas truly list-specific settings may be configured on a list level (a list-specific setting overrides a general setting). As a rule, strings being blank and numeric values of -1 are most often the override values indicating default.

The AutoShare Preferences file resides in the AutoShare folder within the System 7 Preferences folder and is created automatically by AutoShare, when starting up.

List-specific settings

AutoShare also initializes the list-specific settings in this file by creating standard default values, when starting up. The list-specific configuration is stored in STR# 1001 and upwards, one STR# per list. Index numbers for fields and description of values within these are:

General list settings

STR# 1000 holds the general configuration for lists and uses the layout of fields and values for the list-specific settings. You probably have to update the configuration for only some of the fields for a given list: if the fields marked in the general configuration contain the same data as you would like to apply to the list, they are considered default values for the list if you leave the respective list-specific fields alone.

Miscellaneous settings

Some server configuration not relating to lists is kept in STR# 201 (string values default to blank):

The user interface of AutoShare takes care of STR# 1000,2, STR# 201,3 plus all configuration in STR# 202, 203,1-6 and 204. The rest cannot be configured within the AutoShare interface. You may use a resource editor (such as ResEdit), or much better, an OSA-compliant scripting language such as AppleScript (specific commands are supported in most cases, the SetRes command is needed in a few instances only) to update your configuration for the above.

All of the configuration data may be viewed in the AutoShare Analysis file. Or perhaps best is the user interface of the AutoShare Admin, which communicates with AutoShare via scripting.


PowerPC native AutoShare

AutoShare, written using Metrowerks CodeWarrior Pro 4, is both 68K (in the 68K folder) and PowerPC (in the PPC folder) native. AutoShare is written in the Pascal and C languages.

The development environment of AutoShare does not rely on a framework such as PowerPlant or MacApp. The PowerPC native version is compiled and linked directly from sources to application and does not use a PowerPC conversion tool such as MacApp2PPC.

When AutoShare 1.0 was released, it was the first 68K list server for the Mac, and with the release of version 1.1, AutoShare was also the first true PPC native list server for the Mac.


Improvements and bug fixes

The following lists the minor improvements and bug fixes of the various AutoShare versions since the original version 1.0.

Version 3.0.2

Version 3.0.1

Version 3.0

Version 2.4

Version 2.3

Version 2.2


Version 2.1


Version 2.0


Version 1.4.2


Version 1.4.1


Version 1.4


Version 1.3


Version 1.2


Version 1.1


Version 1.0.1


The small print

AutoShare, a freeware EIMS (AIMS, MailShare) companion application.
A list server and auto-responder for the Macintosh.
AutoShare is a personal project of Mikael Hansen in his free time and in no way relates to his work as such. Mikael Hansen accepts no responsibility for the use of AutoShare.
Last updated on November 15 1998 by Mikael Hansen