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
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1468141
Accepted
bilogic
bilogic
Asked: 2023-05-16 23:20:30 +0800 CST2023-05-16 23:20:30 +0800 CST 2023-05-16 23:20:30 +0800 CST

postfix如何拦截root的邮件?

  • 772
  1. 如果有错误,相当多的应用程序(例如 cron 等)会向 root 发送邮件。
  2. 我看到了一些教程,其中涉及安装 postfix + 相当多的配置,以便将它们转发到 gmail 或其他替代邮件。配置工作太多。
  3. postfix如何检测到有新邮件发给root?检查一些文件夹?或者?
  4. 在全新安装的 Ubuntu 上,cron 仍然可以向 root 发送邮件。它是如何工作的?
  5. 我想知道这一点并拦截这些邮件到 root,然后将它们转发到电报/webhook 或其他东西。

可能的?我的意思是,postfix 是怎么做到的?

root
  • 3 3 个回答
  • 57 Views

3 个回答

  • Voted
  1. Best Answer
    Thomas Ward
    2023-05-18T22:52:13+08:002023-05-18T22:52:13+08:00

    Postfix 不会“拦截”电子邮件。它提供sendmail本地系统调用以将邮件发送到的rootcronjobs 和其他本地邮件传递任务。另一方面,深入了解 Postfix 如何处理电子邮件对于您的其中一个问题至关重要,因此请继续阅读。


    1. 如果有错误,相当多的应用程序(例如 cron 等)会向 root 发送邮件。
    2. 我看到了一些教程,其中涉及安装 postfix + 相当多的配置,以便将它们转发到 gmail 或其他替代邮件。配置工作太多。

    这些不是问题,所以我将忽略这些部分。


    1. 我想知道这一点并拦截这些邮件到 root,然后将它们转发到电报/webhook 或其他东西。

    首先,正如我所说,您不会“拦截”这些消息。您在系统上配置 Postfix 或 MTA(邮件服务器)以相应地处理消息。在这种情况下,您将配置 Postfix,以便将root消息传送到自定义代码中,它调用这些代码将消息处理成项目,这些项目被放入 webhook 中,或者传递给 Telegram 或您想要使用的任何进程。这是使该工作起作用的唯一方法。


    1. 在全新安装的 Ubuntu 上,cron 仍然可以向 root 发送邮件。它是如何工作的?

    全新的 Ubuntu 安装将基本的邮件程序功能安装到系统中,仅用于将电子邮件发送到rootcronjob 任务。通常这是一些sendmail在本地提供的应用程序。其工作原理的实际内部过程因脚本/二进制文件的提供者而sendmail异,但关于 Postfix 的工作方式,请继续。


    1. postfix如何检测到有新邮件发给root?检查一些文件夹?或者?

    无需过多深入,Postfix 在其设计和架构中有多个组件来处理一般邮件。这在 Postfix 主站点上有更好的描述和可见性: https: //www.postfix.org/OVERVIEW.html -如果你真的想了解内部结构是如何工作的,我将从该页面的此处开始并通读整个页面因为它确实深入地解释了一切。

    但我会尽我所能包括其中的一些内容。

    首先,邮件传递在到达传入队列之前以多种机制进行,这些队列都作为 Postfix 进程的“实时”组件处理。正如 Postfix 页面中的“图表”所示:

    邮件传递图

    来自 Internet 等的电子邮件消息都被传送到“清理”过程。本地传递的消息通常使用sendmail调用(cron 实际上会调用!)并将其放入postdrop流程,流程又将其放入maildrop流程,然后进入拾取流程,然后导致消息清理(包括识别重写,基于 Postfix 配置的帐户重定向等)。然后它进入传入队列,然后由 Postfix 的传递机制在内部进行处理。

    该清理处理器然后提醒 Postfix 的队列管理器有东西要拾取,然后队列管理器处理这些项目。然而,这是 Postfix 的内部组件,无论邮件是来自 Internet 还是本地,都会发生。

    最终,对于任何邮件投递,Postfix 都会将所有邮件投递到队列中incoming,然后提醒 Postfix 的内部系统管理员队列中有要查看的项目。不过,这是透明发生的。

    一旦它进入传入队列,它就会在交付之前经历更多的过程:

    在此处输入图像描述

    最终通过local,virtual或pipecalls 处理本地邮件投递 - local 是直接投递到 Postfix 配置的收件箱位置中的邮箱(/var/mail/USER/INBOX我相信默认投递但不要引用我的话),这就是 local 发生的情况邮件发送到rootcronjobs 等

    • 3
  2. Simon Banks
    2023-05-16T23:34:48+08:002023-05-16T23:34:48+08:00

    感谢您添加哪个邮件代理是。请参阅“man aliases”以了解 postfix 对邮件别名的看法。

    /etc/aliases 是一个文件,其中包含 sendmail 用来重定向邮件的用户别名列表。

    例如

    root: mouser
    

    将为所有指向用户“root”到用户“mouser”的电子邮件创建一个别名。

    • 0
  3. raj
    2023-05-18T20:55:57+08:002023-05-18T20:55:57+08:00

    Postfix 不会“拦截”邮件。为了使系统能够处理任何邮件,您需要安装一个邮件服务器。Postfix 是这样的邮件服务器之一(其他例如 Exim 或 sendmail)。

    当 cron(或任何其他应用程序)想要发送邮件时,它会调用邮件服务器来执行此操作(从技术上讲,它调用/usr/sbin/sendmail二进制文件,它是邮件服务器的一部分)。这就是 Postfix(或任何其他邮件服务器)“检测”有电子邮件要处理的方式——应用程序明确要求它发送该电子邮件。

    没有邮件服务器,cron 将无法发送任何邮件,只会将这一事实记录在日志文件中。在全新安装的 Ubuntu 上,默认情况下没有安装邮件服务器,并且 cron 不会向 root 发送任何邮件(在我安装了各种 Ubuntu 版本的多台机器上得到确认)——当然,只要我们谈论的是桌面Ubuntu版本(如果你只提到“Ubuntu”而没有任何特定的形容词,它被认为是标准的桌面版本)。

    在 Ubuntu Server上,可能默认安装了一些邮件服务器,因此 cron 能够将邮件发送到 root。由于我不使用 Ubuntu Server,所以我不知道它是哪个邮件服务器。您必须通过查看已安装软件包的列表来确定自己是哪一个。

    如果你想安装 Postfix,你应该卸载你当前安装的邮件服务器(安装 Postfix 可能会自动卸载它,但我不确定),因为两个不同的邮件服务器不能在同一台机器上共存。Postfix 安装将用作为 Postfix 一部分的/usr/sbin/sendmail新二进制文件替换当前邮件服务器中的当前二进制文件。/usr/sbin/sendmail但是,您无需将当前的邮件服务器替换为 Postfix 即可将邮件转发到其他任何地方,因为几乎每个邮件服务器都具有相似的转发功能。/etc/aliases无论使用的邮件服务器如何,其他答案中描述的文件都应该以相同的方式工作。

    如果您将以下行放入/etc/aliases文件中:

    root: [email protected]
    

    它会将 root 的邮件转发到 Gmail,但由于各种原因,Gmail 可能不接受该邮件,我不会在这里详述(但这就是为什么您可以在 Net 上找到的教程如此复杂的原因)。转发到其他服务可能会产生更好的结果。

    如果您希望 root 的邮件由某些脚本处理(例如将其发布到 Telegram 的脚本),请在 中使用以下行/etc/aliases:

    root: |/path/to/your/script
    

    最后,您应该考虑到通常强烈建议不要转发 root 的邮件(它甚至写在标准默认/etc/aliases文件的注释中)。root 帐户被邮件服务器视为“最后手段”邮件目的地:如果由于任何原因邮件无法传递给收件人或返回给发件人,它将被发送到 root 帐户。如果您转发 root 的邮件并且在转发时发生错误,您将无法获得任何“最后手段”目的地并且邮件会丢失。

    • 0

相关问题

  • 不要启动 Xserver [重复]

  • 管理员应该如何阅读 root 的邮件?

  • 登录失败并显示低图形然后崩溃?[关闭]

  • Nautilus 自动以 root 身份浏览

  • 根运行emacs

Sidebar

Stats

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

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve