postfix部署多个Content Filter的方法
Postfix邮件服务器可以在接收邮件时使用content_filter来扫描邮件(病毒,广告等).通过整合一个集中化的电子邮件内容过滤器,比如amavis或mailscanner,Postfix可以利用单次调用来进行多个扫描.这非常好,但是有些过滤器很难或者几乎不可能整合到一个集中化的过滤器中.这是一个问题,尤其是你的Postfix系统已经安装了某些集中化的content_filter.我们能解决这个问题吗,当然可以.这个文档将给出许多可能的解决方案中的一种.你的步骤可能不一样,根据你的配置而定.
在案例中,我们假设我们需要一个运行Postfix,Amavis(包含各种插件)和Avira MailGate的邮件系统.Postfix已经配置为使用Amavis系统作为content_filter.MailGate 不能通过Amavis进行整合,因此它要使用一个单独的content_filter.
Amavis配置:Amavis监听10026端口,然后通过10027端口进行转发.
代码如下 复制代码
$inet_socket_port = 10026;
forward_method => 'smtp:[127.0.0.1]:10027';
MailGate配置:MailGate监听20024端口,然后通过20025端口进行转发.
代码如下 复制代码
ListenAddress localhost port 20024
ForwardTo SMTP: localhost port 20025
Postfix需要配置两个过滤器.
这可以通过串接过滤器:进入的邮件首先提交到Postfix Content_filter,(www.111cn.net然后Content_filter将扫描后的邮件传给Postfix.扫描后的邮件再传给第二个Content_filter.最后再送到用户手中.我们的链是这样的:Postfix > MailGate > Postfix > Amavisd-new >
更多详细内容请查看:http://www.111cn.net/sys/linux/56556.htm
Postfix > User
main.cf:
content_filter = smtp:127.0.0.1:20024
master.cf
localhost:20025 inet n - n - - smtpd
-o content_filter=smtp:127.0.0.1:10026
127.0.0.1:10027 inet n - n - - smtpd
-o content_filter= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions= -o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o smtpd_restriction_classes=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters
-o local_header_rewrite_clients=
就这样,Postfix提交所有进来的邮件到20024端口的MailGate,MailGate再将扫描的结果传回到20025的Postfix.Postfix在20025端口运行着一个额外的SMTP服务,这个服务也包含了一个content_filter,因此所有到达20025端口的邮件会再传给10026端口.Amavis监听着10026端口,因此邮件将被Aamavis扫描.扫描完成后Amavis将邮件传送到10027端口.而在10027端口上运行着另外一个Postfix提供的SMTP服务,至此邮件到达链的终点,邮件将被邮递给用户.如果你需要关于这个话题的更多信息,请发邮件至robin.diederen@gmail.com.111cn.net
另外一个配置样例可能如下:
代码如下 复制代码
In main.cf:
# send email to amavisd
content_filter = amavisd:[127.0.0.1]:10024
In master.cf:
# amavisd
amavisd unix - - n - 2 lmtp
-o lmtp_data_done_timeout=1200s
-o disable_dns_lookups=yes
# receive email from amavisd
# and then send email to altermine
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=altermine
# receive email from 127.0.0.1:10025
altermine unix - - n - 2 pipe
...
# receive email from altermine
127.0.0.1:20025 inet n - n - - smtpd
-o content_filter=
-o ...
整个流程为: postfix -> amavisd:[127.0.0.1]:10024 -> postfix -> altermine -> postfix -> user
postfix部署多个Content Filter的方法的更多相关文章
- Tomcat系列(11)——Tomcat 部署web应用的4种方法
核心内容 1.在Tomcat中有四种部署Web应用的方式,分别是: (1)利用Tomcat自动部署(项目直接拷贝OR WAR包拷贝 到webapps下) (2)利用控制台进行部署(tomcat的man ...
- 在同一个Apache服务器软件上部署多个站点的基础方法
这篇文章主要介绍了Apache中Virtual Host虚拟主机配置及rewrite模块中的重要参数说明,是在同一个Apache服务器软件上部署多个站点的基础方法,需要的朋友可以参考下(http:// ...
- tomcat部署项目访问不加项目名方法
直接主题:tomcat部署项目访问不加项目名方法是打开tomcat的conf目录下server.xml文件 加入 <Context path="" docBase=" ...
- tomcat部署web应用的4种方法以及部署多个应用
原文: tomcat部署web应用的4种方法 在Tomcat中有四种部署Web应用的方式,简要的概括分别是: (1)利用Tomcat自动部署 (2)利用控制台进行部署 (3)增加自定义的Web部署文件 ...
- ArcEngine中IFeatureClass.Search(filter, Recycling)方法中Recycling参数的理解
转自 ArcEngine中IFeatureClass.Search(filter, Recycling)方法中Recycling参数的理解 ArcGIS Engine中总调用IFeatureCla ...
- 删除在wireshark中保存的filter的方法
现在想删除下图的filter,方法是:Edit->preferences->Filter Expressions
- js--数组的filter()过滤方法的使用
前言 你还在通过for循环遍历数组吗?你还在遍历之后一项一项的通过if判断过滤你需要的数据吗?你还在写着一大堆代码实现一个简单的过滤数据功能吗?那么,今天他来了.他就是这里要介绍的es6中数组filt ...
- tomcat部署web项目的3中方法
1.直接把项目复制到Tomcat安装目录的webapps目录中,这是最简单的一种Tomcat项目部署的方法,也是初学者最常用的方法. 2.在tomcat安装目录中有一个conf文件夹,打开此文件夹,其 ...
- tomcat部署web应用的4种方法
在Tomcat中有四种部署Web应用的方式,简要的概括分别是: (1)利用Tomcat自动部署 (2)利用控制台进行部署 (3)增加自定义的Web部署文件(%Tomcat_Home%\conf\Cat ...
随机推荐
- 约瑟夫圆环的C++实现
转载请注明出处:点我 昨天参加了企鹅的2015年实习生招聘的笔试,编程题第一道题就是约瑟夫圆环问题,要求用C++来实现. 约瑟夫圆环问题其实是一个很有名的问题:问题的描述为: 设有编号为1,2,……, ...
- 【JavaScript】Javascript中的函数声明和函数表达式
Javascript有很多有趣的用法,在Google Code Search里能找到不少,举一个例子: <script> ~function() { alert("hello, ...
- MySQL Spatial Extensions 地理信息
http://dev.mysql.com/doc/refman/5.7/en/gis-data-formats.html http://mysqlserverteam.com/mysql-5-7-an ...
- MySQL 调优基础:Linux内存管理 Linux文件系统 Linux 磁盘IO Linux网络
http://www.cnblogs.com/digdeep/category/739915.html
- C++ Qt 访问权限总结
总结:C++的访问修饰符的作用是以类为单位,而不是以对象为单位. 通俗的讲,同类的对象间可以“互相访问”对方的数据成员,只不过访问途径不是直接访问. 步骤是:通过一个对象调用其public成员函数,此 ...
- linux 下 奇怪的 动态库 依赖问题
转:http://fanwei51880.blog.163.com/blog/static/3240674020111145285375/ 总结如下:1)当你在编译生成静态库的时候, 只需要相应的依赖 ...
- 学java入门到精通,不得不看的15本书
学java入门到精通,不得不看的15本书 一.Java编程入门类1.<Java编程思想>2.<Agile Java>中文版 二.Java编程进阶类1.<重构 改善既有代码 ...
- 关于Android WindowManager显示悬浮窗的动画效果
要实现WindowManager添加的窗口,实现动画显示,就需要添加如下红色的属性,其他的添加View只要设置其Animations属性也会实现动画,当然自己实现也可,但是能直接用系统的已经实现好的, ...
- 关于修改Android手机的音量
首先,必须要获取系统的声音服务权限 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS&qu ...
- hadoop2 作业执行过程之作业提交
hadoop2.2.0.centos6.5 hadoop任务的提交常用的两种,一种是测试常用的IDE远程提交,另一种就是生产上用的客户端命令行提交 通用的任务程序提交步骤为: 1.将程序打成jar包: ...