Postfix实现代理Exchange邮件传输方案
由于公司Exchange环境的邮件过滤的硬件设备存在单点故障又不想再花更多的费用去做这方面的投资,所以想通过Postfix工具实现一个冗余的方案。
postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件,是linux世界的一个开源的邮件传输代理工具,通过一些组件可以实现反垃圾邮件和防病毒的功能。
相关组件:
postfix+clamd+spamassassin+amavisd-new
clamd 反病毒引擎
spamassassin 反垃圾邮件
amavisd-new是邮件代理服务器(MTA)和防毒软件之间的中介软件
基本原理:
第一步:postfix 接收邮件
postfix,通过25端口,接受所有的邮件,这个步骤,是很好理解。
第二步:把邮件交给amavisd-new
在Linux的邮件系统里,amavisd-new的非常关键啊。可以这样理解,postfix,的所有额外的功能,都需要通过他才能实现。
从上面的这个图片,我们就可以看到,postfix,把邮件接收下来后,交给amavisd-new,让他想办法,解决杀毒,垃圾邮件过滤的问题。
交给杀毒软件
通过clamd,linux的杀毒软件,检查邮件是否带病毒。
交给SpamAssassin
通过他来实现垃圾邮件的过滤。
第三步:amavisd-new通过10025端口还给postfix
当所有的工作完成后,交给postfx,postfix在传递给exchange
安装的整个过程
主要参考文档
http://blog.linuxphp.org/archives/657/
http://wiki.extmail.org/%E5%8D%81%E4%BA%8C%E3%80%81%E9%85%8D%E7%BD%AE%E5%86%85%E5%AE%B9%E3%80%81%E7%97%85%E6%AF%92%E8%BF%87%E6%BB%A4#、配置clamav
操作系统版本 Centos 6.3
1 配置dns vim /etc/resolv.conf
添加一个能够解析的局域网DNSIP
2 配置hosts vim /etc/hosts
使其能解析自己
比如 1.1.1.1 postfix.contoso.com
一 安装配置Postfix使其能完成基本的邮件收发
1 修改相关配置文件
vim /etc/postfix/main.cf:
2 vim /etc/postfix/transport,在配置文件的末尾添加以下内容。
3 vim /etc/postfix/master.cf 基本保持默认文件的原来的内容
4 执行以下命令使transport生效
postmap transport
5 启动服务:
6查看相关端口:
7利用powershell send-mailmessage测试一下发送邮件,10.7.2.53就是本台postfix服务器:
8发现客户端已经可以收到了
二 添加相关的病毒过滤组件和反垃圾邮件组件
创建相关的账户:
添加ClamAV运行所需的组和用户:
groupadd clamav
useradd -g clamav -s /sbin/nologin -M clamav
添加配合amavisd-new使用的用户amavis(我们这次是yum安装默认会创建)
groupadd amavis
useradd -g amavis -s /sbin/nologin -M amavis
本次组件的安装为了方便主要使用yum安装也可以使用源码安装。
1 安装Clamd(版本0.98.1)
yum install clamd (yum安装会自动创建clam组和账户这个需要后边更改一下)
发现默认的源没有相关的软件
我们需要将其他服务器的/etc/yum.repos.d目录下面的源文件拷贝到这台服务器上
到postfix服务器上查看已经有了相关的文件,并执行yum makecache使其生效
再次执行yum install clamd的时候虽然有了相关组件但又发现了错误
需要更改/etc/yum.repos.d/epel.repo中的以下内容
再运行 yum makecache 然后再运行yum install clamd 发现已经可以安装了
启动服务service clamd start,会有病毒库过期的提示:
使用freshclam更新一下病毒库,重启一下clamd服务已经正常了:
修改配置文件内容,/etc/clamd.conf 因为默认的用户是clam我们需要改为amavis
默认的用户:
修改完的用户:
重启服务失败:
原来是目录权限的问题:
修改目录权限:
删除/var/log/clamav目录线面的这两个文件:
再起重启服务,还是有问题:
目录权限问题:
重启服务成功:
修改病毒库更新的配置文件
先检查配置文件/etc/freshclam.conf
默认账户:
更新后的账户
配置文件更改完以后会出现病毒库更新错误
还是权限的问题需要修改权限至下面的截图:
更新成功:
2 安装spamassassin(版本3.3.1)
yum install spamassassin 这个是正常的。
修改配置文件/etc/mail/spamassassin/local.cf
required_score 5.0
rewrite_header Subject *****SPAM*****
report_safe 1
use_bayes 1
bayes_auto_learn 1
skip_rbl_checks 1
use_razor2 0
use_pyzor 0
ok_locales all
启动服务:
3安装amavisd-new(版本2.8.0)
yum install amavisd-new 一切顺利
设置相关目录权限:
将clamav加到amavis运行组里,并调整目录权限,否则clamav将无法扫描amavisd-new产生的临时文件
# gpasswd -a clamav amavis
# usermod -G amavis clamav
# chown amavis.amavis /var/spool/amavisd
# chmod 750 /var/spool/amavisd
# chown amavis.amavis /var/spool/amavisd/tmp
# chmod 750 /var/spool/amavisd/tmp
修改相关的配置文件/etc/amavisd/amavisd.conf内容。
$daemon_user = 'amavis';#yum安装的时候会自动创建账户$daemon_group = 'amavis';#yum安装的时候会自动创建组和账户
$mydomain = 'contoso.com'; #此处是你的Exchange或者其它邮件系统的邮件域
$virus_admin = "postmaster\@$mydomain";
$mailfrom_notify_admin = "postmaster\@$mydomain";
$mailfrom_notify_recip = "postmaster\@$mydomain";
$mailfrom_notify_spamadmin = "postmaster\@$mydomain";
$mailfrom_to_quarantine = '';
virus_admin_maps => ["postmaster\@$mydomain"] (指定报告病毒和垃圾邮件时发送系统邮件的用户身份)
spam_admin_maps => ["postmaster\@$mydomain"]
取消以下内容的注释并修改相关内容。
将配置文件中的以下内容修改成以下内容
['ClamAV-clamd',
\&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"],
qr/\bOK$/m, qr/\bFOUND$/m,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],
这是默认的配置文件。
启动服务,正常。
service amavisd start
三 所有组件安装完毕需要将所有的组件与postfix关联
修改/etc/postfix/master.cf 添加以下内容
smtp-amavis unix - - n - 2 smtp
-o smtp_data-done_timeout=1200
-o disable_dns_lookup=yes
#符号前面有一个空格用于连续下面的内容
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
修改/etc/postfix/main.cf 添加以下内容:
content_filter=amavisfeed:[127.0.0.1]:10024
重启一下服务,相关的端口已经启动:
我们将相关的服务设置为开机启动:
四 相关的一些测试:
1我们先发送一份正常的邮件:
查看相关的日志,没有检测到病毒。邮件已经传送成功:
2 我们发送一份带病毒的邮件。
查看一下日志发现被隔离了。
然后会产生一封退信:
说明病毒过滤成功了。
3 测试反垃圾邮件功能.
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 xt.contoso.com ESMTP Postfix
ehlo localhost //打招呼
250-xt.contoso.com
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from:<xiaosong.li1@contoso.com > // 发件人
250 2.1.0 Ok
rcpt to:<xiaosong.li1@contoso.com//收件人
250 2.1.5 Ok
data //邮件内容
354 End data with . //下面那行为测试内容
Subject: XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
. //以.结束邮件内容
250 2.0.0 Ok: queued as BC24E85260
quit //退出
221 2.0.0 Bye
Connection closed by foreign host.
发送方出现了退信
整个方案测试成功
Postfix实现代理Exchange邮件传输方案相关推荐
- Linux中最受欢迎的邮件传输代理(MTA)
MTA(Mail transfer Agent) -对于服务器管理员来说,邮件传输代理是最为重要的工具.MTA的主要工作就是将电子邮件从一台主机发送到另一台主机.MTA使用SMTP(简单邮件传输协议) ...
- 邮件传输代理Exim远程命令执行漏洞细节披露,影响全球近一半邮件服务器
注意:是远程命令执行,不是远程代码执行 Exim是一个MTA(Mail Transfer Agent,邮件传输代理)服务器软件,该软件基于GPL协议开发,是一款开源软件.该软件主要运行于类UNIX系统 ...
- Office365 Exchange Hybrid No.15 DNS切换及邮件传输排错
完成混合部署以及相关后续工作后,接下来就是公网DNS切换及邮件传输测试,此部分应当只非工作时间进行(意味着要加班加班加班哈哈哈哈) 公网DNS切换,就如之前文章中说的,需要将MX记录指向Office3 ...
- exchange邮件中继服务器搭建,使用 Exchange 2010 传输中继应用程序服务器 SMTP 通信...
使用 Exchange 2010 传输中继应用程序服务器 SMTP 通信 05/13/2016 本文内容 适用于: Exchange Server 2010 SP2, Exchange Server ...
- exchange系列(三)exchange邮件服务器的邮件传输管理
博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 前言:我们前面安装好了exchange2 ...
- exchange系列(四)如何保护exchange邮件服务器的安全
博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持 理论部分: 邮件病毒的危害 窃取邮件内容 ...
- Exchange邮件跟踪日志不得不了解的知识
https://blog.51cto.com/jialt/1812622 在进行Exchange邮件投递分析时,我们经常会使用Get-MessageTrackingLog查看邮件传输的过程,以此来分析 ...
- 邮件传输过程,MUA,MTA,MDA的概念
邮件传输过程.MUA.MTA.MDA MUA outlook.thunderbird.Mac Mail.mutt MTA sendmail.postfix MDA procmail.dropmail ...
- exchange邮件服务器_基于Spring Boot快速实现发送邮件功能
邮件在项目中经常会被用到,比如用邮件发送通知.比如,通过邮件注册.认证.找回密码.系统报警通知.报表信息等.本篇文章带大家通过SpringBoot快速实现一个发送邮件的功能. 邮件协议 下面先简单了解 ...
最新文章
- OS X快捷键小技巧
- linux——脚本的练习示例三
- Android Fragment 使用详解
- pokemon go 和 虚拟gps
- MacOS Monterey 12.3.1(21E258) OC 0.7.9 / Cl 5145 / PE 三分区原版黑苹果镜像
- BinarySerializer
- 零基础学习UI设计,有哪些软件推荐
- Android经典铃声等等等等,低调而优雅:40 款经典黑莓手机铃声精选(安卓手机适用)...
- Java jdk 在线文档(可搜索类)
- 《超越对手-大项目售前售后的30种实战技巧》读书心得
- photoshop 裁剪_如何在Photoshop中裁剪图像
- 计算机逻辑函数,逻辑函数
- 使用C语言判断一个机器是大端机还是小端机
- linux显示分区命令,在Linux中查看分区表的4种方法
- Python聚类分析
- 2019年Java程序员的学习路线
- Git系列(四)、在IDEA操作Git本地仓库与连接远程Git仓库(推送、合并、拉取、克隆操作)
- 房产门户企业织梦模板/DedeCMS房地产楼盘网站模板下载
- 华为nova7可以用鸿蒙,华为鸿蒙系统再次更新7款可适配机型!对比安卓,鸿蒙OS的优势有哪些?...
- flask_萧井陌视频学习(三)
热门文章
- 文章用图的修改和排版
- 生信宝典之傻瓜式 (五) - 文献挖掘查找指定基因调控网络
- 【M1兼容】阿里云盘小白羊版 Mac版(支持满速)
- 1.5编程基础之循环控制_16买房子
- NOIP2016 复赛普及组第 1 题 买铅笔 方法一
- tdbgrid 数据类型输入错误 vb_VB语言基础(上)
- python不等于_Python小课堂|注释+运算符
- linux中dpkg找不到命令_工作中常用的Linux命令介绍与实践
- Java笔记-模拟QQ三方登录(单点登录2.0)
- MySQL笔记-死锁原理与分析及InnoDB中如何减少死锁