虛擬主機系列 - 擋垃圾郵件的灰名單系統
作者: 鄙雕兔 日期: 2007-01-20 23:22
一. 適用系統 : Fedora Core 3, 4, 5, 6
二. 說明 :
(1) 我們的主機之前有安裝黑名單過濾系統 + Spamassassin , 但是道高一尺魔高一丈, 垃圾信的發送廠商真是太強了, 不僅能夠變換 IP 且修改郵件格式, 所以客戶每天都抱怨, "為什麼有這麼多的廣告信 !! " , 受不了的老闆只好將這個工作當作是公司內部的重點工作, 強力要求鄙雕兔即刻改善此問題, 接到這個命令後只好上網去找看看有沒有更好的方式可以擋一下垃圾信, 經過兩週的尋找後找到的一個叫作灰名單系統的東東, 這個系統主要是利用郵件主機本身的重送機制來過濾, 它的流程如下 :
<1> 將所有要送入郵件的主機送出 421, 451 的錯誤訊息
<2> 讓對方以為我們的 Mail Server 有問題, 請它等一下再重送
<3> 等第二次連線的時候再將郵件收下來
(2) 這樣的流程主要是要防止以下幾種的信件送入 :
<1> 單機上的發信軟體 : 因為一般的發信軟體會採用 Relay 主機或者是自行連線的方式發送廣告信, 但是若遇到主機有錯誤時, 它會直接放棄且不會重送, 當然若是它會有記憶且重送的話那就會將該信件送入我們的主機中.
<2> 被入侵的僵屍電腦 : 因為被遙控的僵屍電腦會被當作垃圾信的發信台, 或者是自行發送入侵信件給其它人, 它若是遇到無法送出信件時也會放棄且不會重送
<3> 被病毒或者木馬感染的電腦 : 這些電腦會一直發送郵件給其它人, 或者是通訊錄上的用戶, 所以若你的客戶或者朋友有人中毒或者中木馬的時候, 那主機就會一直收到該電腦一直發出的感染信件, 若是遇到主機有問題時, 它也會直接放棄且不會重送
<4> 被當作 Relay 的 Mail Server : 通常這種情況是主機本身已經被入侵及接管, 被 hacker 當作是發送信件的主機, 上面會被植入發信的小程式, 該程式會發送釣魚信件或者是木馬信件, 它若是遇到主機有錯誤時, 它會直接放棄且不會重送
<5> 被入侵的網站程式 : 這部份通常是因為網站的程式被破解, 或者是被駭客找到程式的漏動, 直接利用該漏動或者是網頁程式發送出垃圾信件, 或者是釣魚信件, 這種情況遇到主機有錯誤時, 它也會直接放棄不會重送, 但若是程式是採用一個 MTA 主機發送的話, 那該信件會再重新送入
(3) 灰名單系統設定步驟及方法 :
<1> 請用 yum 或者 apt-get 安裝所需要的 RPM 套件, 目前在 Fedora Core 3,4,5,6 上面安裝都沒有問題, 安裝的指令如下 :
apt-get install milter-greylist
或者是
yum install milter-greylist
---------------------------------------------------------------------
<2> 安裝完所需要的套後需要修改 sendmail.cf 的設定, 若是採用 Fedora 的 Linux 時請修改 /etc/mail/sendmail.mc 將以下的東東加進去 :
==== 上面的設定省略 ====
:
OSTYPE(`linux')dnl # 找到這一行 將以下的設定加進去
INPUT_MAIL_FILTER(`greylist',`S=local:/var/lib/milter-greylist/run/milter-greylist.sock')
define(`confMILTER_MACROS_CONNECT', `j, {if_addr}')
define(`confMILTER_MACROS_HELO', `{verify}, {cert_subject}')
define(`confMILTER_MACROS_ENVFROM', `i, {auth_authen}')
:
==== 下面的設定省略 ====
說明 :
有標紅字的那段在不同的系統上面路徑不同
core 3 是在 : /var/lib/milter-greylist/run/milger-greylist.sock
core 4 是在 : /var/lib/milter-greylist/run/milter-greylist.sock
core 5 是在 : /var/run/milter-greylist/milter-greylist.sock
core 6 是在 : /var/run/milter-greylist/milter-greylist.sock
所以在安裝完 RPM 套件後, 請打開 /etc/mail/greylist.conf 中查看一下 sock 的設定位置為何, 修改後再存入
<3> 改完 sendmail.mc 後請用以下指令產生所需要的 sendmail.cf
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
<4> 修改完成後請重新啟動 sendmail
---------------------------------------------------------------------
<3> 修改 /etc/mail/greylist.conf 設定一些需要的白名單及參數
# How long does a client has to wait before we accept
# the messages it retries to send. Here, 1 hour.
greylist 5m
# 請修改上面這個設定, 改成 5m 這個是主機退信後所接受的重送時間, 若你不想要這麼快收到該信件的話可以設定為 1h(1 小時), 1d(1天)
# How long does auto-whitelisting lasts (set it to 0
# to disable auto-whitelisting). Here, 3 days
autowhite 10d
# 請修改上面這個設定, 改成 10d 這是讓主機自動學習白名單, 也就是若有人送信進來, 第一次會延遲, 等到記到該 list 之後就可以不延遲的將信送入
# You can specify a file where milter-greylist will
# store its PID
pidfile "/var/run/milter-greylist.pid"
# 請將以上的 # 拿掉
# The socket used to communicate with Sendmail can
# be specified in this file:
socket "/var/lib/milter-greylist/run/milter-greylist.sock"
# The dumpfile location
dumpfile "/var/lib/milter-greylist/db/greylist.db"
# 請將以上的 # 拿掉, 這樣你就可以看 greylist.db 的檔案裏有那些 IP , e-mail 被紀錄下來
# 以下是將我們公司的 IP 及常用的臺灣網站加入到 greylist.conf 的最後面, 這樣這些網站寄來的信就不會被延遲囉
#A-Team IP Scope
addr 211.72.195.208
addr 211.72.195.209
addr 211.72.196.210
addr 211.72.195.223
addr 211.72.195.224
addr 211.72.195.225
from /.*@gmail\.com/
from /.*@aseglobal\.com/
from /.*@jobnet\.com\.tw/
from /.*@gcjobnet\.com/
from /.*@firewall3\.jobnet\.com\.tw/
from /.*@hotmail\.com/
from /.*@pchome\.com\.tw/
from /.*@104\.com\.tw/
from /.*@ebay\.com/
from /.*@*\.payeasy\.com\.tw/
from /.*@ymx\.cnyes\.com/
from /.*@mail\.trtc\.com\.tw/
from /.*@*\.1111\.com\.tw/
from /.*@msn\.com/
from /.*@msn\.com\.tw/
修改完成後記得將 milter-greylist 的服務重新啟動
說明 :
若是採用 core 5 或者 core6 的系統時需要在 addr 及 from 的前面加上 acl whitelist , 也就是要將白名單設定為以下所示 :
#A-Team IP Scope
acl whitelist addr 211.72.195.208
acl whitelist from /.*@gmail\.com/
這個改變可能是因為版本的不同所造成的, 還有其它針對 domain 及 收件人的設定部份請參考 greylist.conf 中的說明
---------------------------------------------------------------------
(4) 如何確認這個服務及系統有再運作, 請查看 /var/log/maillog 的郵件紀錄, 若是你設定和我一樣 5m 的延遲的話, 那你就會看到以下的 Log :
reject=451 4.7.1 Greylisting in action, please come back in 00:05:00
若是有的話那就恭喜你, 安裝成功囉 !!
---------------------------------------------------------------------
(5) 灰名單安裝完成後, 你會發現垃圾信少了很多很多, 每天不會收到幾十封或者幾百封的信件, 當然用戶也會很滿意, 不過從安裝後到現在, 每天都收不到廣告信, 老實說, 鄙雕兔還蠻懷念那些廣告信的 ^_^
連結: http://helenmccrory.org
摘要: 擋垃圾郵件的灰名單系統 -- 鄙雕兔