# Postfix and UUCP

## Using UUCP over TCP

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 https://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:

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

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

## Setting up a Postfix Internet to UUCP gateway

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 rmail program that extracts the sender address from mail that arrives via UUCP, and that feeds the mail into the Postfix sendmail command. Most UNIX systems come with an rmail utility. If you're in a pinch, try the one bundled with the Postfix source code in the auxiliary/rmail directory.

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

      /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 uux 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 uux command without assistance from the shell, so there are no problems with shell meta characters in command-line parameters.

- Enable transport table lookups:

      /etc/postfix/main.cf:
          transport_maps = lmdb:/etc/postfix/transport

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

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

  Instead of lmdb:, some systems use cdb:, hash:, or dbm:.

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

- Execute the command "postmap /etc/postfix/transport" whenever you change the transport file, to (re)build a default-type indexed file. Execute "postmap type:/etc/postfix/transport" to specify an explicit type.

  The default indexed file type is configured with the default_database_type parameter. To list available explicit types, execute the command "postconf -m".

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

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

  See the relay_domains configuration parameter description for details.

- Execute the command "postfix reload" to make the changes effective.

## Setting up a Postfix LAN to UUCP gateway

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 rmail program that extracts the sender address from mail that arrives via UUCP, and that feeds the mail into the Postfix sendmail command. Most UNIX systems come with an rmail utility. If you're in a pinch, try the one bundled with the Postfix source code in the auxiliary/rmail directory.

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

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

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

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

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

      /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 uux 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 uux command is executed without assistance from the shell, so there are no problems with shell meta characters.

- Execute the command "postfix reload" to make the changes effective.