2008年9月5日 星期五

郵件伺服器Part-補:Postgrey

之前郵件伺服器全系列中漏發了Postgrey

系統使用CentOS 5.1 郵件伺服器全系列:Postfix+Dovecot+SASL+Procmail+Postgrey+Mailscanner+Spamassassin+ClamAV+Mailscanner-mrtg+MailWatch+Openwebmail+MySPAM
Postgrey就是所謂的灰名單功能,利用垃圾郵件主機大多是"射後不理"的特性,拒絕第一次的連線,待正常郵件伺服器進行再嘗試時,才允許連線並加入白名單。 1.安裝Postgrey
yum install postgrey
2.啟動 postgrey
service postgrey start chkconfig postgrey on
3.設定 postgrey for postfix 第一種設定方式
vim /etc/postfix/main.cf
smtpd_recipient_restrictions = permit_mynetworks, check_policy_service unix:/var/spool/postfix/postgrey/socket, reject_unauth_destination
第二種設定方式
a.vim /etc/sysconfig/postgrey
OPTIONS="--inet=127.0.0.1:10023 --delay=60"
b.vim /etc/postfix/main.cf
smtpd_recipient_restrictions = permit_mynetworks check_policy_service inet:127.0.0.1:10023 reject_unauth_destination
備註: ◎白名單
vim /etc/postfix/postgrey_whitelist_clients
vim /etc/postfix/postgrey_whitelist_recipients
◎清除記錄
rm /var/spool/postfix/postgrey/*

53 意見:

匿名 提到...

請問mis先生
我們公司也是CentOS 5.1系統上裝postfix
最近反應垃圾郵件太多
請問有啥最簡易的方式可以解決嗎
因客戶往來信件滿多 希望不要擋到太多客戶信件
因小弟剛接觸postfix 盡請見諒 謝謝

Yow 提到...

試過POSTGREY了嗎?
很有效的~

匿名 提到...

是按照您上敘的方式就好了嗎
設定方式只需一二種擇一嗎
那白名單該如果設定呢
不好意思 麻煩您了

匿名 提到...

安裝時出現
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
Reading repository metadata in from local files
Parsing package install arguments
Nothing to do

啟動時出現
postgrey: 服務未能辨識

是安裝哪裡有出現出誤嗎

Yow 提到...

因為你還沒裝進去~
用YUM安裝POSTGREY需要rpmforge的站台,請參閱
http://i-yow.blogspot.com/2008/07/rpmforgedag-httpdag.html

設定方法擇一即可

白名單設定在
vim /etc/postfix/postgrey_whitelist_clients
在文件入設定DOMAIN NAME即可

匿名 提到...

不好意思 CentOS 5是屬於Red Hat Linux 9 / i386版本嗎
因為我安裝還是有錯誤訊息
打擾了 拍謝

匿名 提到...

安裝時出現
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
rpmforge 100% |=========================| 1.1 kB 00:00
base 100% |=========================| 1.1 kB 00:00
updates 100% |=========================| 951 B 00:00
addons 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for postgrey to pack into transaction set.
postgrey-1.32-1.rh9.rf.no 100% |=========================| 5.1 kB 00:00
http://ftp-stud.fht-esslingen.de/dag/redhat/9/en/i386/rpmforge/RPMS/postgrey-1.32-1.rh9.rf.noarch.rpm: [Errno -1] Header does not match intended download
Trying other mirror.
postgrey-1.32-1.rh9.rf.no 100% |=========================| 5.1 kB 00:00
http://apt.sw.be/redhat/9/en/i386/rpmforge/RPMS/postgrey-1.32-1.rh9.rf.noarch.rpm: [Errno -1] Header does not match intended download
Trying other mirror.
postgrey-1.32-1.rh9.rf.no 100% |=========================| 5.1 kB 00:00
http://fr2.rpmfind.net/linux/dag/redhat/9/en/i386/rpmforge/RPMS/postgrey-1.32-1.rh9.rf.noarch.rpm: [Errno -1] Header does not match intended download
Trying other mirror.
Error: failure: RPMS/postgrey-1.32-1.rh9.rf.noarch.rpm from rpmforge: [Errno 256] No more mirrors to try.

還是無法安裝成功= =

Yow 提到...

CENTOS是相容於RHEL的
請安裝
rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

Yow 提到...

記得先移除裝錯的rpmforge

rpm -e rpmforge-release

匿名 提到...

感謝 mis先生的指導
已經安裝成功postgrey
設定 postgrey for postfix照第一種設定方式是否只需加入紅色字串
加入後是否需重啟postfix

Yow 提到...

對~加入紅色字串
增加POSTGREY的驗證即可
需重新啟動

匿名 提到...

不好意思
沒找到跟您教學一樣的地方
只找到類似如下
smtpd_sasl_auth_enable = yes
smtpd_delay_reject=yes
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated permit_auth_destination reject
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
mailbox_size_limit = 0
messages_size_limit = 20000000
我應該加在哪裡呢
拍謝 浪費您那麼多寶貴時間

Yow 提到...

放在smtpd_recipient_restrictions裡的
permit_mynetworks後
需注意POSTFIX的設定格式
[每個驗證項目前需空格,最後一項不加","]
可參閱
http://i-yow.blogspot.com/2008/07/part-1postfixdovecotsaslprocmail.html

Yow 提到...

將設定是改成--->
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
check_policy_service unix:/var/spool/postfix/postgrey/socket,
permit_auth_destination,
reject_unauth_destination

注意","跟"空格"

匿名 提到...

不好意思 mis大大
我修改為
smtpd_sasl_auth_enable = yes
smtpd_delay_reject=yes
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
check_policy_service unix:/var/spool/postfix/postgrey/socket,
permit_auth_destination,
reject_unauth_destinatio
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
mailbox_size_limit = 0
messages_size_limit = 20000000
後/etc/init.d/postfix restart都失敗且用webmin 連上postfix組態後出現
當檢查目前Postfix組態設定時發生錯誤,請手動修復Postfix組態設定。

postfix: fatal: /etc/postfix/main.cf, line 666: missing '=' after attribute name: "permit_mynetworks,"

Yow 提到...

permit_mynetworks,
permit_sasl_authenticated,
check_policy_service unix:/var/spool/postfix/postgrey/socket,
permit_auth_destination,
reject_unauth_destinatio

這幾行設定前需要空格,不換行也可以,但每項前一定要有空格區分

Yow 提到...

main.cf的666行是 smtpd_recipient_restrictions = 吧?

匿名 提到...

smtpd_sasl_auth_enable = yes
smtpd_delay_reject=yes
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
check_policy_service unix:/var/spool/postfix/postgrey/socket,
permit_auth_destination,
reject_unauth_destinatio
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
mailbox_size_limit = 0
messages_size_limit = 20000000
我把他改成上敘 可是變成使用者無法收發了@@

匿名 提到...

smtpd_sasl_auth_enable = yes
smtpd_delay_reject=yes
smtpd_recipient_restrictions =
□permit_mynetworks,
□permit_sasl_authenticated,
□check_policy_service unix:/var/spool/postfix/postgrey/socket,
□permit_auth_destination,
□reject_unauth_destinatio
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
mailbox_size_limit = 0
messages_size_limit = 20000000
空格用□代替

Yow 提到...

使用者收發的設定是smtpd_client_restrictions
把這個部分移到smtpd_recipient_restrictions之前試試看

mynetworks的區域 跟 SASL 的設定有正確嗎?

可以試著把permit_mynetworks以外的設定拿掉試試,看是被哪項驗證擋住?

匿名 提到...

感謝MIS大大
我已改成
smtpd_recipient_restrictions =
空格permit_sasl_authenticated,
空格permit_mynetworks,
空格reject_unauth_destination,
空格check_policy_service unix:/var/spool/postfix/postgrey/socket
目前可正常收發
請問該怎麼測試是否有在過濾垃圾郵件呢

Yow 提到...

如果是要看PostGrey有沒有在運作,可以查看maillog裡,有沒有
postgrey[xxxxx]: action=greylist, reason=new
之類的訊息
如果要達到更完善的過濾,建議可配合MailScanner,
http://i-yow.blogspot.com/2008/07/part-2mailscannerclamavspamassassin.html

匿名 提到...

謝謝mis這幾天的耐心指導與建議
我想先讓postgrey試跑幾天看看
然後視情況再考慮MailScanner

Yow 提到...

不客氣~

匿名 提到...

不好意思!mis大大剛剛有發現有些信件的主旨有標示**SPAM**不知是什麼意思

Yow 提到...

 主旨有標示**SPAM**跟postgrey沒有關係~
 postgrey做的就是收下來跟拒絕而已,不會做其他的標記動作。
 如果你沒有裝其他的SPAM過濾套件,有可能是寄件方伺服器過濾的標記,或是在RELAY過程中被過濾的。

匿名 提到...

感謝mis大大的細心教導
目前垃圾郵件已阻擋八九成了
再請問一下如要郵件防毒需用什麼

Yow 提到...

建議使用MailScanner配合ClamAV,
MailScanner可以針對附件(郵件病毒最常存在的方式)的檔案類型進行過濾;
ClamAV可以對郵件進行掃毒。

匿名 提到...

不好意思mis大大 是照您這篇操作嗎
http://i-yow.blogspot.com/2008/07/part-2mailscannerclamavspamassassin.html

SpamAssassin也需安裝嗎

Yow 提到...

有裝有保庇~ XD
有裝SpamAssassin可以多一種過濾的功能
不裝也是可以啦~ 只是我沒這樣試過,應該是把MailScanner裡啟動SpamAssassin的設定拿掉就好

匿名 提到...

MIS大大不好意思再請問一下
最近外部mail有些會晚很久才收到信
且已把對方加入白名單
請問有什麼原因會變成這樣呢

Yow 提到...

是已經加入白名單的嗎?
只有第一次寄送會比較久,等待的時間需看對方伺服器重送的設定,有些伺服器重送的時間較長。
等第一次驗證通過後就能正常接收了~

可以檢查看看郵件的HEADER,看看實際傳送的時間。

匿名 提到...

MIS大大 之前用Postgrey擋垃圾信效果還不錯
但用段時間後有點問題
就把它移除了 但要再重新安裝
好像都不會成功
請問如何完整移除Postgrey呢 謝謝

Yow 提到...

是使用 yum remove postgrey 移除嗎?
再安裝時會發生什麼錯誤?

之前使用一段時間是發生什麼情況?

匿名 提到...

請問mis大大
目前遇到一個情況
有時外部信箱同時寄給內部a.b.c三人
a.b過不久就會收到信
c卻過一兩個小時已上才收到
c其他信也都正常收發
外部信箱網域也有加到白名單
不知是哪裡出現了問題 該如何檢查

Yow 提到...

檢查看看 maillog 在收到來信時出現什麼訊息? /var/log/maillog

或是可以取得寄信方的LOG?

匿名 提到...

請問mis大大
最近有一位同仁在公司內部nb收發e-mail都無問題
在外部用3G無線上網只能收不能發
一發就出現未傳遞的主旨: XXX
450 4.2.0 : Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/kuangying.com.html

Yow 提到...

試試看把3G網路的網段加到postgrey的白名單中,或是使用3G網路ISP所提供的SMTP Server,例如:msa.hinet.net

匿名 提到...

請問如何知道postgrey的白名單是否有作用
也有重啟Postgrey
因為已將3G網路的SMTP加入白名單測試後還是一樣被退信
之前已加的白名單的網域也會發生相同訊息
只是對方的主機會再延遲後重寄

Yow 提到...

有在白名單內的時候,收到信時maillog李會有這種紀錄:

postgrey[2508]: action=pass, reason=client whitelist, ........

匿名 提到...

maillog有
但已加入白名單的mail還是會出現下列訊息
mail postgrey[29961]: action=greylist, reason=new, client_name=unknown

Yow 提到...

試試看加在這個白名單
/etc/postfix/postgrey_whitelist_recipients

匿名 提到...

請問我安裝時出現
Error: Missing Dependency: perl(Digest::HMAC_MD5) is needed by package perl-Net-DNS

Yow 提到...

先執行
yum install perl-Net-DNS
安裝perl-Net-DNS

匿名 提到...

執行yum install perl-Net-DNS後
也出現Error: Missing Dependency: perl(Digest::HMAC_MD5) is needed by package perl-Net-DNS的訊息

Yow 提到...

先檢查一下YUM的站台設定
http://i-yow.blogspot.com/2008/08/yum-yumupdate-rootmsg-yum-y-update.html

http://i-yow.blogspot.com/2008/07/rpmforgedag-httpdag.html

匿名 提到...

請問我執行了rm /var/spool/postfix/postgrey/*在postgrey資料夾裡的所有資料都被刪除了,那麼postgrey這隻程式還有用嗎?還是我需要從建postgrey裡的所有資料?

Yow 提到...

一般我清除記錄後都會執行
service postgrey restart

匿名 提到...

請問MIS大大
竟然有白名單那有辦法使用黑名單嗎?

Yow 提到...

黑名單可以直接在POSTFIX裡設定
/etc/postfix/access

匿名 提到...

msi大大請問/etc/postfix/access
該如何設黑名單
謝謝

Gilbert 提到...

Mr. MIS
請教一下 postfix 的 main.cf 中
smtpd_recipient_restrictions 與
smtpd_client_restrictions 有何不同??

Yow 提到...

驗證的時機不同
smtpd_client_restrictions
是在client要求連線時

smtpd_recipient_restrictions
是在送信發出 RCPT TO 要求時

##EasyReadMore##