`
dimaomao
  • 浏览: 20785 次
  • 性别: Icon_minigender_1
  • 来自: 东京
社区版块
存档分类
最新评论

Postfix在收到指定地址的邮件时触发启动一个shell脚本

阅读更多

项目中遇到一个问题,就是题目中提到的问题。中文的说明文章好像没有,所以找了一篇英文的文章了解了一下。链接如下:http://blog.thecodingmachine.com/content/triggering-php-script-when-your-postfix-server-receives-mail如果我写的文字有哪些地方难以理解大家可以参照英文原版。

以下是我在个人理解的基础之上整理的,请大家指正。(原文章是触发调用PHP脚本,此处改为Sheel脚本)

1. 打开  master.cf 追加以下一行文本。

myhook unix - n n - - pipe
  flags=F user=www-data argv=/path/to/postfix.sh ${sender} ${size} ${recipient}

这里创建一个filter(过滤器),别名myhook是管道(pipe)模式的,这一点要注意,一旦配置成功,邮件将直接以标准输入(stdin)转给argv指定的脚本。

另外,稍微说明一下user,这个用户我们试了root,出错!postfix以及postfix组用户,出错!没时间调查原因。后来新建了一个用户,没有设定用户组,却执行成功了,哎……悲剧。这里搞不懂,请高手知道原因的指点迷津!还有后面的参数,其实pipe有好多,这三个是原文章给出来的,我没变直接用了,好像我们的处理脚本也不需要。

2. 继续修改 master.cf 找到下面的文本

smtp      inet  n       -       -       -       -       smtpd

追加

 -o content_filter=myhook:dummy

这里的意思是将smtp收到的邮件转给filter。

再找到一下文本内容

pickup    fifo  n       -       -       60      1       pickup

同样追加一下内容

 -o content_filter=myhook:dummy

和上面一样的,这里是将通过命令行sendmail的邮件转给filte。如果不需要不加也行。

到这里我们reload一下postfix

postfix reload

如果你已经准备好了shell那么就可以直接测试一下,看是否有任意邮件被收到postfix就默认调用shell。说实话我没试过,原文这样说的。我一口气配置到底的。

3. 给出shell接收脚本

#!/bin/sh
MAILDIR=/home/mailtest2/MAILDIR/new/
FILENAME=""
email=""
while read line ; do
    email+=${line}"\n"
done
echo -e $email > /home/postfix/postfix.log
DATE=`date +"%Y%m%d%H%M%S"`
#echo ${1}+${DATE} > /home/postfix/postfix.log

4. 下面指定过滤

找到 access 并修改,没有新建。追加如下内容:

david@example.com FILTER myhook:dummy

当然,收件人地址你可以随便指定,这里是个例子。

别动,还没完人家说 access 文件必须被Hash化,所以我们要执行命令行。

postmap /etc/postfix/access

就是上面的命令了,路径自己确认一下,可以修改的。

 

5. 最后我们要把对 access  的参照加到 main.cf 中。

如果文件中存在key

smtpd_recipient_restrictions 

在key值的最开头追加

check_recipient_access hash:/etc/postfix/access

如果key值根本不存在就直接追加下面的内容

smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/access, permit_mynetworks, reject_unauth_destination

 

追后, postfix reload

试试看,发送一封邮件到你定义过滤的邮箱能否启动shell输出一个文件到制定的目录下。

哦!对了,由于Postfix直接将输入以管道(pipe)标准输入(stdin)的形式转给脚本了,所以在postfix的收件文件夹下就不会再生成邮件文件了。

 

以下是测试后针对出现问题的修正:

这对上面的第2步,如果要求针对,特定的地址启动过滤的话,需要删除掉该步骤追加在 master.cf中的内容。因为该设定内容会针对所有的smtp和pickup方式发送的邮件,在被postfix收到后启动特定的脚本处理。在第1步设定以后直接跳到第4步设定就可以了。

分享到:
评论

相关推荐

    postfix邮件

    例如,创建一个名为`disk.sh`的脚本来监控磁盘空间,当磁盘空间超过预设阈值时发送报警邮件。这个脚本需要具有执行权限(`chmod a+x disk.sh`),然后通过`./disk.sh`来执行。类似的,可以创建`Apache.sh`和`MySQL.sh`...

    Linux下Postfix邮件服务器搭建

    如果你的 postfix 运行在一个虚拟的 ip 地址上,则必须指定其监听的地址。(但是我没有作该参数配置,正常) 三、添加 DNS 服务器 为本机添加 DNS 服务器,在 vim /etc/resolv.conf 下添加以下配置: nameserver ...

    利用Postfix搭建企业邮件系统

    接下来,我们将详细介绍如何使用Postfix搭建一个基本的企业邮件系统。 #### 步骤1:安装Postfix 在大多数Linux发行版中,可以通过包管理器轻松安装Postfix。例如,在Debian或Ubuntu上,可以使用以下命令安装: ``` ...

    postfix搭建邮件系统

    在本文中,我们将深入探讨如何在CentOS 5.5系统上搭建基于Postfix和Dovecot的邮件系统,同时整合ClamAV、SpamAssassin以及amavisd-new,以实现一个完整的邮件服务器解决方案。 首先,我们来看一下安装环境。在...

    树莓派安装postfix邮件服务1

    在本文中,我们将深入探讨如何在树莓派上安装和配置Postfix邮件服务,以及它与Dovecot、Squirrelmail、SpamAssassin和Sieve的结合使用,以建立一个功能齐全的家庭电子邮件服务器。树莓派因其小巧的体积和低功耗,...

    tomcat健康检查脚本文件异常发送邮件通知.rar

    本压缩包提供的"tomcat健康检查脚本文件异常发送邮件通知.rar"就是为了解决这个问题,它包含了一个可配置化的Shell脚本,能够定期检查Tomcat的状态,并在检测到异常时自动发送邮件通知给管理员。 首先,我们来详细...

    postfix邮件系统原理

    postfix邮件系统原理postfix邮件系统原理postfix邮件系统原理

    Linux系列-Red_Hat5平台下的Postfix邮件服务搭建

    在Red Hat 5平台上搭建Postfix邮件服务是一个重要的任务,因为Postfix是一个高效且安全的邮件传输代理,尤其适合大型企业或需要高级功能的环境。Postfix以其模块化设计著称,由多个独立的程序组成,每个程序都有特定...

    Postfix反垃圾邮件技术

    Postfix是一种广泛使用的Mail Transfer Agent (MTA),以其高效、安全和反垃圾邮件能力而闻名。在Postfix中,反垃圾邮件技术主要体现在邮件数据发送前的过滤,也就是SMTP会话中的数据前过滤阶段。这一过程包括四个子...

    postfix邮件服务器的部署

    在本文中,我们将探讨如何利用Postfix在Linux环境下搭建一个邮件服务器。Postfix是一款开放源代码的MTA(邮件传输代理),它被广泛用于替换传统的sendmail,因其高效、安全和易于管理的特性而受到青睐。 **一、预备...

    postfix邮件安装配置文档

    ### Postfix邮件服务器全功能搭建知识点详解 ...通过以上步骤,可以成功搭建一个包含多种功能的Postfix邮件服务器。在实际部署过程中,还需要根据具体需求进行调整和优化,以确保邮件系统的稳定性和安全性。

    postfix日志腳本

    在IT领域,特别是邮件服务器管理与维护中,Postfix作为一款高效、稳定且功能丰富的MTA(邮件传输代理)软件,其日志分析是确保邮件服务正常运行的关键环节。通过编写脚本自动化处理Postfix日志,不仅可以提高系统...

    Centos52+postfix+extmail搭建邮件系统

    在本文中,我们将深入探讨如何在CentOS 5.4操作系统上使用Postfix和Extmail搭建一个完整的邮件系统。CentOS 5.4是一个基于RHEL(Red Hat Enterprise Linux)的稳定版本,它为服务器环境提供了可靠的基础。Postfix是...

    postfix post 邮件系统

    总的来说,Postfix邮件系统是一个强大且可靠的邮件解决方案,它的灵活性和稳定性使其成为许多企业的首选。通过源码安装,用户可以完全控制邮件服务器的配置,确保与自身环境的完美融合。同时,丰富的文档和社区支持...

    用于自动监控磁盘使用情况的 Shell 脚本.doc

    本文介绍如何编写一个 Shell 脚本来自动监控磁盘使用情况,并在达到阈值时将报告发送到指定的邮箱中。该脚本使用 df 命令获取磁盘使用信息,并使用 mail 命令发送电子邮件报告。 磁盘使用情况监控 在服务器上运行...

    WebMail邮件服务器搭建:postfix+dovecot+roundcube (原理加全操作-详细)

    Postfix 是一个流行的MTA 软件,它可以将邮件从发送者传递到接收者。Dovecot 是一个流行的MDA 软件,它可以将邮件从MTA 传递到MUA。Roundcube 是一个基于Web 的MUA 软件,它可以让用户通过Web 访问邮件。 在这个...

    postfix邮件服务器软件

    总的来说,Postfix是一个功能强大且灵活的邮件服务器解决方案,适合各种规模的企业和组织使用。其强大的安全特性和优秀的性能使其在Linux环境中成为了首选的邮件服务器软件之一。安装和配置Postfix需要对Linux系统和...

Global site tag (gtag.js) - Google Analytics