Postfix实现代理Exchange邮件传输方案
由于公司Exchange環(huán)境的郵件過濾的硬件設(shè)備存在單點故障又不想再花更多的費(fèi)用去做這方面的投資,所以想通過Postfix工具實現(xiàn)一個冗余的方案。
postfix是Wietse Venema在IBM的GPL協(xié)議之下開發(fā)的MTA(郵件傳輸代理)軟件,是linux世界的一個開源的郵件傳輸代理工具,通過一些組件可以實現(xiàn)反垃圾郵件和防病毒的功能。
相關(guān)組件:
postfix+clamd+spamassassin+amavisd-new
clamd 反病毒引擎 ? ?
spamassassin 反垃圾郵件
amavisd-new是郵件代理服務(wù)器(MTA)和防毒軟件之間的中介軟件
基本原理:
第一步:postfix 接收郵件
postfix,通過25端口,接受所有的郵件,這個步驟,是很好理解。
第二步:把郵件交給amavisd-new
在Linux的郵件系統(tǒng)里,amavisd-new的非常關(guān)鍵啊。可以這樣理解,postfix,的所有額外的功能,都需要通過他才能實現(xiàn)。
從上面的這個圖片,我們就可以看到,postfix,把郵件接收下來后,交給amavisd-new,讓他想辦法,解決殺毒,垃圾郵件過濾的問題。
交給殺毒軟件
通過clamd,linux的殺毒軟件,檢查郵件是否帶病毒。
交給SpamAssassin
通過他來實現(xiàn)垃圾郵件的過濾。
第三步:amavisd-new通過10025端口還給postfix
當(dāng)所有的工作完成后,交給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
操作系統(tǒng)版本 Centos 6.3
1 配置dns vim /etc/resolv.conf
添加一個能夠解析的局域網(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)文件的原來的內(nèi)容
4 執(zhí)行以下命令使transport生效
postmap transport
5 啟動服務(wù):
6查看相關(guān)端口:
7利用powershell ?send-mailmessage測試一下發(fā)送郵件,10.7.2.53就是本臺postfix服務(wù)器:
8發(fā)現(xiàn)客戶端已經(jīng)可以收到了
二 添加相關(guān)的病毒過濾組件和反垃圾郵件組件
創(chuàng)建相關(guān)的賬戶:
添加ClamAV運(yùn)行所需的組和用戶: ??
groupadd clamav ? ?
useradd -g clamav -s /sbin/nologin -M clamav ? ?
添加配合amavisd-new使用的用戶amavis(我們這次是yum安裝默認(rèn)會創(chuàng)建) ? ?
groupadd amavis ? ?
useradd -g amavis -s /sbin/nologin -M amavis
?
本次組件的安裝為了方便主要使用yum安裝也可以使用源碼安裝。
1 安裝Clamd(版本0.98.1)
yum install clamd (yum安裝會自動創(chuàng)建clam組和賬戶這個需要后邊更改一下)
發(fā)現(xiàn)默認(rèn)的源沒有相關(guān)的軟件
我們需要將其他服務(wù)器的/etc/yum.repos.d目錄下面的源文件拷貝到這臺服務(wù)器上
到postfix服務(wù)器上查看已經(jīng)有了相關(guān)的文件,并執(zhí)行yum makecache使其生效
再次執(zhí)行yum install clamd的時候雖然有了相關(guān)組件但又發(fā)現(xiàn)了錯誤
需要更改/etc/yum.repos.d/epel.repo中的以下內(nèi)容
再運(yùn)行 yum makecache 然后再運(yùn)行yum install clamd 發(fā)現(xiàn)已經(jīng)可以安裝了
啟動服務(wù)service clamd start,會有病毒庫過期的提示:
使用freshclam更新一下病毒庫,重啟一下clamd服務(wù)已經(jīng)正常了:
修改配置文件內(nèi)容,/etc/clamd.conf 因為默認(rèn)的用戶是clam我們需要改為amavis
默認(rèn)的用戶:
修改完的用戶:
重啟服務(wù)失敗:
原來是目錄權(quán)限的問題:
修改目錄權(quán)限:
刪除/var/log/clamav目錄線面的這兩個文件:
再起重啟服務(wù),還是有問題:
目錄權(quán)限問題:
重啟服務(wù)成功:
?
修改病毒庫更新的配置文件
先檢查配置文件/etc/freshclam.conf
默認(rèn)賬戶:
更新后的賬戶
配置文件更改完以后會出現(xiàn)病毒庫更新錯誤
還是權(quán)限的問題需要修改權(quán)限至下面的截圖:
更新成功:
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
啟動服務(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將無法掃描amavisd-new產(chǎn)生的臨時文件
# 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安裝的時候會自動創(chuàng)建賬戶$daemon_group = 'amavis';#yum安裝的時候會自動創(chuàng)建組和賬戶 ??
$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"] ? ?(指定報告病毒和垃圾郵件時發(fā)送系統(tǒng)郵件的用戶身份) ??
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)的配置文件。
啟動服務(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 ? ?
#符號前面有一個空格用于連續(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)啟動:
我們將相關(guān)的服務(wù)設(shè)置為開機(jī)啟動:
?
四 相關(guān)的一些測試:
1我們先發(fā)送一份正常的郵件:
查看相關(guān)的日志,沒有檢測到病毒。郵件已經(jīng)傳送成功:
2 我們發(fā)送一份帶病毒的郵件。
查看一下日志發(fā)現(xiàn)被隔離了。
然后會產(chǎn)生一封退信:
說明病毒過濾成功了。
?
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?> // 發(fā)件人 ? ?
250 2.1.0 Ok ?
rcpt to:<xiaosong.li1@contoso.com//收件人 ? ?
250 2.1.5 Ok ?
data ? ?//郵件內(nèi)容 ? ?
354 End data with . ? //下面那行為測試內(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)了退信
整個方案測試成功
?
總結(jié)
以上是生活随笔為你收集整理的Postfix实现代理Exchange邮件传输方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 动态获取对象的属性和方法(
- 下一篇: C语言函数为什么不可以声明默认参数?