19.8. UUCP 设置

Exim 没有任何通过 UUCP 传输邮件的特定代码,也不支持 UUCP bang path 地址。但是,如果正在使用域寻址,Exim 可以相当简单地与 UUCP 接口。这是一个用于将某些域发送到 UUCP 的配置片段,取自实际安装

# Transport
uucp:
  driver = pipe
  user = nobody
  command = "/usr/local/bin/uux -r - \
    ${substr_-5:$host}!rmail ${local_part}"
  return_fail_output = true

# Router
uucphost:
  transport = uucp
  driver = domainlist
  route_file = /usr/exim/uucphosts
  search_type = lsearch

在一个完整的配置文件中,传输应插入到其他传输中,并且路由器可能被定义为第一个路由器。文件/usr/exim/uucphosts包含像这样的条目
darksite.example.com:           darksite.UUCP
它被解释为意味着,“将发送到 darksite.example.com 域的邮件发送到 UUCP 主机 darksite。”如果没有路由器添加后缀 .UUCP 到 darksite 然后再由传输移除,这个配置可以更简单地设置,但这种方式很有用,因为它清楚地区分了域名 darksite.example.com 和 UUCP 主机名 darksite

每当路由器遇到路由文件中的域时,它会将地址发送到 UUCP 传输,然后将其管道传输到 uux 命令(在 第 16 章 中描述)。如果出现问题,uux 将生成一些输出并以非零错误代码终止。设置return_fail_output确保输出返回给发送者。

如果传入的 UUCP 消息被分组为批处理的 SMTP 格式的文件,它们可以使用像这样的命令直接传递给 Exim
exim -bS </var/uucp/incoming/001

但是,有一个问题。当 Exim 在本地收到消息时,它坚持认为发送者是调用它的已登录用户,但对于 UUCP 批处理,我们希望发送者来自传入的消息。如果调用它的进程作为受信任用户运行,Exim 将执行此操作。例如,如果您安排传入的 UUCP 由名为 uucp 的用户处理,您需要指定
trusted_users = uucp
在 Exim 配置文件中,以确保正确处理发送者地址。