亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
樓主: b.s.d
打印 上一主題 下一主題

[FreeBSD] [發(fā)表]FreeBSD全能服務(wù)器安裝手冊v0.0.7 [復制鏈接]

論壇徽章:
0
31 [報告]
發(fā)表于 2006-06-20 11:57 |只看該作者
附錄


Email軟件的選擇


        在Internet中最常使用的工具可能就是電子郵件了,因此,建立一個站點所必須的一步工作就是構(gòu)建一個安全、可靠的電子郵件系統(tǒng)。由于電子郵件是一種非常傳統(tǒng)的工具,因此有非常多的軟件可以用來達到這個目的,這里面包括從古老的uucp郵件到非常龐大的商業(yè)群件系統(tǒng),如Lotus Domino Server,但使用最廣泛的還是一種自由軟件──sendmail,它支撐了當前Internet郵件系統(tǒng)的主體。


Sendmail的不足

        無論從使用的廣泛程度,還是從代碼的復雜程度來講,sendmail都是一個非常優(yōu)秀的軟件。如果使用它來構(gòu)建網(wǎng)站的電子郵件系統(tǒng),基本上不必費心,因為幾乎所有的Unix的缺省配置中都內(nèi)置這個軟件,只需要設(shè)置好操作系統(tǒng),它就能立即運轉(zhuǎn)起來。然而,Internet用戶的要求更為苛刻,紛紛指出sendmail中包含的各個不足之處。

        第一個重要的缺點是它的安全性較差,這是因為當其作者Eric Allman最初開始寫作這個軟件的時候,Internet的用戶還很少,因而安全性并不沒有得到大家的重視。由于郵件系統(tǒng)需要處理的是外部發(fā)送來的各種各樣的信息,甚至包含一些惡意數(shù)據(jù),然而sendmail在大多數(shù)系統(tǒng)中都是以root身份運行,一旦出現(xiàn)問題,就會對系統(tǒng)安全造成嚴重影響。在這種情況下,要防止出現(xiàn)安全問題,僅僅依賴程序本身是不可取的,應該從系統(tǒng)結(jié)構(gòu)出發(fā),使程序擁有的特殊權(quán)限限制到最小。

        此外,也是由于其早期的Internet用戶數(shù)量及郵件數(shù)量都相當小,Sendmail的系統(tǒng)結(jié)構(gòu)并不適合較大的負載,對于高負載的郵件系統(tǒng),需要對Sendmail進行復雜的調(diào)整。例如,通常情況下sendmail只啟動一個進程順序向外發(fā)送郵件,如果郵件較多時就要花費相當長的時間。

        使用Sendmail還會遇到的另一個問題是它的設(shè)置相當復雜,對于使用缺省設(shè)置來收發(fā)電子郵件,問題并不存在。當管理員打算進行一些特殊設(shè)置,以便利用Sendmail提供的復雜郵件處理能力時,就不得不面對復雜的宏和正則表達式。雖然現(xiàn)在Sendmail使用了宏預處理程序m4使設(shè)置更易于理解一些,但是掌握Sendmail的設(shè)置仍然是對系統(tǒng)管理員的一大挑戰(zhàn)。


使用Qmail替代Sendmail

        為了解決sendmail的安全問題,整個系統(tǒng)結(jié)構(gòu)需要重新設(shè)計;镜脑瓌t是將系統(tǒng)劃分為不同的模塊,有負責接收外部郵件的,有管理緩沖目錄中待發(fā)送的郵件隊列的,有將郵件發(fā)送到遠程服務(wù)器或本地用戶的。Qmail就是按照這個原則進行的設(shè)計,它由多個不同功能的小程序組成,只有必要的程序才是setuid程序(即以root用戶權(quán)限執(zhí)行),這樣就減少了安全隱患,并且由于這些程序都比較簡單一些,因此就可以達到較高的安全性。

        這種按照Unix思路的模塊化設(shè)計方法也使得Qmail具備較高的性能,因為如果需要,Qmail可以啟動某個模塊的多個實例來完成同一個任務(wù),例如啟動多個發(fā)送程序同時向外發(fā)送郵件,這對于提供郵件列表服務(wù)的郵件系統(tǒng)是非常有益的。這種方式也使得Qmail要占用較大的網(wǎng)絡(luò)帶寬,如果帶寬有限,效果反而不好,但在當前網(wǎng)絡(luò)性能大幅度提高的情況下,這種方式是非常合適的。

        Qmail還提供一些非常有用的特色來增強系統(tǒng)的可靠性,例如,它提出了Maildir格式的郵件存儲方式,這使得通過網(wǎng)絡(luò)文件系統(tǒng)NFS存取郵件成為可能。此外,Qmail還具備一些非常別致的特色,它不僅僅提供了與Sendmail兼容的方式來處理轉(zhuǎn)發(fā)、別名等能力,還可以用以Sendmail完全不同的方式來提供這些功能。從它的編譯安裝方式、提供的擴展功能和源代碼的風格,可以看出其作者Dan Bernstein是一個極具個性化的程序員。正因為如此,對于Qmail的某些方面,有著一些爭論,例如有些人認為Qmail的安裝設(shè)置并不易于理解,很容易讓人糊涂,而另一些人的看法則相反;旧线@是因為Qmail提供解決問題的方式,和Sendmail不大相同的緣故,這樣對那些不太熟悉Sendmail的郵件系統(tǒng)管理員,反而更容易接受Qmail一些。


另一種替換軟件:Postfix

        Postfix同樣也是采用了模塊化的方式,但與Qmail不同的是,Postfix使用了一個主控進程進行監(jiān)控。Postfix在很多方面都考慮到了安全問題,它甚至不向root分發(fā)電子郵件,以避免以root身份讀寫文件或啟動外部程序。考慮到它的作者Wietse Venema曾編寫了著名的安全軟件TcpWrapper,并是SATAN程序的合作人員之一,Postfix的安全性是非常值得信賴的。

同樣,Postfix的性能也非常不錯,甚至在Qmail作者自己進行的測試中也表明,Postfix的性能和Qmail基本相當。但Postfix占用的內(nèi)存要大一些,這主要是由于Postfix和Qmail在系統(tǒng)結(jié)構(gòu)上的差異造成的。

與Qmail不同,Postfix更著眼于作為Sendmail的直接替換,使用Postfix替換Sendmail卻相當簡單,因為Postfix使用的很多文件和Sendmail一致,只需要在配置文件中指明原有Sendmail配置文件的位置就可以了,Postfix甚至還提供了sendmail和mailq程序,以保持兼容性;旧,可以直接從Sendmail轉(zhuǎn)換為使用Postfix,而不需要額外的設(shè)置。Postfix提供的安裝配置方式也相當簡單,它使用中心化的配置文件和非常易理解的配置指令。

        Postfix提供的一些強大的功能主要在于多種數(shù)據(jù)庫表查詢方式,例如它支持DB、DBM、passwd文件、正則表達式、MySQL數(shù)據(jù)庫以及LDAP方式的查詢,用于支持系統(tǒng)級的別名、虛擬主機等。雖然在Qmail中也能支持這些功能,但沒有象Postfix那樣統(tǒng)一、簡潔。此外,更改Postfix的設(shè)置之后,也不需要重新啟動整個系統(tǒng),只需要使用postfix reload就能完全刷新配置,這也避免了丟失郵件的可能性。


        事實上,除了Qmail和Postfix之外,還有很多種郵件系統(tǒng),例如Smail、Exim等,然而毫無疑問Qmail和Postfix是其中最優(yōu)秀的,也是Sendmail最有力的競爭者。此外,還有一些商業(yè)郵件服務(wù)器產(chǎn)品,但一般情況下,購買商業(yè)郵件服務(wù)器軟件大部分是沖著其提供的服務(wù)或者是附加功能來的,例如群件產(chǎn)品通常帶有很多額外功能用于辦公環(huán)境等。

        至于在Sendmail、Postfix和Qmail之間進行選擇,基本上依賴于用戶自己的偏好。有些人喜歡Qmail提供的復雜特色,而有的人希望對Sendmail的替換能簡單一些,也有人不打算更換,而堅持使用Sendmail的最新版本。對于一個熟悉Unix系統(tǒng)而又愿意改善郵件系統(tǒng)性能和安全性的管理員,應該轉(zhuǎn)換為使用Postfix或Qmail,除非對Sendmail非常熟悉而保持了特殊的感情。在Postfix和Qmail之間,它們各自有一批忠心擁護者,選擇哪個都是可行的;旧希琍ostfix作為一個較新的軟件,其影響力正在增加,有些原本使用Qmail的使用者,也開始轉(zhuǎn)向Postfix,這可能是因為Postfix的風格更通俗的原因。

論壇徽章:
0
32 [報告]
發(fā)表于 2006-06-20 11:58 |只看該作者
FreeBSD全能服務(wù)器安裝手冊之郵件服務(wù)器篇--qmail基本介紹

qmail的基本介紹
qmail是在unix系統(tǒng)上的一個郵件程序。qmail程序是由dan bernstein開發(fā)出來的為標準的unix服務(wù)器提供郵件傳輸代理的(mail transfer agent,mta)功能的,用來替代sendmail。qmail因特網(wǎng)主頁http://www.qmail.org。

論壇徽章:
0
33 [報告]
發(fā)表于 2006-06-20 11:59 |只看該作者
FreeBSD全能服務(wù)器安裝手冊之qmail基礎(chǔ)安裝篇

