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 / 问题 / 430142
Accepted
Frerich Raabe
Frerich Raabe
Asked: 2012-09-20 22:58:42 +0800 CST2012-09-20 22:58:42 +0800 CST 2012-09-20 22:58:42 +0800 CST

我怎样才能让 exim 将一封收到的邮件发送到多个本地 maildirs?

  • 772

我正在维护一个运行 FreeBSD 的 IMAP 服务器,它使用 exim 4.80 作为其 MTA。现在我尝试创建一个电子邮件别名,以便我可以向系统的所有用户发送地址,通知他们计划的停机时间等。这个想法是[email protected]应该将邮件转发给系统上的所有用户。

我最初考虑有一个简单的简单/etc/aliases条目,但注意到这不是我想要的,因为系统的用户可能有 Sieve 过滤器,它会丢弃所有传入的邮件,除了少数列入白名单的邮件。

我确实注意到 exim 可以使用appendfile 传输直接发送到本地 Maildir 目录(绕过任何其他 MDA,从而绕过 Sieve 过滤器) - 但我如何才能使单个传入邮件vmailusers重定向到多个本地邮件目录?

freebsd
  • 1 1 个回答
  • 1033 Views

1 个回答

  • Voted
  1. Best Answer
    Lacek
    2012-09-21T03:12:45+08:002012-09-21T03:12:45+08:00

    您可以使用重定向路由器来处理别名消息。这也是运行用户提供的脚本/转发文件的那个。路由器的处理是从上到下进行的,因此下面的示例大致如下所示:

    1. syswide_alias路由器检查文件中的别名/etc/aliases。如果找到一个,路由序列重新开始。
    2. forced_delivery 进行相同的检查,但这次它使用original_local_part变量,如果没有进行转发则该变量为空。如果查找成功,则传递消息。在这种情况下,处理停止(因为交付已完成),因此用户可能拥有的任何过滤器或转发都将被忽略。
    3. 如果forced_delivery路由器拒绝,.forward将处理该文件。如果此文件包含别名,路由序列将重新启动。
    4. 最后,消息被传送到用户的邮箱。仅当上一步中的过滤器文件没有导致重要的传递(即,它不包含转发别名,或不完全丢弃消息)时,才会发生这种情况。

    该routers部分应如下所示:

    syswide_alias:
        driver = redirect
        allow_defer
        allow_fail
        data = ${lookup{$local_part}lsearch{/etc/aliases}}
    
    forced_delivery:
        driver = accept
        allow_defer
        transport = local_delivery
        condition = ${if eq {${lookup{$original_local_part}lsearch{/etc/aliases}}}{}{no}{yes}}
    
    user_filters:
        driver = redirect
        allow_defer
        allow_fail
        allow_filter
        file = ${home}/.forward
    
    normal_delivery:
        driver = accept
        check_local_user
        transport = local_delivery
    

    syswide_alias和forced_delivery路由器都有选项,如果找不到文件则需要该选项allow_defer(可能不会出现这种情况,但无论如何都不会造成伤害)

    编辑:上面的示例现在包含实现问题目标所需的全套路由器。

    • 1

相关问题

  • Mono 2.4 Ahead-Of-Time (AOT) 可以在 FreeBSD x86(或 x64)上编译吗?

  • FreeBSD 和 Linux 有什么区别?[关闭]

  • 在 FreeBSD 上安装和运行 MySql

  • 在 freeBSD 上安装 netbeans 的问题

  • 用于 Web 应用服务器的 FreeBSD 磁盘分区(Apache/MySQL/PHP)

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