sendmail 增加阻擋黑名單的方式

No Comments »

其實自己已經改用 postfix 很久了,雖然看過很多關於 sendmail 增加黑名單或是阻擋垃圾信的方式,說實在的,自己沒有機器所以也懶得去試試看,直到自己有賺外快的機會才肯去搞定這件事,底下就是我做的方式:



首先我們會用到3個檔案,一個是 sendmail.mc、sendmail.cf、access,檔案都在 /etc/mail/ 裡面,後面的敘述就不加絕對路徑了,因為打字很累,魔獸打太多了,右手會酸…XD。

sendmail.mc 是用來產生 sendmail.cf 這個設定檔的,畢竟 sendmail.cf 真不是人看的,至少 sendmail.mc 還有一點思緒,最後的 access 是我另外加上要檔 IP 反解之後是 dynamic 的,之前一段時間 twnic 有要求各家 ISP 針對自己浮動 IP 加上反解,既然加上了反解,我們就可以針對那些自己架設 spam mail server 的人阻擋,相對的,如果你自己是用浮動 IP 去架設的話,測試如果被檔的話就不要在測啦!!,而一般公司也不可能用浮動 IP 去架 mail server,所以 access 是拿來檔浮動 IP 的。

1.先編輯 sendmail.mc 加入幾個黑名單網站,在 76 行的地方加入4行,而且不能加在最後,不然當我們在 m4 的時候會有錯誤訊息。(如果你有別的黑名單網站也可以一併加入)
FEATURE(`dnsbl’,`bl.spamcop.net’,`”550 Mail from “$&{client_addr}” rejected – see http://spamcop.net/”‘)dnl
FEATURE(`dnsbl’,`dnsbl.njabl.org’,`”550 Mail from “$&{client_addr}” rejected – see http://njabl.org/”‘)dnl
FEATURE(`dnsbl’,`cbl.abuseat.org’,`”550 Mail from “$&{client_addr}” rejected – see http://abuseat.org/”‘)dnl
FEATURE(`dnsbl’,`sbl.spamhaus.org’,`”550 Mail from “$&{client_addr}” rejected – see http://spamhaus.org/”‘)dnl

2.產生 sendmail.cf

m4 sendmail.mc > sendmail.cf.new (sendmail.cf.new 是避免蓋掉舊的 sendmail.cf)
接下來妳可以考慮直接使用 m4 出來的檔案,當然,前提是裡面的相關設定妳都已經設定好了,否則 m4 出來的檔案都是預設值,跟妳現有的 sendmail.cf 一定有差距。

不然就是用老方法,先找出 sendmail.cf.new 裡面針對黑名單的設定,總共有4段。
# DNS based IP address spam list bl.spamcop.net
R$* $: $&{client_addr}
R$-.$-.$-.$- $: <?> $(dnsbl $4.$3.$2.$1.bl.spamcop.net. $: OK $)
R<?>OK $: OKSOFAR
R<?>$+<TMP> $: TMPOK
R<?>$+ $#error $@ 5.7.1 $: “550 Mail from “$&{client_addr}” rejected – see http://spamcop.net/”

# DNS based IP address spam list dnsbl.njabl.org
R$* $: $&{client_addr}
R$-.$-.$-.$- $: <?> $(dnsbl $4.$3.$2.$1.dnsbl.njabl.org. $: OK $)
R<?>OK $: OKSOFAR
R<?>$+<TMP> $: TMPOK
R<?>$+ $#error $@ 5.7.1 $: “550 Mail from “$&{client_addr}” rejected – see http://njabl.org/”

# DNS based IP address spam list cbl.abuseat.org
R$* $: $&{client_addr}
R$-.$-.$-.$- $: <?> $(dnsbl $4.$3.$2.$1.cbl.abuseat.org. $: OK $)
R<?>OK $: OKSOFAR
R<?>$+<TMP> $: TMPOK
R<?>$+ $#error $@ 5.7.1 $: “550 Mail from “$&{client_addr}” rejected – see http://abuseat.org/”

# DNS based IP address spam list sbl.spamhaus.org
R$* $: $&{client_addr}
R$-.$-.$-.$- $: <?> $(dnsbl $4.$3.$2.$1.sbl.spamhaus.org. $: OK $)
R<?>OK $: OKSOFAR
R<?>$+<TMP> $: TMPOK
R<?>$+ $#error $@ 5.7.1 $: “550 Mail from “$&{client_addr}” rejected – see http://spamhaus.org/”
這時將這4段複製到原本的 sendmail.cf 裡面,在我的電腦是在 1 千多行,大家自己找地方放嘿,這個就不用問我了。

請大家切記阿~~~要加入到 sendmail.cf 裡面的4段,每一行都分前後2段,中間是用 tab 做間隔,如果妳直接貼上的話可是會有問題的,請記得要修改嘿,不然 sendmail 是無法啟動的。

接下來就是最後要編輯 access 啦,這個步驟可做可不做,我是覺得至少可以早一步就擋掉浮動 IP 的 spam mail server,不用還要去問上面的黑名單網站,因為黑名單網站都是以單一 IP 來阻擋。
在 access 裡面加入

*.dynamic.* REJECT

我知道我我這樣寫很偷懶啦,大家頂著先吧!!
改好之後也不用去執行 makemap hash,反正現在的 /etc/init.d/sendmail 啟動 script 都會幫妳搞定了。

Post a Comment