收到新邮件时执行脚本(Postfix / Dovecot)

收到新邮件时执行脚本(Postfix / Dovecot)

我想在我的邮件服务器(在 Debian 上运行,带有 Postfix/Dovecot)上收到新邮件时执行备份脚本 (.sh)。我找到了很多关于这个主题的帖子,但没有人给我一个可行的解决方案。这是我测试过的最后一个解决方案:https://stackoverflow.com/questions/27230324/run-script-when-postfix-dovecot-get-new-mail。有人有建议吗?

编辑:当我收到新邮件时,我想运行一个 bash 脚本并让 postfix/dovecot 将这封新邮件放入 ~/Maildir 文件夹中。我正在寻找一种不会阻止标准进程的“中间件”

答案1

如果你的实际问题是如何保留邮件服务器接收(和发送)的每封邮件的备份,答案是设置选项always_bcc并指定邮箱。

根据您的设置,您可以将该邮箱(或别名)收到的消息转发到脚本以进行进一步处理。

例如/etc/别名

 mailbox: "| /usr/local/bin/script.pl"

根据评论进行编辑

相当老派,但当你的电子邮件用户是系统用户并有主目录时,.forward仍然有旧的 sendmail 样式文件由 postfix 支持语法有点晦涩,但~mailuser/.forward使用以下内容会将消息发送到用户邮件存储区并将其转发到脚本:

\mailbox, "| /usr/local/bin/script.pl"

答案2

也许你需要后缀筛选器

您可以使用 smtpd_milters 参数指定仅支持 SMTP 的 Milter 应用程序(可以有多个)。每个 Milter 应用程序都由其侦听套接字的名称标识;其他 Milter 配置选项将在后面的部分中讨论。Milter 应用程序按指定的顺序应用,第一个拒绝命令的 Milter 应用程序将覆盖其他 Milter 应用程序的响应。

/etc/postfix/main.cf:
    # Milters for mail that arrives via the smtpd(8) server.
    # See below for socket address syntax.
    smtpd_milters = inet:localhost:portnumber ...other filters...

监听套接字的一般语法如下:

unix:pathname

    Connect to the local UNIX-domain server that is bound to the specified pathname. If the smtpd(8) or cleanup(8) process runs chrooted, an absolute pathname is interpreted relative to the Postfix queue directory.
inet:host:port

    Connect to the specified TCP port on the specified local or remote host. The host and port can be specified in numeric or symbolic form.

    NOTE: Postfix syntax differs from Milter syntax which has the form inet:port@host.

使用unix:pathname

相关内容