FreeBSD kernel 編譯大法(三)編kernel失敗的處理
2024-07-26 00:29:12
供稿:網友
第一課、安裝OpenBSD 2.8
如果您的電腦不支持光盤啟動,請首先在DOS下進行以下的步驟,制作啟動軟盤,然后從軟盤
啟動電腦。(其中e:是光盤所在盤符)
e:/2.8/tools/fdimage e:/2.8/i386/floppy28.fs a:
如果您的電腦支持光盤啟動,直接從光盤啟動后,按照提示一步一步完成安裝,以下是安裝
過程的簡略描述:
第一節、建立分區
啟動電腦直到出現以下的提示:
(I)nstall, (U)pgrade or (S)hell?
其中(I)代表安裝一個全新的系統,(U)代表升級原有的OpenBSD舊版本,(S)代表退出到命令行狀態。
我們要安裝一個全新的系統,所以輸入I并回車。
在一屏歡迎辭之后,系統詢問使用什么終端類型:
Specify terminal type [pcvt25]:
不用理會它,直接回車,繼續以后的步驟。系統將檢測到可用的硬盤,并詢問對那個硬盤進行處理:
Available disks are:
wd0
Which disk is the root disk? [wd0]
上面的提示表明,電腦只有一個IDE硬盤,如果是SCSI硬盤,將顯示成sd0。因為系統只有一個硬盤,
所以安裝程序已經幫我們選擇了硬盤,如果系統有多個硬盤,那就必須輸入硬盤的名稱,如wd1?,F
在直接回車進入下一步。
系統詢問是否把整個硬盤給OpenBSD使用:
Do you want to use the *entire* disk for OpenBSD? [no]
默認是no,不過手冊是要做服務器,所以輸入yes并回車吧!不過首先要確認這個硬盤上面沒有重要
的數據?。?nbsp;
現在系統會進入fdisk(一個分區程序,輸入?并回車可以獲得使用幫助)。首先用d命令刪除原有的
分區(注意,c分區被OpenBSD系統保留使用,不能夠刪除或變更),然后用a命令新建分區,您將得
到和下面類似的信息:
offset: [xxxxxx]
size: [xxxxxxxxxx]
Rounding to nearest cylinder: xxxxxxxx
FS type: [4.2BSD]
mount point: [none]
其中,offset是指每一個分區的偏移地址。不用理會,直接回車即可,系統會自動處理。size是分區
的大小,括號里面是剩余的可用磁盤空間大小??梢灾苯佑?0m這樣的輸入來表示分區的大小為80Mb。
Rounding to nearest cylinder由系統返回,是轉換成柱頭數,不必理會。FS type是文件系統類型,
只有4.2BSD和swap兩個可選項。默認情況下,b分區會使用swap選項。swap分區建議大小為內存大小
的2倍。mount point相當于DOS系統的目錄,系統必須有且只有一個根目錄“/”,swap分區無需
mount point。
可以簡單的把swap分區以外的全部磁盤空間定義為“/”,但是不建議這么做,因為一旦磁盤出現問題,
就難于根據分區進行修復了。如果您有一個15Gb的硬盤,并且有128Mb的內存,那么建議劃分如下:
a 80m 4.2BSD / ;根目錄
b 300m swap ;交換分區
d 80m 4.2BSD /tmp ;臨時文件目錄
e 800m 4.2BSD /usr ;應用程序目錄
f 2000m 4.2BSD /var ;應用數據目錄
g 剩余空間 4.2BSD /home ;用戶目錄
如果安裝MySQL數據庫服務,且要求方便管理的話,那么可以把/var/mysql單獨出來一個分區(會在后
面提及)。
劃分好分區之后用w命令保存分區信息,q命令退出fdisk程序。
The following partitions will be used for the root filesystem and swap:
wd0a /
wd0b swap
Mount point for wd0d (size=98967k) [/tmp, RET, none, or done]?
系統會再次確認目錄分配,可以給粗心大意的人一個修正的機會,如果確定沒有錯誤的話,輸入done并
回車即可。
系統會提示是否對其他硬盤進行處理,如果沒有其他硬盤或者不需要處理,輸入done并回車繼續下一個
步驟,如果配置其他硬盤,按照上面的步驟進行即可。注意千萬不要對已經配置過的硬盤進行再配置。
系統詢問是否進行格式化:
The next step will overwrite any existing data on:
wd0a wd0d wd0e wd0f wd0g
Are you really sure that you're ready to PRoceed? [n]
當然輸入y并回車了,做了這么多,難道不繼續嗎?
第二節、配置網絡
經過硬盤格式化之后,系統將詢問是否配置網絡:
Configure the network [y]
既然是做服務器,當然要網絡支持的,回車開始配置網絡。
Enter system hostname (short form): []
Enter DNS domain name: []
輸入hostname(主機名)和domain name(域名),如果有合法的國際域名的話,就使用國際域名。先假
設hostname為moo,domain name為01tech.nat(避免和國際域名沖突)。
系統提示配置網卡,手冊例子使用的是DE-530TX 10/100Mbps自適應網卡,在OpenBSD下面的設備名為vr0,
如果是NE2000兼容網卡,可能顯示為ne0,系統會自動檢測并列出來:
You may configure the following network interfaces (the interfaces
marked with [X] have been succesfully configured):
[ ] vr0
Configure which interface? (or, enter 'done') [vr0]
在本例中,系統只有一個網卡,且已經選定,直接回車開始配置,如果沒有選定,請輸入設備名并回車
進行配置。
ip address (or 'dhcp') ? []
Symbolic (host) name? [moo]
Netmask ? [255.255.255.0]
在IP address中輸入dhcp并回車將會使用動態分配的IP地址,作為服務器應該有固定的IP地址,所以這
里應該輸入192.168.32.1并回車(關于IP地址和掩碼的知識請參考其他文章)。Symbolic (host) name其
實就是hostname啦!系統會自動使用剛才輸入的hostname,直接回車就可以了。Netmask(掩碼)默認
是255.255.255.0,就用這個吧,回車繼續。
Your use of the network interface may require non-default
media directives. The default media is:
media: Ethernet autoselect (100baseTX full-duplex)
This is a list of supported media:
media autoselect
media 100baseTX mediaopt full-duplex
media 100baseTX
media 10baseT mediaopt full-duplex
media 10baseT
If the default is not satisfactory, and you wish to use another
media, copy that line from above (e.g. "media 100baseTX")
Media directives? []
別看這么多信息,其實就做一個事,選擇網卡的接入網絡方式,最簡單的方式就是選擇media autoselect
并回車。
系統會詢問是否配置其他的網卡,如果系統只有一個網卡的話,會自動選定done,只需要回車即可進入下
一個步驟。其他網卡的配置象上面一樣配置就可以了。
Enter IP address of default route: [none]
Enter IP address of primary nameserver: [none]
Would you like to use the nameserver now? [y]
路由route不需要輸入,除非要鏈接到不同域的機器。因為要在這臺服務器上提供域名解釋服務,所以
nameserver就指向自己吧,也就是輸入192.168.32.1就可以了。至于是否現在啟動nameserver就沒所謂了。
回車繼續。
第三節、設置管理員口令
Please enter the initial passWord that the root account will have.
系統要求輸入管理員口令,并確認一次,千萬要記住啊,不然電腦重新啟動之后進入不了系統進行管理。
這里假設口令為123456,在實際的應用中千萬不要使用這樣的口令,而應該采用字母、字符和數字混合
的口令。
第四節、安裝應用程序
然后安裝程序詢問是否會運行X Window:
Do you expect to run the X Window System? [y]
當然不會,輸入n并回車繼續下一步。選擇安裝媒體介質。
Install from (f)tp, (h)ttp, (t)ape, (C)D-ROM, (N)FS or local (d)isk?
有多種方式安裝系統,我們只選擇(C),通過CD-ROM安裝。
The following CD-ROM devices are installed on your system;
please make
sure the CD is in the CD-ROM drive and select the device containing
the CD with the installation sets:
cd0
Which CD-ROM contains the installation media? [cd0]
系統將檢測可用的CD-ROM,并給予選定,這里是只有一個CD-ROM的狀態,如果多于一個CD-ROM的狀況,
請選擇正確的放有安裝光盤的CD-ROM,否則安裝程序會Halt在那里,無法繼續。
Enter the directory relative to the mount point that
contains the file. [/2.8/i386]
確認安裝文件所在目錄,如果您使用01TECH上面提供的光盤,回車確認即可。
The following sets are available for extraction.
Enter filename, `list', `all', or `done'.
You may de-select a set by prepending a '-' to its name.
[X] base28.tgz
[X] etc28.tgz
[ ] misc28.tgz
[ ] comp28.tgz
[X] man28.tgz
[ ] game28.tgz
[ ] xbase28.tgz
[ ] xshare28.tgz
[ ] xfont28.tgz
[ ] xserv28.tgz
[X] bsd
File name? []
因為安裝服務器,我們只需要上面已經打“X”的的程序包,另外,因為有部分程序必須由源程序編譯
獲得,所以必須選擇comp28.tgz。也就是說要有base28.tgz、etc28.tgz、comp28.tgz、man28.tgz以
及bsd。
確認這五個項前面都打“X”后,輸入done并回車,詢問:
Ready to extract selected file sets? [y]
當然要解包,這個問題實在有點弱智?。?nbsp;
Extract more sets? [n]
嗯?上帝說,再給你一個懺悔的機會?別管他,回車繼續吧!
第五節、設定時區
然后就是選擇時區:
What timezone are you in? [`?' for list] [GMT]
可以用?查看一下有什么可以選擇的時區,不過確定沒有北京時間,選香港的吧,輸入Hongkong并回車。
系統一番自動處理之后,終于出現了命令行模式的提示符“#”。恭喜,OpenBSD 2.8到此安裝完畢。
輸入reboot回車,重新啟動電腦吧!記住改為硬盤啟動??!現在可以歇一歇了。
重新啟動電腦之后,用root作為用戶名,123456作為密碼就可以登錄您的OpenBSD 2.8系統了。
第二課、設置域名解釋服務
首先解釋一下域名服務(DNS-Domain Name Server)的作用。其實,鏈接到網絡的電腦,只需要知
道IP地址就可以實現訪問。但是誰會去記住129.128.5.191這個IP地址是代表OpenBSD的服務器呢?當然
是www.openbsd.org容易記憶得多了。域名服務所實現的作用,就是把www.openbsd.org這樣的名字轉換
成電腦可以識別的129.128.5.191這樣的IP地址。
所以域名解釋服務應當包含兩種轉換過程:從名字到IP地址(正向解釋);從IP地址到名字(反向
解釋)。理解了這些基本感念,配置域名解釋服務得時候就會比較容易了。
第一節、設置named.boot文件
OpenBSD 2.8系統在安裝完成后就已經有域名解釋服務程序named 4.9.7-REL,只是需要人工設定啟
動。named的配置文件在/var/named目錄里面,文件名是named.boot。一個簡單的,可以使用的(當然是
和手冊的例子聯系起來啦?。┑膎amed.boot的文件內容如下:
directory /namedb
cache . root.cache
primary 0.0.127.IN-ADDR.ARPA localhost.rev
primary 32.168.192.IN-ADDR.ARPA 01tech.rev
primary 01tech.nat 01tech
可以用vi工具來編輯這個文件(vi的使用方法請參考『附錄4』)。解釋一下這個文件各行的含義:
第一行用于指定域名解釋文件所在目錄,其實真正的域名解釋文件是放在/var/named/namedb目錄里
面,因為我們將采用chroot的方式(執行程序的時候切換到程序需要的用戶,并以改用戶的根目錄作為
根目錄的方式)執行named,所以這里是/namedb。
第二行指定了緩存文件,對于曾經訪問過的域名,將會記錄在緩存文件里面,以后查詢的時候就會
快很多。緩存文件的文件名是root.cache。
第三行指定了對于本機的域名反解文件。0.0.127.IN-ADDR.ARPA的寫法其實就是說要反過來求
127.0.0.x(x的范圍是1~255)的對應名稱。相關的解釋文件是localhost.rev
第四行和第三行同理,就是要求192.168.32.x的對應名稱。相關的解釋文件是01tech.rev
第五行是正解,指定凡是域名為01tech.nat的名稱都交給01tech文件進行解釋。
第二節、配置域名解釋文件
然后,我們看看/var/namedb目錄里面的文件的內容,在系統沒有配置域名解釋服務的時候,默認
只有兩個文件:localhost.rev和root.cache,其中的localhost.rev并非我們需要的內容,要自行改寫,
改寫后的內容如下:
@ IN SOA moo.01tech.nat. root.moo.01tech.nat. (
14 ;Serial
3600 ;Refresh
900 ;Retry
3600000 ;Expire
3600) ;Minimum
IN NS moo.01tech.nat.
1 IN PTR localhost.
解釋一下這個文件的構成吧!其實這個文件由三個RR(Resource record)構成,或者我們用表格的
方式來分析,會比較容易理解吧:
[ name ] [ ttl ] [ class ] type data
@ 省略 IN SOA ……
省略 省略 IN NS ……
1 省略 IN PTR ……
Name必須為主機名或者域名,當使用@時代表縮寫,就是和named.boot文件中指定的一樣,在這里就代
表127.0.0.x了。
ttl是指此條數據的有效保存期限,通常都忽略掉,采用默認的ttl值。
class指定網絡類型,IN代表Internet,基本上都不會使用別的類型。
type常見的有SOA、NS、A、PTR、MX、CNAME等。
SOA(Start Of Authority)后面跟負責這個域的主機,管理員郵箱,序列號,副解釋域更新間隔,副解
釋域更新失敗重試間隔,主解釋域失敗時副解釋域提供數據的有效期限,其他域名解釋服務器保留本域
名解釋服務器的時間。需要注意的是,在主機和管理員郵箱后一定不能缺少“.”否則系統會自動加上
完整的域名,例如只寫moo的話,系統會添加為moo.01tech.nat。所以也可以簡單的把SOA語句寫
作SOA moo root.moo (……)。
NS(Name Server)后面跟指定的提供域名解釋服務的主機名
PTR(Pointer)后面是對應于前面IP地址的名稱。
A(Address)后面是對應于前面的名稱的IP地址。需要注意正解的A和反解的PTR的記錄必須相符,否則會
造成DNS查詢不正常,系統變慢。
CNAME用于建立別名,這樣訪問別名的時候,就會轉為訪問正式的名稱。
MX記錄的是一串目的地址列表,用于告訴郵件服務器傳送信件的優先順序。
對于A、CNAME、MX的使用方法將會在后面的正解文件中看到,以后將不再作出解釋。
01tech.rev的文件內容和localhost.rev文件基本相同,如下:
@ IN SOA moo.01tech.nat. root.moo.01tech.nat. (
14 ;Serial
3600 ;Refresh
900 ;Retry
3600000 ;Expire
3600) ;Minimum
IN NS moo.01tech.nat.
1 IN PTR moo.01tech.nat.
01tech的內容如下:
@ IN SOA moo.01tech.nat. root.moo.01tech.nat. (
14 ;Serial
3600 ;Refresh
900 ;Retry
3600000 ;Expire
3600) ;Minimum
IN NS moo.01tech.nat.
IN MX 5 pop.01tech.nat.
moo IN A 192.168.32.1
www IN CNAME moo
pop IN CNAME moo
smtp IN CNAME moo
localhost. IN CNAME moo
01tech.nat. IN CNAME moo
第三節、測試DNS
好了,說了一大堆的東西,需要好好消化,不過我們還是看看我們的DNS是否正常吧,通過以下
的命令啟動named:
named –t /var/named
然后用nslookup來檢查DNS是否正常。以下是nslookup運行的結果,任何時候如果域名不能解釋,
通過按Ctrl+C可以中斷查詢。
nslookup
Default Server: moo.01tech.nat
Address: 192.168.32.1
>pop
Server: moo.01tech.nat
Address: 192.168.32.1
Name: moo.01tech.nat
Address: 192.168.32.1
Aliases: pop.01tech.nat
>exit
如果您完全按照手冊的例子來配置您的DNS,但是查詢卻沒有這樣的結果,那么您需要重新再來,
好好吃透上面的說明了。
第四節、在啟動系統的時候自動啟動DNS
要使系統在啟動時自動啟動DNS服務非常簡單,修改/etc/rc.conf文件里面的相關項就可以了
named_flags=NO 改為 named_flags=””
第三課、配置數據庫服務
如果您不需要數據庫服務可以略過本課,但是后面的課程中相當部分和本課有關,所以即使不打算
配置數據庫服務,也應該看看本課的內容。
MySQL數據庫是目前最受歡迎的免費數據庫,由于具有優異的效率和簡潔的控制方式,所以被眾多
的服務商采用。盡管它還有一些不足,例如不支持事務和子選擇,但這些缺陷可以通過編程解決。
在本手冊開始寫作的時候,MySQL的最新穩定版本是3.23.32,還沒有OpenBSD的port(OpenBSD中的
每一個應用都是一個port),所以我們在手冊光盤中包含了它的源代碼包,并寫作了本課以教導您如何
在OpenBSD下面編譯并安裝MySQL。
第一節、展開MySQL源代碼包
首先需要讓系統可以讀取光盤(因為源代碼包在光盤里面?。。?,方法非常簡單,只需執行以下
的命令即可:
mount /dev/cd0c /mnt
然后轉入/usr/src目錄,把MySQL-3.23.32的源代碼包解壓
cd /usr/src
tar zxvf /mnt/packages/mysql-3.23.32.tar.gz
這樣,在/usr/src目錄下面就會有一個名為mysql-3.23.32的目錄,里面就是MySQL-3.23.32的源
代碼。為了繼續后面的工作,我們需要進入該目錄。
cd mysql-3.23.32
第二節、為MySQL服務程序建立所需的組和用戶
要正確編譯和安裝MySQL數據庫服務程序,需要建立mysql組和屬于mysql組的mysql用戶。在以后
運行MySQL數據庫服務程序的時候同樣需要它們,建立的方法如下:
groupadd mysql
useradd –g mysql mysql
第三節、運行配置程序
因為要編譯源代碼必須先獲得和系統相關的信息,包括編譯器版本,系統支持的線程方式
(OpenBSD是一個支持多線程的系統)等。因此需要運行配置程序以獲取這些信息。
./configure --prefix=/usr/local /
--localstatedir=/var/mysql /
--with-low-memory /
--without-bench /
--without-debug
我們解釋一下配置程序里面各行的含義。./configure就是要執行的配置程序了;--prefix=/usr/local
表示,編譯后的MySQL數據庫服務程序將會安裝到/usr/local/bin目錄當中,而庫文件會安裝到
/usr/local/lib/mysql目錄中,頭文件將安裝到/usr/local/include目錄中;--localstatedir=/var/mysql
表示數據庫所用到的數據將會安裝到/var/mysql目錄中(我們在安裝OpenBSD的時候提到如果需要,
可以為/var/mysql建立一個獨立的分區就是這個原因,這樣可以方便管理);--with-low-memory這一
句至關重要,沒有了它,基本上就不要指望在您的機器上面通過編譯,除非您擁有超過1Gb的內存,這句
會指導編譯程序使用交換分區作為虛擬內存;--without-bench和—without-debug告訴編譯器和安裝腳本
不需要測試程序和調試信息。
好了,解釋得夠清楚嗎?
第四節、編譯和安裝MySQL
這個步驟非常簡單,只需要執行下面的命令即可,其他得事情由電腦來完成。因為編譯的過程非常久,
可以喝杯水歇一歇。
make
make install
make init-db
第五節、測試MySQL
對不起,本節的標題有點含糊。這里的測試是指測試MySQL的編譯和安裝是否正常。為了測試MySQL
是否被正確編譯和安裝,需要執行以下的命令:
/usr/local/bin/safe_mysqld > /dev/null &
/usr/local/bin/mysqladmin –u root password ‘123456’
如果第二條命令無聲無息地結束了,那么就證明MySQL可以正常使用了。對了,第二條命令其實是更
改系統管理員的口令??!那么您知道以后使用MySQL程序的時候需要的口令了嗎?
第六節、讓MySQL在系統啟動的時候自動啟動
我們需要做一些工作來讓MySQL在系統啟動的時候自動啟動。首先我們修改/etc/rc.conf文件,添加
以下的行:
mysqld_flags=””
然后,需要修改/etc/rc文件,找到啟動named的代碼(第171行),添加以下的代碼:
if [ “X${mysqld_flags}” != X”NO” ]; then
echo ‘starting mysqld’
/usr/local/bin/safe_mysqld > /dev/null &
fi
另外,為了讓其他需要用到MySQL的程序編譯可以順利通過,就需要在/etc/rc.local文件中添加以
下的代碼:
if [ “X${mysqld_flags}” != X”NO” ]; then
/sbin/ldconfig –m /usr/local/lib/mysql
fi
第四課、配置郵件服務
其實OpenBSD 2.8在系統安裝完成之后,就已經安裝且啟動了郵件服務sendmail。我們在這里需要為
OpenBSD找一個比sendmail更加安全、更加容易使用和高效能的郵件服務程序,我們選擇了qmail(利用
qmail加上vpopmail可以把系統用戶和郵件用戶分離,并且使用虛擬郵件域。再加上MySQL就可以實現郵件
用戶的數據庫口令校驗,這是我選擇qmail的原因)。
第一節、關閉sendmail
因為qmail作為sendmail的替代服務程序,不能和sendmail一起工作,所以必須先關閉sendmail程序。
執行以下的命令關閉正在執行的sendmail程序。
Kill –9 `cat /var/run/sendmail.pid`
同時,必須把sendmail相關的鏈接刪除,并把senmail更名
chmod 0 /usr/sbin/sendmail /usr/sbin/sendmail.old
最后還必須修改/etc/rc.conf文件,更改sendmail_flags以避免系統重新啟動時sendmail自動啟動。
sendmail_flags=”-q 30m” 改為 sendmail_flags=NO
第二節、安裝qmail
如果一直按照手冊的例子進行練習,那么現在應該可以訪問CD-ROM,如果系統曾經重新啟動,那么
請按照第三課、第一節的內容來訪問CD-ROM。
進入/mnt/packages目錄并安裝qmail執行代碼包:
cd /mnt/packages
pkg_add qmail-1.03.tgz
安裝的過程中會詢問是否添加一些組和用戶,默認選擇Y,不用改變,直接回車繼續就可以了。一定
要記錄qmaild的uid和nofiles的gid,因為在以后的課程中啟動smtp和pop的時候需要它們(例如qmaild的
uid是2850,nofiles的gid是32750)。Qmail被安裝到/var/qmail目錄。
第三節、配置qmail
要配置和運行需要DNS正確運行,如果還沒有配置DNS服務,請按照第二課的內容進行配置。
首先執行以下的命令建立新的sendmail鏈接,以實現和sendmail的兼容:
ln –s /var/qmail/bin/sendmail /usr/sbin/sendmail
然后建立基礎的域信息,使用下面的命令來完成:
/var/qmail/setup/config-fast 01tech.nat
當然,也可以通過/var/qmail/setup/config來設置基礎域信息,不過既然DNS正常,為什么不使用更
快捷的方法呢?config的用法請參考/var/qmail/doc里面的文檔。
復制rc文件,并對其進行修改,讓它和sendmail兼容:
cp /var/qmail/boot/home /var/qmail/rc
qmail默認使用Mailbox,而sendmail默認使用Maildir,很多的程序都根據sendmail規則來編寫,需
要使用Maildir,所以需要更改rc文件,作出以下的更改:
Mailbox 改為 Maildir
第四節、測試qmail
安裝和配置完成之后當然要測試一下qmail的運作是否正常了,執行以下的命令啟動qmail服務:
csh –cf ‘/var/qmail/rc &’ > /dev/null &
然后使用以下的命令查看是否存在qmail-lspawn ./Maildir。如果已經存在,則證明qmail服務已經
正常啟動,如果沒有找到,就需要按照第三節的內容重新配置。
ps -x
第五節、啟動系統時自動運行qmail服務
首先修改/etc/rc.conf文件,添加以下的內容:
qmail_flags=””
然后修改/etc/rc文件,找到sendmail的啟動代碼,在后面添加以下的代碼:
if [ “X${qmail_flags}” != X”NO” ]; then
echo –n ‘ qmail’; csh –cf ‘/var/qmail/rc &’ > /dev/null &
fi
第五課、分離系統用戶和郵件用戶
我們使用vpopmail來分離系統用戶和郵件用戶,這樣可以提高系統的安全性。而且vpopmail還可以
使用虛擬域名,也就是同一個IP的不同域名的郵箱。
第一節、展開源代碼包
進入/usr/src目錄,并解壓vpopmail-4.9.8源代碼包,然后進入vpopmail-4.9.8目錄:
cd /usr/src
tar zxvf /mnt/packages/vpopmail-4.9.8.tar.gz
cd vpopmail-4.9.8
第二節、使用MySQL支持
如果您的系統沒有提供MySQL支持,請跳過這一步。
修改vmysql.h文件,找到其中的一行內容為:
#define MYSQL_PASSWORD “gipgap”
把里面的gipgap替換成為可以訪問MySQL的系統管理員口令123456:
#define MYSQL_PASSWORD “123456”
第三節、添加組和用戶
編譯和運行vpopmail,需要vchkpw組和屬于vchkpw組的vpopmail用戶。使用以下的命令添加組和用戶:
groupadd vchkpw
useradd –g vchkpw vpopmail
第四節、準備/etc/tcp.smtp文件
要編譯vpopmail需要有tcp.smtp文件,默認的存放路徑是/etc目錄,通過下面的命令產生該文件:
echo ‘127.0.0.:allow,RELAYCLIENT=””’ > /etc/tcp.smtp
第五節、運行配置程序
運行配置程序configure,獲取編譯所需的編譯器,外部環境等信息:
./configure --enable-default-domain=01tech.nat /
--enable-admin-email=zenz-hu@01tech.nat /
--enable-mysql=y /
--enable-sqlincdir=/usr/local /
--enable-sqllibdir=/usr/local /
--enable-large-site=y /
--enable-passwd=n /
--enable-hardquota=8000000
解釋一下各項的含義:--enable-default-domain=01tech.nat指定默認的郵件域是
01tech.nat;--enable-admin-email=zenz-hu@01tech.nat說明管理員的郵箱;--enable-mysql=y告訴編
譯器要使用MySQL數據庫作口令檢查服務;--enable-sqlincdir=/usr/local和—enable-sqllibdir=/usr/local
告訴編譯器到哪里尋找MySQL的頭文件和庫文件;--enable-large-site=y用于把域信息保存到MySQL數據庫中,
但是如果有太多的虛擬域則不適宜采用本項;--enable-passwd=n告訴系統不在/etc/passwd口令文件中
查找郵箱用戶的口令;--enable-hardquota=8000000限制每個用戶的郵箱大小為8Mb。
第六節、編譯并安裝vpopmail
只需要簡單的命令,即可編譯并安裝vpopmail:
make
make install-strip
安裝后的vpopmail在/home/vpopmail目錄下。
第七節、添加郵件域和更改postmaster口令
現在的vpopmail還沒有郵件域,即使在編譯的時候指定了默認的郵件域也一樣需要通過執行以下的
程序來添加郵件域:
/home/vpopmail/bin/vadddomain 01tech.nat
系統會詢問屬于這個域的postmaster的口令并要求確認,輸入123456作為口令吧(記住,這里使用的
任何口令都不應該在實際應用中出現,否則您的系統會有很大的安全問題)!
如果在這個步驟出現錯誤提示,那么您很可能需要重新進行本課的練習了。
第八節、啟動smtp和pop3服務
要用戶可以用smtp方式發送郵件以及使用pop3方式接受郵件,需要修改/etc/rc文件,在qmail啟動代
碼后面添加以下的代碼:
if [ -x /home/vpopmail/bin/vchkpw ]; then
echo –n ‘ smtpd’
/usr/local/bin/tcpserver –u2850 –g32750 0 smtp /
/var/qmail/bin/qmail-smtpd 2>&1 > /dev/null &
echo –n ‘ popd’
/usr/local/bin/tcpserver 0 pop3 /
/var/qmail/bin/qmail-popup pop.01tech.nat /
/home/vpopmail/bin/vchkpw /
/var/qmail/bin/qmail-pop3d Maildir &
fi
經過上面的修改,系統在每次重新啟動之后,都會自動啟動smtp和pop3服務了。
vpopmail的管理手冊在/home/vpopmail/doc目錄中。