helloiac 发表于 2014-10-16 14:11

postfix 中对邮件主题添加编号

希望在postfix中能够对发往某一个特殊地址的邮箱的主题进行改写
已知使用header_checks = pcre:/etc/postfix/header_checks.pcre
可以根据条件进行replace
但是不知道如何修改header_checks 才能够满足自己的要求

需求:
对于发往地址为proj (类似proj-xxx-xxx@yyy.com)开头的的邮件进行判断,如果包含subject 包含 就对数字进行加1,如果没有就自动添加
简单来说就是对发往特定的邮箱的邮件自动进行主题排号

有无大神提点下

woxizishen 发表于 2014-10-16 16:10

1.如果发往特定邮箱的地址是你那台邮件服务器上的话可以用procmailrc结合脚本来实现
编辑特定用户 home目录下的.procmailrc
:0 fw
| 脚本程序 (shell脚本或其他外部程序都可以,怎么筛选,怎么改邮件,楼主办法就多了吧)


2.如果你发的特定邮箱地址是其他公司的,那就得编辑procmailrc,全局生效即公司所有用户发出去的都会经过这个规则
:0 fw
| 脚本程序
(当然这里就要注意了下,因为是全局针对所有用户,小心点了噢,把条件设定好只针对那个用户进行条件判断)


当然楼主非要坚持在MTA上实现,可以无视上面MDA实现方法。


helloiac 发表于 2014-10-16 16:12

本帖最后由 woxizishen 于 2014-10-16 19:09 编辑

回复 2# woxizishen


    目标邮件用户是本主机上的,邮件服务器使用的是iredmail 搭建的,后台使用mysql ,没有发现你说的那个文件
    只要能实现就好,没有限定在哪个组件上实现



cryboy2001 发表于 2014-10-16 16:39

http://www.postfix.org/header_checks.5.html

这里面应该有你要的答案,不过要化点时间看看。

woxizishen 发表于 2014-10-16 19:10

回复 3# helloiac


    我大概看了你这个iredmail,他其实就是将potfix(MTA)/dovecot(MRA)/amavisd-new(调用clamv和spa进行杀毒和过滤)/Webmail/openssl等等软体打包组合起来的,不需要用户了解很多就可以安装起来,但是我觉得你如果各个组件不去了解下,有问题的话,估计你自己解决问题会头疼的。


1.没有我说的那个文件的话。
首先查看你有没有安装这个MDA软体,没有就安装上。
rpm -qa | grep procmail
procmail-3.22-14

2.再看看postfix这个MTA服务器使用的第三方MDA是不是procmail,还是说他根本不使用第三方外部过滤程序
查看主配置文件main.cf里有没有这个项
mailbox_command = /usr/bin/procmail
如果有这个选项,那就简单了,证明他postfix使用了procmail做MDA的,你可以自己在你的家目录下面的用户名称下建立一个这样的文件.procmailrc(规则写好后,保存就立即生效了)
按照上面我给你的规则你就可以自己写shell或phylon脚本,想怎样改变邮件主题就怎么改变了呗。不过procmail规则你可能需要花点时间了解。



3.看了iredmail说明,你这个postfix他不在自身做任何过滤的,是通过amavisd-new(也算是个迷你MTA)来进行病毒和邮件过滤的。你在postfix主配置文件main.cf可以看到这一行
content_filter = smtp-amavis:。他这样做是对的,MTA功能不是用来去过滤邮件的,包括postfix很多权威专家都说过。
一般MTA过滤就2个结果,要么是直接拒絕接收垃圾郵件,要么接收垃圾郵件后是丟棄還是保留。在MTA上实现改邮件标题,还要这么智能+1的方法估计有点难 呵呵,不知道新版的postfix有没有加入你想要的这个功能,我了解的之前的postfix本身旧版似乎没有。

你还是从MDA上解决这个问题或者那个amavisd-new(迷你版的MTA)做标题修改,而这个amavisd-new软体我没深入研究过,所以无法帮你,影响当中他也是可以改邮件标题的。

helloiac 发表于 2014-10-17 13:06

本帖最后由 helloiac 于 2014-10-17 13:06 编辑

回复 5# woxizishen


    首先感谢你仔细回答
    我查了一下iredmail 对于procmail的支持,目前官方是不支持这个组件了,而且有人反映自己加上procmail后,有些功能貌似会出现问题,所以暂时不考虑添加procmail 的方法
   
   http://www.irbs.net/internet/postfix/0711/0271.html 这个我找到的一篇,这个思路是否可行
   

woxizishen 发表于 2014-10-17 14:02

回复 6# helloiac


用maildrop这个外部过滤器也是可以实现修改邮件标题的,他和procmail一样都是MDA。procmail这个其实也没多大问题,主要是看你怎么用,网上说的那些评测大部分偏向maildrop的。
但是procmail是有一个先天性缺陷,在处理大量大的单封邮件时候可能会耗费过多内存资源,这一点确实没有maildrop好,更可怜的是procmail这个软体好多年都没有社区的人去更新了。而maildrop还在释出新版。你可以花时间去研究下maildrop。另外procmail的规则是比maildrop要难的,而且资料很少。按照未来前景看,maildrop有点取代procmail的趋势,值得你研究。




helloiac 发表于 2014-10-20 10:07

回复 7# woxizishen


    我分析了一下自己的需求
    ifTo proj-.* 邮件地址
          if   Subject没有编号
               添加编号
          fi
          if   Subject有编号
               删除编号
               读取编号记录文件
               添加编号
          fi
    fi
    想要实现这种复杂的需求,感觉除了修改dovecot 的源文件没有什么其他方法了
   
    我有另一个想法,使用inotify 监控收件箱情况,有收到邮件就对邮件进行改写,虽然知道这是个烂方法,但是应该比修改源文件简单点吧

woxizishen 发表于 2014-10-20 14:12

回复 8# helloiac

为这个修改dovecot源码,那是真的有点杀鸡焉用牛刀,得不偿失。方法没有好烂,哪一个方法让你最快,最简单解决了问题,我个人认为就是好方法。


页: [1]
查看完整版本: postfix 中对邮件主题添加编号