AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 729036
Accepted
Adrian Zaugg
Adrian Zaugg
Asked: 2015-10-15 13:16:33 +0800 CST2015-10-15 13:16:33 +0800 CST 2015-10-15 13:16:33 +0800 CST

带有 SRS 守护程序的 exim4 配置

  • 772

我正在努力使用外部 SRS 守护程序(Debian 软件包 srs)设置 exim 4。srsd 正在运行并且可以很好地来回转换地址。我不能使用 exim 的内置 srs 代码,因为它在 Debian 中没有启用(知道我可以自己编译,但这不是一个选项)。

我遇到的问题是 exim 中的 srs_forward 路由器将 SRS 标签添加到转发的邮件。我有以下重定向路由器,它应该只为来自非本地发件人和非本地收件人的非错误消息运行,而不是为另一个 mx 中继 - 至少我理解 srs 将应用于此类消息。请纠正我,如果这是错误的。我有以下代码:

srs_forward:
  debug_print = "R: srs_forward for $local_part@$domain"
  driver = redirect
  senders = ! :
  condition = ${if ! match_domain{$sender_address_domain}{+local_domains}}
  domains = ! +local_domains : ! +relay_to_domains
  address_data = ${readsocket{/tmp/srsd}\
                {FORWARD $sender_address_local_part@$sender_address_domain $domain\n}\
                                        {5s}{\n}{:defer: SRS daemon failure}}
  errors_to = ${quote_local_part:${local_part:$address_data}}@${domain:$address_data}
  data = ${quote_local_part:$local_part}@$domain
  headers_add = X-SRS: Sender address rewritten from $sender_address to ${quote_local_part:${local_part:$address_data}}@$$
  repeat_use = false
  allow_defer
  no_verify

我可以测试和工作的内容:正确生成返回路径(带有address_data和errors_to的行,以及to-address(以数据开头的行)。

我不确定前提条件:

senders = ! : 

此行应防止路由器运行错误消息。

condition = ${if ! match_domain{$sender_address_domain}{+local_domains}}

此行应防止路由器运行来自本地发件人的消息。

domains = ! +local_domains : ! +relay_to_domains

此行应防止路由器运行发送给本地收件人的消息或中继消息。

有人可以澄清一下吗?

(我使用手册作为起点,虽然没有成功。)

debian
  • 1 1 个回答
  • 1402 Views

1 个回答

  • Voted
  1. Best Answer
    Adrian Zaugg
    2015-12-05T07:00:35+08:002015-12-05T07:00:35+08:00

    你没有正确测试。您传递给 SRS 守护程序的信息不正确:

    FORWARD $sender_address_local_part@$sender_address_domain $domain\n
    

    这不符合您的要求: $domain 包含收件人域而不是发送域。您打算将返回路径重写到转发邮件的域的意图是光荣的,但不会像这样工作:转发完成后,邮件会到达您的 SRS 路由器,因此 $domain 不再包含域消息被发送到。您应该使用 $primary_hostname 或 $original_domain。所以这条线应该是这样的:

    address_data = ${readsocket{/tmp/srsd}\
                    {FORWARD $sender_address_local_part@$sender_address_domain $original_domain\n}\
                                        {5s}{\n}{:defer: SRS daemon failure}}
    

    与您的先决条件有关的,它们都很好。您可以将“发件人”和“条件”行放在一起:

    senders = ! : ! *@+local_domains
    

    您只需要确保域列表 local_domains 确实包含您的所有本地域(至少它应该包含当前路由的消息 $original_domain 和 $sender_address_domain)。

    如果您的代码正在运行,请记录您的配置并在此处给我们一些提示。您还需要安排几件事:ACL 验证传入 SRS 标记的退回邮件,取消标记 SRS 标记的邮件以列入灰名单,取消标记退回,确保不要将任何其他标签(如 BATV)添加到传出邮件中,解决方法以接受带有 SRS 标记的邮件粉碎的情况下,重写退回错误消息文本以不包括 SRS 标记的发件人地址,可能拒绝任何未标记的退回,等等。所以一个好的教程将不胜感激。谢谢!

    • 0

相关问题

  • 关闭 FTP

  • 如何在同一台电脑上从 putty 连接 debian vmware

  • debian- 文件到包的映射

  • Debian Ubuntu 网络管理器错误 [关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve