cf/README for sendmail 8.12.3

Eric Allman of the Sendmail Consortium

USING UUCP MAILERS

It's hard to get UUCP mailers right because of the extremely ad hoc nature of UUCP addressing. These config files are really designed for domain-based addressing, even for UUCP sites.

There are four UUCP mailers available. The choice of which one to use is partly a matter of local preferences and what is running at the other end of your UUCP connection. Unlike good protocols that define what will go over the wire, UUCP uses the policy that you should do what is right for the other end; if they change, you have to change. This makes it hard to do the right thing, and discourages people from updating their software.

In general, if you can avoid UUCP, please do.

The major choice is whether to go for a domainized scheme or a non-domainized scheme. This depends entirely on what the other end will recognize. If at all possible, you should encourage the other end to go to a domain-based system -- non-domainized addresses don't work entirely properly.

The four mailers are:

MailerDescription
uucp-old (obsolete name: "uucp")
This is the oldest, the worst (but the closest to UUCP) way of sending messages accros UUCP connections. It does bangify everything and prepends $U (your UUCP name) to the sender's address (which can already be a bang path itself). It can only send to one address at a time, so it spends a lot of time copying duplicates of messages.Avoid this if at all possible.
uucp-new (obsolete name: "suucp")
The same as above, except that it assumes that in one rmail command you can specify several recipients. It still has a lot of other problems.
uucp-dom This UUCP mailer keeps everything as domain addresses. Basically, it uses the SMTP mailer rewriting rules. This mailer is only included if MAILER(`smtp') is specified before MAILER(`uucp').

Unfortunately, a lot of UUCP mailer transport agents require bangified addresses in the envelope, although you can use domain-based addresses in the message header. (The envelope shows up as the From_ line on UNIX mail.) So....

uucp-uudom This is a cross between uucp-new (for the envelope addresses) and uucp-dom (for the header addresses). It bangifies the envelope sender (From_ line in messages) without adding the local hostname, unless there is no host name on the address at all (e.g., "wolf") or the host component is a UUCP host name instead of a domain name ("somehost!wolf" instead of "some.dom.ain!wolf"). This is also included only if MAILER(`smtp') is also specified earlier.

Examples:

On host grasp.insa-lyon.fr (UUCP host name "grasp"), the following summarizes the sender rewriting for various mailers.

Mailersenderrewriting in the envelope
uucp-{old,new}wolfgrasp!wolf
uucp-domwolfwolf@grasp.insa-lyon.fr
uucp-uudomwolfgrasp.insa-lyon.fr!wolf
   
uucp-{old,new}wolf@fr.netgrasp!fr.net!wolf
uucp-domwolf@fr.netwolf@fr.net
uucp-uudomwolf@fr.netfr.net!wolf
   
uucp-{old,new}somehost!wolfgrasp!somehost!wolf
uucp-domsomehost!wolfsomehost!wolf@grasp.insa-lyon.fr
uucp-uudomsomehost!wolfgrasp.insa-lyon.fr!somehost!wolf

If you are using one of the domainized UUCP mailers, you really want to convert all UUCP addresses to domain format -- otherwise, it will do it for you (and probably not the way you expected).

For example, if you have the address foo!bar!baz (and you are not sending to foo), the heuristics will add the @uucp.relay.name or @local.host.name to this address.
However, if you map foo to foo.host.name first, it will not add the local hostname.
You can do this using the uucpdomain feature.