歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

在Linux下用Qmail建部門郵件服務器

一、安裝環境 安裝平台:RedHat Linux 7.3 安裝的機器: mail.mydomain.com 軟件包: qmail-1.03 qmail基本系統 ucspi-tcp-0.88 tcpsever等服務程序 daemontools-0.76 監視工具 checkpassword-0.90 pop3驗證用戶的程序 軟件來源: http://www.qmail.org http:
  一、安裝環境
  安裝平台:RedHat Linux 7.3
  安裝的機器: mail.mydomain.com
  軟件包:
  qmail-1.03 qmail基本系統
  ucspi-tcp-0.88 tcpsever等服務程序
  daemontools-0.76 監視工具
  checkpassword-0.90 pop3驗證用戶的程序
  軟件來源:
  http://www.qmail.org
  http://cr.yp.to/
  http://inter7.com/main.html
  注意:每個包安裝前務必先仔細閱讀INSTALL和FAQ,很多問題在FAQ都有解決方法。
  
  二、安裝步驟
  1、准備工作
  刪除sendmail
  # rpm -e --nodeps sendmail
  2、安裝qmail
  1)創建qmail安裝目錄
  #mkdir /var/qmail
  2)添加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
  3)解壓、解包和編譯
  (假設這些包都下載到/tmp目錄下)
  #cd /tmp
  #tar xzvf qmail-1.03.tar.gz
  #cd qmail-1.03
  進入qmail目錄後,仔細閱讀一下README和INSTALL文件.然後開始編譯qmail
  打DNS補丁
  #vi dns.c
  跳到24行將PACKETSZ改為65536
  #make setup check
  4)配置
  #./config
  或
  #./config-fast mail.mydomain.com
  5)建立系統別名
  #(cd /var/qmail/alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root)
  #chmod 644 ~alias/.qmail*
  可以在這些別名文件中指定管理用戶來接受這些系統郵件,如
  #echo admin > ~alias/.qmail*
  6)建立啟動文件和用戶的Maildir
  說明:個人比較喜歡將Maildir改為.Maildir,以便列目錄時隱藏掉
  #cp -p /var/qmail/boot/home /var/qmail/rc
    #chmod 755 /var/qmail/rc
  編輯 /var/qmail/rc
    修改其中./Mailbox成為./.Maildir以支持maildir的pop收信方式,如下:
     # !/bin/sh
     # Using splogger to send the log through syslog.
     # Using qmail-local to deliver messages to ~/Maildir by default.
     exec env - PATH="/var/qmail/bin:$PATH"   qmail-start ./.Maildir
    其中splogger qmail指令刪除,以後改用multilog
  已存在用戶建立maildir:
  $ /var/qmail/bin/maildirmake ~/.Maildir
  $ echo ./.Maildir/ > ~/.qmail
  建立maildir的方法(對於後面要建立的用戶):
      # /var/qmail/bin/maildirmake /etc/skel/.Maildir
      # echo ./.Maildir/ > /etc/skel/.qmail
  7)刪除臨時目錄
  # rm -rf /tmp/qmail-1.03
  3、安裝ucspi-tcp-0.88
    #tar zxvf ucspi-tcp-0.88.tar.gz
    #cd ucspi-tcp-0.88
    #make
    #make setup check
    執行文件將被安裝在/usr/local/bin中。
  
  4、安裝checkpassword
    #tar zxvf checkpassword-0.90.tar.gz
    #cd checkpassword-0.90
    #make
    #make setup check
    #chmod og-rx /bin/checkpassword
    執行文件checkpassword將被安裝在/bin中。
  如果不對/etc/passwd中的用戶開放mail,則不需要裝checkpassword,而只要裝vpopmail就行了。
  
  5、安裝daemontools
  # mkdir -p /package
  # chmod 1755 /package
  # cd /package
  
  # tar -xvzf daemontools-0.76.tar.gz
  # cd admin/daemontools-0.76
  
  # package/install
  
  將/etc/inittab中最後一行的svscanboot注釋掉
  重啟:# kill -HUP 1
  說明:改inittab是個人喜好
  6、建立 SMTP 轉信規則
    1) 建立 /etc/tcp.smtp
  內容為":allow"
  # echo ":allow" > /etc/tcp.smtp
     此為接受任何Client端所發出子轉送信件
     若要拒絕某些IP所發出的Relay則修改 /etc/tcp.smtp如下
      192.10.10.:allow,RELAYCLIENT=""
      127.:allow, RELAYCLIENT=""
     如此,除192.10.10.*及127.*之外的所有地址,都將被拒絕轉送信件。
    2)轉換tcp.smtp成為cdb格式
     #/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
     注意:若對tcp.smtp有任何變更,都必須經過tcprules轉換成為cdb文件才會生效。
     另外,tcp.smtp若為空白,則表示拒絕所有的轉送,因為預設的規則為deny。
     至此,轉送規則已建立,稍後將依此規則啟動qmail-smtpd。
  7、建立啟動系統服務腳本
  1)建立LOG目錄
  # mkdir /var/log/qmail
  # chown qmaill.nofiles /var/log/qmail
  # mkdir /var/log/qmail/smtpd
  # chown qmaill.nofiles /var/log/qmail/smtpd
  # mkdir /var/log/qmail/pop3d
  # chown qmaill.nofiles /var/log/qmail/pop3d
  
  2)設定services
     移除.netd.conf中有關smtp及pop3的設定(加上#號)
  注:redhat7.3用xinetd代替inetd了,就不用改了
     編輯/etc/services,確認以下設定(實際並不按下面的順序):
      smtp 25/tcp mail
      # pop-3 110/tcp #pop version 3
      # pop-3 110/udp
      pop3 110/tcp
      pop3 110/udp
  3)寫send/smtpd/pop3d的supervise腳本run
  # cd /var/qmail
  # mkdir -p supervise/qmail-send/log
  # mkdir -p supervise/qmail-smtpd/log
  # mkdir -p supervise/qmail-pop3d/log
  # cd supervise/qmail-send
  # ln -s /var/qmail/rc run
  其它run內容如下:
  qmail-send/log/run:
  #!/bin/sh
  exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail
  qmail-smtpd/run:
  #!/bin/sh
  QMAILUID=`id -u qmaild`
  QMAILGID=`id -g qmaild`
  exec /usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb -u $QMAILUID -g $QMAILGID 0 smtp /var/qmail/bin/qmail-smtpd 2>&1
  qmail-smtpd/log/run:
  #!/bin/sh
  exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd
  qmail-pop3d/run:
  #!/bin/sh
  exec /usr/local/bin/tcpserver -v -R 0 pop3 /var/qmail/bin/qmail-popup mail.mydomain.com /bin/checkpassword /var/qmail/bin/qmail-pop3d .Maildir 2>&1
  qmail-pop3d/log/run:
  #!/bin/sh
  exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/pop3d
  4)建自啟動腳本/etc/init.d/qmail
  內容如下:
  #!/bin/bash
  # chkconfig: 2345 96 6
  #
  ######################################################################
  # Description: Script to control qmail process #
  # File: /etc/rc.d/init.d/qmail #
  ######################################################################
  # Setup environment for script execution
  
  . /etc/rc.d/init.d/functions
  
  PATH=$PATH:/var/qmail/bin:/usr/local/bin
  export PATH
  
  SVSCANPID="/var/run/svscan.pid"
  
  stopQmail() {
  if [ -f $SVSCANPID ]; then
  kill `cat $SVSCANPID`
  rm -f $SVSCANPID
  fi
  
  svc -dx /var/qmail/supervise/qmail-pop3d/log
  svc -dx /var/qmail/supervise/qmail-pop3d
  
  svc -dx /var/qmail/supervise/qmail-smtpd/log
  svc -dx /var/qmail/supervise/qmail-smtpd
  
  svc -dx /var/qmail/supervise/qmail-send/log
  svc -dx /var/qmail/supervise/qmail-send
  }
  
  case "$1" in
  start)
  echo "Starting qmail/smtp/pop3 ..."
  cd /var/qmail/supervise
  env - PATH="$PATH" svscan &
  echo $! > $SVSCANPID
  ;;
  
  stop)
  echo "Stoping qmail/smtp/pop3 ..."
  stopQmail
  ;;
  
  restart)
  $0 stop
  $0 start
  ;;
  
  status)
  ;;
  
  *)
  echo "Usage: $0 {start|stop|status}"
  exit 1
  esac
  
  exit 0
  
  加入chkconfig管理
  # chmod 755 qmail
  # chkconfig -add qmail
  運行ntsysv關閉或啟動服務
  
  三、tips
  1、使用[email protected]形式的命名
  # cd /var/qmail/alias
  # echo mydomain.com >> locals
  2、改密碼
  對於僅開放mail的用戶可將shell改成passwd
  # useradd -s /usr/bin/passwd userName
  然後用telnet改密碼
  3、qmail1.03有不少補丁,根據你的需要打吧。
  
  說明:附件為我的/etc/init.d/qmail和supervise腳本run

Copyright © Linux教程網 All Rights Reserved