[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 應用技術 > Qmail > 正文
Qmail安裝及設定
http://www.linuxforum.net 獨行客 ddxxkk@163.net (2001-04-21 17:58:59)

個人qmail安裝及設定過程,希望對大家有用


1. 如何獲得Qmail? 
    可以通過訪問www.qmail.org或mirror站點下載qmail-1.03.tar.gz,以及獲得 
  更多qmail的資料. 

2 安裝Qmail 
  獲得qmail-1.03.tar.gz,用tar命令解包 
  #tar xzvf qmail-1.03.tar.gz 

  進入qmail目錄,仔細閱讀一下README和INSTALL文件.然開始編譯qmail. 

2.1 建/var/qmail目錄: 
   #mkdir /var/qmail 

2.2 按照INSTALL.ids中方法建立qmail用戶和組: 

   # 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 

2.3 make setup check 
2.4 閱讀INSTALL.ctl和FAQ,配置qmail,最簡單的方法是 
   #./config 
    或者 
   #./config-fast your.full.home.name 

2.5 建立系統別名 
   # (cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root) 
   # chmod 644 ~alias/.qmail* 

2.6 復制/var/qmail/boot/proc到/var/qmail/rc 
   # cp /var/qmail/boot/proc /var/qmail/rc 

2.7 開始測試Qmail投遞程序 

    啟動qmail: 
   # csh -cf '/var/qmail/rc &' 

    先查看一下/var/log/maillog,搜索 
   qmail: status: local 0/10 remote 0/20 
    qmail-send通常是輸出"status"或者"cannot start"如果不能正常啟動. 

    用ps監視一下qmail守護進程,應該有五個相關進程: 
     qmail-send,以qmails用戶運行 
        qmail-lspawn,以root用戶運行 
        qmail-rspawn,以qmailr用戶運行 
        qmail-clean,以qmailq用戶運行 
        splogger,以qmaill用戶運行 

    本地Mail測試: 
  
    % echo to: me | /var/qmail/bin/qmail-inject 
    注意:要用你的用戶名代替me 
    Mail應該立即出現在你的信箱之中./var/log/maillog中應該有如下記錄: 
           qmail: new msg 53 
           qmail: info msg 53: bytes 246 from  qp 20345 uid 666 
           qmail: starting delivery 1: msg 53 to local me@domain 
           qmail: status: local 1/10 remote 0/20 
           qmail: delivery 1: success: did_1+0+0/ 
           qmail: status: local 0/10 remote 0/20 
           qmail: end msg 53 

    53是inode號,20345是進程號,你的數字應該有所不同. 

    本地錯誤測試: 

    給一個不存在的本地用戶發信: 
   % echo to: nonexistent | /var/qmail/bin/qmail-inject 
           qmail: new msg 53 
           qmail: info msg 53: bytes 246 from  qp 20351 uid 666 
           qmail: starting delivery 2: msg 53 to local nonexistent@domain 
           qmail: status: local 1/10 remote 0/20 
           qmail: delivery 2: failure: No_such_address.__#5.1.1_/ 
           qmail: status: local 0/10 remote 0/20 
           qmail: bounce msg 53 qp 20357 
           qmail: end msg 53 
           qmail: new msg 54 
           qmail: info msg 54: bytes 743 from <> qp 20357 uid 666 
           qmail: starting delivery 3: msg 54 to local me@domain 
           qmail: status: local 1/10 remote 0/20 
           qmail: delivery 3: success: did_1+0+0/ 
           qmail: status: local 0/10 remote 0/20 
           qmail: end msg 54 
    你將立即收到彈回的信件. 

    遠程投遞測試: 向你在其他機器上的賬戶發信: 
   % echo to: me@wherever | /var/qmail/bin/qmail-inject 
           qmail: new msg 53 
           qmail: info msg 53: bytes 246 from  qp 20372 uid 666 
           qmail: starting delivery 4: msg 53 to remote me@wherever 
           qmail: status: local 0/10 remote 1/20 
           qmail: delivery 4: success: 1.2.3.4_accepted_message./... 
           qmail: status: local 0/10 remote 0/20 
           qmail: end msg 53 
    投遞過程將在starting delivery和success中有個間斷,SMTP傳送是相對較慢的 
    然去檢查一下me@wherever是否正確收到email. 

    面還有三個測試,分別測試本地postmaster,兩次彈回mail和通過mail執行 
    命令.具體方法可以在TEST.deliver中找到. 

2.8 從Sendmail象Qmail轉移. 

2.8.1 首先找到sendmail的啟動程序,一般是在/etc/rc.d目錄中 
      看上去象這樣的命令: 
           sendmail -bd -q15m 
      將其注釋掉. 

2.8.2 殺掉Sendmail進程. 
   如果sendmail有子進程,可以反復用-STOP和-CONT信號殺,直到沒有 
      子進程用-TERM加-CONT殺就可以了. 

2.8.3 檢查mail隊列中是否還有信,如果認為有必要將他們發送出去,可以在 
      以一段時間不定期的運行sendmail.bak -q直到隊列清空. 

2.8.4 去掉sendmail等文件的setuid bit 
      # chmod 0 /usr/lib/sendmail 
      # chmod 0 /usr/sbin/sendmail 
      # chmod 0 /usr/lib/sendmail.mx 

2.8.5 
      # mv /usr/lib/sendmail /usr/lib/sendmail.bak 
      # mv /usr/sbin/sendmail /usr/sbin/sendmail.bak 

2.8.6 將 
      csh -cf '/var/qmail/rc &' 
      添加到啟動文件中去. 

2.8.7 安裝qmail的sendmail外殼: 
       # ln -s /var/qmail/bin/sendmail /usr/lib/sendmail 
       # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail 

2.8.8 在/etc/inetd.conf中設置qmail-smtpd:(是一行) 
       smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env 
       tcp-env /var/qmail/bin/qmail-smtpd 

2.8.9 重啟動inetd,用-HUP信號殺inetd及可. 

2.9.1 使用qmail的maildir(這個問題麻煩我好幾天) 

每個用戶目錄內:/var/qmail/bin/maildirmake /home/$LOGINNAME/Maildir 

2.9.2 這一步不做好象也可以
add a line to "/home/u user name/.bash_profile" 
MAIL=/home/$LOGINNAME/Maildir/ 
export MAIL 
2.9.3 pop3
去www.qmail.org去下載checkpassword,(這個東西qmail不自帶)並編譯
inet.conf 中的pop-3
pop-3 stream tcp nowait qmaild /var/qmail/bin/qmail-popup mydomain 
.com /bin/checkpassword /var/qmail/bin/qmail-pop3d (在一行) 

2.9.4 rc文件 
cp /var/qmail/boot/home /var/qmail/rc
修改rc文件變成如下
exec env - PATH="/var/qmail/bin:$PATH" \ 
qmail-start ./Maildir/ splogger qmail 


3 qmail的一些特殊配制 

3.1 如何設置Smart Host: 
         # echo ":your.smart.host" > /var/qmail/control/smtproutes 

3.2 為其它主機轉信

在/var/qmail/control/rcpthosts添加
21cn.com
163.com 
 

3.3設置主機多個域名 

將名稱加入/var/qmail/control/local,/var/qmail/control/rcpthosts
/var/qmail/control/me 

3.4 別名

本機不存的的進行轉發
如:webmaster@my.com(webmaster用戶本地不存在) 轉發給user1@my.com(user1為
本地用戶)
方法:
echo "user1">/var/qmail/alias/.qmail-webmaster  
或  
echo "user1@21cn.com">/var/qmail/alias/.qmail-webmaster    
完全的email地址

3.5 群發mailist

假如發信給list@my.com時同多人可編輯
/var/qmail/alias/.qmail-list內添加
user1
user2
user3
uu@21cn.com
ss@163.net
3.6 本地用戶擴展

user1,q1,q2,qq為本地用戶user1-s1,user1-s2,user1-xxx不是本地用戶
設定發信給:user1-s1轉為q1,user1-s2轉為q2,
user1-21轉為dd@21cn.com,user1-list轉為dd@21cn.com,q1,q2,qq
user1-xxx(xxx表示其它名稱)轉為qq,
echo "q1">/home/user1/.qmail-s1
echo "qd@21cn.com">/home/user1/.qmail-21
echo "q2">/home/user1/.qmail-s2
echo "qq">/home/user1/.qmail-default
編輯/home/user1/.qmail-list內容為
dd@21cn.com
q1
q2
qq


3.7 如何設置虛擬主機 
如:
虛擬主機 ttt.com 設定 webmaster@ttt.com 轉給本地用戶tttweb
                 設定 help@ttt.com 轉給外地用戶help@other.com
                 設定 其它@ttt.com 轉給本地用戶tttother
方法: 
 (1)將虛擬主機ttt.com加入/var/qmail/control/local和/var/qmail/control/rcpthosts 
 (2) 然在/var/qmail/control/virtualdomains中加入 
    your.virtual.domains:tttcom 
 (3) 加一個用戶tttcom  
 adduser tttcom
    這樣所有發往me@ttt.com都將以testcom-me@test.com 
    的形式發給testcom,
 (4) echo "tttweb">/home/testcom/.qmail-webmaster
     echo "help@other.com">/home/testcom/.qmail-help
     echo "tttother">/home/testcom/.qmail-default
 (5)從新啟動qmail
3.8 抄送
如:發信給 user1@red.lx,同時抄送給user2,dd@21cn.com
方法:編輯/home/user1/.qamil 內容如下
./Maildir/
|forward  user2 dd@21cn.com

3.9 轉信
user1@red.lx轉向dd@163.net
方法:編輯/home/user1/.qamil 內容如下
dd@163.net
3.10 如何設置 qmail 為對外smtp服務器?(去掉轉信和發信的限止)
去掉/var/qmail/control/rcpthosts文件
(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
 

★  樊強制作 歡迎分享  ★