會突然需要在命令列使用 nslookup ,是因為太多 SPAMER ,直接連接 SMTP 25 Port
而不是透過 MX Record來送信。
所以打算用 nslookup 命令列來批次查詢 Log 當中的 IP 資訊。
因為公司的 MX 指向 AntiSPAM 設備,所以透過 MX Record 寄信一定會被攔阻。
所以很多 SPAMER 就會直接寄送到 MailBox Server 的 SMTP Port。
但是 SMTP Port 又不能在防火牆上擋掉,因為同仁出差或是常駐在外的同仁會需要寄信。
此外,郵件是指名公司收件人,即便是 SMTP 設定要求帳密驗證,郵件伺服器也不會去驗證就收下來!
公司才30來人,平均一天就收到直接寄送的廣告信多達 700多封,平均每天23會收到直接的廣告信,
我也不想用 ORDB, RBL 這類黑名單服務,因為誤判率太高。
所以想要把 SMTP Log 當中的 IP 列入 Deny IP List,但是在 列入之前,先查一下這些 IP 的反解,免得不小心擋到不該擋的信。
因為找不到 nslookup 的命令行引數說明,就自己亂 try 了一下
當我打錯引數時,會顯示 nslookup 的命令列用法,
但是在 Option 的部份,卻沒有太多說明,最後試了半天,才發現它會區分英文大小寫,打錯都不行!
例如:我要用 Google Public DNS Server 來查反解
nslookup -type=PTR A.B.C.D 8.8.8.8
type字要小寫,
PTR (Record Type)要大寫,
A.B.C.D 是要查的 IP or FQDN or Domain
8.8.8.8 這個是 Google Public DNS Server 的 IP
如果要將結果輸出到檔案,必須寫成
nslookup -type=PTR > Resule.txt A.B.C.D 8.8.8.8
如果寫成
nslookup -type=PTR A.B.C.D 8.8.8.8 > Result.txt
會造成程式不斷將此指令寫入 Result.txt 無法結束。
其實最好的方法會是改變架構,讓所有 SMTP 都先經過 AntiSPAM 設備,不過我公司的 AntiSPAM 是委外的服務,並不提供 SMTP Relay,所以沒辦法改成這樣的架構。