2008年3月14日 星期五

Microsoft SMTP Service Mini FAQ

Microsoft SMTP Service是從NT時代就有的實用服務,陽春歸陽春,拿來當作網站系統派送通知的服務綽綽有餘。這幾年下來,陸續有些處理SMTP Service的經驗,在此以FAQ的方式做個分享。

1.為什麼我的信寄不出去?
A: 寄信Client多半會要求輸入SMTP Server IP、Port Number等資料。有些人會抱怨明明就設好127.0.0.1的25 Port,使用Telent 127.0.0.1 25的方式也可以連線成功,但信就是寄不出去。
最 常見的理由是SMTP Service的Mail Relay(郵件轉寄)功能被關閉了! 由於垃圾信發送者常常會在網路上尋找支援Relay功能的SMTP主機當作發送垃圾信的跳板。近年來,基於安全理由,各家SMTP Server的預設值都會停用Mail Relay功能,所以請記得到IIS管理員中將127.0.0.1加入允許Relay的IP清單。
有個非常實用的SMTP偵測技巧是利用Telnet檢視SMTP交談中的訊息,如下所示,就可以清楚看出問題出在Relay Denied。關於Telnet 25 Port的技巧可以參考MS的這篇KB,至於如何Config SMTP Service,則可以看另一篇KB

C:\>telnet 127.0.0.1 25

220 blah.com.tw Microsoft ESMTP MAIL Service, Version: 5.0.2195.6713 ready at
Thu, 21 Jun 2007 22:14:42 +0800
helo darkthread
250 blah.com.tw Hello [10.220.1.91]
mail from: jeffrey@utopia.com
250 2.1.0 jeffrey@utopia.com....Sender OK
rcpt to: jeffrey@darkthread.net
550 5.7.1 Unable to relay for jeffrey@darkthread.net
quit
221 2.0.0 blah.com.tw Service closing transmission channel

Connection to host lost.

C:\>

2.我沒開放Relay,為什麼某些程式的信還是寄得出去?
A.前面強調過SMTP Svc必須要開放Mail Relay限制才能寄Mail出去,但有人抗議,他的SMTP Svc Mail Relay一直以來都是關閉的,信件照樣寄得嗄嗄叫!
inetpub/wwwroot 相信大家都耳熟能詳,但inetpub下還有個名不見經傳的mailroot目錄。mailroot下有幾個好玩的目錄: Badmail用來放SMTP Svc寄不出的退信、Drop是被丟棄的信、Mailbox則用來存放寄給本機使用者的信(MS SMTP Svc其實有收信功能的,只要Domain Name設對了,user@yourSmtpDomain.com的 信就會被放到這裡),Queue、Route、SortTemp都是傳送過程中暫存信件用的。如果信件卡住沒送出去,則可以在Queue中看到大排長龍。 最後的重頭戲來了,有個Pickup目錄,你只要把信組成.eml的格式寫進去,MS SMTP Svc就會幫你寄出去,效果與使用TCP 25連上127.0.0.1完全相同,但這種做法不受Relay的限制。(大概是SMTP將有權限在本機寫入檔案的Client視為合法使用者的緣故)
例如MS的CDONTS.DLL,不需要指定SMTP Svc IP & Port就可以寄信,關鍵也在於它是用Pickup目錄來交寄郵件。

3.要怎麼Trouble-Shooting SMTP Svc?
A.前面已經提示過一些技巧了,在此再做個整理:
1) 用Telnet 127.0.0.1 25的方法Debug
2) 檢查Badmail, Pickup, Queue等Mailroot下的目錄
3) SMTP Svc跟IIS一樣可以記Log,但預設是關閉的,打開後可以在windows\system32\logfiles裡找到類似IISLog的記錄檔

4.SMTP Svc使用上有沒有什麼限制?
A. 先談談效能,在我的經驗中,網站整合SMTP Svc,對寄寄通知函、定期送報表等工作向來都勝任愉快。只有當年.COM泡沬化的前夕曾打算用它來發數萬封網路行銷電子報,一次硬塞數百封Mail會讓 SMTP Svc不支倒地了... 不過,一般而言,專業電子報派發應該就近Colocation在ISP,更常見的作法是使用專門的軟體、平台派發,這種土法鍊鋼惡搞法對SMTP Svc而言本來就不太公平。
至於其他限制方面,由於SMTP Svc會查DNS,自行用25 Port連上對方的Mail Server交寄郵件,許多公司的防火牆根本不允許一般的PC連線Internet上的25 Port,要用得另外申請;另一方面,收信Mail Server也常會透過反查發信主機的DNS來過濾來路不明的SMTP Server,若SMTP Svc沒有設好DNS,也會吃閉門羮。對於這方面的困擾,我常用的一招是設定Smart Host! 設定Smart Host後,SMTP Svc就不必再拋頭露臉,所有的信都會轉交Smart Host主機,由它負責寄出。由於近來各公司都啟動了相關的垃圾信機制,因此透過公司統一的對外管道寄信問題較少。關於Smart Host的設定可以參考剛才提過的一篇KB

5.SMTP Svc有沒有什麼資安防護機制?
A.SMTP Svc可以限定接受連線的對象IP、允許Mail Relay的IP、加上SSL、TLS加密功能,還可要求使用者必須登入AD帳號後才可使用(跟IIS一樣可以選Basic、NT整合式認證等),透過這 些設定,可以減少被當成垃圾信跳板的可能。另外,先前提到的Log功能則可以作為事後追查之用,也算是資安機制的一部分吧!

[轉貼]製作萬用 WinXP Ghost 映像檔

由於公司常會有新進人員,每次為了要安裝新的作業系統、必要的應用軟體及設定使用者環境,在電腦正常的情況下總要花上四個小時左右的時間,若利用 Ghost Image 的方式,作業系統 + 軟體僅需不到二十分鍾的時間。

 但問題來了,各部門所需的硬體規格不同,所以無法使同一個 Ghost Image,難到要為每一種規格做一份 Ghost Image 嗎,那也太麻煩了。

 在網路上有提供「萬用 WinXP Ghost」的做法,但大部份的文章都有一個問題存在,就是還原後,電腦無法自動關機,僅有少數對岸的文章真正提到完美解決方案。

 聽說用 VMWare 所製作出來的 WinXP Ghost Image 相容性較高,我目前所製作的萬用 WinXP Ghost 也是從 VMWare 製作出來,除少數未知問題造成還原後會有異常狀況外,百分之九十五的電腦都可以正常還原及運作,從去年年中到現在還沒聽到這些電腦有什麼運作上的問題(除 使用者操作問題外)。

一、作業系統及軟體安裝
 首先先安裝好作業系統及所需的應用軟體,並使用 Microsoft Update 升級至最新的 Service Pack 及其他 Hotfix。

二、為 Windows XP 減肥(視需要而定)
 1. 系統檔保護
   它位於C:\WINDOWS\System32\Dllcache目錄下,我們只需在命令提示符號視窗中執行「sfc.exe /purgecache」即可將它刪除,輸入」sfc /cachesize=0」可取消自動備份功能。
 2. 清空頁面檔
   在「我的電腦」上按滑鼠右鍵,選擇「內容」,在「系統內容」中選擇 進階 > 效能 > 設定 按鈕,在「效能選項」視窗中選擇「進階」選項,按下「變更」按鈕打開「虛擬記憶體」的視窗,選擇下面的「沒有分頁檔案」選項,再按「設定」按鈕即可。重新啟動電腦後虛擬記憶體檔即被刪除。注意:當硬碟映像檔還原後,須再重設虛擬記憶體。
 3. 關閉系統還原功能
   在「系統內容」視窗中,選擇「系統還原」分頁,勾選「關閉所有磁碟上的系統還原」
 4. 其他
   我們可以刪除 help 檔、刪除不需要的輸入法、字型及不需要的應用程式,來減小 Windows XP 的大小。

