Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 郵件伺服器

在 Linux 環境下部署 Qmail 部門郵件伺服器完整指南

編輯:郵件伺服器

前言

Qmail 是一款以安全性、高效能著稱的郵件傳輸代理程式(MTA),適合建置企業內部或部門級郵件伺服器。本文記錄在 RedHat Linux 7.3 上從原始碼編譯安裝 Qmail 1.03 及其相依套件的完整流程,包含 ucspi-tcp、daemontools、checkpassword 等核心元件,並涵蓋 SMTP 轉發規則、服務監督腳本與啟動管理等進階設定。

一、安裝環境與軟體準備

  • 作業系統: RedHat Linux 7.3
  • 主機名稱: mail.mydomain.com
  • 核心套件:
    • qmail-1.03(核心郵件系統)
    • ucspi-tcp-0.88(TCP 伺服器工具,含 tcpserver)
    • daemontools-0.76(服務監督工具,含 supervise、multilog)
    • checkpassword-0.90(POP3 使用者驗證模組)
  • 下載來源: qmail.org、cr.yp.to、inter7.com
提示: 每個套件安裝前請務必詳閱 INSTALL 與 FAQ,多數常見問題皆有解答。

二、逐步安裝流程

1. 移除 Sendmail

# rpm -e --nodeps sendmail

2. 安裝 Qmail 核心

建立目錄與帳號

# mkdir /var/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

編譯與 DNS 修補

# cd /tmp
# tar xzvf qmail-1.03.tar.gz
# cd qmail-1.03
# vi dns.c          # 第 24 行將 PACKETSZ 改為 65536
# make setup check

配置與別名建立

# ./config-fast mail.mydomain.com
# cd /var/qmail/alias
# touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
# chmod 644 .qmail*
# echo admin > .qmail-*        # 指定系統郵件接收管理員

啟動腳本與 Maildir 設定

# cp -p /var/qmail/boot/home /var/qmail/rc
# chmod 755 /var/qmail/rc
# vi /var/qmail/rc
# 修改內容為:
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" qmail-start ./.Maildir

為現有使用者建立 Maildir:

$ /var/qmail/bin/maildirmake ~/.Maildir
$ echo ./.Maildir/ > ~/.qmail

預設給新使用者:

# /var/qmail/bin/maildirmake /etc/skel/.Maildir
# echo ./.Maildir/ > /etc/skel/.qmail

3. 安裝 ucspi-tcp

# 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
注意: 若不對 /etc/passwd 系統帳號開放郵件服務,可改用 vpopmail 虛擬帳號方案,則不需安裝 checkpassword。

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 重載 init。

6. 建立 SMTP 轉發規則

# echo ":allow" > /etc/tcp.smtp
# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

預設允許所有客戶端轉發。若需限制,可編輯 /etc/tcp.smtp:

192.10.10.:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
# 其他 IP 將被拒絕轉發
每次修改 tcp.smtp 後,必須重新執行 tcprules 產生 .cdb 才生效。

7. 建立服務監督腳本與啟動管理

日誌目錄

# mkdir -p /var/log/qmail/smtpd /var/log/qmail/pop3d
# chown qmaill.nofiles /var/log/qmail /var/log/qmail/smtpd /var/log/qmail/pop3d

Supervise 腳本範例

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-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

系統服務啟動腳本 /etc/init.d/qmail

#!/bin/bash
# chkconfig: 2345 96 6
. /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 /var/qmail/supervise/qmail-pop3d \
      /var/qmail/supervise/qmail-smtpd/log /var/qmail/supervise/qmail-smtpd \
      /var/qmail/supervise/qmail-send/log /var/qmail/supervise/qmail-send
}

case "$1" in
  start)  cd /var/qmail/supervise; env - PATH="$PATH" svscan &; echo $! > $SVSCANPID ;;
  stop)   stopQmail ;;
  restart) $0 stop; $0 start ;;
  *) echo "Usage: $0 {start|stop|restart}"; exit 1 ;;
esac

加入服務管理:

# chmod 755 /etc/init.d/qmail
# chkconfig --add qmail

三、實用技巧

  1. 支援 user@mydomain.com 格式: echo mydomain.com >> /var/qmail/control/locals
  2. 限制郵件專用帳號 Shell: useradd -s /usr/bin/passwd username,再透過 telnet 修改密碼。

完成上述步驟後,即擁有一部基於 Qmail、採用 Maildir 格式、具備 SMTP/POP3 服務與監督機制的部門郵件伺服器。後續可依需求整合防毒、反垃圾郵件模組或 Webmail 介面。

Copyright © Windows教程網 All Rights Reserved