跳转到主要内容

于 2025年04月22日 摘录自 Postfix and UUCP

通过 TCP 使用 UUCP

尽管缺乏吸引力,通过 TCP 使用的 UUCP 电子邮件对于没有永久互联网连接的网站以及没有固定 IP 地址的网站来说,仍是一个实用的选择。如需更多信息,请参阅以下指南:

以下是本文档内容的图形化描述:

本地网络 <---> LAN 到
UUCP
网关
<---UUCP---> 互联网
到 UUCP
网关
<--->Internet

以下是本文档的目录:

设置 Postfix 互联网到 UUCP 网关

以下是设置一台位于互联网上的机器并将其邮件转发到通过 UUCP 连接的局域网的方法。请参阅 局域网到 UUCP 网关 部分以了解另一侧的设置。

  • 您需要一个rmail程序,用于从通过UUCP接收的邮件中提取发件人地址,并将邮件传递给Postfix的sendmail命令。大多数UNIX系统都自带rmail工具。如果急需,可以尝试Postfix源代码中auxiliary/rmail目录下提供的版本。
  • 定义一个基于pipe(8)的邮件传输方式,用于通过UUCP发送邮件:

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

    这将运行uux命令,将待发送邮件放入UUCP队列中,同时将$nexthop替换为下一跳主机名(接收UUCP主机),并将$recipient替换为收件人。pipe(8) 传递代理在不借助 shell 的情况下执行 uux 命令,因此命令行参数中不会出现 shell 元字符问题。

  • 指定发往 example.com 的邮件应通过 UUCP 发送到名为 uucp-host 的主机:

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

    参见 transport(5) 手册页以获取更多详细信息。

  • 每次修改 transport 文件后,执行命令 "postmap /etc/postfix/transport"。
  • 启用 transport 表查找:

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

    如果您的系统使用 dbm 文件而非 db 文件,请将 hash 替换为 dbm。要查看 Postfix 支持的映射类型,请使用命令 "postconf -m"。

  • example.com 添加到网站愿意转发邮件的域名列表中。

    /etc/postfix/main.cf:
    relay_domains = example.com ...其他 中继域...
    

    请参阅 relay_domains 配置参数的详细说明。

  • 执行命令 "postfix reload" 以使更改生效。

设置 Postfix LAN 到 UUCP 网关

以下是通过 UUCP 从 LAN 转发邮件到互联网的方法。有关另一侧的详细信息,请参阅 互联网到 UUCP 网关 部分。

  • 您需要一个rmail程序,该程序可从通过UUCP接收的邮件中提取发件人地址,并将邮件传递给Postfix的sendmail命令。大多数UNIX系统都自带rmail工具。如果急需,可尝试Postfix源代码中auxiliary/rmail目录下提供的版本。
  • 指定所有远程邮件必须通过uucp邮件传输协议发送至您的UUCP网关主机,例如uucp-gateway

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

    Postfix 2.0 及更高版本还支持以下更简洁的格式:

    /etc/postfix/main.cf:
    default_transport = uucp:uucp-gateway
    
  • 定义一个基于 pipe(8) 的邮件传输方式,用于通过 UUCP 发送邮件:

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

    这将运行uux命令,将待发送邮件放入UUCP队列。在执行命令前,会替换下一跳主机名(uucp-gateway,或您指定的其他值)和收件人。uux命令在不依赖shell的情况下执行,因此不会出现shell元字符问题。

  • 执行命令 "postfix reload" 以使更改生效。