COHERENT manpages
This page displays the COHERENT manpage for transports [Describe mail transportation systems].
List of available manpages
Index
transports -- System Administration Describe mail transportation systems /usr/lib/mail/transports The program smail reads file /usr/lib/mail/transports for information on the commands it can use to deliver mail, either to your local system or to a remote system. Each entry within transports names a transport and sets its attributes. Each entry consists of the following information: -> The name of the transport. This attribute begins the definition of a transport. The name must be unique, it must appear flush with the left margin, and must be followed by a single colon `:'. -> The name of the driver, or program that implements the transport. This can be a command that is part of smail's suite of utilities (which are contained in directory /usr/lib/mail), or can be an ordinary COHERENT command. If the latter, then the full name of the command that implements the driver is given with a cmd attribute. This is demonstrated below. -> A set of generic attributes for the transport. These attributes are ``generic'' because they can come from a set that can be applied to any router. -> A set of driver-specific attributes. These can be applied only to entries that use this driver. To extend an entry across multiple lines, begin successive lines with white space. Attributes of a Transport The following gives the generic attributes that a transport can have. Each attribute is followed by its type (Boolean, string, or number). To set a string or number attribute, its name should be followed by an `=', then the value to which you are setting it. To set a Boolean attribute, prefix it with a `+'; to unset a Boolean attribute, prefix it with a `-'. bsmtp (Boolean) This transport uses a batched SMTP format, in which the message is enclosed within an envelope of SMTP commands. You can use such a transport to send mail in SMTP format to remote hosts, even when direct two-way connections are not feasible. For example, this will work over UUCP and eliminates difficulties with sending arbitrary addresses as arguments to the command uux. Use of this attribute also turns on the attribute dots. When this attribute is also used with the attribute uucp, smail uses UUCP-style bang-path addresses in the SMTP envelope. crlf (Boolean) If set, each line of the header and message ends within the pair of characters CR:LF rather than a single newline character. In general, this is not a useful attribute, as the SMTP transport (which requires this as a part of the interactive protocol) always does this anyway. debug (Boolean) If set, this attribute replaces the body of the message with debugging information. You can use it, for example, as a shadow transport, to watch the flow of mail for debugging purposes. This lets you debug mail while avoid the problems that arise from saving other users' personal correspondence. dots (Boolean) If set, then smail uses the ``hidden-dot'' protocol. With this protocol, smail prefixes a period `.' onto every line that already begins with a period. All of the various SMTP modes imply this behavior. driver (string) This attribute names the specific entity that actually transports the mail. It is required. error_transport (string) This attribute names another transport that smail can use to send the message, should this transport fail. from (Boolean) If set, smail supplies a ``From<space>'' line before the message when it delivers mail via this transport. If this is a remote transport (i.e., the attribute local is not turned on), this line ends with the string remote from hostname where hostname is the UUCP name for your local host (as set in file /etc/uucpname). This is useful for delivery via UUCP and for delivering mail to standard mailbox files, which require this format. hbsmtp (Boolean) ``Half-baked'' batched SMTP. This is batched SMTP mode without an initial HELO command or an ending QUIT command. smail can use this transport to create files that it will later concatenate into a batch of SMTP commands and multiple messages. Use of this attribute also turns on attribute dots. local_xform (Boolean) If this attribute is set, smail uses the form of the header and envelope information appropriate for delivery to your local host. This changes no existing header field, except that it inserts commas into the fields that name the sender and recipient. This also affects the form of any generated From line and the form of envelope addresses used in SMTP commands. You can also use this attribute when delivering mail to a remote site that is also running smail version 3.1. This is useful within a domain that maintains consistent user-forwarding information. This leaves a message in unqualified format until it leaves the domain via a gateway. local (Boolean) This implies that attribute local_xform is set, but implies that delivery really is the final delivery to a user, file, or program on your local host. This attribute disables generation of a bounce message that results should a message exceed its allowed hop-count. max_addrs (number) This attribute sets the maximum number of recipient addresses that can be given in one call to the transport. If this is turned off, then there is no maximum. The default number is one; typically, this attribute either is left at one or turned off. max_chars (number) This states the maximum number of characters in the addresses that can be given in one call to this transport. If this is turned off, there is no maximum number. The default number is about one third of the number of characters that can be passed as arguments to a program. When using SMTP transports, this should be turned off unless a remote host is known to be unable to handle a large number of addresses. For delivery over UUCP to rmail ona remote system, this should be in the neighborhood of 200 to 250, to avoid buffer overruns at the remote site. UUCP generally has small buffers to hold argument information. If smail is given an address whose length exceeds this number, then the address will be passed with one call to the transport. Thus, this limit is not strictly enforced. max_hosts (number) This states the maximum number of different hosts that can be given in one call to the transport. If this is turned off using the form - max_hosts, there is no maximum number. The default number is one and typically this is not changed. received (Boolean) If this attribute is set, smail inserts a Received: field into each message it delivers via this transport. The form of this field is taken from the attribute received_field in file /usr/lib/mail/config. This attribute is on by default. return_path (Boolean) If this attribute is set, smail inserts field Return-Path: into the header of each message it delivers via this transport. The form of this field is taken from the attribute return_path_field in file /usr/lib/mail/config. Use this attribute only with a transport that performs final delivery to a local destination. shadow (string) This names a second transport through which smail also sends the message. This second transport usually performs some task that is unrelated to the actual delivery of the message. For example, you could use a shadow transport to start a program that looked up the sender within a data base and displayed her picture in a window on your workstation. smail calls the shadow transport only if the primary transport successfully delivers the message. strict (Boolean) If this flag is set, then smail attempts to transform mail that does not conform to RFC822 standards. This may be useful for sites that gateway between the UUCP zone and the Internet. In general, it is not a good idea to turn on this attribute, as it changes the contents of headers fields. Turn on this attribute only when you know that some remote hosts understand only mail that conforms to the RFC822 standard. unix_from_hack (Boolean) If set, then smail inserts the character `>' before any line in the message that begins with the string ``From''. This is required for local delivery to mailbox files that are in the standard form expected by the System-V program mailx and the BSD program Mail. uucp (Boolean) If set, then smail converts outgoing recipient addresses into UUCP- style paths of the form hosta!hostb!hostc!user. An exception is that smail preserves any use of `%' as an address operator. Thus, smail would convert an envelope address of the form user%hostb@hosta to hosta!user%hostb. This only affects envelope addresses and does not affect the body of the message or its header. inet (Boolean) If you set this attribute, smail converts output-recipient addresses to Internet specifications. This is not the same as the attribute strict, because the transformations apply only to the envelope's address, and not to header's. If inet is defined, then when smail routes a message to a remote system, it generates a ``route-addr'' address rather than ``bang-path'' address. Thus, if smail is given the address user%host@gateway and gateway is reached through the path hosta!hostb!hostc, then smail generates the address @hostb,@hostc:user%host@gateway to be sent to the host @hosta. retry_dir (string) This attribute tells smail to use the subdirectory under directory /usr/lib/mail/retry for managing host retry intervals for this transport. By default, the directory is named after the transport. However, multiple transports can share a retry directory by using retry_dir to force each to use that directory. For example, by default the definition of each TCP/IP SMTP transport uses retry_dir to force that transport to use retry directory smtp. remove_header (string) Tell smail to remove the named header field from each message it sends via this transport. This is an expansion string, so header removal can be made dependent upon some condition. If expansion of the string results in an empty string, then no header is removed. You can specify any number of remove_header attributes for a given transport. insert_header (string) append_header (string) Add the given header field at the beginning (insert_header) or end (append_header) of the message header for transport. These are expansion strings, so the header (and the existence of the header) can be made to depend on some conditions. If expansion of the string results in an empty string, then smail does not add a header. You can specify any number of insert_header and append_header attributes for a given transport. The Default Transports The following describes the transports that are defined in the version of /usr/lib/mail/transports that is shipped with COHERENT. The first transport, local, delivers mail to a user on your system: # 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 from, # supply a From_ envelope line local; # use local forms for delivery file=/usr/spool/mail/${lc:user}, # location of mailbox files mode=0600, # For BSD: only the user can # read and write file notify_comsat, # notify comsat daemon of delivery suffix="\1\1\1\10, # MMDF mailbox format prefix="\1\1\1\10, # MMDF mailbox format The next transport, pipe, delivers mail to a shell command: # 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, # include a Return-Path: field from, # supply a From_ envelope line local; # use local forms for delivery 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 ignore_status, # ignore a non-zero exit status ignore_write_errors, # ignore write errors, i.e., broken pipe umask=0022, # umask for child process -log_output, # do not log stdout/stderr The next transport, file, delivers mail to a file: # file - deliver mail to files # # This is used implicitly when smail encounters addresses which begin with # a slash or squiggle character, such as "/usr/info/list_messages" or # perhaps "~/Mail/inbox". file: driver=appendfile, return_path, # include a Return-Path: field from, # supply a From_ envelope line local; # use local forms for delivery file=$user, # file is taken from address append_as_user, # use user-id associated with address expand_user, # expand ~ and $ within address mode=0644, # you may wish to change this # mode, depending upon local # conventions and preferences suffix="\1\1\1\10, # MMDF mailbox format prefix="\1\1\1\10, # MMDF mailbox format The next transport , uux, invokes the UUCP command uux to deliver messages to a remote site via UUCP: # uux - deliver to the rmail program on a remote UUCP site # # HDB UUCP users should comment out the first cmd= line below, and # uncomment the second. 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 # the -r flag prevents immediate delivery, parentheses around the # $user variable prevent special interpretation by uux. cmd="/usr/bin/uux - -r -a$sender -g$grade $host!rmail $(($user)$)", pipe_as_sender, # have uucp logs contain caller log_output, # save error output for bounce messages Transport demand delivers mail to command rmail on a remote system: # demand - deliver to a remote rmail program, polling immediately # # HDB UUCP users should comment out the first cmd= line below, and # uncomment the second. demand: 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 cmd="/usr/bin/uux - -a$sender -g$grade $host!rmail $(($user)$)", pipe_as_sender, # have uucp logs contain caller log_output, # save error output for bounce messages The final two transports are local versions of previously defined tranports. What a local transport is, and the advantages it offers, is described above. Transport local_uux is a local version of transport uux: local_uux: driver=pipe, local_xform, # transfer using local message format uucp, # use uucp-conformant addresses from, # supply a From_ envelope line max_addrs=5, # at most 5 addresses per invocation max_chars=200; # at most 200 chars of addresses # the -r flag prevents immediate delivery, parentheses around the # $user variable prevent special interpretation by uux. cmd="/usr/bin/uux - -r -a$sender -g$grade $host!rmail $(($user)$)", pipe_as_sender, # have uucp logs contain caller log_output, # save error output for bounce messages Finally, local_demand is a local form of transport demand: local_demand: driver=pipe, local_xform, # transfer using local formats uucp, # use uucp-conformant addresses from, # supply a From_ envelope line max_addrs=5, # at most 5 addresses per invocation max_chars=200; # at most 200 chars of addresses cmd="/usr/bin/uux - -a$sender -g$grade $host!rmail $(($user)$)", pipe_as_sender, # have uucp logs contain caller log_output, # save error output for bounce messages See Also Administering COHERENT, config [smail], directors, mail [overview], smail, routers Notes For information on how the configuration files directors, routers, and transports relate to each other, see the Lexicon entry for directors. Copyright © 1987, 1988 Ronald S. Karr and Landon Curt Noll. Copyright © 1992 Ronald S. Karr. For details on the distribution rights and restrictions associated with this software, see file COPYING, which is included with the source code to the smail system; or type the command: smail -bc.