|
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 c
Length: 31214 (0x79ee) Types: TextFile Names: »config«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit └─⟦2fafebccf⟧ »EurOpenD3/mail/smail3.1.19.tar.Z« └─⟦bcd2bc73f⟧ └─⟦this⟧ »guide/admin/config«
.\" @(#)config 1.2 8/1/88 04:17:20 .NH Setting up Run-time Configuration Files .PP The .B smail3.1 binary is preloaded with a complete configuration and needs no run-time configuration files. This preloaded configuration file is tunable over a small range through the .I EDITME file, and should be sufficient for many sites. However, if this configuration is not sufficient for your site, or if you wish to define a router that uses .I method files, then you can write run-time configuration files to adapt smail to fit your needs. .NH 2 Types of Run-time Configuration Files .PP There are five types of run-time configuration files: .RS .IP \(bu one or two .B config files, used to set values for a variety of smail variables, .IP \(bu a .B directors file, describing the rules for resolving local addresses, .IP \(bu a .B routers file, describing the rules for resolving remote addresses, .IP \(bu a .B transports file, describing the possible methods for performing delivery, .IP \(bu and zero or more .B method files, which match hosts to transports. .RS .LP The following sections give overviews of the formats of these files, with examples of their use. For a complete format description see the man page .I smail (5). .NH 3 Config Files .PP Any machine may have a primary and a secondary .B config file which redefines the values for a number of smail variables. These files can be used to define names for the localhost, define where files reside, setup the values for site-definable message header fields and more. Values set in the primary config file override values predefined in the smail binary. Values set in the secondary config file override values defined in the smail binary or in the primary configuration file. Also, the name of the secondary config file can be redefined in the primary configuration file. .PP The capability for having two such files is useful in networked environments with distributed filesystems. For example, on the Sun network at Amdahl Corp., we define the name of the primary configuration file to be .I /usr/local/lib/smail/config which is found on our fileservers. This file is maintained by the group that maintains the mailers running on all of the Suns. The primary configuration file defines a secondary configuration file named .I /private/usr/lib/smail/config . If such a file exists on a given workstation, it can be used to redefine the mailer behavior on that workstation without requiring different binaries. .PP Because this second configuration file can redefine the paths to any other configuration file or directory, any aspect of the mailer behavior can be changed. Thus, a gateway machine can use the same primary config file, director file and transport file as the other suns while using its own private router file. In addition, a machine on which a new delivery agent is being tested can define a private config file that points to its own router and transport files. .PP The format for either config file consists of text records that set a variable equal to some value. To set a variable to a string or numeric value, use the form: .DS I \fIvariable\fP = \fIvalue\fP .DE For example, the file .DS I postmaster = tron@glotz.uucp visible_domains = wall.com spool_mode = 0664 .DE sets the default address for the postmaster to ``tron@glotz.uucp'', sets the run-time equivalent of the EDITME variable DOMAINS to ``wall.com'' and sets the permission mode for spool files to allow the file owner and group to write it. .PP Boolean attributes can be set using the notation: .DS I +\fIboolean-variable\fP .DE and can be reset using the notation: .DS I \-\fIboolean-variable\fP .DE The ``\-\fIvariable\fP'' notation can also be used to set a numeric variable to zero and to unset a value for a string variable. For example, the following config file disables the use of an external transport file and tells smail that configuration files are not optional: .DS I \-transport_file +require_configs .DE Comments using the shell `#' notation and blank lines are allowed in config files. In addition, records can be extended by including white space at the beginning of successive lines. For example, the following config file sets the .B Received: header field to use for messages to a multi-line value and sets the name of a user that has few access capabilities: .DS I .ta .5i 2.5i # Use a verbose format for the Received: header field received_field = "Received: by $primary_name with smail ($version_string) id <$message_id@$primary_name); $date" .sp \n(PDu nobody = unknown # unknown has few access capabilities .TA .DE .PP The complete list of variables that can be set in the config files is described in the man page .I smail (5). .NH 3 Directors, routers and Transports Files .PP The .B directors , .B routers and .B transports files all have the same format. These files describe entries in a table where each entry describes the attributes for one director, router or transport. The order of entries in the director and router files is import, in that directors and routers are called in the order stated in the table. The order of entries in the transport file is not important. .PP An entry in one of these files defines: .RS .IP \(bu a name by which that entry is known. .IP \(bu a driver which implements the function for that entry. .IP \(bu a set of .I generic attributes from a set that can be applied to any entry in the file. .IP \(bu a set of .I driver-specific attributes, from a set that can be applied only to entries that use the specified driver. .RE .PP As an example, the director file entry below specifies the attributes for a director that reads aliases from a file .I /private/usr/lib/aliases : .DS I .ta .5i # read aliases from a file private to one machine on the network private_aliases: driver=aliasfile, owner=owner\-$user ; file=/private/usr/lib/aliases .TA .DE This entry is named .I private_aliases , and depends upon the low-level director driver routine named .I aliasfile . Errors found while processing addresses found by this director are sent to an address formed by prepending ``owner\-'' to the name of the alias, and these the aliases are stored in the file .I /private/usr/lib/aliases . The .I aliasfile director driver implements a general mechanism for looking up aliases stored in a database. By default, this database is simply a file containing ASCII records in no particular order. The file .I /private/usr/lib/aliases could contain: .DS I .ta .5i 3i # tron is the postmaster for this particular machine Postmaster: tron .sp \n(PDu # list the users that are likely to use futatsu frequently Futatsu-Users: tron, # Ronald S. Karr chongo, # Landon Curt Noll deleanu # Jay Deleanu .TA .DE Notice that, as with other configuration files, an alias can be extended across multiple lines by beginning successive lines with whitespace. .PP The separation between .I generic attributes and .I driver-specific attributes mirrors the internal design of .B smail3.1 . Above the driver level, there exist routines that implement aspects of drivers, routers and transports that do not depend upon the specific means for performing the operation. These higher-level functions can be manipulated through the .I generic attributes. On the other hand, the drivers that actually perform these operations accept a different set of attributes to control their behavior. In the case of a driver thats read or writes to a file, a .B file attribute usually exists. In the case of a driver that executes a program a .B cmd attribute usually exists to specify how that program is to be invoked. .PP The complete description of the director, router and transport files is contained in the .I smail (5) man page. Included in the man page is a description for all of the drivers that are included in the .B smail3.1 source distribution. The following sections describe the preloaded configuration. To serve as examples, these sections include configuration files which are the equivalent of the preloaded configuration. .NH 2 The Preloaded Configuration .PP In order to gain a better understanding of how configuration files can be used to change the behavior of smail, it is useful to know what smail will do if run-time configuration files were not used. This behavior is defined in the preloaded configuration which is in the source file .I src/default.c . .PP The preloaded configuration currently comes in two flavors: one flavor is for systems that have Berkeley-style networking with TCP/IP, the other flavor is for sites that do not have such networking. The difference between the two is that a networking configuration defines two extra routers to match network hosts by name or by internet address. Also, one extra transport is defined to deliver using SMTP over a TCP/IP connection to a network host. .NH 3 The Preloaded Director Configuration .PP If a .I directors configuration file is not found at run-time, then the default pre-loaded configuration is used. The default director configuration supports the following directors: .iP "aliasinclude and forwardinclude" For local addresses of the form .B :include:filename these addresses will be expanded into a list of addresses contained in the given ASCII file. The files to which these addresses refer are called .I "mailing list" files. This form of local address can come from any alias file, forward file or mailing list file. Users cannot supply such addresses themselves. .iP "aliases" This director scans for entries in an alias database. The name of this database, and the method by which this file is searched can be changed in the .I EDITME file. As distributed, aliases are taken from the file .I /usr/lib/aliases , which is an unsorted ASCII text file. This alias file is optional, and is ignored if it does not exist. Any errors found while resolving addresses produced by an alias are mailed to an address with the string ``owner\-'' prepended to the name of the alias, if such a local address is defined. .iP "dotforward" A user may have a file named .I .forward in his or her home directory. If such a file exists it will be scanned for addresses. Any mail to a user that has such a file will be redirected to the addresses contained within it. The file can contain addresses which specify files or shell commands as recipients. If the forward file is owned by root or by the user himself, then deliveries to any shell commands or files are performed under the user's user and group id. Any errors found while resolving this list of addresses are mailed to the Postmaster. In a forward file for the user .I root , deliveries to shell command and file addresses are performed under an unprivileged user and group ID. The same is true in the case of forward files that were not owned by root or by the given user. Finally, shell command and file addresses are not allowed at all in forward files that are in remotely accessible directories. .iP "forwardto" The mailbox file for a user may contain a line of the form .DS I Forward to \fIaddress\fP, \fIaddress\fP ... .DE as an alternate method for a user to forward his mail. Only one line is read from this file so addresses cannot be placed across multiple lines. The comments that apply to a .I forward file also apply to this use of a mailbox file, except that it is assumed that a mailbox file is not in a remotely accessible directory. .iP user A user is matched by name, either in upper or lower case, with delivery to that user being performed using a transport by the name of ``local''. .uP real-user A user can also be matched by name if the username is prefixed by ``real\-''. Delivery is performed by a transport named ``local''. .iP lists Mailing list files can be created under a mailing list directory. This is a directory named .I lists under the directory containing smail utilities and configuration files (typically .I /usr/lib/smail ). A new mailing list can be creating by making a file in this directory which contains a list of addresses. The basename of this file determines the local address which will be expanded to this list of addresses. For example, a file named .I info-smail could be created with a list of recipient addresses for the ``info-smail'' mailing list. Errors in delivering to this list of addresses are mailed to a local address with the name ``owner\-'' prepended to the basename of the file, if such an address is defined. .iP smart_user If a local address is not matched by any other means, mail to that address can be sent to another machine using the .B smartuser director. The address to which this mail is redirected can be defined in a .I config file by setting the variable .B smart_user . For example, the following config file line could be used to redirect mail to the host amdahl.uts.amdahl.com: .DS I smart_user = $user@amdahl.uts.amdahl.com .DE If this variable is not set, then the .B smart_user director is ignored. .PP The order of entries in the director file determines the order in which operations are attempted. If a director matches an address then no other directors are called attempted to expand or resolve that address. A director file which is equivalent to the preloaded configuration is: .DS I .ta .5i 3i # aliasinclude \- expand ":include:filename" addresses # produced by alias files aliasinclude: driver = aliasinclude, # use this special-case driver nobody; # associate nobody user with addresses # when mild permission violations # are encountered .sp \n(PDu copysecure, # get permissions from alias director copyowners # get owners from alias director .DE .DS I .ta .5i 3i # forwardinclude \- expand ":include:filename" addresses # produced by forward files forwardinclude: driver = forwardinclude, # use this special-case driver nobody; .sp \n(PDu copysecure, # get perms from forwarding director copyowners # get owners from forwarding director .DE .DS I .ta .5i 3i # aliases \- search for alias expansions stored in a database aliases: driver = aliasfile, # general-purpose aliasing director \-nobody, # all addresses are associated # with nobody by default, so setting # this is not useful. owner = owner\-$user; # problems go to an owner address .sp \n(PDu file = /usr/lib/aliases, modemask = 002, optional, # ignore if file does not exist proto = lsearch .DE .DS I .ta .5i 3i # dotforward \- expand .forward files in user home directories dotforward: driver = forwardfile, # general-purpose forwarding director owner = Postmaster, # problems go to the user's mailbox nobody, sender_okay; # sender never removed from expansion .sp \n(PDu file = ~/.forward, # .forward file in home directories checkowner, # the user can own this file owners = root, # or root can own the file modemask = 002, # it should not be globally writable caution = daemon:root, # don't run things as root or daemon # be extra careful of remotely accessible home directories unsecure = "~ftp:~uucp:~nuucp:/tmp:/usr/tmp" .DE .DS I .ta .5i 3i # forwardto \- expand a "Forward to " in user mailbox files # # This emulates the V6/V7/System-V forwarding mechanism which uses a # line of forward addresses stored at the beginning of user mailbox # files prefixed with the string "Forward to " forwardto: driver = forwardfile, owner = Postmaster, nobody, sender_okay; .sp \n(PDu file = /usr/mail/${lc:user}, # the mailbox file for System V forwardto, # enable "Forward to " function checkowner, # the user can own this file owners = root, # or root can own the file modemask = 0002, # under System V, group mail can write caution = daemon:root # don't run things as root or daemon .DE .DS I .ta .5i 3i # user \- match users on the local host with delivery to their mailboxes user: driver = user; # driver to match usernames .sp \n(PDu transport = local # local transport goes to mailboxes .DE .DS I .ta .5i 3i # real_user \- match usernames when prefixed with the string "real\-" # # This is useful for allowing an address which explicitly delivers to # a user's mailbox file. For example, errors in a .forward file # expansion can be delivered here, or forwarding loops between # multiple machines can be resolved by using a real-username address. real_user: driver = user; .sp \n(PDu transport = local, prefix = "real\-" # for example, match real-root .DE .DS I .ta .5i 3i # lists \- expand mailing lists stored in a list directory # # mailing lists can be created simply by creating a file in the # /usr/lib/smail/lists directory. lists: driver = forwardfile, caution, # flag all addresses with caution nobody, # and then associate the nobody user owner = owner\-$user; # system V sites may wish to use # o\-$user, as owner\-$user may be # too long for a 14-char filename. .sp \n(PDu # map the name of the mailing list to lower case file = lists/${lc:user} .DE .DS I .ta .5i 3i # smart_user \- a partially specified smartuser director # # If the config file attribute smart_user is defined as a string such # as "$user@domain-gateway" then users not matched otherwise will be # sent off to the host "domain-gateway". # # If the smart_user attribute is not defined, this director is ignored. smart_user: driver = smartuser; # special-case driver .sp \n(PDu # do not match addresses which cannot be made into valid # RFC822 local addresses without the use of double quotes. well_formed_only .TA .DE .NH 3 The Preloaded Router Configuration .PP If a .I routers configuration file is not found at run-time, then the default pre-loaded configuration is used. The default router configuration supports the following routers: .iP inet_addrs This router will match hosts specified as internet addresses enclosed in square brackets. Delivery to such hosts is always performed using the .B smtp transport (described in a later section). Any hostname with square brackets that does not match the form of an internet address will be considered an error. An example of an internet address is .B [192.2.12.142] . This router is only available on machines that support BSD compatible networking facilities. .iP inet_hosts This will match internet hostnames that can be matched through the .I gethostbyname (3N) library routine. Often this library function will match any host in the file .I /etc/hosts . Deliveries to hosts matched with this router are always performed using the .B smtp transport (described in a later section). This router is only available on machines that support BSD compatible networking facilities. .iP paths A path database is used to match hosts for which routes are known. Normally, this path database is stored in the file .I /usr/lib/smail/paths . Often this database will be generated from map files distributed over the USENET newsgroup .B comp.mail.maps , though path databases can also be created through other means. A paths database associates a path with specific hostname or domain. A path is defined as a set of hostnames separated by single exclamation points (`!'), with the last host being followed by the string `%s'. An example of a simple path database is a file containing: .DS I .ta \w'.curds.org'u+2n \&.curds.org curds-vax!%s \&.whey.edu foo!whey-3b20!%s bar foo!bar!%s foo foo!%s .DE Each path in this database specifies the sequence of hosts, from first to last, through which a mail message must pass to reach the host specified on the left-hand-side. For more information on path databases see .I pathalias (8) and .I mkpath (8). Depending upon the configuration specified in the .I EDITME configuration file, this path file may need to be sorted, or it may be stored in a database created with the .I dbm (3X) library routines (see .I mkdbm (8) for information on how to create these databases). Delivery to hosts matched with this router is performed using the .B uux transport, which is described in a later section. .iP uucp_neighbors The program .I /usr/bin/uuname is used to obtain a list of sites that the local host communicates with over UUCP (see .I uucp (1)). This router compares hostnames against this list and causes delivery to be performed using the .B uux transport whenever a match is found. .iP smart_host If a hostname is not matched by any other means, mail to that host can be sent to another machine using the .B smarthost router. The path through which this mail is redirected can be defined in a .I config file by setting the variable .B smart_path . For example, the following config file line could be used to redirect mail to the neighboring host .I amdahl : .DS I smart_path = amdahl .DE If this variable is not set, then the .B smart_user director is ignored. Delivery is performed using the transport named in the .I config file variable .B smart_transport . If this variable is not set then the .B uux transport is used. .PP The order of entries in the router file determines the order in which operations are attempted. If a router matches a hostname completely, then no other operations are attempted to resolve that host. If a router matches a host partially, as a domain in the right-hand side of the hostname, then subsequent routers may also find routes. The router which finds the best match, based on number of characters matched, wins. In the case of a tie, the router earliest in the router file wins. A router file which is equivalent to the preloaded configuration file is: .DS I .ta .5i 3i # inet_addrs and inet_hosts are only defined when BSD networking # exists .sp \n(PDu # inet_addrs \- match domain literals containing literal IP addresses # # For example, [128.103.1.1] will match harvard.harvard.edu on the # internet. The library routine gethostbyaddr(3N) will be called to # see if a reverse mapping to the canonical hostname is available. inet_addrs: driver = gethostbyaddr, # router to match IP domain literals transport = smtp; # deliver using SMTP over TCP/IP .sp \n(PDu fail_if_error, # fail malformed domain literal addrs check_for_local # see if this is really the local host .DE .DS I .ta .5i 3i # inet_hosts \- match hostnames with gethostbyname(3N) inet_hosts: driver = gethostbyname, # match hosts with the library function transport = smtp .DE .DS I .ta .5i 3i # paths \- route using a paths file, like that produced by the # pathalias program paths: driver = pathalias, # general-use paths router transport = uux; # for matches, deliver over UUCP .sp \n(PDu file = paths, # sorted file containing path info proto = bsearch, # use a binary search optional, # ignore if the file does not exist domain = uucp # strip ending ".uucp" before searching .DE .DS I .ta .5i 3i # uucp_neighbors \- match neighbors accessible over UUCP uucp_neighbors: driver = uuname, # use a program which returns neighbors transport = uux; .sp \n(PDu cmd = /usr/bin/uuname, # specifically, use the uuname program domain = uucp .DE .DS I .ta .5i 3i # smart_host \- a partially specified smarthost director # # If the config file attribute smart_path is defined as a path from # the local host to a remote host, then hostnames not matched # otherwise will be sent off to the stated remote host. The config # file attribute smart_transport can be used to specify a different # transport. # # If the smart_path attribute is not defined, this router is ignored. smart_host: driver = smarthost, # special-case driver transport = uux # by default deliver over UUCP .TA .DE .NH 3 The Preloaded Transport Configuration .PP If a .I transports configuration file is not found at run-time, then the default pre-loaded configuration is used. The default transport configuration supports the following transports: .iP local Deliver to users on the local machine. Mailbox files for local users are generally found under the directory .I /usr/spool/mail or under .I /usr/mail , and have the same name as the corresponding user. To support the generally available user interfaces, such as .I Mail (1) and .I mailx (1), certain transformations are performed on the message. Namely, a line containing the return address of the sender and a time stamp is prepended to the message, a blank line is appended at the end, and any line beginning with the word ``From'' will have the character `>' prepended to it. An example of one of the lines prepended to the message is: .DS I From amdahl!futatsu!tron Mon Apr 18 16:11:13 1988 .DE In addition, a ``Return-Path:'' header field is inserted which duplicates the return address of the sender. .iP pipe Local addresses which begin with a vertical bar character (`|') are delivered using this transport (the transport name .B pipe is reserved for this purpose). The .B pipe transport executes a shell command by calling the program .I /bin/sh . The message is passed on the standard input to this command. The shell command is formed by removing the vertical bar character from the beginning of the address. The alias or forward address which produced the pipe command address is stored in the environment as "$ADDR". .iP file Local addresses which begin with a slash (`/') or a tilde character (`~') are delivered using this transport (the transport name .B file is reserved for this purpose). The .B file transport appends to a file identified by the local address string. If the local address string begins with a slash, then it identifies an absolute path. If the string begins with ``~\fIusername/\fP'', then this substring is replaced by the home directory of the given user. If the string begins simply with ``~/'', then this substring will be replaced with any home directory associated with the address; e.g., a file address in a user's .I ~/.forward file will be associated with that user's home directory. .iP uux The .B uux transport is used as the normal form of delivery over UUCP. This transport will deliver up to five addresses at a time by calling the program .I uux (1) to deliver mail to the program .I rmail (1) on a remote system. The request is queued, and actual delivery is not attempted immediately. To force an immediate attempt to contact the remote site, use the .B demand transport. .iP demand The .B demand transport is used to deliver up to five addresses at a time by calling the program .I uux (1) to deliver to a remote .I rmail (1) program. In contrast to .B uux this transport forces an immediate attempt to contact the remote site. .iP uusmtp The .B uusmtp transport is used to deliver using Batched SMTP over UUCP. It will deliver to an unlimited number of addresses by calling the program .I uux (1) to deliver to a remote .I rsmtp (1) program. The request is queued, and actual delivery is not attempted immediately. .iP demand_uusmtp This transport is used to deliver to an unlimited number of addresses by calling the program .I uux (1) to deliver to a remote .I rsmtp (1) program. This transport forces an immediate attempt to contact the remote site. .iP smtp For sites that have BSD networking facilities, this transport is available, which performs delivery by opening a TCP/IP virtual circuit to a remote host and engaging in an interactive SMTP dialogue to perform delivery. .PP The order of entries in the transport file is not important, unless transport entries with duplicate names exist. In this case, the transport earlier in the transport file is always used. A transport file which is equivalent to the preloaded configuration file is: .DS I .ta .5i 3i # local \- deliver mail to local users # # By default, smail will append directly to user mailbox files. local: driver = appendfile, # append message to a file return_path, # include a Return-Path: field local, # use local forms for delivery from, # supply a From_ envelope line unix_from_hack; # insert > before From in body .sp \n(PDu file = /usr/mail/${lc:user},# use this location for System V group = mail, # group to own file for System V mode = 0660, # under System V, group mail can access suffix = "\n" # append an extra newline .DE .DS I .ta .5i 3i # pipe \- deliver mail to shell commands # # This is used implicitly when smail encounters addresses which begin with # a vertical bar character, such as "|/usr/lib/news/recnews talk.bizarre". # The vertical bar is removed from the address before being given to the # transport. pipe: driver = pipe, # pipe message to another program return_path, local, from, unix_from_hack; .sp \n(PDu cmd = "/bin/sh \-c $user",# send address to the Bourne Shell parent_env, # environment info from parent addr pipe_as_user, # use user-id associated with address umask = 0022, # umask for child process \-log_output # do not log stdout/stderr .DE .DS I .ta .5i 3i # file \- deliver mail to files # # This is used implicitly when smail encounters addresses which begin with # a slash or twiddle character, such as "/usr/info/list_messages" or # perhaps "~/Mail/inbox". file: driver = appendfile, return_path, local, from, unix_from_hack; .sp \n(PDu file = $user, # file is taken from address append_as_user, # use user-id associated with address expand_user, # expand ~ and $ within address suffix = "\n", mode = 0644 .DE .DS I .ta .5i 3i # uux \- deliver to the rmail program on a remote UUCP site uux: driver = pipe, uucp, # use UUCP-style addressing forms from, # supply a From_ envelope line max_addrs = 5, # at most 5 addresses per invocation max_chars = 200; # at most 200 chars of addresses .sp \n(PDu # the \-r flag prevents immediate delivery, parentheses around the # $user variable prevent special interpretation by uux. cmd = "/usr/bin/uux \- \-r $host!rmail $(($user)$)", umask = 0022, pipe_as_sender .DE .DS I .ta .5i 3i # demand \- deliver to a remote rmail program, polling on demand demand: driver = pipe, uucp, from, max_addrs = 5, max_chars = 200; .sp \n(PDu # with no \-r flag, try to contact remote site immediately cmd = "/usr/bin/uux \- $host!rmail $(($user)$)", umask = 0022, pipe_as_sender .DE .DS I .ta .5i 3i # uusmtp \- deliver to the rsmtp program on a remote UUCP site # # The rsmtp program is assumed to to take batched SMTP requests. uusmtp: driver = pipe, bsmtp, # send batched SMTP commands \-max_addrs, # there is no limit on the number or \-max_chars; # total size of recipient addresses. .sp \n(PDu # supply \-r to prevent immediate delivery, the recipient addresses # are stored in the data sent to the standard input of rsmtp. cmd = "/usr/bin/uux \- \-r $host!rsmtp", umask = 0022, pipe_as_sender .DE .DS I .ta .5i 3i # demand_uusmtp \- deliver to a remote rsmtp program, polling on demand demand_uusmtp: driver = pipe, bsmtp, \-max_addrs, \-max_chars; .sp \n(PDu # with no \-r flag, try to contact remote site immediately cmd = "/usr/bin/uux \- $host!rsmtp", umask = 0022, pipe_as_sender .DE .DS I .ta .5i 3i # smtp \- deliver using SMTP over TCP/IP # # Connect to a remote host using TCP/IP and initiate an SMTP conversation # to deliver the message. The smtp transport is included only if BSD # networking exists. # # NOTE: This is hardly optimal, a backend should exist which can handle # multiple messages per connection. # # ALSO: It may be necessary to restrict max_addrs to 100, as this is the # lower limit SMTP requires an implementation to handle for one # message. smtp: driver = smtp, \-max_addrs, \-max_chars .TA .DE