三、移除不必要的驅動程式
 我們要使用對岸網友所寫的「acpi 電源管理工具」來幫我們移除不必要的驅動程式,並讓我們第一次啟動可以自訂電源管理。
 下載點:
 1. 將檔案解壓縮至 C:\sysprep 目錄中。目錄內應該有
   C:\sysprep\rmdriver.bat <- 移除不必要的驅動程式,並自動匯入acpi.reg    C:\sysprep\acpi.exe    C:\sysprep\acpi.reg    C:\sysprep\acpi\devcon.exe    C:\sysprep\acpi\XXXXXXXX.bat <- acpi 安裝程序  2. 至「裝置管理員」,將「電腦」類型,變更為「標準 PC」,也可執行 C:\sysprep\acpi.exe ,選擇「Stand PC」進行變更。
 3. 執行 rmdriver.bat 移除不必要的驅動程式。

四、建立 Sysprep.inf 自動回應檔
 由於在還原後,Windows XP 會需要要求使用者輸入一些資訊,我們可以建立一個自動回應檔,幫我們處理這些資訊。
 1. 將 Windows XP 原版光碟下的 :\SUPPORT\TOOLS\DEPLOY.CAB 複製到 C:\,使用 RAR 解壓縮,並將目錄重新命名為 C:\sysprep
 2. 執行 C:\sysprep\setupmgr.exe
 3. 選擇 Sysprep 安裝。
 4. 選擇適當的 Windows 產品。
 5. 若全程要使用自動化,請選」是,完全自動化安裝工作」,若有部份參數需使用者手動輸入,建議選擇」否,不要完全自動化安裝工作」
 6. 參數設定完成後,請將自動回應檔案」sysprep.inf」,儲存在 C:\Sysprep 下,注意不要修改這個路徑和文件名稱。

五、進行系統封裝
 1. 執行 C:\Sysprep 目錄下的」sysprep.exe」開始進行系統封裝。
 2. 跳出「系統準備工具 2.0」的視窗後,點選「確定」
 3. 若是使用 EA 大量授權序號,勾選「使用迷你安裝」即可,若是使用一般需要線上啟動的序號,則要再勾選「不重設啟用的限定期限」「不重新產生安全性識別元」,而「偵測非隨插即用的硬體」則是針對主機中有非隨插即用裝置才需勾選。
 4. 關機模式選擇「關機」
 5. 點選「重新封裝」進行封裝。
 6. 封裝完成後,系統會自動關機。

六、製作萬用 Ghost Image
 在 C 槽中的 Windows XP 已是一個經過完全重新封裝的乾淨系統,接下來使用 Ghost 進行 Image 製作。
  當我們在 Windows XP 中預先安裝所需的應用軟體後,將此 Windows XP 進行 Ghost,而產生的 Image 檔案會是相當的大,很可能會超出一張光碟 650MB 的容量,當然我們可以直接燒錄在 DVD 中,但當遇到公司的舊電腦並無 DVD-ROM 時,就英雄無用武之地了,你也許會說我們外接一個 DVD-ROM 不就好了,但要拆機殼總是比較不方便,我也很懶得拆機殼,不然用 USB 的 DVD-ROM,這是個方便的好東西,但在 DOS 模式下無法支援 USB 的 DVD-ROM,僅管目前有些主機板支援從 USB 開機,但開機後卻無法讀取 USB 的 DVD-ROM。
 所以另一個折中的方法是將 Ghost 的 Image 做分片壓縮。
 1. 輸入」ghost -split=650」執行 Ghost。
 2. 選擇」Local -> Partition -> To Image」進行 Image 製作。
 3. 壓縮方式選擇」High」,使用最大壓縮方式。
 4. 最後產生的 XXXXX.gho、XX001.ghs、XX002.ghs..... 就是 Windows XP 的萬用 Ghost。

 使用 Ghost 將 Image 做分片壓縮的好處有
 1. 將每個檔案各燒成一片 CD 即可在一般 CD-ROM 上進行分片還原。
 2. 將多個檔案燒錄在一片 DVD 中,即可直接還原,且中間不會再詢問第二片、第三片.....。

