一、简介
Qmail是一种可以完全替代Sendmail-binmail体系的新一代Unix邮件系统.Qmail与Sendmail比起来有很多特性,包括:
安全----Qmail将Mail处理过程分为多个过程,尽力避免用root用户运行.同时Qmail禁止对特权用户(root,deamon等)直接发 信.
可靠----Qmail的直接投递保证Email在投递过程中不会丢失.Qmail同时支持新的更可靠的信箱格式Maildir,保证系统在 突然崩溃情况下不至破坏整个信箱.
高效----在运行于奔腾的BSD/OS上,Qmail每天可以轻松的投递200000封信件.
简单----Qmail要比其他的Internet Mail系统小得多.Qmail通过统一的向前机制完成forwarding,alias和maillist等功能,Qmail使用简单高效队列来处理投递.Qmail-smtpd可以由inetd启动,节省了一定资源.
Qmail支持: host and user masquerading
full host hiding
virtual domains
null clients
list-owner rewriting
relay control
double-bounce recording
arbitrary RFC 822 address lists
cross-host mailing list loop detection
2.2 所需资源
2.2.1 所需包
qmail-1.03.tar.gz Qmail基本系统包
ucspi-tcp-0.88.tar.gz tcpserver等服务程序
daemontools-0.70.tar.gz 监视工具
checkpassword-0.90.tar.gz pop3验证用户程序
vpopmail-4.9.8.tar.gz 虚拟域用户pop3支持
vqsignup-0.4 web方式用户注册
sqwebmail-1.2.4.tar.gz webmail
qmailadmin-0.42.tar.gz 虚拟域web方式管理
ezmlm-0.53.tar.gz 邮件列表管理
autorespond-1.0.0.tar.gz 自动回复程序
2.2.2 下载网址
http://www.qmail.org
http://www.inter7.com/qmail
二、下载qmail
root@ubuntu-sdp:/opt# wget http://cr.yp.to/software/qmail-1.03.tar.gz
--2010-02-10 09:13:06-- http://cr.yp.to/software/qmail-1.03.tar.gz
Resolving cr.yp.to... 131.193.36.21
Connecting to cr.yp.to|131.193.36.21|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 220668 (215K) [application/x-gzip]
Saving to: `qmail-1.03.tar.gz'
100%[===================================================================================>] 220,668 115K/s in 1.9s
2010-02-10 09:13:09 (115 KB/s) - `qmail-1.03.tar.gz' saved [220668/220668]
root@ubuntu-sdp:/opt# tar -xf qmail-1.03.tar.gz
三、查看glibc版本号
root@ubuntu-sdp:/opt# cd qmail-1.03
root@ubuntu-sdp:/opt/qmail-1.03# dpkg -l|grep libc6
ii libc6 2.10.1-0ubuntu16 GNU C Library: Shared libraries
ii libc6-dev 2.10.1-0ubuntu16 GNU C Library: Development Libraries and Hea
ii libc6-i686 2.10.1-0ubuntu16 GNU C Library: Shared libraries [i686 optimi
大于2.3.1因此必须下载补丁
root@ubuntu-sdp:/opt/qmail-1.03# cd ..
root@ubuntu-sdp:/opt# wget http://djbware.csi.hu/patches/qmail-1.03.errno.patch
--2010-02-10 09:18:51-- http://djbware.csi.hu/patches/qmail-1.03.errno.patch
Resolving djbware.csi.hu... 141.225.8.55
Connecting to djbware.csi.hu|141.225.8.55|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1303 (1.3K) [text/plain]
Saving to: `qmail-1.03.errno.patch'
100%[===================================================================================>] 1,303 --.-K/s in 0.005s
2010-02-10 09:18:52 (261 KB/s) - `qmail-1.03.errno.patch' saved [1303/1303]
安装补丁
root@ubuntu-sdp:/opt# patch -p0 < qmail-1.03.errno.patch
patching file qmail-1.03/cdb_seek.c
patching file qmail-1.03/dns.c
patching file qmail-1.03/error.3
patching file qmail-1.03/error.h
root@ubuntu-sdp:/opt#
四、下载0.0.0.0补丁
root@ubuntu-sdp:/opt# wget http://suspectclass.com/~sgifford/qmail/qmail-0.0.0.0.patch
--2010-02-10 09:35:39-- http://suspectclass.com/~sgifford/qmail/qmail-0.0.0.0.patch
Resolving suspectclass.com... 208.20.225.101
Connecting to suspectclass.com|208.20.225.101|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://www.suspectclass.com/~sgifford/qmail/qmail-0.0.0.0.patch [following]
--2010-02-10 09:35:40-- http://www.suspectclass.com/~sgifford/qmail/qmail-0.0.0.0.patch
Resolving www.suspectclass.com... 208.20.225.101
Connecting to www.suspectclass.com|208.20.225.101|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: /sgifford/qmail/qmail-0.0.0.0.patch [following]
--2010-02-10 09:35:42-- http://www.suspectclass.com/sgifford/qmail/qmail-0.0.0.0.patch
Connecting to www.suspectclass.com|208.20.225.101|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 450 [text/plain]
Saving to: `qmail-0.0.0.0.patch'
100%[===================================================================================>] 450 --.-K/s in 0.002s
2010-02-10 09:35:43 (283 KB/s) - `qmail-0.0.0.0.patch' saved [450/450]
安装补丁
root@ubuntu-sdp:/opt# patch -p0 <qmail-0.0.0.0.patch
patching file qmail-1.03/ipme.c
root@ubuntu-sdp:/opt#
五、SMTP认证补丁
root@ubuntu-sdp:/opt# wget http://members.elysium.pl/brush/qmail-smtpd-auth/dist/qmail-smtpd-auth-0.31.tar.gz
--2010-02-10 09:39:20-- http://members.elysium.pl/brush/qmail-smtpd-auth/dist/qmail-smtpd-auth-0.31.tar.gz
Resolving members.elysium.pl... 212.106.4.50
Connecting to members.elysium.pl|212.106.4.50|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8798 (8.6K) [application/x-gzip]
Saving to: `qmail-smtpd-auth-0.31.tar.gz'
100%[===================================================================================>] 8,798 12.9K/s in 0.7s
2010-02-10 09:39:22 (12.9 KB/s) - `qmail-smtpd-auth-0.31.tar.gz' saved [8798/8798]
deepfuture@ubuntu-sdp:/opt$ sudo tar -xf qmail-smtpd-auth-0.31.tar.gz
[sudo] password for deepfuture:
deepfuture@ubuntu-sdp:/opt$ cd qmail-smtpd-auth-0.31
deepfuture@ubuntu-sdp:/opt/qmail-smtpd-auth-0.31$ ls
auth.patch base64.c base64.h CHANGES README.auth
deepfuture@ubuntu-sdp:/opt/qmail-smtpd-auth-0.31$ sudo cp base64.h base64.c auth.patch ../qmail-1.03/
deepfuture@ubuntu-sdp:/opt/qmail-1.03$ sudo patch <auth.patch
patching file Makefile
patching file TARGETS
patching file qmail-smtpd.8
patching file qmail-smtpd.c
六、qmail-queue队列补丁
deepfuture@ubuntu-sdp:/opt/qmail-1.03$ cd ..
deepfuture@ubuntu-sdp:/opt$ sudo wget http://www.qmail.org/qmailqueue-patch
--2010-02-10 10:39:23-- http://www.qmail.org/qmailqueue-patch
Resolving www.qmail.org... 192.203.178.37
Connecting to www.qmail.org|192.203.178.37|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2510 (2.5K) [message/rfc822]
Saving to: `qmailqueue-patch'
100%[===================================================================================>] 2,510 --.-K/s in 0s
2010-02-10 10:39:26 (89.8 MB/s) - `qmailqueue-patch' saved [2510/2510]
deepfuture@ubuntu-sdp:/opt$ cd qmail-1.03
deepfuture@ubuntu-sdp:/opt/qmail-1.03$ sudo patch -p1 <../qmailqueue-patch
patching file Makefile
Hunk #1 succeeded at 1487 (offset 4 lines).
patching file qmail.c
七、建立qmail安装目录
deepfuture@ubuntu-sdp:/opt$ sudo mkdir /var/qmail
八、进入源代码目录,增加用户,进行安装并配置域名
deepfuture@ubuntu-sdp:/var$ cd /opt/qmail-1.03
deepfuture@ubuntu-sdp:/opt/qmail-1.03$ ls
addresses.5 coe.3 fd_move.3 maildir.c qmail-inject.8 remoteinfo.c subfdouts.c
alloc.3 coe.c fd_move.c maildir.h qmail-inject.c remoteinfo.h subgetopt.3
alloc.c coe.h fifo.c maildirmake.1 qmail-limits.9 REMOVE.binmail subgetopt.c
alloc.h commands.c fifo.h maildirmake.c qmail-local.8 REMOVE.sendmail subgetopt.h
alloc_re.c commands.h fifo_make.3 maildirwatch.1 qmail-local.c scan_8long.c substdi.c
auth.patch condredirect.1 FILES maildirwatch.c qmail-log.5 scan.h substdio.c
auto_break.h condredirect.c find-systype.sh mailsubj.1 qmail-lspawn.8 scan_ulong.c substdio_copy.c
auto-gid.c conf-break fmt.h mailsubj.sh qmail-lspawn.c SECURITY substdio.h
auto-int8.c conf-cc fmtqfn.c make-compile.sh qmail-newmrh.9 seek_cur.c substdo.c
auto-int.c conf-groups fmtqfn.h Makefile qmail-newmrh.c seek_end.c SYSDEPS
auto_patrn.h config-fast.sh fmt_str.c Makefile.orig qmail-newu.9 seek.h TARGETS
auto_qmail.h config.sh fmt_strn.c make-load.sh qmail-newu.c seek_set.c tcp-env.1
auto_spawn.h conf-ld fmt_uint0.c make-makelib.sh qmail-pop3d.8 seek_trunc.c tcp-env.c
auto_split.h conf-patrn fmt_uint.c mbox.5 qmail-pop3d.c select.h1 tcp-environ.5
auto-str.c conf-qmail fmt_ulong.c myctime.c qmail-popup.8 select.h2 tcpto.c
auto-uid.c conf-spawn forgeries.7 myctime.h qmail-popup.c SENDMAIL tcpto_clean.c
auto_uids.h conf-split fork.h1 ndelay.c qmail-pw2u.9 sendmail.c tcpto.h
auto_usera.h conf-users fork.h2 ndelay.h qmail-pw2u.c sgetopt.3 TEST.deliver
base64.c constmap.c forward.1 ndelay_off.c qmail-qmqpc.8 sgetopt.c TEST.receive
base64.h constmap.h forward.c newfield.c qmail-qmqpc.c sgetopt.h THANKS
binm1+df.sh control.c gen_allocdefs.h newfield.h qmail-qmqpd.8 sig_alarm.c THOUGHTS
binm1.sh control.h gen_alloc.h now.3 qmail-qmqpd.c sig_block.c timeoutconn.c
binm2+df.sh date822fmt.c getln2.3 now.c qmail-qmtpd.8 sig_bug.c timeoutconn.h
binm2.sh date822fmt.h getln2.c now.h qmail-qmtpd.c sig_catch.c timeoutread.c
binm3+df.sh datemail.sh getln.3 open_append.c qmail-qread.8 sig_child.c timeoutread.h
binm3.sh datetime.3 getln.c open_excl.c qmail-qread.c sig.h timeoutwrite.c
BIN.Makefile datetime.c getln.h open.h qmail-qstat.8 sig_hup.c timeoutwrite.h
BIN.README datetime.h gfrom.c open_read.c qmail-qstat.sh sig_misc.c TODO
BLURB datetime_un.c gfrom.h open_trunc.c qmail-queue.8 sig_pause.c token822.c
BLURB2 direntry.3 headerbody.c open_write.c qmail-queue.c sig_pipe.c token822.h
BLURB3 direntry.h1 headerbody.h PIC.local2alias qmail-remote.8 sig_term.c trigger.c
BLURB4 direntry.h2 hfield.c PIC.local2ext qmail-remote.c slurpclose.c trigger.h
bouncesaying.1 dns.c hfield.h PIC.local2local qmail-rspawn.8 slurpclose.h triggerpull.c
bouncesaying.c dnscname.c hier.c PIC.local2rem qmail-rspawn.c spawn.c triggerpull.h
byte_chr.c dnsdoe.c home+df.sh PIC.local2virt qmail-send.9 splogger.8 trycpp.c
byte_copy.c dnsdoe.h home.sh PIC.nullclient qmail-send.c splogger.c trydrent.c
byte_cr.c dnsfq.c hostname.c PIC.relaybad qmail-showctl.8 stralloc.3 tryflock.c
byte_diff.c dns.h idedit.c PIC.relaygood qmail-showctl.c stralloc_arts.c trylsock.c
byte.h dnsip.c INSTALL PIC.rem2local qmail-smtpd.8 stralloc_catb.c trymkffo.c
byte_rchr.c dnsmxip.c INSTALL.alias pinq.sh qmail-smtpd.c stralloc_cat.c trynpbg1.c
byte_zero.c dnsptr.c install-big.c predate.c qmail-start.9 stralloc_cats.c tryrsolv.c
case.3 dot-qmail.9 install.c preline.1 qmail-start.c stralloc_copy.c trysalen.c
case_diffb.c elq.sh INSTALL.ctl preline.c qmail-tcpok.8 stralloc_eady.c trysgact.c
case_diffs.c env.3 INSTALL.ids prioq.c qmail-tcpok.c stralloc.h trysgprm.c
case.h env.c INSTALL.maildir prioq.h qmail-tcpto.8 stralloc_opyb.c tryshsgr.c
case_lowerb.c envelopes.5 INSTALL.mbox proc+df.sh qmail-tcpto.c stralloc_opys.c trysysel.c
case_lowers.c env.h INSTALL.vsm proc.sh qmail-upq.sh stralloc_pend.c trysyslog.c
case_starts.c envread.c instcheck.c prot.c qmail-users.9 str_chr.c tryulong32.c
cdb.3 error.3 INTERNALS prot.h qreceipt.1 str_cpy.c tryvfork.c
cdb.h error.c ipalloc.c qail.sh qreceipt.c str_diff.c trywaitp.c
cdb_hash.c error.h ipalloc.h qbiff.1 qsmhook.c str_diffn.c uint32.h1
cdbmake_add.c error_str.3 ip.c qbiff.c qsutil.c strerr_die.c uint32.h2
cdbmake.h error_str.c ip.h qlx.h qsutil.h strerr.h UPGRADE
cdbmake_hash.c error_temp.3 ipme.c qmail.7 quote.c strerr_sys.c VERSION
cdbmake_pack.c error_temp.c ipme.h qmail.c quote.h str.h wait.3
cdbmss.c except.1 ipmeprint.c qmail-clean.8 rcpthosts.c str_len.c wait.h
cdbmss.h except.c lock_ex.c qmail-clean.c rcpthosts.h str_rchr.c wait_nohang.c
cdb_seek.c exit.h lock_exnb.c qmail-command.8 README str_start.c wait_pid.c
cdb_seek.c.rej extra.h lock.h qmail-control.9 readsubdir.c subfderr.c warn-auto.sh
cdb_unpack.c FAQ lock_un.c qmail-getpw.9 readsubdir.h subfd.h warn-shsgr
CHANGES fd_copy.3 maildir2mbox.1 qmail-getpw.c readwrite.h subfdin.c
chkshsgr.c fd_copy.c maildir2mbox.c qmail.h received.c subfdins.c
chkspawn.c fd.h maildir.5 qmail-header.5 received.h subfdout.c
打开install.ids,查看创建用户和组的命令
deepfuture@ubuntu-sdp:/opt/qmail-1.03$ ls -l|grep *.ids
-rw-r--r-- 1 root daemon 2912 1998-06-15 18:53 INSTALL.ids
deepfuture@ubuntu-sdp:/opt/qmail-1.03$ sudo nano INSTALL.ids
可以看到 linux系统的如下:
Here's how to set up the qmail groups and the qmail users.
On some systems there are commands that make this easy. Solaris and
Linux:
# groupadd nofiles
# useradd -g nofiles -d /var/qmail/alias alias
# useradd -g nofiles -d /var/qmail qmaild
# useradd -g nofiles -d /var/qmail qmaill
# useradd -g nofiles -d /var/qmail qmailp
# groupadd qmail
# useradd -g qmail -d /var/qmail qmailq
# useradd -g qmail -d /var/qmail qmailr
# useradd -g qmail -d /var/qmail qmails
输入以上命令
deepfuture@ubuntu-sdp:/opt/qmail-1.03$ sudo groupadd nofiles
deepfuture@ubuntu-sdp:/opt/qmail-1.03$ sudo useradd -g nofiles -d /var/qmail/alias alias
deepfuture@ubuntu-sdp:/opt/qmail-1.03$ sudo useradd -g nofiles -d /var/qmail qmaild
deepfuture@ubuntu-sdp:/opt/qmail-1.03$ sudo useradd -g nofiles -d /var/qmail qmaill
deepfuture@ubuntu-sdp:/opt/qmail-1.03$ sudo useradd -g nofiles -d /var/qmail qmailp
deepfuture@ubuntu-sdp:/opt/qmail-1.03$ sudo groupadd qmail
deepfuture@ubuntu-sdp:/opt/qmail-1.03$ sudo useradd -g qmail -d /var/qmail qmailq
deepfuture@ubuntu-sdp:/opt/qmail-1.03$ sudo useradd -g qmail -d /var/qmail qmailr
deepfuture@ubuntu-sdp:/opt/qmail-1.03$ sudo useradd -g qmail -d /var/qmail qmails
编译并安装(请确保第三步成功完成,否则编译会出错)
deepfuture@ubuntu-sdp:/opt/qmail-1.03$make setup check
......
......
......
......
nroff -man maildirwatch.1 > maildirwatch.0
nroff -man qmail.7 > qmail.0
cat qmail-limits.9 \
| sed s}QMAILHOME}"`head -1 conf-qmail`"}g \
| sed s}BREAK}"`head -1 conf-break`"}g \
| sed s}SPAWN}"`head -1 conf-spawn`"}g \
> qmail-limits.7
nroff -man qmail-limits.7 > qmail-limits.0
nroff -man qmail-log.5 > qmail-log.0
cat qmail-control.9 \
| sed s}QMAILHOME}"`head -1 conf-qmail`"}g \
| sed s}BREAK}"`head -1 conf-break`"}g \
| sed s}SPAWN}"`head -1 conf-spawn`"}g \
> qmail-control.5
nroff -man qmail-control.5 > qmail-control.0
nroff -man qmail-header.5 > qmail-header.0
cat qmail-users.9 \
| sed s}QMAILHOME}"`head -1 conf-qmail`"}g \
| sed s}BREAK}"`head -1 conf-break`"}g \
| sed s}SPAWN}"`head -1 conf-spawn`"}g \
> qmail-users.5
nroff -man qmail-users.5 > qmail-users.0
cat dot-qmail.9 \
| sed s}QMAILHOME}"`head -1 conf-qmail`"}g \
| sed s}BREAK}"`head -1 conf-break`"}g \
| sed s}SPAWN}"`head -1 conf-spawn`"}g \
> dot-qmail.5
nroff -man dot-qmail.5 > dot-qmail.0
nroff -man qmail-command.8 > qmail-command.0
nroff -man tcp-environ.5 > tcp-environ.0
nroff -man maildir.5 > maildir.0
nroff -man mbox.5 > mbox.0
nroff -man addresses.5 > addresses.0
nroff -man envelopes.5 > envelopes.0
nroff -man forgeries.7 > forgeries.0
./install
./instcheck
配置服务器域名,笔者的服务器域名是deepfuture.imwork.net
deepfuture@ubuntu-sdp:/opt/qmail-1.03$ sudo ./config-fast deepfuture.imwork.net
Your fully qualified host name is deepfuture.imwork.net.
Putting deepfuture.imwork.net into control/me...
Putting imwork.net into control/defaultdomain...
Putting imwork.net into control/plusdomain...
Putting deepfuture.imwork.net into control/locals...
Putting deepfuture.imwork.net into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to deepfuture.imwork.net.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
deepfuture@ubuntu-sdp:/opt/qmail-1.03$
九、安装认证程序和下载认证errno补丁
注意当前目录必须在/usr下的一个子目录,笔者建立一个tmp目录。因为认识程序的安装路径是../bin
deepfuture@ubuntu-sdp:/opt$ cd /usr
deepfuture@ubuntu-sdp:/usr$ ls
bin games include lib local sbin share src
deepfuture@ubuntu-sdp:/usr$ sudo mkdir tmp
deepfuture@ubuntu-sdp:/usr$ cd tmp
deepfuture@ubuntu-sdp:/usr/tmp$ sudo wget http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz
--2010-02-10 11:30:02-- http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz
Resolving cr.yp.to... 131.193.36.21
Connecting to cr.yp.to|131.193.36.21|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 15631 (15K) [application/x-gzip]
Saving to: `checkpassword-0.90.tar.gz'
100%[===================================================================================>] 15,631 27.4K/s in 0.6s
deepfuture@ubuntu-sdp:/usr/tmp$ sudo wget http://djbware.csi.hu/patches/checkpassword-0.90.errno.patch
--2010-02-10 11:36:43-- http://djbware.csi.hu/patches/checkpassword-0.90.errno.patch
Resolving djbware.csi.hu... 141.225.8.55
Connecting to djbware.csi.hu|141.225.8.55|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 346 [text/plain]
Saving to: `checkpassword-0.90.errno.patch'
100%[===================================================================================>] 346 --.-K/s in 0s
2010-02-10 11:36:44 (14.1 MB/s) - `checkpassword-0.90.errno.patch' saved [346/346]
deepfuture@ubuntu-sdp:/usr/tmp$ sudo tar xvfz checkpassword-0.90.tar.gz
checkpassword-0.90
checkpassword-0.90/README
checkpassword-0.90/TODO
checkpassword-0.90/CHANGES
checkpassword-0.90/VERSION
checkpassword-0.90/FILES
checkpassword-0.90/SYSDEPS
checkpassword-0.90/TARGETS
checkpassword-0.90/Makefile
checkpassword-0.90/alloc.c
checkpassword-0.90/alloc.h
checkpassword-0.90/alloc_re.c
checkpassword-0.90/auto-str.c
checkpassword-0.90/auto_home.h
checkpassword-0.90/buffer.c
checkpassword-0.90/buffer.h
checkpassword-0.90/buffer_2.c
checkpassword-0.90/buffer_copy.c
checkpassword-0.90/buffer_get.c
checkpassword-0.90/buffer_put.c
checkpassword-0.90/byte.h
checkpassword-0.90/byte_copy.c
checkpassword-0.90/byte_cr.c
checkpassword-0.90/byte_diff.c
checkpassword-0.90/checkpassword.c
checkpassword-0.90/chkshsgr.c
checkpassword-0.90/choose.sh
checkpassword-0.90/conf-cc
checkpassword-0.90/conf-home
checkpassword-0.90/conf-ld
checkpassword-0.90/env.c
checkpassword-0.90/env.h
checkpassword-0.90/error.c
checkpassword-0.90/error.h
checkpassword-0.90/error_str.c
checkpassword-0.90/exit.h
checkpassword-0.90/find-systype.sh
checkpassword-0.90/gen_alloc.h
checkpassword-0.90/gen_allocdefs.h
checkpassword-0.90/hasshsgr.h1
checkpassword-0.90/hasshsgr.h2
checkpassword-0.90/hier.c
checkpassword-0.90/install.c
checkpassword-0.90/instcheck.c
checkpassword-0.90/open.h
checkpassword-0.90/open_read.c
checkpassword-0.90/open_trunc.c
checkpassword-0.90/pathexec.h
checkpassword-0.90/pathexec_env.c
checkpassword-0.90/pathexec_run.c
checkpassword-0.90/print-cc.sh
checkpassword-0.90/prot.c
checkpassword-0.90/prot.h
checkpassword-0.90/readwrite.h
checkpassword-0.90/str.h
checkpassword-0.90/str_chr.c
checkpassword-0.90/str_len.c
checkpassword-0.90/str_start.c
checkpassword-0.90/stralloc.h
checkpassword-0.90/stralloc_cat.c
checkpassword-0.90/stralloc_catb.c
checkpassword-0.90/stralloc_cats.c
checkpassword-0.90/stralloc_eady.c
checkpassword-0.90/stralloc_opyb.c
checkpassword-0.90/stralloc_opys.c
checkpassword-0.90/stralloc_pend.c
checkpassword-0.90/strerr.h
checkpassword-0.90/strerr_die.c
checkpassword-0.90/strerr_sys.c
checkpassword-0.90/trycpp.c
checkpassword-0.90/trycrypt.c
checkpassword-0.90/tryshadow.c
checkpassword-0.90/tryshsgr.c
checkpassword-0.90/tryslib.c
checkpassword-0.90/tryspnam.c
checkpassword-0.90/tryuserpw.c
checkpassword-0.90/warn-auto.sh
checkpassword-0.90/warn-shsgr
checkpassword-0.90/x86cpuid.c
安装补丁
deepfuture@ubuntu-sdp:/usr/tmp$ cd checkpassword-0.90
deepfuture@ubuntu-sdp:/usr/tmp/checkpassword-0.90$ ls
alloc.c byte_cr.c error.c instcheck.c readwrite.h strerr_sys.c tryspnam.c
alloc.h byte_diff.c error.h Makefile stralloc_catb.c str.h tryuserpw.c
alloc_re.c byte.h error_str.c open.h stralloc_cat.c str_len.c VERSION
auto_home.h CHANGES exit.h open_read.c stralloc_cats.c str_start.c warn-auto.sh
auto-str.c checkpassword.c FILES open_trunc.c stralloc_eady.c SYSDEPS warn-shsgr
buffer_2.c chkshsgr.c find-systype.sh pathexec_env.c stralloc.h TARGETS x86cpuid.c
buffer.c choose.sh gen_allocdefs.h pathexec.h stralloc_opyb.c TODO
buffer_copy.c conf-cc gen_alloc.h pathexec_run.c stralloc_opys.c trycpp.c
buffer_get.c conf-home hasshsgr.h1 print-cc.sh stralloc_pend.c trycrypt.c
buffer.h conf-ld hasshsgr.h2 prot.c str_chr.c tryshadow.c
buffer_put.c env.c hier.c prot.h strerr_die.c tryshsgr.c
byte_copy.c env.h install.c README strerr.h tryslib.c
deepfuture@ubuntu-sdp:/usr/tmp/checkpassword-0.90$ sudo patch -p1 < ../checkpassword-0.90.errno.patch
patching file error.h
编译
deepfuture@ubuntu-sdp:/usr/tmp/checkpassword-0.90$ sudo make
( cat warn-auto.sh; \
echo 'main="$1"; shift'; \
echo exec "`head -1 conf-ld`" \
'-o "$main" "$main".o ${1+"$@"}' \
) > load
chmod 755 load
sh find-systype.sh > systype
sh print-cc.sh > compile
chmod 755 compile
( ( ./compile tryspnam.c && ./load tryspnam ) >/dev/null \
2>&1 \
&& echo \#define HASGETSPNAM 1 || exit 0 ) > hasspnam.h
rm -f tryspnam.o tryspnam
( ( ./compile tryslib.c && \
./load tryslib -ls ) >/dev/null 2>&1 \
&& echo -ls || exit 0 ) > s.lib
rm -f tryslib.o tryslib
( ( ./compile tryuserpw.c \
&& ./load tryuserpw `cat s.lib` ) >/dev/null 2>&1 \
&& echo \#define HASGETUSERPW 1 || exit 0 ) > hasuserpw.h
rm -f tryuserpw.o tryuserpw
./compile checkpassword.c
checkpassword.c: In function ‘main’:
checkpassword.c:33: warning: incompatible implicit declaration of built-in function ‘_exit’
cat warn-auto.sh choose.sh \
| sed s}HOME}"`head -1 conf-home`"}g \
> choose
chmod 755 choose
./compile chkshsgr.c
./load chkshsgr
./chkshsgr || ( cat warn-shsgr; exit 1 )
./choose clr tryshsgr hasshsgr.h1 hasshsgr.h2 > hasshsgr.h
./compile prot.c
( cat warn-auto.sh; \
echo 'main="$1"; shift'; \
echo 'rm -f "$main"'; \
echo 'ar cr "$main" ${1+"$@"}'; \
case "`cat systype`" in \
sunos-5.*) ;; \
unix_sv*) ;; \
irix64-*) ;; \
irix-*) ;; \
dgux-*) ;; \
hp-ux-*) ;; \
sco*) ;; \
*) echo 'ranlib "$main"' ;; \
esac \
) > makelib
chmod 755 makelib
./compile alloc.c
alloc.c:3: warning: conflicting types for built-in function ‘malloc’
./compile alloc_re.c
./compile buffer.c
./compile buffer_2.c
./compile buffer_copy.c
./compile buffer_get.c
./compile buffer_put.c
./compile env.c
./compile error.c
./compile error_str.c
./compile open_read.c
./compile open_trunc.c
./compile pathexec_env.c
./compile pathexec_run.c
./compile stralloc_cat.c
./compile stralloc_catb.c
./compile stralloc_cats.c
./compile stralloc_eady.c
./compile stralloc_opyb.c
./compile stralloc_opys.c
./compile stralloc_pend.c
./compile strerr_die.c
./compile strerr_sys.c
./makelib unix.a alloc.o alloc_re.o buffer.o buffer_2.o \
buffer_copy.o buffer_get.o buffer_put.o env.o error.o \
error_str.o open_read.o open_trunc.o pathexec_env.o \
pathexec_run.o prot.o stralloc_cat.o stralloc_catb.o \
stralloc_cats.o stralloc_eady.o stralloc_opyb.o \
stralloc_opys.o stralloc_pend.o strerr_die.o strerr_sys.o
./compile byte_copy.c
./compile byte_cr.c
./compile byte_diff.c
./compile str_chr.c
./compile str_len.c
./compile str_start.c
./makelib byte.a byte_copy.o byte_cr.o byte_diff.o \
str_chr.o str_len.o str_start.o
( ( ./compile tryshadow.c && \
./load tryshadow -lshadow ) >/dev/null 2>&1 \
&& echo -lshadow || exit 0 ) > shadow.lib
rm -f tryshadow.o tryshadow
( ( ./compile trycrypt.c && \
./load trycrypt -lcrypt ) >/dev/null 2>&1 \
&& echo -lcrypt || exit 0 ) > crypt.lib
rm -f trycrypt.o trycrypt
./load checkpassword prot.o unix.a byte.a `cat \
shadow.lib` `cat crypt.lib` `cat s.lib`
./compile install.c
./compile hier.c
./compile auto-str.c
auto-str.c:8: warning: conflicting types for built-in function ‘puts’
./load auto-str unix.a byte.a
./auto-str auto_home `head -1 conf-home` > auto_home.c
./compile auto_home.c
./load install hier.o auto_home.o unix.a byte.a
./compile instcheck.c
./load instcheck hier.o auto_home.o unix.a byte.a
安装
deepfuture@ubuntu-sdp:/usr/tmp/checkpassword-0.90$ sudo make setup check
./install
./instcheck
deepfuture@ubuntu-sdp:/usr/tmp/checkpassword-0.90$ sudo chmod 4755 /bin/checkpassword
deepfuture@ubuntu-sdp:/usr/tmp/checkpassword-0.90$ cd ..
安装QMAIL守护程序daemontools
deepfuture@ubuntu-sdp:/usr/tmp$ sudo wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
--2010-02-10 11:51:19-- http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
Resolving cr.yp.to... 131.193.36.21
Connecting to cr.yp.to|131.193.36.21|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 36975 (36K) [application/x-gzip]
Saving to: `daemontools-0.76.tar.gz'
100%[===================================================================================>] 36,975 42.0K/s in 0.9s
2010-02-10 11:51:20 (42.0 KB/s) - `daemontools-0.76.tar.gz' saved [36975/36975]deepfuture@ubuntu-sdp:/usr/tmp$ sudo wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
--2010-02-10 11:52:12-- http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
Resolving www.qmail.org... 192.203.178.37
Connecting to www.qmail.org|192.203.178.37|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 355 [text/plain]
Saving to: `daemontools-0.76.errno.patch'
100%[===================================================================================>] 355 --.-K/s in 0s
2010-02-10 11:52:13 (15.1 MB/s) - `daemontools-0.76.errno.patch' saved [355/355]
解压
deepfuture@ubuntu-sdp:/usr/tmp$ sudo tar xvfz daemontools-0.76.tar.gz
admin
admin/daemontools-0.76
admin/daemontools-0.76/package
admin/daemontools-0.76/package/README
admin/daemontools-0.76/package/files
admin/daemontools-0.76/package/sharing
admin/daemontools-0.76/package/commands
admin/daemontools-0.76/package/install
admin/daemontools-0.76/package/compile
admin/daemontools-0.76/package/upgrade
admin/daemontools-0.76/package/run
admin/daemontools-0.76/package/run.inittab
admin/daemontools-0.76/package/boot.inittab
admin/daemontools-0.76/package/run.rclocal
admin/daemontools-0.76/package/boot.rclocal
admin/daemontools-0.76/src
admin/daemontools-0.76/src/CHANGES
admin/daemontools-0.76/src/TODO
admin/daemontools-0.76/src/Makefile
admin/daemontools-0.76/src/svscanboot.sh
admin/daemontools-0.76/src/svscan.c
admin/daemontools-0.76/src/supervise.c
admin/daemontools-0.76/src/svc.c
admin/daemontools-0.76/src/svok.c
admin/daemontools-0.76/src/svstat.c
admin/daemontools-0.76/src/fghack.c
admin/daemontools-0.76/src/pgrphack.c
admin/daemontools-0.76/src/readproctitle.c
admin/daemontools-0.76/src/multilog.c
admin/daemontools-0.76/src/tai64n.c
admin/daemontools-0.76/src/tai64nlocal.c
admin/daemontools-0.76/src/softlimit.c
admin/daemontools-0.76/src/setuidgid.c
admin/daemontools-0.76/src/envuidgid.c
admin/daemontools-0.76/src/envdir.c
admin/daemontools-0.76/src/setlock.c
admin/daemontools-0.76/src/match.c
admin/daemontools-0.76/src/match.h
admin/daemontools-0.76/src/matchtest.c
admin/daemontools-0.76/src/timestamp.c
admin/daemontools-0.76/src/timestamp.h
admin/daemontools-0.76/src/deepsleep.c
admin/daemontools-0.76/src/deepsleep.h
admin/daemontools-0.76/src/conf-cc
admin/daemontools-0.76/src/conf-ld
admin/daemontools-0.76/src/print-cc.sh
admin/daemontools-0.76/src/print-ld.sh
admin/daemontools-0.76/src/print-ar.sh
admin/daemontools-0.76/src/choose.sh
admin/daemontools-0.76/src/warn-auto.sh
admin/daemontools-0.76/src/find-systype.sh
admin/daemontools-0.76/src/trycpp.c
admin/daemontools-0.76/src/x86cpuid.c
admin/daemontools-0.76/src/rts.tests
admin/daemontools-0.76/src/buffer.h
admin/daemontools-0.76/src/buffer.c
admin/daemontools-0.76/src/byte.h
admin/daemontools-0.76/src/str.h
admin/daemontools-0.76/src/str_len.c
admin/daemontools-0.76/src/byte_copy.c
admin/daemontools-0.76/src/byte_cr.c
admin/daemontools-0.76/src/error.h
admin/daemontools-0.76/src/error.c
admin/daemontools-0.76/src/buffer_put.c
admin/daemontools-0.76/src/buffer_read.c
admin/daemontools-0.76/src/buffer_write.c
admin/daemontools-0.76/src/buffer_1.c
admin/daemontools-0.76/src/direntry.h1
admin/daemontools-0.76/src/direntry.h2
admin/daemontools-0.76/src/trydrent.c
admin/daemontools-0.76/src/strerr.h
admin/daemontools-0.76/src/error_str.c
admin/daemontools-0.76/src/strerr_sys.c
admin/daemontools-0.76/src/buffer_2.c
admin/daemontools-0.76/src/strerr_die.c
admin/daemontools-0.76/src/wait.h
admin/daemontools-0.76/src/trywaitp.c
admin/daemontools-0.76/src/haswaitp.h1
admin/daemontools-0.76/src/haswaitp.h2
admin/daemontools-0.76/src/wait_pid.c
admin/daemontools-0.76/src/coe.h
admin/daemontools-0.76/src/coe.c
admin/daemontools-0.76/src/fd.h
admin/daemontools-0.76/src/fd_copy.c
admin/daemontools-0.76/src/fd_move.c
admin/daemontools-0.76/src/str_start.c
admin/daemontools-0.76/src/env.h
admin/daemontools-0.76/src/env.c
admin/daemontools-0.76/src/alloc.h
admin/daemontools-0.76/src/alloc.c
admin/daemontools-0.76/src/alloc_re.c
admin/daemontools-0.76/src/gen_alloc.h
admin/daemontools-0.76/src/gen_allocdefs.h
admin/daemontools-0.76/src/stralloc.h
admin/daemontools-0.76/src/stralloc_eady.c
admin/daemontools-0.76/src/stralloc_opyb.c
admin/daemontools-0.76/src/stralloc_catb.c
admin/daemontools-0.76/src/stralloc_cats.c
admin/daemontools-0.76/src/stralloc_pend.c
admin/daemontools-0.76/src/str_chr.c
admin/daemontools-0.76/src/pathexec.h
admin/daemontools-0.76/src/pathexec_run.c
admin/daemontools-0.76/src/stralloc_opys.c
admin/daemontools-0.76/src/stralloc_cat.c
admin/daemontools-0.76/src/byte_diff.c
admin/daemontools-0.76/src/pathexec_env.c
admin/daemontools-0.76/src/wait_nohang.c
admin/daemontools-0.76/src/sig.h
admin/daemontools-0.76/src/sig.c
admin/daemontools-0.76/src/sig_block.c
admin/daemontools-0.76/src/sig_catch.c
admin/daemontools-0.76/src/sig_pause.c
admin/daemontools-0.76/src/hassgact.h1
admin/daemontools-0.76/src/hassgact.h2
admin/daemontools-0.76/src/hassgprm.h1
admin/daemontools-0.76/src/hassgprm.h2
admin/daemontools-0.76/src/trysgact.c
admin/daemontools-0.76/src/trysgprm.c
admin/daemontools-0.76/src/select.h1
admin/daemontools-0.76/src/select.h2
admin/daemontools-0.76/src/trysysel.c
admin/daemontools-0.76/src/uint64.h1
admin/daemontools-0.76/src/uint64.h2
admin/daemontools-0.76/src/tryulong64.c
admin/daemontools-0.76/src/tai.h
admin/daemontools-0.76/src/taia.h
admin/daemontools-0.76/src/taia_now.c
admin/daemontools-0.76/src/taia_sub.c
admin/daemontools-0.76/src/taia_less.c
admin/daemontools-0.76/src/taia_frac.c
admin/daemontools-0.76/src/taia_approx.c
admin/daemontools-0.76/src/iopause.h1
admin/daemontools-0.76/src/iopause.h2
admin/daemontools-0.76/src/iopause.c
admin/daemontools-0.76/src/trypoll.c
admin/daemontools-0.76/src/fifo.h
admin/daemontools-0.76/src/fifo.c
admin/daemontools-0.76/src/hasmkffo.h1
admin/daemontools-0.76/src/hasmkffo.h2
admin/daemontools-0.76/src/trymkffo.c
admin/daemontools-0.76/src/open.h
admin/daemontools-0.76/src/open_read.c
admin/daemontools-0.76/src/open_write.c
admin/daemontools-0.76/src/open_append.c
admin/daemontools-0.76/src/lock.h
admin/daemontools-0.76/src/hasflock.h1
admin/daemontools-0.76/src/hasflock.h2
admin/daemontools-0.76/src/tryflock.c
admin/daemontools-0.76/src/lock_exnb.c
admin/daemontools-0.76/src/lock_ex.c
admin/daemontools-0.76/src/ndelay.h
admin/daemontools-0.76/src/ndelay_on.c
admin/daemontools-0.76/src/ndelay_off.c
admin/daemontools-0.76/src/tai_pack.c
admin/daemontools-0.76/src/taia_pack.c
admin/daemontools-0.76/src/taia_add.c
admin/daemontools-0.76/src/open_trunc.c
admin/daemontools-0.76/src/taia_uint.c
admin/daemontools-0.76/src/subgetopt.h
admin/daemontools-0.76/src/subgetopt.c
admin/daemontools-0.76/src/sgetopt.h
admin/daemontools-0.76/src/sgetopt.c
admin/daemontools-0.76/src/byte_chr.c
admin/daemontools-0.76/src/fmt.h
admin/daemontools-0.76/src/scan.h
admin/daemontools-0.76/src/fmt_ulong.c
admin/daemontools-0.76/src/fmt_uint.c
admin/daemontools-0.76/src/fmt_uint0.c
admin/daemontools-0.76/src/tai_unpack.c
admin/daemontools-0.76/src/tai_now.c
admin/daemontools-0.76/src/tai_sub.c
admin/daemontools-0.76/src/seek.h
admin/daemontools-0.76/src/seek_set.c
admin/daemontools-0.76/src/str_diff.c
admin/daemontools-0.76/src/byte_rchr.c
admin/daemontools-0.76/src/scan_ulong.c
admin/daemontools-0.76/src/buffer_get.c
admin/daemontools-0.76/src/buffer_0.c
admin/daemontools-0.76/src/prot.h
admin/daemontools-0.76/src/prot.c
admin/daemontools-0.76/src/hasshsgr.h1
admin/daemontools-0.76/src/hasshsgr.h2
admin/daemontools-0.76/src/chkshsgr.c
admin/daemontools-0.76/src/warn-shsgr
admin/daemontools-0.76/src/tryshsgr.c
admin/daemontools-0.76/src/readclose.h
admin/daemontools-0.76/src/readclose.c
admin/daemontools-0.76/src/openreadclose.h
admin/daemontools-0.76/src/openreadclose.c
打补丁deepfuture@ubuntu-sdp:/usr/tmp$ cd admin/daemontools-0.76
deepfuture@ubuntu-sdp:/usr/tmp/admin/daemontools-0.76$ sudo patch -p1 <../../daemontools-0.76.errno.patch
patching file src/error.h
编译
eepfuture@ubuntu-sdp:/$ cd /usr/tmp/admin
deepfuture@ubuntu-sdp:/usr/tmp/admin$ ls
daemontools-0.76
deepfuture@ubuntu-sdp:/usr/tmp/admin$ cd daemontools-0.76
deepfuture@ubuntu-sdp:/usr/tmp/admin/daemontools-0.76$ ls
package src
deepfuture@ubuntu-sdp:/usr/tmp/admin/daemontools-0.76$ sudo package/compile
手动安装
deepfuture@ubuntu-sdp:/usr/tmp/admin/daemontools-0.76/command$ sudo mkdir /var/ademontool
deepfuture@ubuntu-sdp:/usr/tmp/admin/daemontools-0.76/command$ sudo mkdir /var/ademontool/command
deepfuture@ubuntu-sdp:/usr/tmp/admin/daemontools-0.76/command$ sudo mkdir /var/ademontool/service
deepfuture@ubuntu-sdp:/usr/tmp/admin/daemontools-0.76$sudo cp /usr/tmp/admin/daemontools-0.76/command/* /var/daemontool/command
deepfuture@ubuntu-sdp:/usr/tmp/admin/daemontools-0.76/command$ sudo nano svscanboot
#!/bin/sh
# WARNING: This file was auto-generated. Do not edit!
PATH=/var/daemontool/command:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin
exec </dev/null
exec >/dev/null
exec 2>/dev/null
/var/daemontool/command/svc -dx /var/daemontool/service/* /var/daemontool/service/*/log
env - PATH=$PATH svscan /var/daemontool/service 2>&1 | \
env - PATH=$PATH readproctitle service errors: .............................................................................$
十一、安装popmail,管理用户名和域的工具
deepfuture@ubuntu-sdp:/usr/tmp$ sudo wget http://sourceforge.net/projects/vpopmail/files/vpopmail-stable/5.4.30/vpopmail-5.4.30.tar.gz/download
deepfuture@ubuntu-sdp:/usr/tmp$ sudo tar xvfz vpopmail-5.4.30.tar.gz
vpopmail-5.4.30/
vpopmail-5.4.30/seek.c
vpopmail-5.4.30/vcdb.c
vpopmail-5.4.30/vpgsql.c
vpopmail-5.4.30/voracle.pc
vpopmail-5.4.30/vmysql.h
vpopmail-5.4.30/vuserinfo.c
vpopmail-5.4.30/vdelivermail.c
vpopmail-5.4.30/vldap.h
vpopmail-5.4.30/oracle/
vpopmail-5.4.30/oracle/oracle.create
vpopmail-5.4.30/ltmain.sh
vpopmail-5.4.30/vdelivermail.h
vpopmail-5.4.30/vpopbull.c
vpopmail-5.4.30/md5.c
vpopmail-5.4.30/configure.in
vpopmail-5.4.30/dotqmail2valias.c
vpopmail-5.4.30/vusagec.c
vpopmail-5.4.30/stamp-h.in
vpopmail-5.4.30/maildirquota.h
vpopmail-5.4.30/vaddaliasdomain.c
vpopmail-5.4.30/ippp.c
vpopmail-5.4.30/vlimits.h
vpopmail-5.4.30/hmac_md5.h
vpopmail-5.4.30/conf.h
vpopmail-5.4.30/vmkpasswd.c
vpopmail-5.4.30/client.c
vpopmail-5.4.30/vmoddomlimits.c
vpopmail-5.4.30/quotawarn.msg
vpopmail-5.4.30/backfill.c
vpopmail-5.4.30/vdeloldusers.c
vpopmail-5.4.30/vdeldomain.c
vpopmail-5.4.30/global.h
vpopmail-5.4.30/vmysql.c
vpopmail-5.4.30/vutil.h
vpopmail-5.4.30/vqmaillocal.c
vpopmail-5.4.30/vadddomain.c
vpopmail-5.4.30/vkill.c
vpopmail-5.4.30/Makefile.in
vpopmail-5.4.30/client.h
vpopmail-5.4.30/config.guess
vpopmail-5.4.30/vauth.h
vpopmail-5.4.30/vutil.c
vpopmail-5.4.30/valias.c
vpopmail-5.4.30/vpasswd.c
vpopmail-5.4.30/maildirquota.c
vpopmail-5.4.30/storage.h
vpopmail-5.4.30/vpopmaild.msg
vpopmail-5.4.30/vconvert.c
vpopmail-5.4.30/authvchkpw.c
vpopmail-5.4.30/conf.c
vpopmail-5.4.30/vadduser.c
vpopmail-5.4.30/vlistlib.c
vpopmail-5.4.30/vlist.c
vpopmail-5.4.30/install-sh
vpopmail-5.4.30/voracle.h
vpopmail-5.4.30/compile
vpopmail-5.4.30/vlimits.c
vpopmail-5.4.30/vpopmaild.c
vpopmail-5.4.30/config.sub
vpopmail-5.4.30/vdeluser.c
vpopmail-5.4.30/config.h.in
vpopmail-5.4.30/vsybase.h
vpopmail-5.4.30/vipmap.c
vpopmail-5.4.30/vpgsql.h
vpopmail-5.4.30/cdb/
vpopmail-5.4.30/cdb/cdb.h
vpopmail-5.4.30/cdb/uint32.h2
vpopmail-5.4.30/cdb/cdb_unpack.c
vpopmail-5.4.30/cdb/cdb_hash.c
vpopmail-5.4.30/cdb/trycpp.c
vpopmail-5.4.30/cdb/VERSION
vpopmail-5.4.30/cdb/uint32.h1
vpopmail-5.4.30/cdb/tryulong32.c
vpopmail-5.4.30/cdb/makelib
vpopmail-5.4.30/cdb/warn-auto.sh
vpopmail-5.4.30/cdb/cdbmake_add.c
vpopmail-5.4.30/cdb/cdb_seek.c
vpopmail-5.4.30/cdb/cdbmake_hash.c
vpopmail-5.4.30/cdb/Makefile
vpopmail-5.4.30/cdb/find-systype.sh
vpopmail-5.4.30/cdb/README
vpopmail-5.4.30/cdb/cdbmake_pack.c
vpopmail-5.4.30/cdb/THANKS
vpopmail-5.4.30/cdb/cdbmake.h
vpopmail-5.4.30/vlimits.default
vpopmail-5.4.30/hmac_md5.c
vpopmail-5.4.30/vmoduser.c
vpopmail-5.4.30/vldap.c
vpopmail-5.4.30/vdominfo.c
vpopmail-5.4.30/file_lock.c
vpopmail-5.4.30/mkinstalldirs
vpopmail-5.4.30/vsetuserquota.c
vpopmail-5.4.30/file_lock.h
vpopmail-5.4.30/vcdb.h
vpopmail-5.4.30/vusagec.conf
vpopmail-5.4.30/Makefile.am
vpopmail-5.4.30/seek.h
vpopmail-5.4.30/ChangeLog
vpopmail-5.4.30/vsybase.c
vpopmail-5.4.30/aclocal.m4
vpopmail-5.4.30/vpopmail.c
vpopmail-5.4.30/vpopmail.h
vpopmail-5.4.30/vpalias.c
vpopmail-5.4.30/configure
vpopmail-5.4.30/vlog.h
vpopmail-5.4.30/ippp.h
vpopmail-5.4.30/md5.h
vpopmail-5.4.30/grab.sh
vpopmail-5.4.30/vchangepw.c
vpopmail-5.4.30/contrib/
vpopmail-5.4.30/contrib/qmail-smtpd-auth-0.5.6.tar.gz
vpopmail-5.4.30/contrib/cistron_radius.README
vpopmail-5.4.30/contrib/cdb_clearpass.sh
vpopmail-5.4.30/contrib/vreorg.c
vpopmail-5.4.30/contrib/checkpassword_debug.README
vpopmail-5.4.30/contrib/checkpassword_debug.c
vpopmail-5.4.30/contrib/vdirrestore
vpopmail-5.4.30/contrib/adduser.mysql
vpopmail-5.4.30/contrib/qmail-smtpd-auth.README
vpopmail-5.4.30/contrib/vlog-support-0.22.README
vpopmail-5.4.30/contrib/cistron_radius.tar.gz
vpopmail-5.4.30/contrib/vpassgen
vpopmail-5.4.30/contrib/popfetch-1.0.tar.gz
vpopmail-5.4.30/contrib/sendmail2vpopmail.pl
vpopmail-5.4.30/contrib/vcdir.README
vpopmail-5.4.30/contrib/sqwebmail_update
vpopmail-5.4.30/contrib/addusers.pl
vpopmail-5.4.30/contrib/vdirrestore.README
vpopmail-5.4.30/contrib/vcdir.c
vpopmail-5.4.30/contrib/vpassgen.README
vpopmail-5.4.30/contrib/qmail-maildir++.patch
vpopmail-5.4.30/contrib/vlog-support-0.22.tar.gz
vpopmail-5.4.30/missing
vpopmail-5.4.30/ldap/
vpopmail-5.4.30/ldap/nsswitch.conf
vpopmail-5.4.30/ldap/slapd.conf
vpopmail-5.4.30/ldap/vpopmail.ldif
vpopmail-5.4.30/ldap/pam_ldap.secret
vpopmail-5.4.30/ldap/pam_ldap.conf
vpopmail-5.4.30/ldap/valias.schema
vpopmail-5.4.30/ldap/qmailUser.schema
vpopmail-5.4.30/clearopensmtp.c
vpopmail-5.4.30/vchkpw.c
vpopmail-5.4.30/doc/
vpopmail-5.4.30/doc/README.quotas
vpopmail-5.4.30/doc/README.pgsql
vpopmail-5.4.30/doc/AUTHORS
vpopmail-5.4.30/doc/README.vlimits
vpopmail-5.4.30/doc/README.activedirectory
vpopmail-5.4.30/doc/README.onchange
vpopmail-5.4.30/doc/README.mysql
vpopmail-5.4.30/doc/README.vqmaillocal
vpopmail-5.4.30/doc/README.oracle
vpopmail-5.4.30/doc/README.spamassassin
vpopmail-5.4.30/doc/README.qmail-default
vpopmail-5.4.30/doc/README.ipaliasdomains
vpopmail-5.4.30/doc/README.vdelivermail
vpopmail-5.4.30/doc/TODO
vpopmail-5.4.30/doc/doc_html/
vpopmail-5.4.30/doc/doc_html/vpopmail5.abw
vpopmail-5.4.30/doc/doc_html/vpopmailapi.png
vpopmail-5.4.30/doc/doc_html/vpopmail.html
vpopmail-5.4.30/doc/UPGRADE
vpopmail-5.4.30/doc/FAQ
vpopmail-5.4.30/doc/COPYING
vpopmail-5.4.30/doc/README.authvchkpw
vpopmail-5.4.30/doc/README.vpopmaild
vpopmail-5.4.30/doc/README.roamingusers
vpopmail-5.4.30/doc/README
vpopmail-5.4.30/doc/man_html/
vpopmail-5.4.30/doc/man_html/clearopensmtp.html
vpopmail-5.4.30/doc/man_html/index.html
vpopmail-5.4.30/doc/man_html/vsetuserquota.html
vpopmail-5.4.30/doc/man_html/vdelivermail.html
vpopmail-5.4.30/doc/man_html/vpasswd.html
vpopmail-5.4.30/doc/man_html/vadduser.html
vpopmail-5.4.30/doc/man_html/vdeldomain.html
vpopmail-5.4.30/doc/man_html/vdeluser.html
vpopmail-5.4.30/doc/man_html/vconvert.html
vpopmail-5.4.30/doc/man_html/vaddaliasdomain.html
vpopmail-5.4.30/doc/man_html/vchkpw.html
vpopmail-5.4.30/doc/man_html/vadddomain.html
vpopmail-5.4.30/doc/man_html/vpopbull.html
vpopmail-5.4.30/doc/INSTALL
vpopmail-5.4.30/doc/README.maildrop
vpopmail-5.4.30/doc/README.filelocking
vpopmail-5.4.30/doc/README.sybase
vpopmail-5.4.30/doc/README.ldap
vpopmail-5.4.30/maildrop/
vpopmail-5.4.30/maildrop/maildroprc.v1
vpopmail-5.4.30/maildrop/maildroprc.v2
vpopmail-5.4.30/bigdir.c
vpopmail-5.4.30/vusaged/
vpopmail-5.4.30/vusaged/userstore.c
vpopmail-5.4.30/vusaged/cache.h
vpopmail-5.4.30/vusaged/queue.c
vpopmail-5.4.30/vusaged/user.h
vpopmail-5.4.30/vusaged/socket.h
vpopmail-5.4.30/vusaged/userstore.h
vpopmail-5.4.30/vusaged/query.c
vpopmail-5.4.30/vusaged/uthash.h
vpopmail-5.4.30/vusaged/shutdown.h
vpopmail-5.4.30/vusaged/path.h
vpopmail-5.4.30/vusaged/Makefile.in
vpopmail-5.4.30/vusaged/cache.c
vpopmail-5.4.30/vusaged/queue.h
vpopmail-5.4.30/vusaged/domain.h
vpopmail-5.4.30/vusaged/signal.h
vpopmail-5.4.30/vusaged/directory.h
vpopmail-5.4.30/vusaged/grow.c
vpopmail-5.4.30/vusaged/list.c
vpopmail-5.4.30/vusaged/signal.c
vpopmail-5.4.30/vusaged/query.h
vpopmail-5.4.30/vusaged/domain.c
vpopmail-5.4.30/vusaged/shutdown.c
vpopmail-5.4.30/vusaged/socket.c
vpopmail-5.4.30/vusaged/user.c
vpopmail-5.4.30/vusaged/configure.ac
vpopmail-5.4.30/vusaged/quota.h
vpopmail-5.4.30/vusaged/vusaged.c
vpopmail-5.4.30/vusaged/list.h
vpopmail-5.4.30/vusaged/grow.h
vpopmail-5.4.30/vusaged/etc/
vpopmail-5.4.30/vusaged/etc/vusaged.conf
vpopmail-5.4.30/vusaged/packet.h
vpopmail-5.4.30/vusaged/INSTALL
vpopmail-5.4.30/vusaged/directory.c
vpopmail-5.4.30/vusaged/packet.c
vpopmail-5.4.30/vusaged/ChangeLog
vpopmail-5.4.30/vusaged/configure
vpopmail-5.4.30/vusaged/contrib/
vpopmail-5.4.30/vusaged/contrib/rc.vusaged
deepfuture@ubuntu-sdp:/usr/tmp$ sudo groupadd vchkpw
deepfuture@ubuntu-sdp:/usr/tmp$ cd /
deepfuture@ubuntu-sdp:/$ sudo useradd -g vchkpw vpopmail -s /bin/false
deepfuture@ubuntu-sdp:/$ sudo usermod -d /var/vpopmail vpopmail
deepfuture@ubuntu-sdp:/$ sudo mkdir /var/vpopmail
deepfuture@ubuntu-sdp:/$ chown -R vpopmail /var/vpopmail
安装mysql
deepfuture@ubuntu-sdp:/$cd /usr/tmp/vpopmail-5.4.30
deepfuture@ubuntu-sdp:/usr/tmp/vpopmail-5.4.30$ sudo apt-get install mysql-server mysql-client
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
mysql-server 已经是最新的版本了。
下列软件包是自动安装的并且现在不再被使用了:
linux-headers-2.6.31-14-generic-pae linux-headers-2.6.31-14 libdns50
使用'apt-get autoremove'来删除它们
下列【新】软件包将被安装:
mysql-client
共升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 32 个软件未被升级。
需要下载 63.7kB 的软件包。
解压缩后会消耗掉 102kB 的额外空间。
获取:1 http://cn.archive.ubuntu.com karmic/main mysql-client 5.1.37-1ubuntu5 [63.7kB]
下载 63.7kB,耗时 1s (42.5kB/s)
选中了曾被取消选择的软件包 mysql-client。
(正在读取数据库 ... 系统当前总共安装有 70303 个文件和目录。)
正在解压缩 mysql-client (从 .../mysql-client_5.1.37-1ubuntu5_all.deb) ...
正在设置 mysql-client (5.1.37-1ubuntu5) ..
deepfuture@ubuntu-sdp:/usr/tmp/vpopmail-5.4.30$sudo apt-get install mysql-admin
安装mysql头文件
deepfuture@ubuntu-sdp:/usr/tmp/vpopmail-5.4.30$sudo apt-get install libmysqlclient15-dev
配置
deepfuture@ubuntu-sdp:/usr/tmp/vpopmail-5.4.30$ sudo ./configure -enable-auth-module=mysql -enable-valias
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for gawk... (cached) mawk
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... none
checking for a BSD-compatible install... /usr/bin/install -c
checking for ranlib... ranlib
checking for library containing strerror... none required
checking for crypt in -lcrypt... yes
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for inttypes.h... (cached) yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking endian.h usability... yes
checking endian.h presence... yes
checking for endian.h... yes
checking byteswap.h usability... yes
checking byteswap.h presence... yes
checking for byteswap.h... yes
...........
............