|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T p
Length: 12500 (0x30d4) Types: TextFile Names: »part.5«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit └─⟦2fafebccf⟧ »EurOpenD3/mail/smail3.1.19.tar.Z« └─⟦bcd2bc73f⟧ └─⟦this⟧ »design/part.5«
Part 5: Configuration files. In previous parts of this document, a number of configuration files were discussed: the config file, director, router and transport files, and method files. In this part we go into more detail on how these files can be setup. Section 5.1: Conventions. There are a number of conventions that are followed in all or several of the 5 types of configuration files. In particular the director, router and transport files are identical in form, varying only in the names of attributes which apply to file entries. Section 5.1.1: Delimiting file entries. A common routine is used to read in single entries from all of these files. In addition to delimiting entries in a common fashion, this routine also folds continuation lines. Delimiting of file entries is quite simple: an entry ends at the end of file, or before a line that contains a character other than whitespace or a sharp (`#') in the first column. In addition, the first entry in a file begins on the first line which does not have a sharp as its first non-whitespace character. Lines which end in `\' will cause line continuation. As well, any whitespace at the beginning of the continuation line will be ignored. Thus, if you need whitespace at the place where you wish to break a line, the whitespace will need to precede the `\' character. As an example, consider the following simple config file: # a configuration file for smail # this file was brought to you by the makers of smail # the mailer that makes you feel good about sending # mail. smail = /usr/lib/smail/smail # we have several hostnames: hostnames = kremvax.uucp:\ kremvax.kgb.comm:\ kremvax.ussr.comm This file contains two entries: smail = /usr/lib/smail/smail # we have several hostnames: and hostnames = kremvax.uucp:kremvax.kgb.comm:kremvax.ussr.comm NOTE: since comments are not stripped when reading the file, except when they are at the beginning of a file, a `\' character at the end of a comment will also be continued on the next line, except at the beginning of a file. Section 5.1.2: Comments within entries. Comments are supported within all configuration files as the sharp character (`#') up to the end of a line. `#' does not begin a comment within a string value (defined below) or when preceded by a backslash in a regular attribute value. Section 5.1.2: Names, values and strings. In the config file, plus the director router and transport files, there are three common types of tokens: attribute and entry names, regular attribute values and string attribute values. In addition to these there are also operators, such as `,' and `=', but we are not concerned about those in this section. An attribute or entry name is limited to characters from the set of letters, numbers and underscore (`_'). Names can begin or end or contain any character from this set. A regular attribute value can contain characters from the set of letters, numbers and one of the characters below: ! @ $ % ^ & * - _ + ~ / ? | < > : [ ] { } . ' ` In addition, any other character can be included by preceding it with a \ character (except newline). Note that above set does not contain any of: # , " ( ) ; or ASCII control characters. Any collection of characters can be used for a value by using a C-style string constant in double quotes (`"'). The standard C \-escape sequences are handled appropriately, and as well \e is ASCII ESC, \g is ASCII BEL and \x or \X followed by up to three hexadecimal digits form a hexadecimal character literal. Often numeric values will be required. These can be specified as C-style integer constants, such as 0777, 0xffe or 1234 and can optionally be followed by `k' or `K' to multiply the number by a factor of 1024 (2^10), or by `m' or `M' to multiply the number by a factor of 1048576 (2^20). Numbers such as 12M3K are NOT valid. Decimal points are not valid. It IS okay to put a number in double quotes, such as "100K". When a list is required, each element of the list is separated by a single colon (`:'). Colons cannot be included in the value of a list element (at the present time). Section 5.2: Expanded values. Many attribute values will be expanded before being used. When this is done, certain substrings, beginning with $, will be replaced by the value of a smail variable. The names of expansion variables are either a single character, or are multiple characters from the set of letters, digits and underscore (`_'). A variable name can also be enclosed between { and }, to isolate the variable name from the surrounding text. In addition to variables, a number of meta-expansions can be used. These expansions are always of the form: ${meta_name:name} where `meta_name' defines some operation to perform on the value of the variable `name'. Multiple meta-expansions can be specified, such as in: ${lc:strip:user} This strips quotes from the value of the variable `user' and then converts characters to lower case. When a string to be expanded begins with the character `~', a home directory is substituted. If only `~' is given, or `~/' is given, then the home directory associated with an address is substituted. If the form `~username' is given, where `username' is the name of a user on the local host, that user's home directory is substituted. The complete set of variable names depends upon context, but the following are always available: bat a string defining a bat which identifies where your smail sources originated. compile_date or ld_date the date when the current smail binary was compiled. compile_num or ld_num a decimal number giving the number of times smail has been compiled since the creation of the source file ldinfo.c. ctime the date and time, in the form returned by the ctime(3) function. date The date and time in ARPAnet format. grade The priority character for the current message. See the grades attribute in the config file for more information on this value. message_id or id the message ID for the current message. patch_number or patch the patch number for the smail sources, from the source file patchnumber. patch_date the date that the most recently applied patch was created. pid or $ the current process ID. primary_name or primary the canonical name for the local host. release_date or release the release date of the smail sources. sender sender or from the address of the sender of a mes- sage. uucp_name the UUCP-network name for the local host. version a short version string for smail. version_string a verbose version string for visible_name or name the local host name used in outgoing addresses. smail. In addition, the following variables are defined if they are available in the current context: HOME or home the home directory of a user associated with an address. host the remote host string associated with a remote address. user or addr a user name or remaining address string associated with an address. These variables may exist if such data is available: inet_name the internet address for the local host, in decimal bytes separated by a dots. For example: ``192.2.12.3.'' hex_inet_name the internet address in hexadecimal. For example: ``c0020c03.'' The following meta-expansions also exist: lc convert to lower case. parent interpret the value within the context of the parent local address that produced the associated address. This is useful when the local address that produced an address is desired. Expansion fails if no parent exists. quote enclose the value in quotes, if it would not other- wise be a valid local-form address, within the rules of RFC822. Uses backslash escapes as appropriate. (This is not available in the Alpha release of smail). strip Remove backslashes and double quotes from a value. If a double-quote is preceded by a backslash, the backslash is removed, but the double quote is not. Sequences of whitespace characters and dots are con- verted to exactly one dot character. top interpret the value within the context of the origi- nal address, supplied to the mailer, that produced the associated address. uc convert to upper case. The following are sample expansions: /usr/spool/mail/${lc:user} will become (assuming a next_addr of `Tron): /usr/spool/mail/tron whereas: "Received: by $primary_name ($version_string) id <$message_id@primary_name>; $date" will become something such as: Received: by name.uucp (smail /\--/\ 3.0.2 03-dec-87) id <m0c87zK-007zXpC@namei.uucp>; Tue, 8 Dec 87 19:45 PST and: $host!rmail (${strip:addr}) with an $addr value of `Ronald S. Karr' and a $host of `amdahl' will become: amdahl!rmail (Ronald.S.Karr) If a value does not exist, such as $HOME being used when no associated home directory is known, or when a string begins with "~username" and the username is not known, or when $host is used for a local address, the expansion fails. Section 5.3: Attributes. The config, director, router and transport files define the values for attributes. These values are defined using one of the forms: variable_name = string or number variable_name or +variable_name -variable_name where the first form gives a value to an attribute that takes a non-boolean value, the second form gives a positive value to a boolean attribute, and the last form gives a negative value to a boolean attribute. Additionally, the last form can assign a NULL value to a string variable. This is useful, for example, to stop the use of a transport file by assigning a NULL value to the `transport_file' attribute. It is an error to use a form that does not match the type of value expected for an attribute. Section 5.4: The config file. Each entry in the config file specifies a value for a global attribute in smail. The complete set of setable global attributes is given in Section 9.3. The config file overrides compiled in options. See Section 10.1 for info on compiled in flags. Section 5.5: The director, router and transport files. Each entry in one of these files defines a specific director, router or transport. The format of each entry is: name: generic_attribute, generic_attribute ... ; driver_attribute, driver_attribute ... The `name' above defines a name by which the the entry can be identified. For director and router file entries, these names are only used in debugging output or in locating configuration file errors. For the transport file entries, these names may be referred to by method files, router entries or from some directors. The list of possible `generic_attribute' names is a function of the configuration file it is in. The possible generic attribute names are defined in Sections 6.1, 7.2 and 8.1. The list of possible `driver_attribute' names is a function of the specific driver associated with the entry, as specified by the generic `driver' attribute. The possible driver attribute names are defined in parts 6, 7 and 8, in the sections that discuss each individual driver. Attribute value assignments are separated by commas, with the generic attributes being separated from the driver-specific attributes by a semicolon. The generic attributes always come first. An entry IS allowed to end in a comma or semicolon. Section 5.6: Method files. Method files have a very simple structure. Each entry contains a host name and the name of a transport. The two are separated by whitespace. At the present time, double quotes cannot be used, as there are no possible conflicts between delimiters, comments and legal host names or transport names. \f