###################################下載軟件包##################################
Part 1 - Download the Software(http://www.qmailrocks.org/downloads/qmailrocks.tar.gz)


mkdir /downloads
cd /downloads
tar zxvf qmailrocks.tar.gz




##################################安裝qmail主程序##############################
Part 2 - Installing Qmail Itself  


/downloads/qmailrocks/scripts/install/qmr_install_freebsd-s1.script
腳本內(nèi)容請參考------qmail安裝腳本篇qmr_install_freebsd-s1.script


###############################################################################
/downloads/qmailrocks/scripts/util/qmail_patches.script   
腳本內(nèi)容請參考------qmail安裝腳本篇qmail_patches.script



cd /usr/src/qmail/qmail-1.03

make man
make setup check
./config-fast mail.tjhaina.net

/usr/ports/mail/qmail
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cd /usr/src/qmail/ucspi-tcp-0.88/
make
make setup check

/usr/ports/sysutils/ucspi-tcp
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cd /package/admin/daemontools-0.76
package/install
reboot

/usr/ports/sysutils/daemontools
################################Part 3 - EZmlm##################################
Part 3 - EZmlm  
cd /downloads/qmailrocks/
tar zxvf ezmlm-0.53-idx-0.41.tar.gz
cd ezmlm-0.53-idx-0.41
make
make setup


/usr/ports/mail/ezmlm
############################Part 4 - Qmail-Autoresponder ##########################
Part 4 - Qmail-Autoresponder  
#pkg_add -r qmail-autoresponder
cd /downloads/qmailrocks
pkg_add qmail-autoresponder-0.96.1.tbz


/usr/ports/mail/qmail-autoresponder
################################part 5 - Vpopmail################################
Part 5 - Vpopmail(I would like to install vpopmail with MySQL integration)
mkdir -p ~vpopmail/etc
mysql -u root -p
CREATE DATABASE vpopmail;  
GRANT select,insert,update,delete,create,drop ON vpopmail.* TO vpopmailuser@localhost IDENTIFIED BY 'password';  
quit
mysql -u vpopmailuser -p
quit
upload
iGENUS.mysql
mysql -u root -p < /home/chb/iGENUS.mysql  
腳本內(nèi)容請參考------qmail安裝腳本篇iGENUS.mysql
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
cd /downloads/qmailrocks
tar zxvf vpopmail-5.4.9.tar.gz  
cd vpopmail-5.4.9
./configure \
--disable-roaming-users \
--enable-logging=p \
--disable-ip-alias-domains \
--disable-passwd \
--enable-clear-passwd \
--disable-domain-quotas \
--enable-auth-module=mysql \
--enable-many-domains \
--enable-auth-logging \
--enable-sql-logging \
--enable-valias \
--disable-mysql-limits
make  
make install-strip


chown vpopmail:vchkpw ~vpopmail/etc  

echo "localhost|0|vpopmailuser|password|vpopmail" > ~vpopmail/etc/vpopmail.mysql

chown vpopmail:vchkpw ~vpopmail/etc/vpopmail.mysql  

chmod 640 ~vpopmail/etc/vpopmail.mysql  

/home/vpopmail/bin/vadddomain 你的域名  
之后回提示輸入域管理員的密碼  
/home/vpopmail/bin/vadduser 郵件用戶@你的域名  
之后回提示輸入郵件用戶的密碼  




/usr/ports/mail/vpopmail
#############################Part 6 - Vqadmin###################################
Part 6 - Vqadmin  
cd /downloads/qmailrocks
tar zxvf vqadmin-2.3.6.tar.gz
cd vqadmin-2.3.6
./configure \
--enable-cgibindir=/usr/local/www/cgi-bin \
--enable-htmldir=/usr/local/www/html  

make  
make install-strip


Now you will need to add the following to your server's Apache configuration file (usually called httpd.conf)  


ee /usr/local/etc/apache/httpd.conf
在末尾添加

<Directory "/usr/local/www/cgi-bin/vqadmin">
deny from all
Options ExecCGI
AllowOverride AuthConfig
Order deny,allow
</Directory>

cd /usr/local/www/cgi-bin/vqadmin
ee .htaccess  
AuthType Basic
AuthUserFile  /usr/local/etc/apache/conf/vqadmin.passwd
AuthName vQadmin
require valid-user
satisfy any


mkdir /usr/local/etc/apache/conf

chown www .htaccess  
chmod 644 .htaccess
htpasswd -bc /usr/local/etc/apache/conf/vqadmin.passwd admin password
chmod 644 /usr/local/etc/apache/conf/vqadmin.passwd
apachectl stop
apachectl start
http://192.168.0.205/cgi-bin/vqadmin/vqadmin.cgi


/usr/ports/mail/vqadmin

##############################Part 7 - Maildrop###################################
Part 7 - Maildrop  
cd /downloads/qmailrocks
tar zxvf maildrop-1.6.3.tar.gz
cd maildrop-1.6.3
./configure \
--prefix=/usr/local \
--exec-prefix=/usr/local \
--enable-maildrop-uid=root \
--enable-maildrop-gid=vchkpw \
--enable-maildirquota
make  
make install-strip
make install-man

/usr/ports/mail/maildrop
##############################Part 8 - Qmailadmin#############################
Part 8 - Qmailadmin            
cd /downloads/qmailrocks
tar zxvf qmailadmin-1.2.3.tar.gz
cd qmailadmin-1.2.3
./configure \
--enable-cgibindir=/usr/local/www/cgi-bin \
--enable-htmldir=/usr/local/www/html/directory \
--enable-autoresponder-path=/usr/local/bin/qmail-autoresponder

make  
make install-strip

/usr/ports/mail/qmailadmin
####################################Part 9 - Finalizing Qmail#######################
Part 9 - Finalizing Qmail
/downloads/qmailrocks/scripts/finalize/freebsd/finalize_freebsd.script
腳本內(nèi)容請參考------qmail安裝腳本篇finalize_freebsd.script
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ee /var/qmail/supervise/qmail-pop3d/run
Find "mail.example.com" and change it to your server's hostname. For example: mail.mydomain.com.

ee /var/qmail/supervise/qmail-smtpd/run
Find "mail.example.com" and change it to your server's hostname. For example: mail.mydomain.com

qmailctl stop
echo '127.:allow,RELAYCLIENT=""' >> /etc/tcp.smtp

qmailctl cdb

echo b.s.d@163.com > /var/qmail/alias/.qmail-root
where "some_address" is the system user or email address you want these addresses aliased to.

echo b.s.d@163.com > /var/qmail/alias/.qmail-postmaster
where "some_address" is the system user or email address you want these addresses aliased to.

echo b.s.d@163.com > /var/qmail/alias/.qmail-mailer-daemon
where "some_address" is the system user or email address you want these addresses aliased to.

ln -s /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-anonymous
chmod 644 /var/qmail/alias/.qmail*


##########################Part 10 - Uninstalling Sendmail###########################
Part 10 - Uninstalling Sendmail
killall sendmail
mv /usr/sbin/sendmail /usr/sbin/sendmail.old
mv /usr/lib/sendmail /usr/lib/sendmail.old(this may not apply if there is no sendmail link or binary in this location)
chmod 0 /usr/lib/sendmail.old /usr/sbin/sendmail.old

Now we will need to instruct FreeBSD not to attempt to start Sendmail upon startup. This is done by make the following  

modification to the /etc/rc.conf file:

Change sendmail_enable="YES" to sendmail_enable="NONE"
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
#ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail



########################Part 11 - Starting up qmail#################################


Part 11 - Starting up qmail
/downloads/qmailrocks/scripts/util/qmr_inst_check
腳本內(nèi)容請參考------qmail安裝腳本篇qmr_inst_check
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

qmailctl stop
qmailctl start
telnet localhost 110

you should see something like this:

Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
+OK <16658.1054485137@yourserver.com>
user postmaster@mydomain.com (enter your username here. remember to use the full e-mail address)
+OK  
pass your_password
+OK
quit
+OK  
Connection closed by foreign host.

This is the sign of a successfull POP connection to the server!

Now try sending mail to that same user from another location. Telnet to 110 again and run the "list" command and you should  

see the message that your send...
telnet localhost 110

Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
+OK <16658.1054485137@yourserver.comt>
user postmaster@mydomain.com (again, remember to log in with the full email address of the user)
+OK  
pass your_password
+OK  
list
+OK  
1 323 (there's your message!)
.
quit
+OK  
Connection closed by foreign host.

########################Part 12 - Installing Courier IMAP & IMAP SSL################
Part 12 - Installing Courier IMAP & IMAP SSL
cd /downloads/qmailrocks/

/usr/bin/bunzip2 courier-imap-3.0.8.tar.bz2 (Note: some systems may use bunzip2 instead of bunzip)
#bunzip courier-imap-3.0.8.tar.bz2
tar xvf courier-imap-3.0.8.tar
cd courier-imap-3.0.8
./configure \
--prefix=/usr/local \
--exec-prefix=/usr/local \
--without-authdaemon \
--with-authvchkpw \
--without-authldap \
--disable-root-check \
--with-ssl
make
make install-strip
cd /usr/local/etc
cp imapd.dist imapd
cp imapd-ssl.dist imapd-ssl  
/usr/local/sbin/mkimapdcert
ee imapd-ssl
#make sure IMAPDSSLSTART=YES

cp /usr/local/libexec/imapd.rc /usr/local/etc/rc.d/imap.sh
cp /usr/local/libexec/imapd-ssl.rc /usr/local/etc/rc.d/imaps.sh
/usr/local/etc/rc.d/imap.sh start
/usr/local/etc/rc.d/imaps.sh start


telnet localhost 143

Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE STARTTLS]  

Courier-IMAP ready. Copyright 1998-2003 Double Precision, Inc. See COPYING for distribution information.
a login postmaster@mydomain.com my_password
a OK LOGIN Ok. (successful login!)
a logout (logs you out)
* BYE Courier-IMAP server shutting down
a OK LOGOUT completed
Connection closed by foreign host.

<!--cd /downloads/qmailrocks
tar zxvf courierpassd-1.1.0-RC1.tar.gz
cd courierpassd-1.1.0-RC1
./configure --with-couriersrc=/downloads/qmailrocks/courier-imap-3.0.8
make
make install-->



#########################Part 14 - Clam Antivirus & Spamassassin####################
Part 14 - Clam Antivirus & Spamassassin  

安裝Clamav  

cd /usr/ports/security/clamav  
make
make install
make clean  
注:選中CURL  
reboot  
測試  
/usr/local/bin/clamscan -r -i /usr/local/www/data  
----------- SCAN SUMMARY -----------  
Known viruses: 32358  
Scanned directories: 47  
Scanned files: 866  
Infected files: 0  
Data scanned: 10.32 MB  
I/O buffer size: 131072 bytes  
Time: 41.750 sec (0 m 41 s)  

升級病毒庫  
/usr/local/bin/freshclam -l /var/log/clamav/clam-update.log

ClamAV update process started at Fri May 6 00:12:24 2005  
WARNING: Your ClamAV installation is OUTDATED - please update immediately!  
WARNING: Local version: 0.83 Recommended version: 0.84  
Downloading main.cvd
  •   
    main.cvd updated (version: 31, sigs: 33079, f-level: 4, builder: tkojm)  
    Downloading daily.cvd
  •   
    daily.cvd updated (version: 871, sigs: 1178, f-level: 4, builder: ccordes)  
    Database updated (34257 signatures) from database.clamav.net (IP: 61.8.0.16)  
    Clamd successfully notified about the update.
  • 論壇徽章:
    0
    34 [報告]
    發(fā)表于 2006-06-20 12:00 |只看該作者
    FreeBSD全能服務(wù)器安裝手冊之qmail安裝腳本篇
    本次安裝中所用到的腳本:
    qmr_install_freebsd-s1.script
    qmail_patches.script
    iGENUS.mysql
    finalize_freebsd.script
    qmr_inst_check
    script:1
    ############qmr_install_freebsd-s1.script內(nèi)容##############
    #!/bin/sh

    #An automation script to start the installation of qmail, ucspi-tcp and daemontools
    #Specially formulated for Redhat, Fedora, RHEL and Whitebox Linux. :)


    echo "Creating initial qmail directories..."
    echo
    sleep 2

    cd /downloads/qmailrocks

    mkdir -p /var/qmail

    mkdir /usr/src/qmail

    echo "Done!"
    echo
    sleep 2
    echo "Creating all needed users and groups..."
    echo
    sleep 2

    #######
    #Script to add users and groups for FreeBSD

    #Add all need Qmail users and groups
    pw groupadd nofiles
    pw useradd alias -g nofiles -d /var/qmail/alias -s /sbin/nologin
    pw useradd qmaild -g nofiles -d /var/qmail -s /sbin/nologin
    pw useradd qmaill -g nofiles -d /var/qmail -s /sbin/nologin
    pw useradd qmailp -g nofiles -d /var/qmail -s /sbin/nologin
    pw groupadd qmail
    pw useradd qmailq -g qmail -d /var/qmail -s /sbin/nologin
    pw useradd qmailr -g qmail -d /var/qmail -s /sbin/nologin
    pw useradd qmails -g qmail -d /var/qmail -s /sbin/nologin
    #Add vpopmail users/groups
    pw groupadd vchkpw
    pw useradd vpopmail -g vchkpw -m -d /usr/home/vpopmail -s /sbin/nologin

    #######

    echo "Done!"
    echo
    sleep 2
    echo "Unpacking qmail, ucspi-tcp and daemontools..."
    echo
    sleep 2

    cd /usr/src/qmail

    tar zxvf /downloads/qmailrocks/qmail-1.03.tar.gz

    tar zxvf /downloads/qmailrocks/ucspi-tcp-0.88.tar.gz

    mkdir -p /package

    chmod 1755 /package

    cd /package

    tar zxvf /downloads/qmailrocks/daemontools-0.76.tar.gz

    echo "Done!"
    echo
    sleep 2
    echo "Next, we setup special logging directories..."
    echo
    sleep 2

    mkdir /var/log/qmail

    cd /var/log/qmail

    mkdir qmail-send qmail-smtpd qmail-pop3d

    chown -R qmaill:wheel /var/log/qmail

    chmod -R 750 /var/log/qmail

    echo "Done!"
    echo
    sleep 2
    echo "And set up the supervise script directories..."
    echo
    sleep 2

    mkdir /var/qmail/supervise

    cd /var/qmail/supervise

    mkdir -p qmail-smtpd/log qmail-send/log qmail-pop3d/log

    chmod +t qmail-smtpd qmail-send qmail-pop3d

    echo "Setting conf-split and conf-spawn"
    echo
    sleep 2

    echo 211 > /usr/src/qmail/qmail-1.03/conf-split

    echo 255 > /usr/src/qmail/qmail-1.03/conf-spawn

    echo "All steps completed!"
    echo
    sleep 2

    ##############################################################################################################################################################

    script:2
    ############### qmail_patches.script內(nèi)容##############
    #!/bin/sh

    #An automation script to start the installation of qmail, ucspi-tcp and daemontools
    #Specially formulated for Redhat, Fedora, RHEL and Whitebox Linux. :)


    echo "Creating initial qmail directories..."
    echo
    sleep 2

    cd /downloads/qmailrocks

    mkdir -p /var/qmail

    mkdir /usr/src/qmail

    echo "Done!"
    echo
    sleep 2
    echo "Creating all needed users and groups..."
    echo
    sleep 2

    #######
    #Script to add users and groups for FreeBSD

    #Add all need Qmail users and groups
    pw groupadd nofiles
    pw useradd alias -g nofiles -d /var/qmail/alias -s /sbin/nologin
    pw useradd qmaild -g nofiles -d /var/qmail -s /sbin/nologin
    pw useradd qmaill -g nofiles -d /var/qmail -s /sbin/nologin
    pw useradd qmailp -g nofiles -d /var/qmail -s /sbin/nologin
    pw groupadd qmail
    pw useradd qmailq -g qmail -d /var/qmail -s /sbin/nologin
    pw useradd qmailr -g qmail -d /var/qmail -s /sbin/nologin
    pw useradd qmails -g qmail -d /var/qmail -s /sbin/nologin
    #Add vpopmail users/groups
    pw groupadd vchkpw
    pw useradd vpopmail -g vchkpw -m -d /usr/home/vpopmail -s /sbin/nologin

    #######

    echo "Done!"
    echo
    sleep 2
    echo "Unpacking qmail, ucspi-tcp and daemontools..."
    echo
    sleep 2

    cd /usr/src/qmail

    tar zxvf /downloads/qmailrocks/qmail-1.03.tar.gz

    tar zxvf /downloads/qmailrocks/ucspi-tcp-0.88.tar.gz

    mkdir -p /package

    chmod 1755 /package

    cd /package

    tar zxvf /downloads/qmailrocks/daemontools-0.76.tar.gz

    echo "Done!"
    echo
    sleep 2
    echo "Next, we setup special logging directories..."
    echo
    sleep 2

    mkdir /var/log/qmail

    cd /var/log/qmail

    mkdir qmail-send qmail-smtpd qmail-pop3d

    chown -R qmaill:wheel /var/log/qmail

    chmod -R 750 /var/log/qmail

    echo "Done!"
    echo
    sleep 2
    echo "And set up the supervise script directories..."
    echo
    sleep 2

    mkdir /var/qmail/supervise

    cd /var/qmail/supervise

    mkdir -p qmail-smtpd/log qmail-send/log qmail-pop3d/log

    chmod +t qmail-smtpd qmail-send qmail-pop3d

    echo "Setting conf-split and conf-spawn"
    echo
    sleep 2

    echo 211 > /usr/src/qmail/qmail-1.03/conf-split

    echo 255 > /usr/src/qmail/qmail-1.03/conf-spawn

    echo "All steps completed!"
    echo
    sleep 2


    ############################## qmail_patches.script內(nèi)容###########################
    ###############################################################################



    script:3

    %%%%%%%%%%%%%%%%%%iGENUS.mysql%%%%%%%%%%%%%%%%%%%%%
    DROP DATABASE vpopmail;  
    CREATE DATABASE vpopmail;  
    USE vpopmail;  

    CREATE TABLE `address` (
    `id` int(11) unsigned NOT NULL auto_increment,  
    `pw_id` int(5) NOT NULL default '0',  
    `name` varchar(64) NOT NULL default '',  
    `email` varchar(128) NOT NULL default '',  
    UNIQUE KEY `id` (`id`),  
    KEY `pw_id` (`pw_id`)  
    ) TYPE=MyISAM PACK_KEYS=1 ;  

    CREATE TABLE `admin` (  
    `id` int(10) unsigned NOT NULL auto_increment,  
    `site_id` int(10) unsigned NOT NULL default '0',  
    `domain` varchar(128) NOT NULL default '',  
    `quota` smallint(5) unsigned NOT NULL default '0',  
    `total` smallint(5) unsigned NOT NULL default '0',  
    `createtime` timestamp(14) NOT NULL,  
    `login` char(1) NOT NULL default '',  
    `cur_total` smallint(5) NOT NULL default '0',  
    `cur_quota` smallint(5) NOT NULL default '0',  
    `gid` varchar(11) NOT NULL default '',  
    `expiration_time` timestamp(14) NOT NULL,  
    `flag` int(10) unsigned NOT NULL default '0',  
    `maxmsg` int(10) unsigned NOT NULL default '0',  
    PRIMARY KEY (`id`),  
    UNIQUE KEY `domain` (`domain`)  
    ) TYPE=MyISAM PACK_KEYS=1 ;  

    CREATE TABLE `card` (  
    `id` int(5) unsigned NOT NULL auto_increment,  
    `pw_id` int(5) unsigned NOT NULL default '0',  
    `LinkMan` varchar(64) NOT NULL default '',  
    `CompanyName` varchar(100) NOT NULL default '',  
    `address` varchar(255) NOT NULL default '',  
    `Position` varchar(32) NOT NULL default '',  
    `PhoneNumber` varchar(16) NOT NULL default '',  
    `Mobile` varchar(12) NOT NULL default '',  
    `Email` varchar(128) NOT NULL default '',  
    `Partaker` varchar(32) NOT NULL default '',  
    `Memo` varchar(255) NOT NULL default '',  
    PRIMARY KEY (`id`)  
    ) TYPE=MyISAM ;  

    CREATE TABLE `lastauth` (  
    `user` char(32) NOT NULL default '',  
    `domain` char(64) NOT NULL default '',  
    `remote_ip` char(18) NOT NULL default '',  
    `timestamp` bigint(20) NOT NULL default '0',  
    PRIMARY KEY (`user`,`domain`)  
    ) TYPE=MyISAM;  

    CREATE TABLE `logs` (  
    `pw_id` int(5) default '0',  
    `ip` varchar(15) NOT NULL default '',  
    `action` varchar(15) NOT NULL default '',  
    `time` datetime default NULL,  
    `content` varchar(64) NOT NULL default '',  
    `email` varchar(128) NOT NULL default ''  
    ) TYPE=MyISAM;  

    CREATE TABLE `message` (  
    `id` int(5) unsigned NOT NULL auto_increment,  
    `title` varchar(255) NOT NULL default '',  
    `body` text NOT NULL,  
    `createtime` datetime NOT NULL default '0000-00-00 00:00:00',  
    `updatetime` datetime NOT NULL default '0000-00-00 00:00:00',  
    `pw_domain` varchar(64) NOT NULL default '',  
    UNIQUE KEY `id` (`id`)  
    ) TYPE=MyISAM ;  

    CREATE TABLE `personal` (  
    `id` int(11) unsigned NOT NULL auto_increment,  
    `pw_id` int(5) NOT NULL default '0',  
    `truename` varchar(10) NOT NULL default '',  
    `fax` varchar(20) NOT NULL default '',  
    `telephone` varchar(15) NOT NULL default '',  
    `sex` int(1) NOT NULL default '0',  
    `year` int(4) NOT NULL default '0',  
    `MONTH` int(2) NOT NULL default '0',  
    `DAY` int(2) NOT NULL default '0',  
    `education` varchar(4) NOT NULL default '',  
    `marital` int(1) NOT NULL default '0',  
    `occupation` varchar(15) NOT NULL default '',  
    `companyname` varchar(30) NOT NULL default '',  
    `province` varchar(6) NOT NULL default '',  
    PRIMARY KEY (`id`)  
    ) TYPE=MyISAM PACK_KEYS=1 ;  

    CREATE TABLE `scheduler` (  
    `id` int(11) unsigned NOT NULL auto_increment,  
    `begin_time` int(11) unsigned default NULL,  
    `end_time` int(11) unsigned default NULL,  
    `title` varchar(255) NOT NULL default '',  
    `body` varchar(255) NOT NULL default '',  
    `pw_id` int(11) unsigned NOT NULL default '0',  
    PRIMARY KEY (`id`)  
    ) TYPE=MyISAM ;  

    CREATE TABLE `stow` (  
    `id` int(5) unsigned NOT NULL auto_increment,  
    `pw_id` int(5) unsigned NOT NULL default '0',  
    `Name` varchar(128) NOT NULL default '',  
    `http` varchar(255) NOT NULL default 'http://',  
    `memo` varchar(255) NOT NULL default '',  
    PRIMARY KEY (`id`)  
    ) TYPE=MyISAM ;  

    create table vpopmail (  
    pw_id int(5) unsigned NOT NULL auto_increment,  
    pw_name varchar(32) NOT NULL default '',  
    pw_domain varchar(64) NOT NULL default '',  
    pw_passwd varchar(40) NOT NULL default '',  
    pw_uid int(11) default NULL,  
    pw_gid int(11) default NULL,  
    pw_gecos varchar(64) default NULL,  
    pw_dir varchar(160) default NULL,  
    pw_shell varchar(20) default NULL,  
    pw_clear_passwd varchar(16) default NULL,  
    createtime timestamp(14) NOT NULL,  
    PRIMARY KEY (pw_id),  
    KEY pw_name (pw_name,pw_domain) )  
    TYPE=MyISAM PACK_KEYS=1  



    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    論壇徽章:
    0
    35 [報告]
    發(fā)表于 2006-06-20 12:01 |只看該作者
    script:4

    ################# finalize_freebsd.script##############
    #!/bin/sh

    echo "This scripts will perform 3 functions:\n

    1. Copy all supervise scripts to their proper locations.\n

    2. Copy the qmail rc and qmailctl scripts to their proper locations and create needed symlinks.\n

    3. Set all needed permisions on all supervise scripts.\n"

    echo
    echo "Press ENTER to proceeed"
    read

    echo
    sleep 2

    echo "Copying supervise scripts to their correct locations..."
    echo
    sleep 2

    cp /downloads/qmailrocks/scripts/finalize/freebsd/pop3d_run /var/qmail/supervise/qmail-pop3d/run

    cp /downloads/qmailrocks/scripts/finalize/freebsd/pop3d_log /var/qmail/supervise/qmail-pop3d/log/run

    cp /downloads/qmailrocks/scripts/finalize/freebsd/smtpd_run /var/qmail/supervise/qmail-smtpd/run

    cp /downloads/qmailrocks/scripts/finalize/freebsd/smtpd_log /var/qmail/supervise/qmail-smtpd/log/run

    cp /downloads/qmailrocks/scripts/finalize/freebsd/send_run /var/qmail/supervise/qmail-send/run

    cp /downloads/qmailrocks/scripts/finalize/freebsd/send_log /var/qmail/supervise/qmail-send/log/run

    echo Done!
    echo
    sleep 2

    echo "Copying rc and qmailctl scripts to proper locations..."
    echo
    sleep 2

    cp /downloads/qmailrocks/scripts/finalize/rc /var/qmail/

    cp /downloads/qmailrocks/scripts/finalize/qmailctl /var/qmail/bin/

    echo Done!
    echo
    sleep 2

    echo "Setting needed permisions..."
    echo
    sleep 2

    chmod 755 /var/qmail/rc /var/qmail/bin/qmailctl

    chmod 751 /var/qmail/supervise/qmail-pop3d/run
    chmod 751 /var/qmail/supervise/qmail-pop3d/log/run

    chmod 751 /var/qmail/supervise/qmail-smtpd/run
    chmod 751 /var/qmail/supervise/qmail-smtpd/log/run

    chmod 751 /var/qmail/supervise/qmail-send/run
    chmod 751 /var/qmail/supervise/qmail-send/log/run

    echo ./Maildir > /var/qmail/control/defaultdelivery

    echo 255 > /var/qmail/control/concurrencyremote

    chmod 644 /var/qmail/control/concurrencyremote

    echo 30 > /var/qmail/control/concurrencyincoming

    chmod 644 /var/qmail/control/concurrencyincoming

    ln -s /var/qmail/bin/qmailctl /usr/bin

    ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /var/qmail/supervise/qmail-pop3d /service

    echo "Done!"
    echo
    sleep 2

    echo "Script Complete!"
    echo

    ################# finalize_freebsd.script##############
    #######################################################

    script:5

    ################# qmr_inst_check內(nèi)容###################
    #!/bin/sh

    # Qmailrocks, 2003-12-05
    # I've modified Dave Sill's script slightly to accomodate
    # the variations between his Qmail installation and the
    # Qmailrocks.org installation. The Qmailrocks version
    # of this script takes into account the slightly different
    # loggind directory setup and a few permissions differences.
    # http://www.qmailrocks.org/downloads/scripts/qmr_inst_check

    # Dave Sill, 2003-11-10
    # http://lifewithqmail.org/inst_check

    # set to n if you're not running a pop3 server, y if you are
    CHECKPOP=y
    CHECKSEND=y
    QMHOME=/var/qmail
    LBIN=/usr/local/bin

    OK=1

    if [ $# -eq 1 ]; then
      if [ "$1" = "-v" ]; then
        VERB=y
      else
        VERB=n
      fi
    fi

    if [ ! -d $QMHOME ]; then
      echo "! Couldn't find qmail's home directory, $QMHOME!"
    else
      if [ "$VERB" = y ]; then
        echo "$QMHOME exists"
      fi
      for i in alias bin boot control doc man queue supervise users; do
        if [ ! -d $QMHOME/$i ]; then
          echo "! Couldn't find $QMHOME/$i!"
          OK=0
        elif [ "$VERB" = y ]; then
          echo "$QMHOME/$i exists"
        fi
      done

      if [ ! -f $QMHOME/rc ]; then
        echo "! $QMHOME/rc is missing"
        OK=0
      elif [ ! -x $QMHOME/rc ]; then
        echo "! $QMHOME/rc is not executable"
        echo "...try: chmod 755 $QMHOME/rc"
        OK=0
      elif [ `head -1 $QMHOME/rc|cat -vet` != '#!/bin/sh$' ]; then
        echo "! $QMHOME/rc has bad magic cookie"
        echo "...try: dos2unix $QMHOME/rc"
        OK=0
      elif [ "$VERB" = y ]; then
        echo "$QMHOME/rc is executable and has a valid magic cookie"
      fi
    fi

    for i in alias qmaild qmaill qmailp qmailq qmailr qmails; do
      grep "^$i:" /etc/passwd >/dev/null
      if [ $? -ne 0 ]; then
        echo "! Couldn't find $i user in /etc/passwd"
        OK=0
      elif [ "$VERB" = y ]; then
        echo "$i user exists"
      fi
    done

    for i in qmail nofiles; do
      grep "^$i:" /etc/group >/dev/null
      if [ $? -ne 0 ]; then
        echo "! Couldn't find $i group in /etc/group"
        OK=0
      elif [ "$VERB" = y ]; then
        echo "$i group exists"
      fi
    done

    for i in tcprules tcpserver; do
      if [ ! -x $LBIN/$i ]; then
        echo "! Couldn't find $LBIN/$i from ucspi-tcp"
        OK=0
      elif [ "$VERB" = y ]; then
        echo "$i from ucspi-tcp is installed"
      fi
    done

    for i in multilog softlimit setuidgid supervise svok svscan tai64nlocal; do
      if [ ! -x $LBIN/$i ]; then
        echo "! Couldn't find $LBIN/$i from daemontools"
        OK=0
      elif [ "$VERB" = y ]; then
        echo "$i from daemontools is installed"
    fi
    done

    if [ ! -d /service ]; then
      echo "! /service directory is missing"
      OK=0
    elif [ "$VERB" = y ]; then
      echo "/service directory exists"
    fi

    if [ -f /etc/inittab ]; then
      grep "^SV" /etc/inittab >/dev/null
      if [ $? -ne 0 ]; then
        echo "! Couldn't find SV entry in inittab"
        OK=0
      elif [ "$VERB" = y ]; then
        echo "svscan /service is configured to run via /etc/inittab"
      fi
      PS="ps -ef"
    else
      grep "svscanboot" /etc/rc.local >/dev/null
      if [ $? -ne 0 ]; then
        echo "! Couldn't find 'csh -cf '/command/svscanboot &' in /etc/rc.local"
        OK=0
      elif [ "$VERB" = y ]; then
        echo "/command/svscanboot is configured to run via /etc/rc.local"
      fi
      PS="ps -waux"
    fi

    SVRUN=`$PS | grep "svscan /service" | grep -v grep`
    if [ -z "$SVRUN" ]; then
      echo "'! svscan /service' doesn't seem to be running"
      OK=0
    elif [ "$VERB" = y ]; then
      echo "svscan /service is running"
    fi

    if [ ! -f $QMHOME/control/defaultdelivery ]; then
      echo "! Couldn't find $QMHOME/control/defaultdelivery"
      OK=0
    elif [ ! -s $QMHOME/control/defaultdelivery ]; then
      echo "! $QMHOME/control/defaultdelivery is empty"
      OK=0
    elif [ "$VERB" = y ]; then
      echo "$QMHOME/control/defaultdelivery looks OK"
    fi

    if [ ! -f $QMHOME/bin/qmailctl ]; then
      echo "! $QMHOME/bin/qmailctl is missing"
      OK=0
    elif [ ! -s $QMHOME/bin/qmailctl ]; then
      echo "! $QMHOME/bin/qmailctl is empty"
      OK=0
    elif [ `head -1 $QMHOME/bin/qmailctl|cat -vet` != '#!/bin/sh$' ]; then
        echo "! $QMHOME/bin/qmailctl has bad magic cookie"
        echo "...try: dos2unix $QMHOME/bin/qmailctl"
        OK=0
    elif [ ! -x $QMHOME/bin/qmailctl ]; then
      echo "! $QMHOME/bin/qmailctl is not executable"
      echo "...try: chmod 755 $QMHOME/bin/qmailctl"
      OK=0
    elif [ "$VERB" = y ]; then
      echo "$QMHOME/bin/qmailctl looks OK"
    fi
    if [ ! -L /usr/bin/qmailctl ]; then
      echo "! /usr/bin/qmailctl is missing"
      echo "...try: ln -s $QMHOME/bin/qmailctl /usr/bin"
      OK=0
    elif [ "$VERB" = y ]; then
      echo "/usr/bin/qmailctl exists"
    fi

    SVCDIRS="qmail-send qmail-send/log qmail-smtpd qmail-smtpd/log"
    if [ "$CHECKPOP" = "y" ]; then
      SVCDIRS="$SVCDIRS qmail-pop3d qmail-pop3d/log"
    fi
    for i in $SVCDIRS; do
      if [ ! -f $QMHOME/supervise/$i/run ]; then
        echo "! $QMHOME/supervise/$i/run file is missing"
        OK=0
      elif [ `head -1 $QMHOME/supervise/$i/run|cat -vet` != '#!/bin/sh$' ]; then
        echo "! $QMHOME/supervise/$i/run has bad magic cookie"
        echo "...try: dos2unix $QMHOME/supervise/$i/run"
        OK=0
      elif [ ! -x $QMHOME/supervise/$i/run ]; then
        echo "! $QMHOME/supervise/$i/run file is not executable"
        OK=0
      elif [ "$VERB" = y ]; then
        echo "$QMHOME/supervise/$i/run looks OK"
      fi
    done

    if [ ! -f $QMHOME/control/concurrencyincoming ]; then
      echo "! $QMHOME/control/concurrencyincoming is missing"
      echo "...try: echo 30 >$QMHOME/control/concurrencyincoming"
      OK=0
    elif [ "$VERB" = y ]; then
      echo "$QMHOME/control/concurrencyincoming looks OK"
    fi

    LOGDIRS="/var/log/qmail /var/log/qmail/qmail-smtpd"
    if [ "$CHECKPOP" = "y" ]; then
      LOGDIRS="$LOGDIRS /var/log/qmail/qmail-pop3d"
    fi
    if [ "$CHECKSEND" = "y" ]; then
      LOGDIRS="$LOGDIRS /var/log/qmail/qmail-send"
    fi
    for i in $LOGDIRS; do
      if [ ! -d $i ]; then
        echo "! $i is missing"
        echo "...try: mkdir -p $i"
        OK=0
      elif [ "`ls -ld $i|awk '{print $3}'`" != "qmaill" ]; then
        echo "! $i has wrong owner, should be qmaill"
        echo "...try: chown qmaill $i"
        OK=0
      elif [ "`ls -ld $i|awk '{print $1}'`" != "drwxr-x---" ]; then
        echo "! $i has wrong mode, should be 750"
        echo "...try: chmod 750 $i"
        OK=0
      elif [ "$VERB" = y ]; then
        echo "$i looks OK"
      fi
    done

    SVCLINKS="/service/qmail-send /service/qmail-smtpd"
    if [ "$CHECKPOP" = "y" ]; then
      SVCLINKS="$SVCLINKS /service/qmail-pop3d"
    fi
    for i in $SVCLINKS; do
      if [ ! -L $i ]; then
        echo "! $i is missing"
        echo "...try: ln -s $QMHOME$i $i"
        OK=0
      elif [ "$VERB" = y ]; then
        echo "$i exists"
      fi
    done

    if [ ! -f /etc/tcp.smtp ]; then
      echo "! /etc/tcp.smtp is missing"
      echo "...try: echo '127.:allow,RELAYCLIENT=\"\"' >>/etc/tcp.smtp"
      OK=0
    elif [ "$VERB" = y ]; then
      echo "/etc/tcp.smtp exists"
    fi

    if [ ! -f /etc/tcp.smtp.cdb ]; then
      echo "! /etc/tcp.smtp.cdb is missing"
      echo "...try: $QMHOME/bin/qmailctl cdb"
      OK=0
    elif [ "$VERB" = y ]; then
      echo "/etc/tcp.smtp.cdb exists"
    fi

    AHOME=`grep "^alias:" /etc/passwd | awk -F: '{print $6}'`
    if [ -z "$AHOME" ]; then
      echo "! Couldn't find user alias's home directory"
      OK=0
    else
      for i in root postmaster mailer-daemon; do
        if [ ! -f $AHOME/.qmail-$i ]; then
          echo "! Alias for $i is missing"
          echo "...try: echo me >$AHOME/.qmail-$i"
          OK=0
        elif [ "$VERB" = y ]; then
          echo "$i alias exists"
        fi
      done
    fi

    if netstat -a | grep smtp | grep -i listen >/dev/null; then
      if $PS | grep sendmail | grep -v grep >/dev/null; then
        echo "! Sendmail is still running"
        echo "...try: $RCDIR/init.d/sendmail stop"
        OK=0
      elif $LBIN/svok /service/qmail-smtpd; then
        if [ "$VERB" = y ]; then
          echo "/service/qmail-smtpd is running"
        fi
      else
        echo "! Something is listening on port 25 (not tcpserver/qmail-smtpd)"
        echo "...try: disabling current MTA"
        OK=0
      fi
    fi

    if [ "$CHECKPOP" = "y" ]; then
      if netstat -a | grep pop | grep -i listen >/dev/null; then
        if $LBIN/svok /service/qmail-pop3d; then
          if [ "$VERB" = y ]; then
            echo "/service/qmail-pop3d is running"
          fi
        else
          echo "! Something is listening on port 110 (not tcpserver/qmail-pop3d)"
          echo "...try: disabling other POP server"
          OK=0
        fi
      fi
    fi

    for i in /usr/lib/sendmail /usr/sbin/sendmail; do
      if [ -f $i -a ! -L $i ]; then
        echo "! $i is a file, should be a link"
        echo "...try: uninstalling current MTA or: mv $i $i.old; ln -s $QMHOME/bin/sendmail $i"
        OK=0
      elif [ ! -f $i ];then
        echo "! $i is missing"
        echo "...try: ln -s $QMHOME/bin/sendmail $i"
        OK=0
      elif [ "$VERB" = y ]; then
        echo "$i exists"
      fi
    done

    if [ $OK -eq 1 ]; then
      echo "Congratulations, your Qmailrocks.org Qmail installation looks good!"
    elif [ "$VERB" = y ]; then
      echo "! Potential problems were found with your LWQ installation"
    fi


    ################# qmr_inst_check內(nèi)容###################
    #######################################################

    論壇徽章:
    0
    36 [報告]
    發(fā)表于 2006-06-20 12:02 |只看該作者
    qmail的工作原理
    前言
    qmail是在unix系統(tǒng)上的一個郵件程序。qmail程序是由dan bernstein開發(fā)出來的為標準的unix服務(wù)器提供郵件傳輸代理的(mail transfer agent,mta)功能的,用來替代sendmail。qmail因特網(wǎng)主頁http://www.qmail.org

    和qmail相關(guān)的服務(wù)
    qmail提供了mta功能,但是客戶要能看到自己的信件,還需要其他協(xié)議和軟件。兩種常見的遠程用戶取回他們消息的機制是郵政協(xié)議(post office protocal,pop3)和互交郵件訪問協(xié)議(interactive mail access protocol,imap)。
    綜述:
    qmail系統(tǒng)包括幾個可執(zhí)行程序、配置文件、qmail工具和環(huán)境變量,這些彼此互相影響,共同提供郵件服務(wù)。

    qmail投遞郵件進程流程

    qmail系統(tǒng)中有9個核心程序,這里簡單的介紹一下。
    qmail-smtpd:負責接收來自遠程主機的郵件消息并將它們傳送給qmail-queue處理。
    mail-inject:程序是用來接收本地產(chǎn)生的郵件消息并傳送給qmail-queue程序。
    qmail-queue:程序處理他們發(fā)來的郵件,移進郵件隊列以便發(fā)送。一旦消息被成功的放在郵件隊列中,就調(diào)用qmail-send程序來處理他。
    qmail-send:檢查郵件隊列中每一個消息狀態(tài),前一次郵件請求失敗的消息被識別,并決定它是臨時失敗還是永久的,臨時失敗會再次投遞,永久失敗將被送遞到mail-clean程序,被刪除掉。qmail-clean是用來清除永久失敗的的郵件消息的。
    qmail-send調(diào)用了qmail-lspawn 和qmail-rspawn程序。qmail-send判斷郵件是發(fā)給誰的,發(fā)給本地的,就交給qmail-lspawn程序,再由qmail-local投送到本地郵件服務(wù)器。要是確定為遠程主機,就調(diào)用qmail-rspawn程序,qmail-rspawn為每一個郵件消息的接受方?jīng)Q定目的的郵件服務(wù)器,再調(diào)用qmail-remote程序發(fā)送。

    qmail的進程
    qmail-send          splogger                 qmail         qmail-lspawn                 qmail-rspawn                 qmail-clean
    qmail在任何時候都要求有五個程序在后臺運行。這些核心的程序允許qmail掃描新郵件,并將他們發(fā)送到適當?shù)哪康牡亍?nbsp;                      

    qmail實用工具程序
    除了以上五個qmail進程外,進程和本地用戶在處理和傳輸消息的過程中,都還會用到幾個其他的qmail實用工具程序。如下:
    bouncesaying       允許用戶將消息轉(zhuǎn)發(fā)給程序或者程序不可用時反彈回信息
    condredirect        允許用戶將消息轉(zhuǎn)發(fā)給程序,然后把消息轉(zhuǎn)發(fā)到另一個地址
    except             過去常用來修改一個調(diào)用程序的退出編碼
    forward            將消息轉(zhuǎn)發(fā)給一個備用的郵件地址
    maildir2mbox        將在maildir格式郵箱中的消息轉(zhuǎn)換到一個標準的sendmail郵箱中
    maildirwatch         產(chǎn)生一個maildir格式的郵箱
    maildirwatch         監(jiān)控一個用戶的郵件目錄并報告所有的新消息
    preline              在將消息轉(zhuǎn)發(fā)給相關(guān)程序前預處理這些消息
    qbiff                當新消息到達后向用戶終端顯示器上寫一個通知
    qmail-clean          從qmail郵件隊列中永遠的移出無法到達的消息
    qmail-inject          將新消息插入到qmail郵件隊列中
    qmail-local           向本地郵件系統(tǒng)上的用戶投遞消息
    qmail-lspawn         由qmail-send調(diào)用以便向qmail-local程序轉(zhuǎn)發(fā)消息
    qmail-newmrh        用來從morercpthosts文件中創(chuàng)建qmail數(shù)據(jù)庫
    qmail-newn          從一個包含系統(tǒng)用戶名和郵件名的ASCII文件表建立一個qmail用戶文件  
    qmail-pop3d          接受pop3連接以便讓用戶閱讀他們的郵箱
    qmail-popup          用來驗證pop3連接中的用戶ID和密碼
    qmail-pw2u           將UNIX系統(tǒng)的用戶id和密碼轉(zhuǎn)換成qmail-newn能用的一個表結(jié)構(gòu)
    qmail-qmtpd          接受遠程主機發(fā)來的qmtp連接請求
    qmail-qread           產(chǎn)生一個顯示當前qmail郵件隊列里消息的報告  
    qmail-qstat           產(chǎn)生一個報告來顯示當前處在qmail投送狀態(tài)下等待發(fā)送的消息數(shù)目
    qmail-queue           將郵件消息排隊等待投送
    qmail-remote          將消息投送給遠程郵件用戶
    qmail-rspawn          由qmail-send調(diào)用來向qmail-remote轉(zhuǎn)發(fā)消息
    qmail-send            嘗試投送qmail郵件隊列里的郵件消息
    qmail-showctl          顯示當前的qmail系統(tǒng)配置情況
    qmail-smtpd           接收來自遠程主機的smtp連接請求
    qmail-start            初始化qmail的啟動腳本
    qmail-tcpok            用來清空qmail-remote中用到的tcp超時記錄表
    qmail-tcpto            顯示當前的tcp超時記錄表
    qreceipt               用來會應對要求受到進行確認的消息
    sendmail              用來將sendmail程序的功能復制到mta程序中
    splogger               將消息插入系統(tǒng)登陸程序中
    tcp-env                將網(wǎng)絡(luò)連接的信息轉(zhuǎn)換成unix環(huán)境變量

    每一個qmail實用工具程序都在正確的處理和投遞郵件消息中扮演不同的腳色。其中有一些只能qmail內(nèi)核程序調(diào)用,其他的就可以由qmail的系統(tǒng)管理員用來處理消息并得到統(tǒng)計信息。還有一些可以被單個普通郵件用戶來制定自己的郵件消息處理。
    qmail環(huán)境變量
    除了控制文件之外,qmail程序還能使用unix環(huán)境變量來控制他們的動作。多數(shù)的控制文件的值都能被一個相應設(shè)定的環(huán)境變量重載。如果該環(huán)境變量沒有設(shè)定,就使用控制文件的值。qmail的環(huán)境變量是在qmail程序運行前就被設(shè)置好的。這是由一個包裝程序完成的。常見的是tcpwrapper和tcpserver。本文就是用的tcpserver。在以后的《(四)ucspi-tcp的原理和設(shè)置》內(nèi)容中,再詳細討論。

    論壇徽章:
    0
    37 [報告]
    發(fā)表于 2006-06-20 12:03 |只看該作者
    qmail控制文件詳解
    1.qmail全部控制文件列表(按照相關(guān)性排列)
    --------------------------------------------------------------------------------------------------------
    qmail-inject  defaultdomain  defaulthost  idhost  plusdomain  
    -------------------------------------------------------------------------------------------------------
    qmail-qmqpc  qmqpservers  
    -------------------------------------------------------------------------------------------------------
    qmail-remote  helohost  smtproutes  timeoutconnect  timeoutremote  
    -------------------------------------------------------------------------------------------------------
    qmail-send  bouncefrom  bouncehost  concurrencylocal  concurrencyremote
    doublebouncehost  doublebounceto  envnoathost  locals  
    me  percenthack  queuelifetime  virtualdomains  
    -------------------------------------------------------------------------------------------------------
    qmail-smtpd  badmailfrom  databytes  localiphost  rcpthosts  
    morercpthosts  timeoutsmtpd  smtpgreeting  
    --------------------------------------------------------------------------------------------------------


    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    各控制文件的作用
    qmail-inject
    qmail-inject接受本地郵件消息后檢測郵件頭是否符合RFC822標準,并傳送給qmail-queue排進隊列
    ======================================================================
    defaultdomain  
    用來向那些沒有使用正確的username@hostname.domain格式的郵件中增加郵件地址的,默認情況下,如果主機地址中沒有結(jié)束符".",qmail-inject將給主機名后添加defaultdomain的內(nèi)容,如果該文件不存在,將使用me文件中的值代替.  
    例如:defaultdomain值為linuxfane.com  
    本地產(chǎn)生了一封發(fā)送給rainbow@rainbow的郵件,那么qmail-inject將用linuxfane.com來補全這個后綴,變成rainbow@rainbow.linuxfane.com  
    ======================================================================
    defaulthost  
    用來定義主機名,用來向地址中不含主機名的郵件補足郵件地址的。類似于defaultdomain。  
    例如:defaulthost值為linuxfane.com 那么發(fā)送給 rainbow的消息,將被qmail-inject用defaulthost的值來補足為rainbow@linuxfane.com,  以便于qmail-send快速分辨是否屬于本地地址。  
    ======================================================================
    idhost  
    用來指定郵件中Message-ID:頭字段的主機名例如:idhost值為linuxfane.com那么郵件頭中如下:  
    Message-ID:<1234567890.12345.qmail@linuxfane.com>  
    如果idhost值為rainbow.linuxfane.com那么郵件頭中如下:  
    Message-ID:<1234567890.12345.qmail@rainbow.linuxfane.com>  
    ======================================================================
    plusdomain  
    用來將其值添加在任何一個以一個+號結(jié)尾的地址  

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    qmail-qmqpc
    qmail-qmqpc是快速郵件排隊協(xié)議(QMQP)使用的程序,QMQP是一個QMAIL專用協(xié)議,用在工作站級QMAIL服務(wù)器向中心服務(wù)器發(fā)送隊列。  
    ======================================================================
    qmqpservers  
    用來指定qmail-qmqpc使用的上級服務(wù)器通常該功能應用很少,我認為qmail-qmqpc用法就是代替qmail-queue來直接傳給上級服務(wù)器。  



    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    qmail-remote
    qmail-remote通過SMTP協(xié)議向遠程主機傳送郵件。
    ======================================================================
    helohost  
    該文件用來指定qmail-remote程序與遠程郵件主機SMTP會話中的主機名。
    ======================================================================
    smtproutes
    用來指定到固定目的的靜態(tài)SMTP路線。例子:smtproutes內(nèi)容如下:
    rainbow.linuxfane.com:mail8.rainbow.jp
    :fw.rainbow.linuxfane.com:8088
    第一行的存在會將發(fā)給rainbow.linuxfane.com的郵件重定向到mail8.rainbow.jp主機  
    第二行的存在會將任何不符合之前行條件的郵件重定向到fw.rainbow.linuxfane.com的8088端口,讓郵件安全的穿越防火墻qmmail-remote將按照smtproutes中的行序來進行處理  
    ======================================================================
    timeoutconnect
    用來指定qmail-remote嘗試同一個遠程郵件主機建立一個SMTP會話的時間。默認值狀態(tài)下如果超出60秒沒有得到遠程郵件主機的回應,那么將斷開連接。  
    ======================================================================
    timeoutremote
    用來指定qmail-remote在一個SMTP連接已經(jīng)建立后,遠程郵件主機的每一個回應的時間數(shù)。默認值為1200秒。  

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    qmail-send
    qmail-send用來檢測隊列中每一個郵件的狀態(tài),并調(diào)用相應的程序進行處理。例如一個目的為本地的郵件將會被qmail-send調(diào)用qmail-lspawn處理。  
    ======================================================================
    bouncefrom | bouncehost  
    默認情況下,退回給原始發(fā)送方的郵件的發(fā)件人地址為MAILER-DAEMON@HOSTNAME,如果你想修改  
    MAILER-DAEMON這段,那么就修改bouncefrom文件吧。如果想修改MAILER-DAEMON@HOSTNAME中HOSTNAME這段,那么就修改bouncehost文件。  
    例如:bouncefrom內(nèi)容為SERVER-MANAGER | bouncehost文件內(nèi)容為mail8.rainbow.jp  
    那么一封因為郵件地址不存在而被退回的通知郵件的發(fā)件人將是 SERVER-MANAGER@mail8.rainbow.jp  
    ======================================================================
    concurrencylocal  
    用來決定qmail可以同時運行的本地投遞進程的數(shù)目,默認值是10,標準安裝的qmail最大可設(shè)值是120。安裝的時候可以通過修改conf-spawn來將其變?yōu)?55以下任何數(shù)目。
    ======================================================================
    concurrencyremote  
    用來決定qmail可以同時運行的遠程投遞進程的數(shù)目,默認值是20,就是說,qmail可以在同一時間內(nèi)同時發(fā)送20封郵件,標準安裝的qmail最大可設(shè)值是120。安裝的時候可以通過修改conf-spawn來將其變?yōu)?55以下任何數(shù)目。  
    ======================================================================
    doublebouncehost | doublebounceto  
    這兩個控制文件類似于bouncefrom和bouncehost的關(guān)系,也是doublebouncehost指定主機名,doublebounceto指定用戶名。他們的功能是為一個被退回兩次的郵件制定一條出路。例如:doublebouncehost內(nèi)容為rainbow.linuxfane.com | doublebounceto內(nèi)容為rainbow那么一個被退回2次的郵件將被發(fā)送給rainbow@rainbow.linuxfane.com沒有這兩個文件的時候,那么發(fā)送給postmaster@me文件中的域名  
    ======================================================================
    envnoathost  
    ======================================================================
    qmail-send用來給沒有主機名的郵件收件人制定一個主機名的,通常這個文件并沒有必要,qmail-send總是使用me文件中的域名。  
    ======================================================================
    locals
    用來為qmail指明位于本地的郵件地址。qmail-send利用此文件來判斷收件人地址是否是一個本地地址。  
    例如:locals文件中寫有rainbow.linuxfane.com 那么qmail-send檢測到隊列中有發(fā)送給@rainbow.linuxfane.com的郵件的時候,就會調(diào)用qmail-lspawn  來進行本地投送。  
    ======================================================================
    me  
    如果沒有me文件,那么你的qmail將拒絕執(zhí)行。me文件用來指定本地郵件服務(wù)器的主機名。以上列出的許多控制文件在沒有被創(chuàng)建的時候,qmail都會用me中的值來代替。  
    ======================================================================
    percenthack  
    在UUCP協(xié)議中帶有%并在該文件中列出的地址將會被轉(zhuǎn)換為一個標準的DNS格式主機名。  
    ======================================================================
    queuelifetime  
    用來指定一個郵件在隊列中的最大存活時間,默認是604800秒,當一個郵件達到這個時間線后,qmail將最后一次嘗試發(fā)送這封郵件,如果依然失敗,會將其從隊列中刪除。
    ======================================================================
    virtualdomains  
    讓qmail接受本地郵件以外,還接受該文件中指定的域或者郵件地址,就是常說的虛擬域支持。  
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    qmail-smtpd  
    qmail-smtpd接受遠程主機的郵件并轉(zhuǎn)交給隊列處理程序qmail-queue來處理。  
    ======================================================================
    badmailfrom  
    用來指定不喜歡的發(fā)件人的郵件地址或者是域名  
    例如:badmailfrom中寫有  
    advt@msn.com  
    @hotmail.com  
    如果advt@msn.com給該郵件主機送信時,將得到code 553,告知其是一個不受歡迎的發(fā)件人。  
    而所有來自hotmail.com的發(fā)件人也將得到同樣的code 553。  

    ======================================================================
    databytes  
    用來指定該郵件服務(wù)器可以接受郵件的最大字節(jié)數(shù)。  
    例如:databytes指定為8000000  那么如果有人給該主機發(fā)送的郵件字節(jié)數(shù)超過了這個商業(yè)上默認的最大容忍限度,將得到code 552,告知其郵件大小超出了該郵件主機所能容忍的限度。恐怖的是,默認狀態(tài)下,這個文件并沒有,如果有人用你服務(wù)器上的兩個不存在的地址作為FROM/TO發(fā)一個100M的郵件
    ======================================================================
    localiphost  
    用來為使用ip來標示目的主機的郵件消息指定本地主機名的例如:rainbow.linuxfane.com的ip地址為198.17.1.2 | localiphost內(nèi)容為rainbow.linuxfane.com那么一封發(fā)送給rainbow@[198.17.1.2]的郵件的地址會被轉(zhuǎn)換為rainbow@rainbow.linuxfane.com  
    ======================================================================
    rcpthosts | morercpthosts  
    這兩個文件用來指定qmail可以接收的除本地主機名外的其他域名他們的作用是相同的,不過因為rcpthosts中的域名不能超過50行,所以才出現(xiàn)了morercpthosts文件
    ======================================================================
    timeoutsmtpd  
    用來指定qmail-smtpd等待遠程SMTP主機發(fā)送數(shù)據(jù)的時間線。默認的情況下,如果連接建立后1200秒內(nèi)沒有接受到遠程SMTP主機的任何信息,那么將關(guān)閉這個連接。  
    ======================================================================
    smtpgreeting  
    用來指定SMTP連接的歡迎標志例如:smtpgreeting值為 welcome connect to out open relay mail server - ad.rainbow.linuxfane.com 那么建立一個smtp連接的時候?qū)吹饺缦滦畔ⅲ?nbsp; 
    Trying 198.17.x.x...  
    Connected to ad.rainbow.linuxfane.com.  
    Escape characteris ^].  
    220 welcome connect to out open relay mail server - ad.rainbow.linuxfane.com ESMTP

    論壇徽章:
    0
    38 [報告]
    發(fā)表于 2006-06-20 12:04 |只看該作者
    qmail控制文件速查

    badmailfrom  
    bouncefrom  
    bouncehost  
    concurrencylocal  
    concurrencyremote  
    databytes  
    defaultdomain  
    defaulthost  
    doublebouncehost  
    doublebounceto  
    envnoathost  
    helohost  
    idhost  
    localiphost  
    locals  
    me  
    morercpthosts  
    percenthack  
    plusdomain  
    qmail-inject  
    qmail-qmqpc  
    qmail-remote  
    qmail-send  
    qmail-smtpd  
    qmqpservers  
    queuelifetime  
    rcpthosts  
    smtpgreeting  
    smtproutes  
    timeoutconnect  
    timeoutremote  
    timeoutsmtpd  
    virtualdomains  











    qmail的配置文件是由多個文件組成的,不是集中在一個文件中,每個文件控制相應部分的功能和屬性,一個可執(zhí)行程序可能有多個配置文件控制,所有的配置文件共同決定了qmail運行的實現(xiàn)和模式。這些配置文件都在qmail的control目錄中,一般位于位于/var/qmail/control目錄中。


    badmailfrom  
    這個配置文件是控制郵件系統(tǒng)拒絕接收的郵件地址和郵件域,主要是為了防止垃圾郵件。如果一個郵件地址或者郵件域被列入到這個文件中,系統(tǒng)就會拒絕接收這個郵件地址發(fā)來的郵件,或者拒絕郵件域下所有郵件地址發(fā)來的郵件。不過這個配置文件只是一般的垃圾郵件防范手段,對于比較全面的垃圾郵件過濾技術(shù)還要靠第三方軟件來實現(xiàn)。該文件的格式如下:
    11@11.com    //拒絕這個地址發(fā)來的郵件
    22@2w.com
    @33.com      //拒絕這個郵件域下的所有帳號發(fā)來的郵件
    @44.com


    bouncefrom  bouncehost  

    bouceform是定義當郵件投遞失敗時系統(tǒng)返回給發(fā)送者一個包含失敗信息的郵件時的發(fā)送者。如果不存在這個文件,默認的發(fā)送者是MAILER-DAEMON。比如本文的
    echo postmaster > /var/qmail/control/bouncefrom
    就是定義投遞者為postmaster,這樣所有投遞失敗的返回郵件的發(fā)送者就成了postmaster。

    默認情況下,退回給原始發(fā)送方的郵件的發(fā)件人地址為MAILER-DAEMON@HOSTNAME,如果你想修改  
    MAILER-DAEMON這段,那么就修改bouncefrom文件吧。  
    如果想修改MAILER-DAEMON@HOSTNAME中HOSTNAME這段,那么就修改bouncehost文件。  
    例如:bouncefrom內(nèi)容為SERVER-MANAGER | bouncehost文件內(nèi)容為mail8.rainbow.jp  
    那么一封因為郵件地址不存在而被退回的通知郵件的發(fā)件人將是 SERVER-MANAGER@mail8.rainbow.jp  




    concurrencylocal  
    用來決定qmail可以同時運行的本地投遞進程的數(shù)目,默認值是10,標準安裝的qmail最大可設(shè)值是120。  
    安裝的時候可以通過修改conf-spawn來將其變?yōu)?55以下任何數(shù)目。  


    concurrencyremote  
    這個參數(shù)定義了qmail可以同時投遞的遠端郵件的個數(shù),這個參數(shù)的缺省值是20。這個參數(shù)的最大值也是由conf-spawn來決定的。



    databytes  

    它定義了qmail-smtpd所允許接收的郵件的最大字節(jié)數(shù)。這個參數(shù)的缺省值為0,表示對接收郵件的字節(jié)數(shù)沒有限制。如果要限制最大的接收為10M,操作如下:
    echo 10485760 > /var/qmail/control/databytes
            這是任何大于10M的郵件都會被拒絕。這個參數(shù)最好設(shè)置上,以避免惡意的對你服務(wù)器發(fā)送大量的超大郵件,產(chǎn)生郵件服務(wù)器負荷過大,甚至系統(tǒng)崩潰的危險。



    defaultdomain  

    它主要用于郵件用戶在投遞給同一郵件服務(wù)器的郵件用戶時的郵件投遞處理,比如郵件服務(wù)器cnunix.com.cn用戶user發(fā)送郵件給另一個郵件用戶user1@cnunix,這實qmail-inject會將defaultdomain中定義的郵件域名加入到這個郵件的目標地址中,qmail會自動認為這個郵件的目標地址是user1@cnunix.com.cn,并按照這個地址進行投遞。當這個文件不存在的時候,qmail會從配置文件me中讀取這個參數(shù)。如果系統(tǒng)變量QMAILDEFAULTDOMAIN已經(jīng)設(shè)置,defaultdomain定義的參數(shù)將被忽略。



    defaulthost  

    它和defaultdomain類似,當郵件系統(tǒng)接收到?jīng)]有目標主機名的郵件時,這個設(shè)置文件定義了系統(tǒng)往這個郵件中加入的目標主機名名稱。在缺省情況下,qmail-inject會將defaulthost中定義的名稱加入到?jīng)]有定義投遞郵件地址的郵件的目標主機名中,如果defaulthost不存在,加入的目標主機名將時字符串“defaulthost”,defaulthost主要用于郵件用戶在投遞給同一郵件服務(wù)器的郵件進行投遞處理。如果系統(tǒng)變量QMAILDEFAULTHOST已經(jīng)設(shè)置,defaulthost定義的參數(shù)將被忽略。


    doublebouncehost  
    這個配置文件定義了出現(xiàn)“雙重反彈”的時候,系統(tǒng)轉(zhuǎn)發(fā)的郵件的主機名稱。“雙重反彈”就是當系統(tǒng)因為投遞失敗將郵件返回給發(fā)送者時,發(fā)送者又將此郵件返回,這個時候qmail將會把這個郵件轉(zhuǎn)發(fā)到另一個郵件地址,一般這個地址就是管理員的地址。doublebouncehost就是定義這個轉(zhuǎn)發(fā)的郵件地址的主機名部分,而這個郵件地址的用戶名部分是由doublebouceto來定義的,因此這兩個配置文件一般都是結(jié)合起來使用的。當doublebouncehost不存在的時候,系統(tǒng)將會從配置文件me中讀取這個參數(shù)

    doublebounceto  
    這個參說是結(jié)合blebouncehost來使用的,當這個參數(shù)不存在的時候,系統(tǒng)缺省值是postmaster用戶。

    doublebouncehost | doublebounceto  
    這兩個控制文件類似于bouncefrom和bouncehost的關(guān)系,也是doublebouncehost指定主機名,doublebounceto指定用戶名。他們的功能是為一個被退回兩次的郵件制定一條出路。例如:doublebouncehost內(nèi)容為rainbow.linuxfane.com | doublebounceto內(nèi)容為rainbow那么一個被退回2次的郵件將被發(fā)送給rainbow@rainbow.linuxfane.com 沒有這兩個文件的時候,那么發(fā)送給postmaster@me文件中的域名


    envnoathost




    helohost  
    這個配置文件定義了當程序qmail-remote和遠程郵件系統(tǒng)建立連接時所使用的主機名。如果這個配置文件不存在,系統(tǒng)將會從配置文件me中讀取這個參數(shù)值,如果me不存在,qmail-remote將不能正常運行工作。



    idhost  
    用來指定郵件中Message-ID:頭字段的主機名  
    例如:idhost值為linuxfane.com  
    那么郵件頭中如下:  
    Message-ID:<1234567890.12345.qmail@linuxfane.com>  
    如果idhost值為rainbow.linuxfane.com  
    那么郵件頭中如下:  
    Message-ID:<1234567890.12345.qmail@rainbow.linuxfane.com>  




    localiphost  
    用來為使用ip來標示目的主機的郵件消息指定本地主機名的例如:rainbow.linuxfane.com的ip地址為198.17.1.2 | localiphost內(nèi)容為rainbow.linuxfane.com那么一封發(fā)送給rainbow@[198.17.1.2]的郵件的地址會被轉(zhuǎn)換為rainbow@rainbow.linuxfane.com


    locals  

    這個配置文件是定義本地郵件域的,在qmail-send處理郵件投遞時,將會使用locals定義的值和郵件的目標地址進行比較,如果相同,系統(tǒng)就會將這個郵件投遞到本地交給qmail-lspawn來處理。如果一個郵件的目標主機名在locals找不到,系統(tǒng)將會把這個郵件投遞到遠端郵件服務(wù)器系統(tǒng),即使這個郵件的目標地址可能是本地郵件系統(tǒng)的。如果locals不存在,系統(tǒng)將會從配置文件me中讀取這個參數(shù),如果me不存在,qmail-send將不能正常運行。





    me  
    這個配置文件是qmail系統(tǒng)十分重要的一個文件,如果這個文件不存在,qmail系統(tǒng)將無法運行。me是用來定義本地郵件服務(wù)器的主機名的,上面已經(jīng)介紹到了,有多個配置文件是和me有關(guān)聯(lián)的,如果那些配置文件不存在系統(tǒng)默認會從me中讀取參數(shù)值的。me這個配置文件一般都是在qmail系統(tǒng)安裝時使用configure-fast來創(chuàng)建的,在上面qmail系統(tǒng)安裝的時候已經(jīng)使用過了這個參數(shù)。





    morercpthosts  
    rcpthosts | morercpthosts  
    這兩個文件用來指定qmail可以接收的除本地主機名外的其他域名他們的作用是相同的,不過因為rcpthosts中的域名不能超過50行,所以才出現(xiàn)了morercpthosts文件  



    timeoutsmtpd  
    用來指定qmail-smtpd等待遠程SMTP主機發(fā)送數(shù)據(jù)的時間線。默認的情況下,如果連接建立后1200秒內(nèi)沒有接受到遠程SMTP主機的任何信息,那么將關(guān)閉這個連接。  


    percenthack  
    在UUCP協(xié)議中帶有%并在該文件中列出的地址將會被轉(zhuǎn)換為一個標準的DNS格式主機名。  


    plusdomain  
    用來將其值添加在任何一個以一個+號結(jié)尾的地址  


    qmail-inject
    qmail-inject接受本地郵件消息后檢測郵件頭是否符合RFC822標準,并傳送給qmail-queue排進隊列  


    qmail-qmqpc  
    qmail-qmqpc是快速郵件排隊協(xié)議(QMQP)使用的程序,QMQP是一個QMAIL專用協(xié)議,用在工作站級QMAIL服務(wù)器向中心服務(wù)器發(fā)送隊列。  


    qmail-remote  
    qmail-remote通過SMTP協(xié)議向遠程主機傳送郵件。  


    qmail-send
    qmail-send用來檢測隊列中每一個郵件的狀態(tài),并調(diào)用相應的程序進行處理。例如一個目的為本地的郵件將會被qmail-send調(diào)用qmail-lspawn處理。  


    qmail-smtpd  
    qmail-smtpd接受遠程主機的郵件并轉(zhuǎn)交給隊列處理程序qmail-queue來處理。


    qmqpservers  
    用來指定qmail-qmqpc使用的上級服務(wù)器  
    通常該功能應用很少,我認為qmail-qmqpc用法就是代替qmail-queue來直接傳給上級服務(wù)器。  


    queuelifetime
    這個配置文件是定義一個郵件在郵件隊列中存活的時間,缺省值為7天(604800s),這個期限掉了以后qmail-send將會進行最后一次的投遞嘗試,如果投遞失敗,該郵件將會從郵件隊列中刪除。


    rcpthosts  
    這個配置文件也是qmail一個十分重要的文件,這個文件是定義系統(tǒng)允許轉(zhuǎn)發(fā)郵件的郵件域,如果這個文件不存在或者為空,你的系統(tǒng)將會接收Internet上所有的域的郵件轉(zhuǎn)發(fā),即你的系統(tǒng)是Open relay。配置文件rcpthosts最多可以支持50個主機名和域名,如果超個這個數(shù)字,就需要保存到他的擴充配置文件morercphosts中,然后使用qmail的命令程序qmail-newmrh(在本系統(tǒng)中,該文件在/var/qmail/bin目錄下)來生成二進制的morercpthosts.cdb文件,這樣qmail-smtpd才可以從這個二進制文件中讀取信息。
    rcpthosts | morercpthosts  
    這兩個文件用來指定qmail可以接收的除本地主機名外的其他域名他們的作用是相同的,不過因為rcpthosts中的域名不能超過50行,所以才出現(xiàn)了morercpthosts文件  


    smtpgreeting  
    這個配置文件定義了用戶在登錄SMTP服務(wù)時顯示的系統(tǒng)歡迎信息。修改這個信息可以掩蓋一些你的系統(tǒng)的本身的信息,可以相對的迷惑一下登錄者。:)


    smtproutes
    這個配置文件是定義qmail郵件系統(tǒng)的靜態(tài)SMTP路由表信息的,他的格式應該是:
    HOST: targetHOST   //HOST可以是主機名或者域名。這行所表示的是意思是將所有目標是HOST的郵件轉(zhuǎn)發(fā)到targetHOST郵件服務(wù)器中,這個是最常規(guī)的表示方式。
    下面給一些例子和一些特殊的表示方法:
    cnunix.com.cn:cnunix.com   //這行表示的意思是將所有發(fā)往cnunix.com.cn的郵件全部轉(zhuǎn)發(fā)到cnunix.com這個郵件服務(wù)器。qmail不會在cnunix.com.cn郵件服務(wù)器中投遞時查詢DNS中的MX記錄,直接投遞到cnunix.com郵件服務(wù)器中,加快了投遞的速度。
    .cnunix.net:     //這行表示強迫qmail對DNS的MX記錄進行查詢,因為沒有定義轉(zhuǎn)發(fā)的主機名,qmail將在DNS中查詢?nèi)魏我?cnunix.net結(jié)尾的郵件服務(wù)器
    :mail.cnunix.com.cn:2525   //這行定義表示所有發(fā)往該機器的所有郵件都將會轉(zhuǎn)發(fā)到mail.cnunix.com.cn這個郵件服務(wù)器,并且轉(zhuǎn)發(fā)到對方的2525端口,這個方式一般都是做郵件網(wǎng)關(guān)時用的到的。
            
    注意:smtproutes如果設(shè)置不正確或者DNS的變動會產(chǎn)生郵件的循環(huán)投遞。   


    timeoutconnect  
    這個配置文件定義了qmail-remote在和遠端SMTP服務(wù)器在SMTP連接斷開以前接受一個新的連接等待的最大時間(單位為秒s),默認值為一分鐘(60s)。如果你的網(wǎng)絡(luò)連接速率比較低,就需要相應的調(diào)整這個參數(shù)到一個適合的值。


    timeoutremote  
    這個配置文件定義了qmail-remote等待遠端的SMTP服務(wù)器相應時等待的最大時間,默認值為20分鐘(1200s),如果到達這個最大值沒有相應,qmail才和對方斷開連接并且把失敗的記錄寫到qmail的日志中。

    timeoutsmtpd  
    用來指定qmail-smtpd等待遠程SMTP主機發(fā)送數(shù)據(jù)的時間線。默認的情況下,如果連接建立后1200秒內(nèi)沒有接受到遠程SMTP主機的任何信息,那么將關(guān)閉這個連接。  


    virtualdomains  
    這也是qmail的一個非常重要的配置文件,它定義了qmail的虛擬郵件域,qmail結(jié)合vpopmail的虛擬域管理功能可以定義多個虛擬郵件域。

    論壇徽章:
    0
    39 [報告]
    發(fā)表于 2006-06-20 12:05 |只看該作者
    FreeBSD全能服務(wù)器安裝手冊之常用命令詳解篇
    --packages使用方法講解
    安裝 packages

    目前 FreeBSD 的 packages 是由 .tgz 所打包。如果想安裝一個 packages ,可使用 pkg_add,如安裝一個 joe 的 tgz:

    pkg_add joe-{version}.tgz

    強制安裝 packages
    由於有些 packages 會有與其他 packages 相依性的關(guān)系,所以必須先行安裝那些 packages 才能正常安裝。 如果須要強制安裝 packages ,可以不須安裝那些有相依性 packages ,但要注意的是強制安裝的結(jié)果可能會導致執(zhí)行或運作的不正常。強制安裝 packages 的指令如下,如強制安裝一個 joe 的 tgz:
    pkg_add -f joe-{version}.tgz  

    查詢 packages 與其他 packages 之間的相依性

    由於有些 packages 會有與其他 packages 相依性的關(guān)系,所以必須先行安裝那些 packages 才能正常安裝。 查詢 packages 與其他 packages 之間的相依性的指令如下,如查詢與 portupgrade 相依的其他 packages:

    pkg_info -r portupgrade-{version}.tgz  

    遠端安裝 packages

    有兩種設(shè)定方式,首先是 PACKAGEROOT,如:

    setenv PACKAGEROOT ftp://ftp.cn.freebsd.org #設(shè)定 PACKAGEROOT 為 ftp.cn.freebsd.org 站臺另一種方式是設(shè)定 PACKAGESITE,好處是若該站臺的 packages 倉儲并不是符合
    官方的設(shè)定或你想自己指定一個路徑。以 ftp.cn.freebsd.org i386 的 current pakcages 為例:

    setenv PACKAGESITE ftp://ftp.cn.freebsd.org/pub/Fre ... ges-current/Latest/
    兩種方式選擇其中一種皆可,接下來的步驟都一樣。 往後要安裝 packages 的時候,如 portupgrade 的話,則:

    pkg_add -r portupgrade  
    則系統(tǒng)會自動於 ftp.cn.freebsd.org 下載所有與 portupgrade 相依的 packages 并安裝。


    查詢目前系統(tǒng)安裝了哪些套件

    查詢目前系統(tǒng)已安裝的全部套件:
    pkg_info  

    查詢目前系統(tǒng)有沒有安裝這個關(guān)鍵字的套件
    pkg_info | grep  

    查詢某個檔案是屬於哪些套件

    如果想查詢 /usr/local/bin/joe 是屬於哪個套件的話,則:

    pkg_info -W /usr/local/bin/joe  
    如果沒有回傳任何資訊的話,代表著這個檔案是由 FreeBSD 內(nèi)建的。

    查詢某個套件安裝了哪些檔案

    如果想查詢目前系統(tǒng)所安裝的 joe 包含了哪些檔案,則:

    pkg_info -L /var/db/pkg/joe-{version}


    列出所有可以升級的 ports

    ports collection 的更新速度很快,在每次更新 ports collections 後,往往會出現(xiàn)比目前現(xiàn)在安裝的套件還新的版本,可 以令系統(tǒng)自行整理并提供可升級套件的列表:

    pkg_version –c

    移除已安裝的 ports
    以 editors/joe 為例的話,則:
    cd /usr/ports/editors/joe/
    make deinstall  
    或是使用 pkg_delete
    cd /var/db/pkg/
    pkg_delete joe-{version}  
    有時候套件之間的相依性會導致無法直接移除,如果要強制移除的話,則:
    cd /var/db/pkg/
    pkg_delete -f joe-{version}但很有可能會導致其它的套件執(zhí)行起來出現(xiàn)問題。



    一并移除所相依的 ports
    以 sysutils/portupgrade 為例的話,則:
    cd /usr/ports/sysutils/portupgrade/
    make deinstall-depends  
    執(zhí)行此步驟前,請注意是否會移除應該保護的套件。
    或是使用 pkg_delete
    cd /var/db/pkg/
    pkg_delete -r portupgrade-{version}  

    對一個已經(jīng)安裝的 port 打包

    如果安裝好一個套軟,事前并未打包,事後想打包的話,則:
    以 editors/joe 為例的話

    cd /var/db/pkg/
    pkg_create -b joe-{版本號}
    會將已安裝的 port 打包起來,放在 /var/db/pkg/ 目錄下。

    `make deinstall' 與 `pkg_delete' 有什麼不同

    簡單來說,`make deinstall' 會移除該 port,并且不會叁照其相依/相關(guān)的 ports。 `pkg_delete' 在移除該 port 前,會叁照其相依/相關(guān)的 ports,并且 `pkg_delete' 有支援 wild card,如要移除所有 p 開頭的 ports,則:

    cd /var/db/pkg/
    pkg_delete p*
    要注意的是,如果使用 `make deinstall',則最好確定系統(tǒng)目前所安裝的版本,與 ports collection 中顯示的版本符合,否則有可能會出現(xiàn)非預期性錯誤;而 `pkg_delete' 是因為直接刪除系統(tǒng)中所安裝的版本,所以沒有此問題。

    因此,換句話說,當系統(tǒng)所安裝的版本符合 ports collections 中的版本,則可以使用 `make deinstall' 或 `pkg_delete',否則的話最好用 `pkg_delete'。


    對一個已經(jīng)安裝的 port 打包

    如果安裝好一個套軟,事前并未打包,事後想打包的話,則:
    以 editors/joe 為例的話

    cd /var/db/pkg/
    pkg_create -b joe-{版本號}
    會將已安裝的 port 打包起來,放在 /var/db/pkg/ 目錄下。

    論壇徽章:
    0
    40 [報告]
    發(fā)表于 2006-06-20 12:06 |只看該作者
    FreeBSD全能服務(wù)器安裝手冊之常用命令詳解篇
    --ports使用方法講解

    更新 INDEX 對照表

    4.x 的 INDEX 位於 /usr/ports/INDEX,5.x 位於 /usr/ports/INDEX-5。 INDEX 是對照 ports 所有相依等資訊的對照表,若長期未更新的話,會導致ports 對照失敗。官方有定期更新 INDEX,如果 想自行更新的話,則:
    cd /usr/ports/
    make fetchindex

    更新 INDEX HTML

    FreeBSD 提供了用網(wǎng)頁的方式來觀看 ports collection,即可使用 lynx, w3m, links 或其它可瀏覽網(wǎng)頁的程式來查閱。制作全部 ports collection 的方式如下:
    cd /usr/ports/
    make readmes  
    如果是僅須要做目前目錄下的資訊,或單一更新某一分類下的資訊,如 /usr/ports/ftp/ 的話,則:
    cd /usr/ports/ftp/
    make readme  
    則僅會更新 /usr/ports/ftp/ 這個目錄的資訊,其上與其下的目錄皆不會更動到。 執(zhí)行成功後,會在相對應的目錄下產(chǎn)生 README.html 的檔案。

    更新 ports Mk

    Mk (/usr/ports/Mk/) 是編譯 ports 時所叁考的設(shè)定,有時若發(fā)生 ports
    collections 太新,而導致 Mk 的內(nèi)容不符,此時 就是應該更新 Mk 的時候了。

    cd /usr/src/
    make update
    cd /usr/src/share/mk
    make install


    以關(guān)鍵字在ports尋找軟件

    如果要從全部的 ports collection 中找尋與關(guān)鍵字 "ldap" 有關(guān)的 ports,則:
    cd /usr/ports/
    make search key=ldap | grep ^Path

    如果只要從與 ftp 相關(guān)的 ports 下找尋與關(guān)鍵字 "ldap" 有關(guān)的 ports,則:
    cd /usr/ports/ftp/
    make search key=ldap | grep ^Path
    還有另一個用法,方法只是將 key 換成 name 。如果已經(jīng)知道要搜尋 ports 的名稱,或只想找名稱相關(guān)的關(guān)鍵字 "ldap", 則:
    cd /usr/ports/
    make search name=ldap | grep ^Path

    如果只要從 ftp 相關(guān)的 ports 下找尋名稱與關(guān)鍵字 "ldap" 有關(guān)的 ports,則:

    cd /usr/ports/ftp/
    make search name=ldap | grep ^Path


    安裝一個新的 port

    如果系統(tǒng)上未安裝此軟體,則可以選擇安裝一個新的 port。以 editors/joe 為例的話,則:
    cd /usr/ports/editors/joe/
    make install  
    如此會在系統(tǒng)上安裝一個新的 joe 軟體。如果需要在安裝完成後,一并清除編輯時期所留下來的暫存目錄,則:
    cd /usr/ports/editors/joe/
    make clean

    如何得知 ports system 對某個 ports 所提供的編譯叁數(shù)

    所有的 ports collections 中所提供的編譯叁數(shù)都會在對應的 Makefile 檔案內(nèi)詳述,如 sysutils/portupgrade 的話,則是位在 /usr/ports/sysutils/portupgrade/Makefile 檔案下。
    可以對此檔案瀏覽以得知編譯時期可以下達的叁數(shù),如對 sysutils/portupgrade 有提供 NOPORTDOCS,則:

    cd /usr/ports/sysutils/portupgrade/
    make -DNOPORTDOCS install 和make NOPORTDOCS=yes install 亦同那麼安裝此 ports 時,會將 NOPORTDOCS 所對應的相關(guān)叁數(shù)指定進去。有時候設(shè)定較人性化的 ports 會在安裝前提供叁數(shù)供選擇,但是其實大部份的ports 都沒有提供,因此必須自行去搜尋可編 譯的叁數(shù),在此我提供的方式如下:

    cd /usr/ports/sysutils/portupgrade/
    grep defined Makefile  
    如此幾乎可以知道所有提供的可編譯叁數(shù),雖然有時會多出一些不相干的資料,不會這個確實是一個不錯可叁考的方式。

    安裝 ports 前查詢所需依賴/相關(guān)的套件

    在安裝 ports 前,可以查詢所需依賴/相關(guān)的套件。以 mail/p5-Mail-SpamAssassin 為例的話,則:
    cd /usr/ports/mail/p5-Mail-SpamAssassin/
    make all-depends-list                      #顯示所有相關(guān)的套件
    make pretty-print-build-depends-list          #顯示編譯期間所需要的套件
    make pretty-print-run-depends-list            #顯示此套件要執(zhí)行時所需要的套件

    手動加入編譯 ports 的叁數(shù)

    在ports collections 有提供的前提之下,有時候并不是所有該軟體所支援的叁數(shù) 都會收納在 ports collections 中,因此有時候會需要手動加入編譯的叁數(shù)。如 ftp/pure-ftpd 中,如果不想把 inetd 的支援編入的選項,并沒有被 ports collections 所納入,因此必須手動加上這個 編譯叁數(shù),如下:

    cd /usr/ports/ftp/pure-ftpd/
    make CONFIGURE_ARGS+="--without-inetd" install

    指定 ports 的安裝路徑

    預設(shè) ports collecions 已安排安裝的路徑 (/usr/local/),如果不想將套件安裝在預設(shè)路徑的話,可以手動指定安裝路徑。 以 editors/joe 為例,則:

    cd /usr/ports/editors/joe/
    make PREFIX=/usr install
    那么 joe 就會將檔案對應在 /usr 目錄下,而不是預設(shè)的 /usr/local 目錄下。

    只下載源碼包
    cd /usr/ports/editors/joe/
    make fetch  
    預設(shè)會將 joe 的 源碼包 下載至 /usr/ports/distfiles/ 目錄下。


    下載安裝此 ports 所有須要的其他 ports 的 源碼包
    cd /usr/ports/systuils/portupgrade/
    make fetch-recursive
    預設(shè)會將此 ports 的源碼包與所有須要的其他ports 的源碼包,下載至 /usr/ports/distfiles/ 目錄下。

    下載全部所有 ports 的 源碼包
    cd /usr/ports/
    make fetch  
    則會所將全部所有 ports 的 源碼包 下載至 /usr/ports/distfiles/ 目錄下。

    下載全部 ftp 下所有 ports 的 源碼包
    cd /usr/ports/ftp/
    make fetch  
    則會所將全部 ftp 下所有 ports 的 源碼包 下載至 /usr/ports/distfiles/目錄下。
    下載并解開源碼包的步驟
    cd /usr/ports/editors/joe/
    make extract  
    會將源碼包解開至 /usr/ports/editors/joe/work/ 目錄下。

    解開源碼包并補上官方提供的 patch

    先補上官方提供的 patch ,再行 patch 自己的修正。以 editors/joe 為例的話,則:
    cd /usr/ports/editors/joe/
    make patch  
    會將源碼包解開至 /usr/ports/editors/joe/work/ 目錄下,并已經(jīng) patch 上官方提供的 patch。

    如果想要一次清掉所有 ports 產(chǎn)生的暫存資料,則只要回到 ports 的根目錄執(zhí)行即可:
    cd /usr/ports/
    make clean

    安裝一個新的 port,并將打包(package)起來

    將安裝完成的軟體打包起來,有許多便利性:包括在叢集系統(tǒng)中,可供其它機器 使用,或?qū)⑽磥泶塑涹w出問題可重新利用此 package 重新快速安裝。以 editors/joe 為例的話,則:

    cd /usr/ports/editors/joe/
    make package
    如此會在系統(tǒng)上安裝一個新的 joe 軟體,并將此軟體打包(package)起來。package 預設(shè)會在 /usr/ports/editors/joe/ 目錄下,如果希望集中管理的話,建議做如下的步驟:

    mkdir -p /usr/ports/packages/All/以後打包的 packages 都會存放在此目錄下,并且系統(tǒng)會自動做分類,以方便管理。如果需要在安裝完成後,一并清除編輯 時期所留下來的暫存目錄,使用,如:
    cd /usr/ports/editors/joe/
    make package clean

    打包一個 port,并將其所有相依的 ports 也打包起來

    如果編輯一個 port 需要依賴其它的ports,那麼必須將其它 ports 也一起打包,否則安裝 packages 會有相 依賴其它 ports 的 packages 的問題。以 sysutils/portupgrade 為例的話,則:

    cd /usr/ports/sysutils/portupgrade/
    make DEPENDS_TARGET=package package  
    如此會在對所有 portupgrade 所相依賴的 ports 一并打包,也包括自己本身。

    對一個已經(jīng)安裝的 port 打包

    如果安裝好一個套軟,事前并未打包,事後想打包的話,則:
    以 editors/joe 為例的話

    cd /var/db/pkg/
    pkg_create -b joe-{版本號}
    會將已安裝的 port 打包起來,放在 /var/db/pkg/ 目錄下。

    清理 ports 編輯期間所產(chǎn)生的暫存資料

    在編輯 port 的時候,會有編輯期間所需要的工作目錄(work),因此通常安裝好一個套件後,會清除此暫存目錄,以節(jié)省系 統(tǒng)磁碟空間。以 editors/joe 為例的話,則:

    cd /usr/ports/editors/joe/
    make clean

    如果是希望清除所有 ports 的暫存目錄,則:
    cd /usr/ports/
    make clean

    如果是希望清除全部 ftp 下所有的暫存目錄,則:
    cd /usr/ports/ftp/
    make clean

    清理 ports 編輯期間所產(chǎn)生的暫存資料,以及其相對應的源碼包


    make clean,僅只是清除編輯期間所需要的工作目錄(work),并沒有將編譯ports 時一并下載的 源碼包 刪除(相對應之 源碼包 預設(shè)會存放在 /usr/ports/distfiles/),如果欲把 源碼包 一并刪除,以 editors/joe 為例的話,則:
    cd /usr/ports/editors/joe/
    make distclean
    make distclean 的步驟包含了 make clean 的功能,也就是說除了會刪除源碼包 外,還會一并清除編輯期間所產(chǎn)生的工作目錄。

    如果是希望清除所有 ports 的暫存目錄,及源碼包 ,則:
    cd /usr/ports/
    make distclean

    如果是希望清除全部 ftp 下所有的暫存目錄,及 源碼包,則:
    cd /usr/ports/ftp/
    make distclean

    移除已安裝的 ports
    以 editors/joe 為例的話,則:
    cd /usr/ports/editors/joe/
    make deinstall  
    或是使用 pkg_delete
    cd /var/db/pkg/
    pkg_delete joe-{version}  
    有時候套件之間的相依性會導致無法直接移除,如果要強制移除的話,則:
    cd /var/db/pkg/
    pkg_delete -f joe-{version}但很有可能會導致其它的套件執(zhí)行起來出現(xiàn)問題。

    一并移除所相依的 ports

    以 sysutils/portupgrade 為例的話,則:
    cd /usr/ports/sysutils/portupgrade/
    make deinstall-depends  
    執(zhí)行此步驟前,請注意是否會移除應該保護的套件。
    或是使用 pkg_delete
    cd /var/db/pkg/
    pkg_delete -r portupgrade-{version}

    重新安裝已安裝過的 ports
    重新安裝的前提是,之前有安裝過或目前已安裝。以 editors/joe 為例的話,
    則:
    cd /usr/ports/editors/joe/
    make deinstall
    make clean
    make install 或 make reinstall  

    升級已安裝的 ports

    如果已經(jīng)安裝好套件,事後欲升級的話,必須先移除舊版本的 port,移除的方法以 editors/joe 為例,則:

    cd /var/db/pkg/
    pkg_delete joe-{version}
    cd /usr/ports/editors/joe/
    make install  
    或是
    cd /usr/ports/editors/joe/
    make clean
    make reinstall  

    安裝舊版的 ports

    有時候會因為相依性,或是新版有問題,而會想裝舊版本的套件。這里的方法是利用 CVS 的好處,回歸到以前舊版本存在的日子,以安裝舊版本的套件。首先,若我們要回復到某一個套件的版本時,需要去查詢 FreeBSD ports CVS repository。最常見的就是 Freshports 網(wǎng)站、 FreeBSD 的 Mailing FreeBSD cvs 或是 FreeBSD ports cvsweb。
    查到該套件版本所依存的日子後,就修改 CVS tag。一般預設(shè) ports 的 CVStag 會寫在 /usr/share/examples/cvsup/ports-supfile ,如要回朔到2002/10/05 號的話,則:

    vi /usr/share/examples/cvsup/ports-supfile
    ******************************************
    default date=2002.10.05.00.00.00         #將 date 改成當日然後按照一般 CVSup 的時候一樣,執(zhí)行 CVSup (make update),此時的 portscollections 就會回到當時的情形,那麼該套件舊版本也會出現(xiàn)在 ports collections 中,只要安裝即可。

    如果僅是想把某部份的 ports 回朔,則必須加上額外的資訊,如僅希望把lang/perl5.8 回朔,而得知此屬於 lang 中的一支,則:

    vi /usr/share/examples/cvsup/ports-supfile
    ******************************************
    ports-all #將 ports-all 標示起來ports-lang #加入這行最後,執(zhí)行 CVSup,并安裝即可。目前若希望單獨回朔單一的 ports,則比較麻煩。

    安裝 ports 出現(xiàn) FORCE_PKG_REGISTER 的錯誤訊息

    問題敘述:
    當你先前已經(jīng)用ports 安裝過某一軟體 當你要再次透過ports 安裝同一軟體時,
    很有可能會出現(xiàn)類似下述的錯誤訊息產(chǎn)生. 意思是說 你可以透過 make deinstall 解除安裝 然後透過 make reinstall來再次安裝

    若你確定想要*覆蓋*此安裝 可以透過設(shè)定 FORCE_PKG_REGISTER 變數(shù)達成目標.
    ===>; An older version of PORTS資料夾位置 is already installed (軟體版本)
    You may wish to ``make deinstall'' and install this port again
    by ``make reinstall'' to upgrade it properly.
    If you really wish to overwrite the old port of PORTS資料夾位置
    without deleting it first, set the variable "FORCE_PKG_REGISTER"
    in your environment or the "make install" command line.

    處理方式:
    只要在make install 時加上 FORCE_PKG_REGISTER="yes" 就可以強制安裝.
    也就是: /usr/ports/資料夾位址/#make install FORCE_PKG_REGISTER="yes"


    解決安裝 ports 時出現(xiàn) sed -i 的錯誤

    因為 BSD style 的 sed ,也就是 BSD 本身自有的 sed ,與一些 ports 編譯期間所執(zhí)行的 sed 不一致,所以會導致一些語 法錯誤。此時先安裝 sed_inplace(textproc/sed_inplace),然後再安裝原本無法安裝的 ports:
    cd /usr/ports/???/???/
    make -DUSE_REINPLACE install  

    安裝 ports 出現(xiàn) Shared object libintl.so.X not found 的錯誤訊息

    Shared object "libintl.so.4" 或 (libc.so.4) not found
    問題敘述:
    近來的FreeBSD版本,常常在安裝某些軟體時,會出現(xiàn)類似的失敗畫面並且告訴你缺乏 libintl.so.4或是 libc.so.4 這個函式.
    Shared object "libc.so.4" not found
    如下圖:是近來版本安裝某些程式問題時常見的問題,缺少 libc.so.4 函式.

    問題分析:
    提到libc.so函式 首先想到的是與 linux 程式相關(guān)共享函式庫. FreeBSD在讀取相關(guān)函式前,首先會在 /compat/linux 資料夾中尋找; 然後若找不到則會嘗試搜尋 /lib 資料夾. 以 libc.so 函式為例,會先尋找/compat/linux/lib/libc.so ; 其次才是/lib/libc.so .

    簡單的解決方式:
    Shared object "libintl.so.4" not found
    跟 libc.so 函式一樣 也是在安裝某些軟體就會出現(xiàn)錯誤畫面.
    問題分析:
    libintl.so 函式是安裝 /usr/port/devel/gettext/ 程式後取得. 理論上來說 目前版本的相關(guān)函數(shù)是 libintl.so.5 為何還要去讀取舊的 libintl.so.4 版本. 當你在安裝gmake時,gmake會去連結(jié)安裝gmake當時的libinl.so的版本,是version 4. 也就是 libintl.so.4 當你更新過相關(guān)的ports (devel/gettext) 將會用 libintl.so.5 取代 libintl.so.4 除非你能取得先前某些系統(tǒng)保留舊有的 libintl.so.4 否則就會出現(xiàn)安裝失敗狀況.

    很可惜的是...有很多程式需要 gettext 函式.
    你可以用 cd /usr/ports/ ; make search key="gettext" | more 查詢?yōu)槭颤N要加上more 因為太多怕你看到昏頭...

    問題解決:
    要解決這個問題 你可以透過重新建立所有與 gettext 相關(guān)的ports程式
    # portupgrade -fr gettext
    重新建立或重新安裝所有與 gettext相關(guān)連的程式, 若你忘掉了 請參閱 更新ports/升級系統(tǒng) >; portupgrade 軟體更新或是簡單的用偷吃步 把*目前版本*link過去..QQ (版本6..類推)然後就可以順利進行程式安裝.

    針對某些 ports 不做 CVSup

    若 ports 底下的某些分類完全用不到,則可以在 CVSup 時,不做更新,以節(jié)省
    網(wǎng)路頻寬與時間。


    # vi /usr/sup/refuse
    ******************************************
    ports/french
    ports/german
    ports/hebrew
    ports/hungarian
    ports/japanese
    那麼則上述目錄下的檔案皆不會更新。

    如果是想要某些單一的 ports 不做同步,例如想保留舊版不做同步,或新版出現(xiàn)
    問題時。


    # vi /usr/sup/refuse
    ******************************************
    ports/lang/perl5.8  
    那麼 ports/lang/perl5.8 這個 ports 不會做 CVSup 同步。這些設(shè)定方法支援萬用字元。

    # vi /usr/sup/refuse
    ******************************************
    ports/lang/perl*
    ports/po*

    安裝 ports 出現(xiàn) port is outdated 的錯誤訊息

    例如安裝 imap-uw 時,出現(xiàn)以下內(nèi)容:
    Your installation of the cclient port is outdated. Please delete it before continuing.

    表示因為相對應,且已安裝好的 cclient 這個軟體過於老舊,建議先升級這個軟
    體再行安裝 imap-uw。因此只要先升級 cclient 後,再安裝即可。

    # cd /usr/ports/mail/cclient/
    # make reinstall 或 # make deinstall && make install
    # cd /usr/ports/mail/imap-uw/
    # make install  


    安裝 ports 出現(xiàn) OpenSSL vulnerabilities 的錯誤訊息

    在安裝有些套件時,如果有相依於 OpenSSL 時,且判斷系統(tǒng)目前使用的 OpenSSL 版本有漏洞問題時,會出現(xiàn)如下的訊息:


    Dependency warning: used OpenSSL version contains known
    vulnerabilities Please update or define either WITH_OPENSSL_BASE or
    WITH_OPENSSL_PORT
    一般建議的解決方法有二種。

    第一種:升級系統(tǒng)(需含系統(tǒng)內(nèi)建之 OpenSSL 一并升級),再安裝該套件可以先查詢目前系統(tǒng)所用之 OpenSSL 的版本:
    openssl version -v
    升級系統(tǒng)可叁考 FNP: upgrade core system 或 FNP: upgrade major system。 升級完系統(tǒng)後,再進行一次 OpenSSL 版本之確認。然後再安裝該套件,這訊息就不會出現(xiàn)了。

    第二種:使該套件相依於 ports tree 中的 OpenSSL 這種方法會安裝 ports tree 中新版本的 OpenSSL,然後相依於此新版本的OpenSSL,而不是系統(tǒng)本身內(nèi)建的 OpenSSL。只要安裝套件時,加入 WITH_OPENSSL_PORT 的叁數(shù),即會安裝 ports tree 中的 OpenSSL,并且該套件 也會相依於此。方法如下:

    make -DWITH_OPENSSL_PORT install這里不建議用叁數(shù) WITH_OPENSSL_BASE,因為這表示安裝套件時,是相依於原本系統(tǒng)中可能有漏洞的 OpenSSL,這樣會導致安全性的問題。

    安裝 ports 時,原本應該出現(xiàn)的清單選項不見了

    這是由於系統(tǒng)會紀錄曾安裝過 ports 的當時所選擇的清單選項,因此有時會因為安裝時出了問題,或是再一次安裝時,就不會出現(xiàn)清單可以選擇。如何讓清單選項重新出現(xiàn)呢?

    make clean
    make showconfig  # 顯示設(shè)定的內(nèi)容
    make rmconfig    # 清除設(shè)定的內(nèi)容
    make config  
    之前設(shè)定 ports 的選項預設(shè)會紀錄在 /var/db/ports/{ports_name}/options 內(nèi)容中。如要查看之前 python 有選擇的清單選項:
    cat /var/db/ports/python/options  


    檢查是否有安裝重覆的 ports/packages

    隨著時間的演進,不同時間安裝的軟體會有不同版本的釋出,而且不同軟體相依的版本號也不同,所以往往會造成同一個軟體安裝過多版本的情形發(fā)生。這里我必須聲明的是,雖然套件名稱相同,可是可能沒辦法上下相容,因此造成有些軟體必須依賴比較舊的版本,而有些軟體必須依賴比較新的版本,如果有這種情形發(fā)生的話,那麼二個版本的存在是正常的。
    否則的話,我們會建議移除舊版的套件,將所有相依於此套件改為相依於新版的。也就是說,移除舊版的套件,然後將原本相依於舊版的套件,改為相依於新版的套件。注意,我強調(diào)的是新舊版套件是相容的。因為這種做法有點危險,因此不提供做法,請使用更水階的套件管理工具,如 portupgrade 來完成。檢查是否有安裝重覆的 ports/packages 的方法如下:

    pkg_info | sort | sed -e 's/-[0-9].*$//' | uniq -c | grep -v '^[[]]*1'
    如果有一行是顯示" 3 libtool",則表示目前系統(tǒng)有安裝三種不同版本的
    libtool套件。
    接下來可以檢查這三種版本是否可以相容:
    cd /usr/ports/
    make search name=libtool  
    如果發(fā)現(xiàn)分別有三種 ports 來代表這三種不同版本的 libtool,就表示他們彼此不相容,必須保留三者,否則可能會發(fā)生相依問題。假設(shè)如下:
    /usr/ports/devel/libtool13
    /usr/ports/devel/libtool14
    /usr/ports/devel/libtool15
    反之,如果發(fā)現(xiàn)只有一種 ports 來代表這種不同版本的套件,則表示目前系統(tǒng)安裝的三種版本是相容的,只要修改原本相容於其它二種版本所有的套件,并指向欲保留的那個版本,然後移除其它二種即可。如發(fā)現(xiàn)系統(tǒng)目前有安裝三種不同版本的 gettext:

    cd /usr/ports/
    make search name=gettext  
    然後檢查的結(jié)果如下:
    /usr/ports/devel/gettext  
    則將所有相依於 gettext 舊版本的其它套件都改為相依於新版的 gettext,然後再移除系統(tǒng)中舊版的 gettext 即可。


    `make deinstall' 與 `pkg_delete' 有什麼不同

    簡單來說,`make deinstall' 會移除該 port,并且不會叁照其相依/相關(guān)的 ports。 `pkg_delete' 在移除該 port 前,會叁照其相依/相關(guān)的 ports,并且 `pkg_delete' 有支援 wild card,如要移除所有 p 開頭的 ports,則:

    cd /var/db/pkg/
    pkg_delete p*
    要注意的是,如果使用 `make deinstall',則最好確定系統(tǒng)目前所安裝的版本,與 ports collection 中顯示的版本符合,否則有可能會出現(xiàn)非預期性錯誤;而 `pkg_delete' 是因為直接刪除系統(tǒng)中所安裝的版本,所以沒有此問題。

    因此,換句話說,當系統(tǒng)所安裝的版本符合 ports collections 中的版本,則可以使用 `make deinstall' 或 `pkg_delete',否則的話最好用 `pkg_delete'。

    安裝 ports 出現(xiàn) local modification time does not match remote 的錯誤訊息

    這通常表示你已經(jīng)下載了這個檔案在 /usr/ports/distfiles 的對應目錄中,但是它并不是 port collections 所期望下載的。通常的解決方法是在 /usr/ports/distfiles 的對應目錄中移除此檔案,再重新下載。
    例如是安裝 joe 時出現(xiàn)如下的錯誤訊息:
    fetch: joe2.8.tar.Z: local modification time does not match remote 則將 joe2.8.tar.Z 於 /usr/ports/distfiles 中移除:
    cd /usr/ports/editors/joe/
    make distclean  
    最後再重新安裝即可

    我有個問題請教
    如果我已經(jīng)安裝了一套軟件,比如xorg,
    我想把它及其依賴的做成packages,該怎么做呢 ???
    make package-recursive
    前提是之前沒有安裝其中的包否則會有問題(我覺得這是bug,不過暫時還沒有很好的解決辦法)


    在 FreeBSD 上模擬 Linux 的環(huán)境

    最新最完整的資料在官方的 Handbook 上。

    簡單來說,F(xiàn)reeBSD 核心必須支援,且必須安裝 Linux Runtime Libraries,最後做一些設(shè)定。
    如果要執(zhí)行 Linux ELF Binaries,可以先查詢目前 FreeBSD 是否已經(jīng)支援 Linux ELF。
    brandelf -l
    看是否有 Linux 的字樣,如果沒的話,請回頭檢查是否哪一步驟沒有做到。然後檢查執(zhí)行檔是否為 Linux ELF Binaries。

    brandelf execution-binary-filename  
    如果是 Linux ELF Binaries,則正常執(zhí)行即可。

    如果顯示結(jié)果不是 Linux ELF Binaries,但是自己確定是 Linux ELF Binaries 的話,則只要更改一下 ELF 的格式即可。
    brandelf -t Linux execution-binary-filename

    然後再檢查一次是否已經(jīng)修正為正確的格式。

    在 FreeBSD 上安裝 Linux rpm

    請確定已經(jīng)成功在 FreeBSD 上模擬 Linux 的環(huán)境,安裝 rpm 的方式如下:
    rpm --ignoreos --root /compat/linux --dbpath /var/lib/rpm/ -Uvh xxx.rpm
    您需要登錄后才可以回帖 登錄 | 注冊

    本版積分規(guī)則 發(fā)表回復

      

    北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年舉報專區(qū)
    中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
    感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP