`
lvhuiqing
  • 浏览: 244876 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

qmailによるSMTPサーバの構築

阅读更多

1、qmailの仕組み

  a、sendmailが、メッセージを単一のファイルに結合して全ユーザーが共通のディレクトリを使用するmbox形式であるのに対し、  qmailは各ユーザーのホームディレクトリに1つのメッセージを1ファイルとして保存するMaildir形式である
           
  b、sendmailではメール配送にかかわる処理を1つのプロセスで実行しているのに対し、qmailではメール配送にかかわる処理を複数のプログラムに分割している

 

2、ファイルの準備

    qmail-1.03.tar.gz
    ftp://ftp.eu.uu.net/pub/unix/mail/qmail/qmail-1.03.tar.gz

    ucspi-tcp-0.88.tar.gz
    http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz

    qmail-1.03.errno.patch
    http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/qmail-1.03.errno.patch

    qmail-date-localtime.patch
    http://www.ksknet.net/sample/qmail-date-localtime.patch

    ucspi-tcp-0.88.errno.patch
    http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.errno.patch

3、qmailのインストール

 #グループの作成

    /usr/sbin/groupadd -g 901 nofiles
    /usr/sbin/groupadd -g 900 qmail

 #ディレクトリの作成

    mkdir /var/qmail
    mkdir /var/qmail/alias
    chmod -R 755 /var/qmail
    chgrp -R qmail /var/qmail

 #ユーザの作成

    /usr/sbin/useradd -u 900 -g 901 -s /bin/true -d /var/qmail/alias  alias
    /usr/sbin/useradd -u 901 -g 901 -s /bin/true -d /var/qmail qmaild
    /usr/sbin/useradd -u 902 -g 901 -s /bin/true -d /var/qmail qmaill
    /usr/sbin/useradd -u 903 -g 901 -s /bin/true -d /var/qmail qmailp
    /usr/sbin/useradd -u 904 -g 900 -s /bin/true -d /var/qmail qmailq
    /usr/sbin/useradd -u 905 -g 900 -s /bin/true -d /var/qmail qmailr
    /usr/sbin/useradd -u 906 -g 900 -s /bin/true -d /var/qmail qmails

 #qmailコンパイル
    su -
    cp <ソフトウェアのファイル> /usr/local/src/qmail
    cd /usr/local/src/qmail/
    tar -zxvf qmail-1.03.tar.gz -C /usr/local/src/
    cd /usr/local/src/qmail-1.03/

 #dns.c修正

    vi dns.c
    変更前
    static union { HEADER hdr; unsigned char buf[PACKETSZ]; } response;
    ↓
    変更後
    static union { HEADER hdr; unsigned char buf[65536]; } response;

    patch -p1 < ../qmail/qmail-date-localtime.patch
    patch -p1 < ../qmail/qmail-1.03.errno.patch

 #qmailのビルド

    make setup check

4、sendmail停止設定

 #sendmailが起動しているか否かの確認
    ps ax | grep sendmail
 
 #sendmailが自動起動設定になっているか否かの確認
    chkconfig --list | grep sendmail

 #sendmailの停止及び、自動起動設定のoff
    su -
    /etc/rc.d/init.d/sendmail stop
    chkconfig --level 2345 sendmail off

 #ファイル名称:defaultdomain
     内容:example.jp
     説明:toヘッダなどにドメイン名が省略された場合、補完されるドメイン名

 #ファイル名称:locals
     内容:localhost
        localhost.example.jp
        host.example.jp
        example.jp
     説明:toヘッダなどにドメイン名が省略された場合、補完されるドメイン名

 #ファイル名称:rcpthosts
     内容:localhost
        example.jp
        .example.jp
     説明:受信するホスト名・ドメイン名:qmail-smtpdが利用

 #ファイル名称:me
     内容:host.example.jp
     説明:自サーバのFQDN

 #ファイル名称:plusdomain
     内容:example.jp
     説明:ドメイン部が+で終わっている場合に付加されるドメイン。「user@host+」なら        

「user@host.example.jp」と置換される(qmal-injectが利用)

5、tcpserverのインストール

 #tcpserverのビルド

    su -
    cd /usr/local/src/qmail
    tar -zxvf ucspi-tcp-0.88.tar.gz -C /usr/local/src/
    cd /usr/local/src/ucspi-tcp-0.88/
    patch -p1 < ../qmail/ucspi-tcp-0.88.errno.patch
    make setup check

 #TCPルールデータベースの設定

    mkdir /etc/tcpserver
    vi /etc/tcpserver/tcp.smtp
    cat /etc/tcpserver/tcp.smtp | /usr/local/bin/tcprules
    /etc/tcpserver/tcp.smtp.cdb /etc/tcpserver/tcp.smtp.old

6、qmailの自動起動

 #起動ファイルを作成する

    cp /var/qmail/boot/home /var/qmail/rc
    vi /var/qmail/rc

 # vi等のエディタで「/Mailbox」を「./Maildir/」に修正する

 #rootユーザーで以下のファイルを作成する
 
 /etc/rc.d/init.d/qmail

--------------------------------------------------------------------------------
#!/bin/sh
# chkconfig: 345 81 81
# description: qmail SMTP service.
# processname: qmail-send

# Source function library.
. /etc/rc.d/init.d/functions

PATH=$PATH:/var/qmail/bin
export PATH

RETVAL=0

[ -f /var/qmail/bin/qmail-start ] || exit 0

case "$1" in
    start)
        echo -n "Starting qmail:"
        daemon /var/qmail/rc
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ]
        ;;

    stop)
        echo -n "Stopping qmail:"
        killproc qmail-send
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ]
        ;;

    restart)
        $0 stop
        $0 start
        ;;

    *)
        echo -n "Usage: $0 {start|stop|restart}"
        exit 1
        ;;

esac

exit 0
--------------------------------------------------------------------------------

 #qmailの自動起動設定

    chkconfig --level 345 qmail on
    chkconfig --list | grep qmail

7、tcpserverの自動起動

 #起動スクリプトの作成

    vi /etc/tcpserver/rc
--------------------------------------------------------------------------------
#! /bin/sh

tcpserver -v -p -x /etc/tcpserver/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd
--------------------------------------------------------------------------------

 #自動起動スクリプトの作成

    su-
    vi /etc/rc.d/init.d/tcpserver

--------------------------------------------------------------------------------
#! /bin/sh
#
# chkconfig: 345 82 82
# description: tcpserver

# Source function library.
. /etc/rc.d/init.d/functions

RETVAL=0

# See how we were called.
case "$1" in
    start)
        echo -n "Starting tcpserver daemon: "
        daemon /etc/rc.d/init.d/tcpserver_sub
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/tcpserver
        ;;

    stop)
        echo -n "Stopping tcpserver daemon: "
        killproc tcpserver
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/tcpserver
        ;;
    status)
        status tcpserver
        RETVAL=$?
        ;;
    restart)
        $0 stop
        $0 start
        RETVAL=$?
        ;;
    *)
        echo "Usage: tcpserver {start|stop|status|restart}"
        exit 1
esac

exit $RETVAL
--------------------------------------------------------------------------------

CMD> chkconfig --level 345 tcpserver on
CMD> chkconfig --list | grep tcpserver

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics