CentOS

2006/8/10 05:25 PM 更新

netqmail

※qmailの情報はページが移動しました。 --> qmail

自宅から外部へメールを送信するのとkajukaju.netドメイン宛のメールを受信するためにSMTPサーバを導入する。

qmailを起動する専用ユーザを作成する。
# /usr/sbin/groupadd -g 205 nofiles
# /usr/sbin/groupadd -g 206 qmail

# /usr/sbin/useradd -u 205 -g nofiles -d /var/qmail/alias -s /sbin/nologin alias
# /u/var/qmail/control/localssr/sbin/useradd -u 206 -g nofiles -d /var/qmail -s /sbin/nologin qmaild
# /usr/sbin/useradd -u 207 -g nofiles -d /var/qmail -s /sbin/nologin qmaill
# /usr/sbin/useradd -u 208 -g nofiles -d /var/qmail -s /sbin/nologin qmailp
# /usr/sbin/useradd -u 209 -g qmail -d /var/qmail -s /sbin/nologin qmailq
# /usr/sbin/useradd -u 210 -g qmail -d /var/qmail -s /sbin/nologin qmailr
# /usr/sbin/useradd -u 211 -g qmail -d /var/qmail -s /sbin/nologin qmails

qmailの公式サイトより最新のソースファイルを入手しインストールする。
また、以下のパッチも適用する。
 ・qmail-date-localtime.patch --> ヘッダの日付をローカルタイムに変換する

上記以外でも気になるパッチがある(今回は未適用)。
 ・qmail-qread-date-localtime.patch --> qmail-date-localtime.patchの不具合修正
 ・badrcptto.patch --> 指定宛先宛のメールを拒否
 ・qmail-bouncecontrol-1.03.patch --> qmail標準のバウンスメッセージを変更

$ wget http://www9.jp.qmail.org/netqmail-1.05.tar.gz
$ tar xvzf netqmail-1.05.tar.gz
$ cd netqmail-1.05/other-patches
$ wget http://www.alib.jp/files/qmail-date-localtime.patch
$ cd /work/netqmail-1.05
$ ./collate.sh
$ cd netqmail-1.05
$ patch -p1 < ../other-patches/qmail-date-localtime.patch
# make setup check
次にucspi-tcpをインストールする。
$ wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
$ tar xvzf ucspi-tcp-0.88.tar.gz
$ cd ucspi-tcp-0.88

$ patch -p1 < ../netqmail-1.05/other-patches/ucspi-tcp-0.88.errno.patch
patching file error.h
$ patch -p1 < ../netqmail-1.05/other-patches/ucspi-tcp-0.88.a_record.patch
patching file rblsmtpd.c
$ patch -p1 < ../netqmail-1.05/other-patches/ucspi-tcp-0.88.nodefaultrbl.patch
patching file rblsmtpd.c
Hunk #1 succeeded at 193 (offset 38 lines).
Hunk #3 succeeded at 227 (offset 38 lines).
$ make
# make setup check

qmailの設定ファイルを編集。
設定のポイント
 ・ホスト名は [postman.kajukaju.net]
 ・サーバが受け取るドメイン名は [@kajukaju.net]
 ・メールの中継を許可するドメイン名は [@kajukaju.net]
 ・受信メールの最大サイズは [10MB(10485760byte)]
 ・送信キューの有効期限は[1日(86400秒)]

  /var/qmail/control/me
postman.kajukaju.net
  /var/qmail/control/locals
kajukaju.net
  /var/qmail/control/rcpthosts
kajukaju.net
  /var/qmail/control/databytes
10485760
  /var/qmail/control/queuelifetime
86400
中継許可ホストの作成
  /var/qmail/control/smtp.rules.txt
127.0.0.1:allow,RELAYCLIENT=""
192.168.1.:allow,RELAYCLIENT=""
smtp.rules.txtをqmailが認識できる形に変換する。
# /usr/local/bin/tcprules /var/qmail/control/smtp.rules.cdb /var/qmail/control/smtp.rules.temp < /var/qmail/control/smtp.rules.txt