七、製作開機光碟
 我們將使用 Windows 98 的 DOS 開機系統,做為 Ghost 的執行環境,此開機環境可驅動光碟機,但不支援驅動 USB 介面的光碟機。
 Windows 98 DOS 開機 Image 下載點:
 1. 將兩個檔案(boot98se.part1.rar、boot98se.part2.rar)解壓縮後,有一個檔案為 boot98se.ima,此為 win98 SE DOS 開機 Image 檔。
 2. 使用 Nero 選擇「CD-ROM(可開機)」「DVD-ROM(可開機)」「開機資料光碟」
 3. 選擇 boot98se.ima 做為開機映像檔。

八、系統還原
 當使用 Ghost 將系統還原時,在電源管理的部份會停留在如下畫面,必須依照 CPU 類型選擇適當的電源管理,選擇錯誤會造成開關機有問題。

 預設是 Advanced Configuration and Power Interface [ ACPI ],此選項支援所有 CPU 類型。
 根據筆者的經驗依照下列說明,選擇適當的電源管理類型應該不會有問題:
 ACPI Multiprocessor PC:雙核心以上的 CPU,選擇此項目,目前大部份的 CPU 皆適用此選項。
 ACPI Uniprocessor PC:單核心的 CPU,如 Celeron 系列、單核心的 Pentium。
 Advanced Configuration and Power Interface [ ACPI ]:若都不知道是什麼樣的 CPU,就都選擇預設吧,一定沒問題。


九、補充
 1. 製作 Windows 2000 萬用 Ghost 最好使用 Windows 2000 所附的 Sysprep 1.1版。
 2. 此萬用 WinXP Ghost 適用大部份主機,除極少數主機板在還原後有異常問題。
 3. 由於在製作 Image 時是以 Intel CPU 為基礎,若還原到 AMD CPU 的主機會發生一直重開機,所以若要還原至 AMD CPU 的主機,請另外重新以 AMD CPU 為基礎來製作 Image。

原始網址:http://blog.yam.com/gavint/article/10174621


[轉貼]Windows XP遠端桌面多重登入

目前Windows XP所提供的「遠端桌面」功能,允許使用者從遠端登入,但是正在本機操作的使用者會被登出,XP目前的「遠端桌面」只允許單一帳戶登入Windows本機。

目前在網路上討論的解決方法有以下兩種

1) 更換Windows XP下的termsrv.dll元件。

2) 安裝WinConnectServerXP軟體。

第一種解決方法:更換Windows XP 下的 termsrv.dll元件

據瞭解Microsoft原本要將此功能納入SP2的更新套件中,且在SP2編號2055Beta版本中被公開的一個新特性,然而在2055以後的Beta版與正式版本中的SP2,此特性已被取消。

   2055版termsrv.dll下載點:
   1) 請先關閉「遠端桌面」功能,並確定系統已更新至SP2

2) 備份 c:\WINDOWS\system32 下的 termsrv.dll

3) 2055版本的termsrv.dll複製到 c:\WINDOWS\system32

4) 修改登錄檔

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\Licensing Core]

新增[DWORD]EnableConcurrentSessions=1

5) 重新開機,並啟動遠端桌面功能。

優點:1) 只須更換一個檔案即可。

2) 無須額外費用。

缺點:1) 只允許兩個用戶同時登入本機。

2) 同時登入的兩個用戶必須是兩個不同的帳戶。

3) 2055曾經屬於測試產品,Microsoft將其除去有可能此技術尚未成熟。

第二種解決方法:安裝WinConnectServerXP軟體

目前此套軟體可使XP允許多個使用者同時遠端連線,平穩科技有代理。

http://www.stable.com.tw/images/stories/stable/download/setup_wcs.zip?virtuemart=656b52f62603b18d9af58ba54d7d6330

優點:1) 支援XP ProXP Home版本,不一定需升級至SP2

2) 支援同一帳戶及多個用戶同時登入本機

缺點:1) 需額外費用。

2) 需額外安裝