Postfix实现代理Exchange邮件传输方案
由于公司Exchange環(huán)境的郵件過(guò)濾的硬件設(shè)備存在單點(diǎn)故障又不想再花更多的費(fèi)用去做這方面的投資,所以想通過(guò)Postfix工具實(shí)現(xiàn)一個(gè)冗余的方案。
postfix是Wietse Venema在IBM的GPL協(xié)議之下開(kāi)發(fā)的MTA(郵件傳輸代理)軟件,是linux世界的一個(gè)開(kāi)源的郵件傳輸代理工具,通過(guò)一些組件可以實(shí)現(xiàn)反垃圾郵件和防病毒的功能。
相關(guān)組件:
postfix+clamd+spamassassin+amavisd-new
clamd 反病毒引擎 ? ?
spamassassin 反垃圾郵件
amavisd-new是郵件代理服務(wù)器(MTA)和防毒軟件之間的中介軟件
基本原理:
第一步:postfix 接收郵件
postfix,通過(guò)25端口,接受所有的郵件,這個(gè)步驟,是很好理解。
第二步:把郵件交給amavisd-new
在Linux的郵件系統(tǒng)里,amavisd-new的非常關(guān)鍵啊??梢赃@樣理解,postfix,的所有額外的功能,都需要通過(guò)他才能實(shí)現(xiàn)。
從上面的這個(gè)圖片,我們就可以看到,postfix,把郵件接收下來(lái)后,交給amavisd-new,讓他想辦法,解決殺毒,垃圾郵件過(guò)濾的問(wèn)題。
交給殺毒軟件
通過(guò)clamd,linux的殺毒軟件,檢查郵件是否帶病毒。
交給SpamAssassin
通過(guò)他來(lái)實(shí)現(xiàn)垃圾郵件的過(guò)濾。
第三步:amavisd-new通過(guò)10025端口還給postfix
當(dāng)所有的工作完成后,交給postfx,postfix在傳遞給exchange
?
安裝的整個(gè)過(guò)程
主要參考文檔
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
操作系統(tǒng)版本 Centos 6.3
1 配置dns vim /etc/resolv.conf
添加一個(gè)能夠解析的局域網(wǎng)DNSIP
2 配置hosts vim /etc/hosts
使其能解析自己
比如 1.1.1.1 postfix.contoso.com
?
一 安裝配置Postfix使其能完成基本的郵件收發(fā)
1 修改相關(guān)配置文件
vim /etc/postfix/main.cf:
2 vim /etc/postfix/transport,在配置文件的末尾添加以下內(nèi)容。
3 vim /etc/postfix/master.cf 基本保持默認(rèn)文件的原來(lái)的內(nèi)容
4 執(zhí)行以下命令使transport生效
postmap transport
5 啟動(dòng)服務(wù):
6查看相關(guān)端口:
7利用powershell ?send-mailmessage測(cè)試一下發(fā)送郵件,10.7.2.53就是本臺(tái)postfix服務(wù)器:
8發(fā)現(xiàn)客戶(hù)端已經(jīng)可以收到了
二 添加相關(guān)的病毒過(guò)濾組件和反垃圾郵件組件
創(chuàng)建相關(guān)的賬戶(hù):
添加ClamAV運(yùn)行所需的組和用戶(hù): ??
groupadd clamav ? ?
useradd -g clamav -s /sbin/nologin -M clamav ? ?
添加配合amavisd-new使用的用戶(hù)amavis(我們這次是yum安裝默認(rèn)會(huì)創(chuàng)建) ? ?
groupadd amavis ? ?
useradd -g amavis -s /sbin/nologin -M amavis
?
本次組件的安裝為了方便主要使用yum安裝也可以使用源碼安裝。
1 安裝Clamd(版本0.98.1)
yum install clamd (yum安裝會(huì)自動(dòng)創(chuàng)建clam組和賬戶(hù)這個(gè)需要后邊更改一下)
發(fā)現(xiàn)默認(rèn)的源沒(méi)有相關(guān)的軟件
我們需要將其他服務(wù)器的/etc/yum.repos.d目錄下面的源文件拷貝到這臺(tái)服務(wù)器上
到postfix服務(wù)器上查看已經(jīng)有了相關(guān)的文件,并執(zhí)行yum makecache使其生效
再次執(zhí)行yum install clamd的時(shí)候雖然有了相關(guān)組件但又發(fā)現(xiàn)了錯(cuò)誤
需要更改/etc/yum.repos.d/epel.repo中的以下內(nèi)容
再運(yùn)行 yum makecache 然后再運(yùn)行yum install clamd 發(fā)現(xiàn)已經(jīng)可以安裝了
啟動(dòng)服務(wù)service clamd start,會(huì)有病毒庫(kù)過(guò)期的提示:
使用freshclam更新一下病毒庫(kù),重啟一下clamd服務(wù)已經(jīng)正常了:
修改配置文件內(nèi)容,/etc/clamd.conf 因?yàn)槟J(rèn)的用戶(hù)是clam我們需要改為amavis
默認(rèn)的用戶(hù):
修改完的用戶(hù):
重啟服務(wù)失敗:
原來(lái)是目錄權(quán)限的問(wèn)題:
修改目錄權(quán)限:
刪除/var/log/clamav目錄線面的這兩個(gè)文件:
再起重啟服務(wù),還是有問(wèn)題:
目錄權(quán)限問(wèn)題:
重啟服務(wù)成功:
?
修改病毒庫(kù)更新的配置文件
先檢查配置文件/etc/freshclam.conf
默認(rèn)賬戶(hù):
更新后的賬戶(hù)
配置文件更改完以后會(huì)出現(xiàn)病毒庫(kù)更新錯(cuò)誤
還是權(quán)限的問(wèn)題需要修改權(quán)限至下面的截圖:
更新成功:
2 安裝spamassassin(版本3.3.1)
yum install spamassassin 這個(gè)是正常的。
修改配置文件/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
啟動(dòng)服務(wù):
3安裝amavisd-new(版本2.8.0)
yum install amavisd-new 一切順利
設(shè)置相關(guān)目錄權(quán)限: ? ??
將clamav加到amavis運(yùn)行組里,并調(diào)整目錄權(quán)限,否則clamav將無(wú)法掃描amavisd-new產(chǎn)生的臨時(shí)文件
# 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
修改相關(guān)的配置文件/etc/amavisd/amavisd.conf內(nèi)容。
$daemon_user ?= 'amavis';#yum安裝的時(shí)候會(huì)自動(dòng)創(chuàng)建賬戶(hù)$daemon_group = 'amavis';#yum安裝的時(shí)候會(huì)自動(dòng)創(chuàng)建組和賬戶(hù) ??
$mydomain = 'contoso.com'; #此處是你的Exchange或者其它郵件系統(tǒng)的郵件域
$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"] ? ?(指定報(bào)告病毒和垃圾郵件時(shí)發(fā)送系統(tǒng)郵件的用戶(hù)身份) ??
spam_admin_maps ?=> ["postmaster\@$mydomain"]
取消以下內(nèi)容的注釋并修改相關(guān)內(nèi)容。
將配置文件中的以下內(nèi)容修改成以下內(nèi)容 ??
?['ClamAV-clamd', ? ?
? ?\&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"], ? ?
? ?qr/\bOK$/m, qr/\bFOUND$/m, ? ?
? ?qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],
這是默認(rèn)的配置文件。
啟動(dòng)服務(wù),正常。
service amavisd start
?
三 所有組件安裝完畢需要將所有的組件與postfix關(guān)聯(lián)
修改/etc/postfix/master.cf 添加以下內(nèi)容
smtp-amavis unix - - n - 2 smtp ??
?-o smtp_data-done_timeout=1200 ? ?
?-o disable_dns_lookup=yes ? ?
#符號(hào)前面有一個(gè)空格用于連續(xù)下面的內(nèi)容 ? ?
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 添加以下內(nèi)容:
content_filter=amavisfeed:[127.0.0.1]:10024
重啟一下服務(wù),相關(guān)的端口已經(jīng)啟動(dòng):
我們將相關(guān)的服務(wù)設(shè)置為開(kāi)機(jī)啟動(dòng):
?
四 相關(guān)的一些測(cè)試:
1我們先發(fā)送一份正常的郵件:
查看相關(guān)的日志,沒(méi)有檢測(cè)到病毒。郵件已經(jīng)傳送成功:
2 我們發(fā)送一份帶病毒的郵件。
查看一下日志發(fā)現(xiàn)被隔離了。
然后會(huì)產(chǎn)生一封退信:
說(shuō)明病毒過(guò)濾成功了。
?
3 測(cè)試反垃圾郵件功能.
# 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?> // 發(fā)件人 ? ?
250 2.1.0 Ok ?
rcpt to:<xiaosong.li1@contoso.com//收件人 ? ?
250 2.1.5 Ok ?
data ? ?//郵件內(nèi)容 ? ?
354 End data with . ? //下面那行為測(cè)試內(nèi)容 ? ?
Subject: XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X ? ?
. ? //以.結(jié)束郵件內(nèi)容 ? ?
250 2.0.0 Ok: queued as BC24E85260 ?
quit //退出 ? ?
221 2.0.0 Bye ?
Connection closed by foreign host.
發(fā)送方出現(xiàn)了退信
整個(gè)方案測(cè)試成功
?
總結(jié)
以上是生活随笔為你收集整理的Postfix实现代理Exchange邮件传输方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python 动态获取对象的属性和方法(
- 下一篇: C语言函数为什么不可以声明默认参数?