PPoossttffiixx aanndd UUUUCCPP

-------------------------------------------------------------------------------

UUssiinngg UUUUCCPP oovveerr TTCCPP

Despite a serious lack of sex-appeal, email via UUCP over TCP is a practical
option for sites without permanent Internet connections, and for sites without
a fixed IP address. For first-hand information, see the following guides:

  * Jim Seymour's guide for using UUCP over TCP at http://jimsun.LinxNet.com/
    jdp/uucp_over_tcp/index.html,
  * Craig Sanders's guide for SSL-encrypted UUCP over TCP using stunnel at
    http://taz.net.au/postfix/uucp/.

Here's a graphical description of what this document is about:

                        LAN to                 Internet
    Local network <--->  UUCP   <--- UUCP ---> to UUCP  <---> Internet
                        Gateway                Gateway

And here's the table of contents of this document:

  * Setting up a Postfix Internet to UUCP gateway
  * Setting up a Postfix LAN to UUCP gateway

SSeettttiinngg uupp aa PPoossttffiixx IInntteerrnneett ttoo UUUUCCPP ggaatteewwaayy

Here is how to set up a machine that sits on the Internet and that forwards
mail to a LAN that is connected via UUCP. See the LAN to UUCP gateway section
for the other side of the story.

  * You need an rrmmaaiill program that extracts the sender address from mail that
    arrives via UUCP, and that feeds the mail into the Postfix sseennddmmaaiill
    command. Most UNIX systems come with an rrmmaaiill utility. If you're in a
    pinch, try the one bundled with the Postfix source code in the aauuxxiilliiaarryy//
    rrmmaaiill directory.

  * Define a pipe(8) based mail delivery transport for delivery via UUCP:

    /usr/local/etc/postfix/master.cf:
        uucp      unix  -       n       n       -       -       pipe
          flags=F user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail
    ($recipient)

    This runs the uuuuxx command to place outgoing mail into the UUCP queue after
    replacing $nexthop by the next-hop hostname (the receiving UUCP host) and
    after replacing $recipient by the recipients. The pipe(8) delivery agent
    executes the uuuuxx command without assistance from the shell, so there are no
    problems with shell meta characters in command-line parameters.

  * Specify that mail for example.com, should be delivered via UUCP, to a host
    named uucp-host:

    /usr/local/etc/postfix/transport:
        example.com     uucp:uucp-host
        .example.com    uucp:uucp-host

    See the transport(5) manual page for more details.

  * Execute the command "ppoossttmmaapp //eettcc//ppoossttffiixx//ttrraannssppoorrtt" whenever you change
    the ttrraannssppoorrtt file.

  * Enable ttrraannssppoorrtt table lookups:

    /usr/local/etc/postfix/main.cf:
        transport_maps = hash:/usr/local/etc/postfix/transport

    Specify ddbbmm instead of hhaasshh if your system uses ddbbmm files instead of ddbb
    files. To find out what map types Postfix supports, use the command
    "ppoossttccoonnff --mm".

  * Add example.com to the list of domains that your site is willing to relay
    mail for.

    /usr/local/etc/postfix/main.cf:
        relay_domains = example.com ...other relay domains...

    See the relay_domains configuration parameter description for details.

  * Execute the command "ppoossttffiixx rreellooaadd" to make the changes effective.

SSeettttiinngg uupp aa PPoossttffiixx LLAANN ttoo UUUUCCPP ggaatteewwaayy

Here is how to relay mail from a LAN via UUCP to the Internet. See the Internet
to UUCP gateway section for the other side of the story.

  * You need an rrmmaaiill program that extracts the sender address from mail that
    arrives via UUCP, and that feeds the mail into the Postfix sseennddmmaaiill
    command. Most UNIX systems come with an rrmmaaiill utility. If you're in a
    pinch, try the one bundled with the Postfix source code in the aauuxxiilliiaarryy//
    rrmmaaiill directory.

  * Specify that all remote mail must be sent via the uuuuccpp mail transport to
    your UUCP gateway host, say, uucp-gateway:

    /usr/local/etc/postfix/main.cf:
        relayhost = uucp-gateway
        default_transport = uucp

    Postfix 2.0 and later also allows the following more succinct form:

    /usr/local/etc/postfix/main.cf:
        default_transport = uucp:uucp-gateway

  * Define a pipe(8) based message delivery transport for mail delivery via
    UUCP:

    /usr/local/etc/postfix/master.cf:
        uucp      unix  -       n       n       -       -       pipe
          flags=F user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail
    ($recipient)

    This runs the uuuuxx command to place outgoing mail into the UUCP queue. It
    substitutes the next-hop hostname (uucp-gateway, or whatever you specified)
    and the recipients before executing the command. The uuuuxx command is
    executed without assistance from the shell, so there are no problems with
    shell meta characters.

  * Execute the command "ppoossttffiixx rreellooaadd" to make the changes effective.