# ls -al /var/qmail/control/ |grep rules
-rw-r--r--    1 root     root         2143  6月 22 22:22 smtp.rules.cdb
-rw-r--r--    1 root     root           63  6月 22 22:21 smtp.rules.txt
起動スクリプトを作成する。
  /etc/rc.d/init.d/qmail
作成中
・・・
・・・
起動スクリプトを登録する。
# chmod 755 /etc/rc.d/init.d/qmail
# /sbin/chkconfig --add qmail
# /sbin/chkconfig --list |grep qmail
qmail           0:off   1:off   2:off   3:on    4:on    5:on    6:off
qmailを起動する。
# /sbin/service qmail start
Starting qmail-start:
Starting qmail-send:

# /sbin/service qmail stop
Stopping qmail:                                            [  OK  ]

# ps aux |grep qmail
qmails   17086  0.0  0.1  2304  352 pts/0    S    18:38   0:00 qmail-send
qmaill   17087  0.0  0.1  2096  432 pts/0    S    18:38   0:00 splogger qmail 2
root     17088  0.0  0.1  3404  304 pts/0    S    18:38   0:00 qmail-lspawn ./Maildir/
qmailr   17089  0.0  0.1  3244  304 pts/0    S    18:38   0:00 qmail-rspawn
qmailq   17090  0.0  0.1  3212  304 pts/0    S    18:38   0:00 qmail-clean
qmaild   17091  0.0  0.1  1524  468 pts/0    S    18:38   0:00 tcpserver -v -u 203 -g 202 -R -x /var/qmail/control/smtp.rules.cdb 0 smtp qmail-smtpd
root     17092  0.0  0.1  3140  432 pts/0    S    18:38   0:00 /var/qmail/bin/splogger smtpd 2

# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN
サーバ稼働時のログ
# tail /var/log/mail.log
Jul  3 18:38:37 bruna smtpd: 1151919517.369861 tcpserver: status: 0/40
Jul  3 18:38:37 bruna qmail: 1151919517.395068 status: local 0/10 remote 0/20
Jul  3 18:40:07 bruna qmail: 1151919607.538482 status: exiting

# tail /var/log/boot.log
Jul  3 18:40:07 bruna qmail: qmail-send 停止 succeeded
Jul  3 18:40:07 bruna qmail: tcpserver 停止 succeeded
メールを送信し動作確認をする。
# telnet localhost 25
・・・
・・・
メール送信時のログ
# tail -f /var/log/mail.log
Jul  3 18:41:22 bruna smtpd: 1151919682.243730 tcpserver: status: 1/40
Jul  3 18:41:22 bruna smtpd: 1151919682.246043 tcpserver: pid 17143 from 192.168.1.yy
Jul  3 18:41:22 bruna smtpd: 1151919682.250408 tcpserver: ok 17143 bruna.kajukaju.net:192.168.1.xx:25 server.kajukaju.net:192.168.1.yy::33660
Jul  3 18:41:54 bruna qmail: 1151919714.516571 new msg 560309
Jul  3 18:41:54 bruna qmail: 1151919714.516786 info msg 560309: bytes 220 from <user@kajukaju.net> qp 17144 uid 203
Jul  3 18:41:54 bruna qmail: 1151919714.524802 starting delivery 1: msg 560309 to remote xxx@example.com
Jul  3 18:41:54 bruna qmail: 1151919714.525827 status: local 0/10 remote 1/20
Jul  3 18:41:55 bruna qmail: 1151919715.044666 delivery 1: success: 211.9.231.122_accepted_message./Remote_host_said:_250_2.0.0_k639fs90070130_Message_accepted_for_delivery/
Jul  3 18:41:55 bruna qmail: 1151919715.044904 status: local 0/10 remote 0/20
Jul  3 18:41:55 bruna qmail: 1151919715.044997 end msg 560309
Jul  3 18:41:55 bruna smtpd: 1151919715.746928 tcpserver: end 17143 status 0
Jul  3 18:41:55 bruna smtpd: 1151919715.748744 tcpserver: status: 0/40
ログのローテート
  /etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/mail.log /var/log/boot.log /var/log/cron.log /var/log/snmp.log /var/log/named.log {
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslog-ng.pid 2> /dev/null` 2> /dev/null || true
    endscript
}