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