全面理解虛擬郵件域
2024-07-21 02:37:30
供稿:網友
 
             
  介紹 
  
  如今,個人計算機擁有強大的功能,單獨的一臺可以輕易地完成幾臺服務器的任務,隨著internet和郵件系統的成功,我們不得不治理越來越多的郵件域,這里有一個在同一機器上治理幾個獨立郵件域的方法:A linux PRemiere! (首次公映???) 
                                                                                              
  
  1 基本原理 
  虛擬郵件域是一種在同一個服務器上治理 獨立的用戶列表的方法,每個虛擬域有它自己的密碼文件,自己的緩沖目錄和用戶化名文件 ,對每個虛擬郵件域,linuxconf 將建立: 
  ◆ /etc /vmail /passwd.virtual_domain 
  ◆ /etc /vmail /shadow.virtual_domain 
  ◆ /etc /vmail /aliases.virtual_domain 
  ◆ /var /spool /vmail / virtual_domain 
  ◆ /vhome /virtual_domain / 
  這里,virtual_domain是一個域名,比如foo.com 
  2 定義虛擬域對話框 
  要建立一個新的虛擬郵件域,你必須填寫一個對話 框,有關DNS和 ip alias 將在這個幫助文件的其他部分描述,在這里,我們將敘述對話框. 
  2.1 一個名字 
  你必須為域取名字,你所要做的也僅是如此. 
  2.2 Fall back destination 
  這是一個可選的域,一般來說,當一個郵件信息被發送給一個虛擬郵件域的帳戶,將會進行以下過程: 
  ◆檢查那個名字的化名,假如有一個,將信息發送給化名列表中的每一個成員,化名可以指向其他化名。 
  ◆假如沒有發現化名,則將檢查虛擬域的用戶列表,郵件被附加到符合條件的用戶文件夾中。 
  ◆假如既沒有化名也沒有,用戶適合,這個信息會被拒絕,發送者也將收到一個出錯信息。 
  假如定義了fall back 域,則郵件改為發往退回地址,退回地址可以為: 
  (1)空 
  這是默認的情況,信息被拒絕。 
  (2)another_user@another_domain 
  信息被發往另一個域中的一個特定用戶。 
  (3)@another_domain 
  信息發往在另一個域中的同一個帳戶,例如,發往: 
  unknown@this_domain將轉寄給unknown@another_domain 
  (4)account 
  信息被發往同一個域中的另一個帳戶,這個帳戶可以是一個化名。 
  2.3化名文件 
  每個虛擬域都絕對有一個化名文件叫做/etc/vmail/alias.domain,這里domain是域名,你可以定義兩個或更多,他們會被vdeliver program使用,vdeliver 絕對的擁有最高的優先權,它先在第一個里面查找,然后第二個,直到找到匹配的為止。 
  注重:和一般的sendmail的化名(/etc/alias)過程一樣,化名定義也可以指向另一個化名,郵件列表也可以如此定義。化名文件和普通的sendmail化名文件由同一個對話框維護,這樣,提供了相同的功能。 
  2.4 域名化名 
  規定幾個域指向同一個用戶群是可能的,只要需要,你可以加入很多,例如:你可以定義一個虛擬域為foo.ca,然后通過域化名注冊為foo.com,兩個域將是等效的。 
  3 開始前的注重事項 
  虛擬郵件域是你郵件服務器的普通郵件功能的補充,普通郵件域仍然在正確地治理,郵件存儲在/var/spool/mail中。因此,假如你的機器現在接受foo.com域的郵件,你又希望分開接受foo1.com和foo2.com域的郵件,你必須定義這兩個域為虛擬郵件域,foo.com域的配置沒有影響。 
  4 怎樣設置虛擬郵件域 
  下面是Step By Step的介紹: 
  4.1怎樣配置POP客戶端 
  POP的用戶端不用作任何非凡的設置(這是件好事!)我們希望把幾個郵件服務器并入同一個box中,We don't want to tell everyone about it :-) 
  4.2怎樣安裝服務器 
  閱讀郵件的技巧和訪問虛擬www是一樣的,你需要IP地址。這里有主要的設置,假設我們想建立三個虛擬郵件域:va.foo.com, vb.foo.com,vc.foo.com,你可以用相同的方法去安裝這三個獨立的服務器,每個服務器為一個單獨的郵件域。從此處直至文末我們將給出這三個服務器怎樣被合并到一個單獨的機器上。 
  4.2.1 DNS的設置 
  從DNS來看,每個域有一個郵件服務器,因此每個域的MX是: 
  ◇ va.foo.com→mailhost.va.foo.com 
  ◇ vb.foo.com→mailhost.vb.foo.com 
  ◇ vc.foo.com→mailhost.vc.foo.com 
  這是DNS所告訴世界的,也是所告訴用戶的,一般來說,va.foo.com 域的用戶從mailhost.va.foo.com接收郵件,vb.foo.com 域的用戶從mailhost.va.foo.com接收郵件,等等. 
  到目前為止,每個郵件域已經擁有了一個服務器。
                          
  4.2.2 安裝服務器 
  繼續下面的設置(真實的或虛擬的),至DNS中去為每個服務器分配IP地址,這里我使用私人IP做為例子. 大家會看到我從同一個網絡中分配IP. 
  ◇mailhost.va.foo.com→172.16.01 
  ◇mailhost.vb.foo.com→172.16.02 
  ◇mailhost.vc.foo.com→172.16.03 
  然后我們可以繼續,根據那些IP安裝3個linux服務器,tell sendmail on each one to accept one of the three domains. 
  
  4.2.3 Telling virtual 
  代替3個linux服務器,我們只安裝單獨的一個,對每個虛擬郵件域,我們必須: 
  ◇用linuxconf 來定義,這里只包括為域命名 
  ◇定義IP alias (仍然用linuxconf), 這樣機器也會回應對這個IP的查詢,這在linuxconf 的菜單“networking/IP aliases for virtual hosts”中完成。 
  ◇在/etc/inetd.conf 中安裝/usr/lib/linuxlonf/lib/vpop3d代替/usr/sbin/in/pop3d. 即使你沒有使用虛擬域,用vpop3d代替pop3d 也是一個drop. 
  IP alias 是主要的,pop協議只有通過目標的IP才能識別出請求的目標. 這就是為什么pop客戶端必須使用不同的名字(實際上是不同的IP)從不同的郵件域閱讀信息. 從他們的觀點來看,This is eXPected anyway。 
  4.2.3.1 怎樣安裝vpop3d 
  在你所使用的發行版本是用vpop3d 代替標準的pop daemon 的嗎?也許不是,不同的發行版本帶有不同的pop3d, 支持NIS, PAM和其他證實了的特性,簡易地支持所有這些的一個最好的方法是讓pop3 daemon 控主郵件域:vpop3d 僅僅治理虛擬域.To get the result, simply pass as an argument to vpop3d the path of the native pop3 daemon. 當產生一個對主域 的pop請求時,vpop3d 將把控制權交給它,下面是如何設置/etc/inetd.conf 的例子: 
  
  pop-3 stream tcp nowait root /usr/sbin/tcpd /usr/lib/linuxconf/lib/vpop3d /usr/sbin/ipop3d 
  不要取代pop3d 命令,只要簡單地插入/usr/lib/linuxconf/lib/vpop3d 即可. 這一行依發行版本的不同而有所差別. 
  5 如何檢查一個配置 
  設置虛擬域時的大多數錯誤和DNS有關,下面有一些測試讓你檢驗你的設置是否正確. 
  一個建議:使用pop客戶端不是一個強有力的測試這種配置的方法,那些程序根本不會給出任何信息,它們或是能工作或不能。 
  5.1檢查DNS 
  對每個虛擬域,你必須作一些DNS設置,我們將用va.foo.com域作例子來說明,下面是具體的步驟: 
  5.1.1 The MX 
  命令: 
  nslookup -q=mx va.foo.com 
  應該列出一些有用的信息,至少應能得到郵件服務器的名字和它的IP地址,這或是mailhost.va.foo.com或是服務器的正式名字,得到的名字不需要在va.foo.com域中,然而,它必須指向正確的物理服務器。 
  5.1.2虛擬郵件服務器 
  在DNS中必須定義mailhost.va.foo.com,這里我用mailhost.它可以是pop.va.foo.com或是其它任何名字,下面的命令: 
  nslookup mailhost.va.foo.com 
  應該列出IP地址,接下來的命令: 
  nslookup the_IP_number_you_got 
  應該顯示mailhost.va.foo.com,假如你沒能得到這個,那么你的虛擬POP服務器根本不會工作,事實上,最后,你需要對這個IP地址進行正確的反向查詢,假如在同一個DNS中,特定的反向查詢域被定義成虛擬域的話,linuxconf會神奇地完成它。 
  如你成功地完成上兩個查詢,你已完成了最艱難的部分。 
  5.1.3 有沒有服務器在監聽 
  使用下面的命令: 
  telnet mailhost.va.foo.com 
  將連接到物理服務器,這證實IP alias已正確地設置了。 
  5.1.4 有沒有虛擬POP服務器在監聽 
  用下面的命令來看vpop3d有沒有正確地安裝 
  telnet mailhost.va.foo.com pop-3 
  你應得到: 
  +OK Virtual va.foo.com POP3 Server(Version 1.004) ready 
  這里“va.foo.com”是要害,假如沒有顯示這個,說明虛擬域并沒有定義,或者/etc/inetd.conf中并沒有安裝vpop3d。 
  5.1.5快速檢測的工具 
  腳本:/usr/lib/linuxconf/lib/checkvdomain可用來檢查虛擬域的vpop3d的安裝情況,不帶參數運行它可得到更多有關它的信息。 
  腳本:/usr/lib/linuxconf/lib/testalldomain讀取/etc/named.boot中定義的所以域,然后在每個域中運行腳本checkvdomain(假設每個虛擬域都有一個虛擬郵件主機)。它將報告域的配置是否正確,這對治理員治理很多虛擬域很有幫助。 
  6 Once 操作 
  6.1 如何增加POP用戶 
  一旦一個虛擬郵件域開始正常工作,仍然需要在其中增加POP用戶,在user accounts菜單中有一項叫Virtual POP account(mail only)的選項可以進行設置,它答應你在里面選擇一個虛擬域然后增加用戶或進行修改。 
  6.2 Co_administrator 
  對每個虛擬郵件域,linuxconf都加入了一個新的特權,你可以將此特權交給任何普通用戶,他將被答應治理這個虛擬域中的用戶列表(僅僅是POP用戶),這也是完全Html界面的操作方式。
                          
  6.3 用戶怎樣改變他的密碼 
  pop only 用戶 (ppp用戶也是)的一個問題是他們沒有權限使用任何帳戶外殼程序來簡單地修改他們的密碼。linuxconf對這個問題提供了一個巧妙的解決辦法