メール送受信システムを構築します。
サーバはメジャーどころではSendmail、Postfix、qmailとあるのですが一番強固と言われているqmailを使用します。
Sendmailも好きなので、今後はそちらも解説予定ですヾ(゚∀゚)ノ
qmail構築マニュアルは本も出てますし、至る所で解説済みでしょうけどオイラなりの解説でお役に立てれば幸いです。

尚、一般家庭の方はOutboundPort25Blockingの関係でメールが送信出来ない可能性が高いです。
その場合は、qmailをOutboundPort25Blockingに対応の設定もも同時行う必要があります。
ちなみに、今回ウチの構成ではdot-forwardを使用していません。
理由としては、アレ使うと例えばメールはスプールしてどこかのアドレスに転送って設定の時に/var/spool/mail/の中にメールを保存しようとする→ディレクトリがないのでエラーになる→ヽ(`Д´)ノとなります。
シンボリックリンク貼ったりと色々試してみたんですけど、結局直らなかったんで使わない事にしました。
大人しく.qmailファイルで転送しろって事ですよ多分。

あと、IMAPとかも個人的には必要性を感じないので構築してません。

qmailインストール
# mkdir /var/qmail
# groupadd nofiles
# useradd -g nofiles -s /sbin/nologin alias -m -d /var/qmail/alias -k /dev/null
# useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmaild
# useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmaill
# useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmailp
# groupadd qmail
# useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmailq
# useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmailr
# useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmails
※インストール準備

# wget ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz
12:20:02 (395.53 KB/s) - `qmail-1.03.tar.gz' を保存しました [220668]
※qmailをダウンロード

# tar zxvf qmail-1.03.tar.gz
※ダウンロードしたqmailを解凍

# cd qmail-1.03
※展開ディテクトリへ移動

# wget http://mirror.averse.net/pub/FreeBSD/ports/local-distfiles/sada/qmail-date-localtime.patch.gz
12:21:45 (7.94 MB/s) - `qmail-date-localtime.patch.gz' を保存しました [741/741]
※日本標準時間対応パッチダウンロード(2007/12/07時点でダウンロード不可

# wget http://ravenz.coresv.net/RavenzNetwork/qmail-date-localtime.patch.gz
※上の日本標準時間対応パッチが落とせなくなったので、暫定的にウチのサーバに上げておきます。苦情来たら速攻消します。

# wget http://members.elysium.pl/brush/qmail-smtpd-auth/dist/qmail-smtpd-auth-0.31.tar.gz
12:21:49 (24.74 KB/s) - `qmail-smtpd-auth-0.31.tar.gz' を保存しました [8798/8798]
※SMTP-Auth対応パッチダウンロード

# wget http://qmail.mirrors.summersault.com/qmail-smtpd-relay-reject
12:21:55 (4.75 MB/s) - `qmail-smtpd-relay-reject' を保存しました [1230/1230]
※不正中継拒否対応パッチダウンロード

# gunzip qmail-date-localtime.patch.gz
# tar zxvf qmail-smtpd-auth-0.31.tar.gz
※ダウンロードしたパッチを解凍

# mv qmail-smtpd-auth-0.31/* ./
mv: `./CHANGES' を上書きしてもよろしいですか(yes/no)? yes
※SMTP-Authパッチを移動

# patch < qmail-date-localtime.patch
# patch < qmail-smtpd-relay-reject
# patch < auth.patch
※各種パッチを当てる

# vi error.h
※make時のエラー対処
extern int errno;
※変更
#include<errno.h>

# make setup check
※qmailインストール


メールサーバをOutBound25PortBlockingに対応させるには、下の記事を参考に構築して下さい。
[CentOS,qmail] OutboundPort25Blockingに対応

インストール完了後、qmailの初期設定う
# ./config-fast `hostname`
# echo `hostname -d` >> /var/qmail/control/me
# echo `hostname -d` >> /var/qmail/control/rcpthosts
# echo `hostname -d` > /var/qmail/control/locals
※FQDNで外部から参照できない場合、サーバによってメール送信時に弾かれてしまう時があるので、localsのみFQDNではなくドメイン名で記載する
※FQDNでも外部から参照できる場合はFQDNを指定しても問題ない


SMTP、POP認証ソフト(checkpassword)のインストール
# wget http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz
12:31:37 (62.67 KB/s) - `checkpassword-0.90.tar.gz' を保存しました [15631/15631]
# tar zxvf checkpassword-0.90.tar.gz
# cd checkpassword-0.90
# vi error.h
※make時のエラー対処
extern int errno;
※変更
#include<errno.h>

# make && make setup check

# chown root:nofiles /bin/checkpassword
# chmod 4750 /bin/checkpassword
※checkpasswordの所有権を変更


外部接続制限ソフト(tcpserver)インストール
tcpserverはinetd(xinetd)と同様の機能を持つ制御プログラムです。
qmailはinetdよりもtcpserverを用いるほうを推奨しているので、tcpserverが含まれたucspi-tcpをインストールします。
[root@www2 checkpassword-0.90]# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
12:42:34 (84.72 KB/s) - `ucspi-tcp-0.88.tar.gz' を保存しました [53019/53019]
# tar zxvf ucspi-tcp-0.88.tar.gz
# cd ucspi-tcp-0.88tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
# vi error.h
※make時のエラー対処
extern int errno;
※変更
#include<errno.h>

# make setup check

# vi /etc/tcp.smtp
127.:allow,RELAYCLIENT=""
192.168.0.:allow,RELAYCLIENT=""
:allow

※サーバ(127.)と、ローカルネットワーク(192.168.0.)からは転送を許可
※192.168.0.の部分はご自身のネットワークに合わせて下さい

# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
※qmailで読み込むtcp.smtp.cdbを作成
※今後、tcp.smtpを変更後は必ずtcp.smtp.cdbを作成する事


Sendmailのaliasesを使用可能にするソフト(fastforward)インストール
# wget http://cr.yp.to/software/fastforward-0.51.tar.gz
12:48:10 (53.38 KB/s) - `fastforward-0.51.tar.gz' を保存しました [40659/40659]
# tar zxvf fastforward-0.51.tar.gz
# cd fastforward-0.51
# vi error.h
※make時のエラー対処
extern int errno;
※変更
#include<errno.h>

# make setup check

# chmod 0 /usr/bin/newaliases
# mv /usr/bin/newaliases /usr/bin/newaliases.org
# ln -s /var/qmail/bin/newaliases /usr/bin/newaliases
# newaliases
※newaliasesを無効化し、fastforwardでnewaliasesを使用可能にする

# echo "|/var/qmail/bin/fastforward -p -d /etc/aliases.cdb" > /var/qmail/alias/.qmail-default
※newaliasesで作成されるaliases.cdbをqmailで参照可能にする


qmail設定
# echo "10485760" > /var/qmail/control/databytes
※送受信可能なサイズを10MBに制限
※制限サイズの計算方法は「*MB(制限したい数)×1024×1024」で行う

# touch /var/qmail/control/doublebounceto
※送信者・受信者ともに存在しないメールは破棄する

# rm -rf /etc/skel/Maildir
# /var/qmail/bin/maildirmake /etc/skel/Maildir
※メール格納ディレクトリを「ホームディレクトリ/Maildir」に変更する
※Vpopmailを使用する場合、この処理は不要


Sendmail停止
Sendmailを停止し、Perl等で参照するSendmailコマンドをqmailに置き換えます。
# /etc/rc.d/init.d/sendmail stop
chkconfig sendmail off
※Sendmail停止と、自動起動の停止

# chmod 0 /usr/lib/sendmail
# chmod 0 /usr/sbin/sendmail
# mv /usr/lib/sendmail /usr/lib/sendmail.org
# mv /usr/sbin/sendmail /usr/sbin/sendmail.org
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
※Sendmailを無効化し、qmailと置き換え


qmail起動スクリプト作成
# cp /var/qmail/boot/home /var/qmail/rc
※qmail起動コマンドサンプルをコピー

# sed -i 's/Mailbox/Maildir\//g' /var/qmail/rc
※Mailbox形式をMaildir形式へ変更

# vi /etc/rc.d/init.d/qmail
※qmail起動スクリプト作成
#!/bin/bash
#
# qmail
#
# chkconfig: 2345 80 30
# description: qmail start/stop script

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

PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin

[ -f /var/qmail/rc ] || exit 0

start() {
    # Start daemons.
    if [ -z $(/sbin/pidof qmail-send) ];  then
        echo -n "Starting qmail"

        # qmail
        csh -cf '/var/qmail/rc &' 2>&1 > /dev/null

        # SMTP
        tcpserver -qv -l0 -HR -u `id -u qmaild` -g `id -g qmaild` \
        -x /etc/tcp.smtp.cdb 0 smtp \
        qmail-smtpd `hostname` /bin/checkpassword /bin/true 2>&1|\
        splogger smtp &

        # POP3
        tcpserver -qvRH -u `id -u qmaild` -g `id -g qmaild` \
        0 pop3 qmail-popup `hostname` /bin/checkpassword \
        qmail-pop3d Maildir 2>&1 | splogger pop3 &

        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch /var/lock/subsys/qmail
        return $RETVAL
    else
        echo "qmail is already started"
    fi
}

stop() {
    # Stop daemons.
    if [ ! -z $(/sbin/pidof qmail-send) ];  then
        echo -n "Shutting down qmail"
        /bin/kill $(/sbin/pidof tcpserver)
        /bin/kill $(/sbin/pidof qmail-send)
        until [ -z $(/sbin/pidof qmail-send) ] && [ -z $(/sbin/pidof tcpserver) ]; do :; done
        echo
        rm -f /var/lock/subsys/qmail
    else
        echo "qmail is not running"
    fi
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        stop
        start
        ;;
  status)
        if [ ! -z $(/sbin/pidof qmail-send) ] ;  then
            echo -n "qamil (pid"
            echo -n " `/sbin/pidof qmail-send`"
            echo -n " `/sbin/pidof tcpserver`"
            echo ") is running..."
        else
            echo "qmail is stoped"
        fi
        ;;
   *)
        echo "Usage: qmail {start|stop|restart|status}"
        exit 1
esac

exit 0

※上記スクリプトではqmailのPOPも含まれている為、別途POPサーバは必要ない

# chmod +x /etc/rc.d/init.d/qmail
※qmail起動スクリプトへ実行権限付加

# chkconfig qmail --add
# chkconfig qmail on
※qmailを自動起動に設定

# /etc/rc.d/init.d/qmail start
※qmailを起動


LogwatchのSendmail項目を削除
qmailを使用しても、LogwatchにSendmailのログが載る事への対処
# mv /etc/log.d/conf/services/sendmail.conf /etc/log.d/conf/services/sendmail.conf.org
※上記でLogwatchからSendmailの項目は消える


これで、SMTP(25番)とPOP(110番)を使用してのメールサーバが構築されましたヾ(゚∀゚)ノ