tcpserverのインストールしてqmailでメール受信
tcpserverのインストールしてqmailでメール受信
0.改訂履歴
- 2005.10.12 新規作成
- 2005.11.14 コピペしやすいように変更
- 2006.03.06 UID,GIDをqmailインストール時手順と合わせた.
1.はじめに
このドキュメントでは,tcpserverを導入して,その上でSMTPサーバのqmail-sendを稼働させてメールを受信するまでの手順を説明する. 前提として,qmailがインストールされて,メールのローカル配信が成功している必要がある. qmailが外部からTCP接続を得るためには,xinetd,古くはinetd等のスーパーサーバが必要だが,この資料ではtcpserverとの連携について説明することとなる.
2.tcpserverのインストール
- tcpserverの公式サイトは次の通り.
- インストールするモジュールは,下記のURLからダウンロードできる.
- モジュールを入手する.
[root@juno tcpserver]# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
--18:44:09-- http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
=> `ucspi-tcp-0.88.tar.gz'
Resolving cr.yp.to... 131.193.178.160
Connecting to cr.yp.to[131.193.178.160]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 53,019 [application/x-gzip]
100%[================================================================>] 53,019
73.53K/s
18:44:10 (73.35 KB/s) - `ucspi-tcp-0.88.tar.gz' saved [53,019/53,019]
[root@juno tcpserver]#
|
[root@juno tcpserver]# ls -la
total 64
drwxr-xr-x 2 root root 4096 Oct 12 18:44 .
drwxrwxr-x 6 shinnai shinnai 4096 Oct 12 18:43 ..
-rw-r--r-- 1 root root 53019 Mar 19 2000 ucspi-tcp-0.88.tar.gz
[root@juno tcpserver]#
|
[root@juno tcpserver]# tar zxf ucspi-tcp-0.88.tar.gz
[root@juno tcpserver]#
|
[root@juno tcpserver]# mv ucspi-tcp-0.88 /usr/local/src/.
[root@juno tcpserver]#
|
- 所定の場所というのは,/usr/local/src以下.
[root@juno tcpserver]# cd /usr/local/src/ucspi-tcp-0.88
[root@juno ucspi-tcp-0.88]#
|
[root@juno ucspi-tcp-0.88]# ls
CHANGES dns_packet.c open_write.c stralloc_opyb.c
FILES dns_random.c openreadclose.c stralloc_opys.c
Makefile dns_rcip.c openreadclose.h stralloc_pend.c
README dns_rcrw.c pathexec.h strerr.h
SYSDEPS dns_resolve.c pathexec_env.c strerr_die.c
TARGETS dns_sortip.c pathexec_run.c strerr_sys.c
TODO dns_transmit.c prot.c subgetopt.c
VERSION dns_txt.c prot.h subgetopt.h
addcr.c env.c rblsmtpd.c tai.h
alloc.c env.h readclose.c tai_pack.c
alloc.h error.c readclose.h taia.h
alloc_re.c error.h readwrite.h taia_add.c
argv0.c error_str.c recordio.c taia_approx.c
auto-str.c exit.h remoteinfo.c taia_frac.c
auto_home.h fd.h remoteinfo.h taia_less.c
buffer.c fd_copy.c rts.exp taia_now.c
buffer.h fd_move.c rts.sh taia_pack.c
buffer_0.c find-systype.sh rts.tests taia_sub.c
buffer_1.c finger@.sh rules.c taia_uint.c
buffer_2.c fixcrio.c rules.h tcpcat.sh
buffer_copy.c fmt.h scan.h tcpclient.c
buffer_get.c fmt_ulong.c scan_ulong.c tcprules.c
buffer_put.c fork.h1 seek.h tcprulescheck.c
byte.h fork.h2 seek_set.c tcpserver.c
byte_chr.c gen_alloc.h select.h1 timeoutconn.c
byte_copy.c gen_allocdefs.h select.h2 timeoutconn.h
byte_cr.c getln.c sgetopt.c trycpp.c
byte_diff.c getln.h sgetopt.h trylsock.c
byte_rchr.c getln2.c sig.c trypoll.c
byte_zero.c hassgact.h1 sig.h trysgact.c
case.h hassgact.h2 sig_block.c trysgprm.c
case_diffb.c hassgprm.h1 sig_catch.c tryshsgr.c
case_diffs.c hassgprm.h2 sig_pause.c trysysel.c
cdb.c hasshsgr.h1 socket.h tryulong32.c
cdb.h hasshsgr.h2 socket_accept.c tryulong64.c
cdb_hash.c haswaitp.h1 socket_bind.c tryvfork.c
cdb_make.c haswaitp.h2 socket_conn.c trywaitp.c
cdb_make.h hier.c socket_delay.c uint16.h
chkshsgr.c http@.sh socket_listen.c uint16_pack.c
choose.sh install.c socket_local.c uint16_unpack.c
commands.c instcheck.c socket_opts.c uint32.h1
commands.h iopause.c socket_remote.c uint32.h2
conf-cc iopause.h1 socket_tcp.c uint32_pack.c
conf-home iopause.h2 socket_udp.c uint32_unpack.c
conf-ld ip4.h str.h uint64.h1
date@.sh ip4_fmt.c str_chr.c uint64.h2
delcr.c ip4_scan.c str_diff.c wait.h
dns.h mconnect-io.c str_len.c wait_nohang.c
dns_dfd.c mconnect.sh str_start.c wait_pid.c
dns_domain.c ndelay.h stralloc.h warn-auto.sh
dns_dtda.c ndelay_off.c stralloc_cat.c warn-shsgr
dns_ip.c ndelay_on.c stralloc_catb.c who@.sh
dns_ipq.c open.h stralloc_cats.c x86cpuid.c
dns_name.c open_read.c stralloc_copy.c
dns_nd.c open_trunc.c stralloc_eady.c
[root@juno ucspi-tcp-0.88]#
|
[root@juno ucspi-tcp-0.88]# make
( cat warn-auto.sh; ¥
echo 'main="$1"; shift'; ¥
echo exec "`head -1 conf-ld`" ¥
'-o "$main" "$main".o ${1+"$@"}' ¥
) > load
chmod 755 load
( cat warn-auto.sh; ¥
echo exec "`head -1 conf-cc`" '-c ${1+"$@"}' ¥
) > compile
chmod 755 compile
cat warn-auto.sh choose.sh ¥
| sed s}HOME}"`head -1 conf-home`"}g ¥
> choose
chmod 755 choose
./choose clr trypoll iopause.h1 iopause.h2 > iopause.h
./choose clr tryulong64 uint64.h1 uint64.h2 > uint64.h
./compile tcpserver.c
( ( ./compile tryulong32.c && ./load tryulong32 && ¥
./tryulong32 ) >/dev/null 2>&1 ¥
&& cat uint32.h2 || cat uint32.h1 ) > uint32.h
rm -f tryulong32.o tryulong32
./compile rules.c
./compile remoteinfo.c
./compile timeoutconn.c
( cat warn-auto.sh; ¥
echo CC=¥'`head -1 conf-cc`¥'; ¥
echo LD=¥'`head -1 conf-ld`¥'; ¥
cat find-systype.sh; ¥
) | sh > systype
( cat warn-auto.sh; ¥
echo 'main="$1"; shift'; ¥
echo 'rm -f "$main"'; ¥
echo 'ar cr "$main" ${1+"$@"}'; ¥
case "`cat systype`" in ¥
sunos-5.*) ;; ¥
unix_sv*) ;; ¥
irix64-*) ;; ¥
irix-*) ;; ¥
dgux-*) ;; ¥
hp-ux-*) ;; ¥
sco*) ;; ¥
*) echo 'ranlib "$main"' ;; ¥
esac ¥
) > makelib
chmod 755 makelib
./compile cdb.c
./compile cdb_hash.c
./compile cdb_make.c
./makelib cdb.a cdb.o cdb_hash.o cdb_make.o
./compile dns_dfd.c
./compile dns_domain.c
./compile dns_dtda.c
./compile dns_ip.c
./compile dns_ipq.c
./compile dns_name.c
./compile dns_nd.c
./compile dns_packet.c
./compile dns_random.c
./compile dns_rcip.c
./compile dns_rcrw.c
./compile dns_resolve.c
./compile dns_sortip.c
./compile dns_transmit.c
./compile dns_txt.c
./makelib dns.a dns_dfd.o dns_domain.o dns_dtda.o dns_ip.o ¥
dns_ipq.o dns_name.o dns_nd.o dns_packet.o dns_random.o ¥
dns_rcip.o dns_rcrw.o dns_resolve.o dns_sortip.o ¥
dns_transmit.o dns_txt.o
./choose c trysysel select.h1 select.h2 > select.h
./compile iopause.c
./compile tai_pack.c
./compile taia_add.c
./compile taia_approx.c
./compile taia_frac.c
./compile taia_less.c
./compile taia_now.c
./compile taia_pack.c
./compile taia_sub.c
./compile taia_uint.c
./makelib time.a iopause.o tai_pack.o taia_add.o ¥
taia_approx.o taia_frac.o taia_less.o taia_now.o ¥
taia_pack.o taia_sub.o taia_uint.o
./compile alloc.c
./compile alloc_re.c
./compile buffer.c
./compile buffer_0.c
./compile buffer_1.c
./compile buffer_2.c
./compile buffer_copy.c
./compile buffer_get.c
./compile buffer_put.c
./compile env.c
./compile error.c
./compile error_str.c
./compile fd_copy.c
./compile fd_move.c
./compile getln.c
./compile getln2.c
./compile ndelay_off.c
./compile ndelay_on.c
./compile open_read.c
./compile open_trunc.c
./compile open_write.c
./compile openreadclose.c
./compile pathexec_env.c
./compile pathexec_run.c
./compile chkshsgr.c
./load chkshsgr
./chkshsgr || ( cat warn-shsgr; exit 1 )
./choose clr tryshsgr hasshsgr.h1 hasshsgr.h2 > hasshsgr.h
./compile prot.c
./compile readclose.c
./compile seek_set.c
./compile sgetopt.c
./compile sig.c
./choose cl trysgprm hassgprm.h1 hassgprm.h2 > hassgprm.h
./compile sig_block.c
./choose cl trysgact hassgact.h1 hassgact.h2 > hassgact.h
./compile sig_catch.c
./compile sig_pause.c
./compile socket_accept.c
./compile socket_bind.c
./compile socket_conn.c
./compile socket_delay.c
./compile socket_listen.c
./compile socket_local.c
./compile socket_opts.c
./compile socket_remote.c
./compile socket_tcp.c
./compile socket_udp.c
./compile stralloc_cat.c
./compile stralloc_catb.c
./compile stralloc_cats.c
./compile stralloc_copy.c
./compile stralloc_eady.c
./compile stralloc_opyb.c
./compile stralloc_opys.c
./compile stralloc_pend.c
./compile strerr_die.c
./compile strerr_sys.c
./compile subgetopt.c
./choose cl trywaitp haswaitp.h1 haswaitp.h2 > haswaitp.h
./compile wait_nohang.c
./compile wait_pid.c
./makelib unix.a alloc.o alloc_re.o buffer.o buffer_0.o ¥
buffer_1.o buffer_2.o buffer_copy.o buffer_get.o ¥
buffer_put.o env.o error.o error_str.o fd_copy.o fd_move.o ¥
getln.o getln2.o ndelay_off.o ndelay_on.o open_read.o ¥
open_trunc.o open_write.o openreadclose.o pathexec_env.o ¥
pathexec_run.o prot.o readclose.o seek_set.o sgetopt.o ¥
sig.o sig_block.o sig_catch.o sig_pause.o socket_accept.o ¥
socket_bind.o socket_conn.o socket_delay.o socket_listen.o ¥
socket_local.o socket_opts.o socket_remote.o socket_tcp.o ¥
socket_udp.o stralloc_cat.o stralloc_catb.o stralloc_cats.o ¥
stralloc_copy.o stralloc_eady.o stralloc_opyb.o ¥
stralloc_opys.o stralloc_pend.o strerr_die.o strerr_sys.o ¥
subgetopt.o wait_nohang.o wait_pid.o
./compile byte_chr.c
./compile byte_copy.c
./compile byte_cr.c
./compile byte_diff.c
./compile byte_rchr.c
./compile byte_zero.c
./compile case_diffb.c
./compile case_diffs.c
./compile fmt_ulong.c
./compile ip4_fmt.c
./compile ip4_scan.c
./compile scan_ulong.c
./compile str_chr.c
./compile str_diff.c
./compile str_len.c
./compile str_start.c
./compile uint16_pack.c
./compile uint16_unpack.c
./compile uint32_pack.c
./compile uint32_unpack.c
./makelib byte.a byte_chr.o byte_copy.o byte_cr.o ¥
byte_diff.o byte_rchr.o byte_zero.o case_diffb.o ¥
case_diffs.o fmt_ulong.o ip4_fmt.o ip4_scan.o scan_ulong.o ¥
str_chr.o str_diff.o str_len.o str_start.o uint16_pack.o ¥
uint16_unpack.o uint32_pack.o uint32_unpack.o
( ( ./compile trylsock.c && ¥
./load trylsock -lsocket -lnsl ) >/dev/null 2>&1 ¥
&& echo -lsocket -lnsl || exit 0 ) > socket.lib
rm -f trylsock.o trylsock
./load tcpserver rules.o remoteinfo.o timeoutconn.o cdb.a ¥
dns.a time.a unix.a byte.a `cat socket.lib`
tcpserver.o(.text+0x55f): In function `doit':
: undefined reference to `errno'
remoteinfo.o(.text+0x63): In function `mywrite':
: undefined reference to `errno'
remoteinfo.o(.text+0xe7): In function `myread':
: undefined reference to `errno'
timeoutconn.o(.text+0x41): In function `timeoutconn':
: undefined reference to `errno'
timeoutconn.o(.text+0xc7): In function `timeoutconn':
: undefined reference to `errno'
cdb.a(cdb.o)(.text+0xce): more undefined references to `errno' follow
collect2: ld returned 1 exit status
make: *** [tcpserver] Error 1
|
- エラーになっている.
- これはqmailの時と一緒なので,ヘッダファイルを次のように書き換える.
変更前 |
[root@juno ucspi-tcp-0.88]# head -n 10 error.h
#ifndef ERROR_H
#define ERROR_H
extern int errno;
extern int error_intr;
extern int error_nomem;
extern int error_noent;
extern int error_txtbsy;
extern int error_io;
[root@juno ucspi-tcp-0.88]#
|
変更後 |
[root@juno ucspi-tcp-0.88]# head -n 10 error.h
#ifndef ERROR_H
#define ERROR_H
#include <errno.h>
extern int error_intr;
extern int error_nomem;
extern int error_noent;
extern int error_txtbsy;
extern int error_io;
[root@juno ucspi-tcp-0.88]#
|
[root@juno ucspi-tcp-0.88]# make
./compile tcpserver.c
./compile remoteinfo.c
./compile timeoutconn.c
./compile cdb.c
./compile cdb_make.c
./makelib cdb.a cdb.o cdb_hash.o cdb_make.o
./compile dns_dfd.c
./compile dns_domain.c
./compile dns_packet.c
./compile dns_transmit.c
./makelib dns.a dns_dfd.o dns_domain.o dns_dtda.o dns_ip.o ¥
dns_ipq.o dns_name.o dns_nd.o dns_packet.o dns_random.o ¥
dns_rcip.o dns_rcrw.o dns_resolve.o dns_sortip.o ¥
dns_transmit.o dns_txt.o
./compile alloc.c
./compile buffer_get.c
./compile buffer_put.c
./compile error.c
./compile error_str.c
./compile openreadclose.c
./compile pathexec_run.c
./compile readclose.c
./compile strerr_sys.c
./compile wait_pid.c
./makelib unix.a alloc.o alloc_re.o buffer.o buffer_0.o ¥
buffer_1.o buffer_2.o buffer_copy.o buffer_get.o ¥
buffer_put.o env.o error.o error_str.o fd_copy.o fd_move.o ¥
getln.o getln2.o ndelay_off.o ndelay_on.o open_read.o ¥
open_trunc.o open_write.o openreadclose.o pathexec_env.o ¥
pathexec_run.o prot.o readclose.o seek_set.o sgetopt.o ¥
sig.o sig_block.o sig_catch.o sig_pause.o socket_accept.o ¥
socket_bind.o socket_conn.o socket_delay.o socket_listen.o ¥
socket_local.o socket_opts.o socket_remote.o socket_tcp.o ¥
socket_udp.o stralloc_cat.o stralloc_catb.o stralloc_cats.o ¥
stralloc_copy.o stralloc_eady.o stralloc_opyb.o ¥
stralloc_opys.o stralloc_pend.o strerr_die.o strerr_sys.o ¥
subgetopt.o wait_nohang.o wait_pid.o
./load tcpserver rules.o remoteinfo.o timeoutconn.o cdb.a ¥
dns.a time.a unix.a byte.a `cat socket.lib`
./compile tcprules.c
./load tcprules cdb.a unix.a byte.a
./compile tcprulescheck.c
./load tcprulescheck rules.o cdb.a unix.a byte.a
./compile argv0.c
./load argv0 unix.a byte.a
./compile recordio.c
./load recordio time.a unix.a byte.a
./compile tcpclient.c
./load tcpclient remoteinfo.o timeoutconn.o dns.a time.a ¥
unix.a byte.a `cat socket.lib`
cat warn-auto.sh who@.sh ¥
| sed s}HOME}"`head -1 conf-home`"}g ¥
> who@
chmod 755 who@
cat warn-auto.sh date@.sh ¥
| sed s}HOME}"`head -1 conf-home`"}g ¥
> date@
chmod 755 date@
cat warn-auto.sh finger@.sh ¥
| sed s}HOME}"`head -1 conf-home`"}g ¥
> finger@
chmod 755 finger@
cat warn-auto.sh http@.sh ¥
| sed s}HOME}"`head -1 conf-home`"}g ¥
> http@
chmod 755 http@
cat warn-auto.sh tcpcat.sh ¥
| sed s}HOME}"`head -1 conf-home`"}g ¥
> tcpcat
chmod 755 tcpcat
cat warn-auto.sh mconnect.sh ¥
| sed s}HOME}"`head -1 conf-home`"}g ¥
> mconnect
chmod 755 mconnect
./choose cl tryvfork fork.h1 fork.h2 > fork.h
./compile mconnect-io.c
./load mconnect-io unix.a byte.a
./compile addcr.c
./load addcr unix.a byte.a
./compile delcr.c
./load delcr unix.a byte.a
./compile fixcrio.c
./load fixcrio time.a unix.a byte.a
./compile rblsmtpd.c
./compile commands.c
./load rblsmtpd commands.o dns.a time.a unix.a byte.a ¥
`cat socket.lib`
cat warn-auto.sh rts.sh ¥
| sed s}HOME}"`head -1 conf-home`"}g ¥
> rts
chmod 755 rts
./compile install.c
./compile hier.c
./compile auto-str.c
./load auto-str unix.a byte.a
./auto-str auto_home `head -1 conf-home` > auto_home.c
./compile auto_home.c
./load install hier.o auto_home.o unix.a byte.a
./compile instcheck.c
./load instcheck hier.o auto_home.o unix.a byte.a
[root@juno ucspi-tcp-0.88]#
|
- エラーは無い模様.
- コンパイル完了後に,モジュールがmakeされているかを確認する.
[root@juno ucspi-tcp-0.88]# ls -la tcpserver
-rwxr-xr-x 1 root root 39856 Oct 12 19:16 tcpserver
[root@juno ucspi-tcp-0.88]#
|
- モジュールはできている模様.
- インストールを行う.
[root@juno ucspi-tcp-0.88]# make setup check
./install
./instcheck
[root@juno ucspi-tcp-0.88]#
|
- エラーはなく,終了した模様
- インストールしたモジュールを確認する.
[root@juno ucspi-tcp-0.88]# ls -la /usr/local/bin/tcp*
-rwxr-xr-x 1 root root 143 Oct 12 19:17 /usr/local/bin/tcpcat
-rwxr-xr-x 1 root root 35144 Oct 12 19:17 /usr/local/bin/tcpclient
-rwxr-xr-x 1 root root 15968 Oct 12 19:17 /usr/local/bin/tcprules
-rwxr-xr-x 1 root root 15592 Oct 12 19:17 /usr/local/bin/tcprulescheck
-rwxr-xr-x 1 root root 39856 Oct 12 19:17 /usr/local/bin/tcpserver
[root@juno ucspi-tcp-0.88]#
|
3.SMTPサービスを設定する
- qmailに含まれる,qmail-smtpdというプログラムは,SMTP経由で外部ホストからメールを受信する.
- 今回,このtcpserverによって,qmail-smtpdをコントロールする設定とする.
- まずは,現在稼働しているqmailを停止する.
[root@juno ucspi-tcp-0.88]# ps -ef | grep qmail
qmails 30689 1 0 17:16 ? 00:00:00 qmail-send
qmaill 30690 30689 0 17:16 ? 00:00:00 splogger qmail
root 30691 30689 0 17:16 ? 00:00:00 qmail-lspawn ./Maildir/
qmailr 30692 30689 0 17:16 ? 00:00:00 qmail-rspawn
qmailq 30693 30689 0 17:16 ? 00:00:00 qmail-clean
root 4935 1012 0 19:20 pts/0 00:00:00 grep qmail
[root@juno ucspi-tcp-0.88]# kill 30689
[root@juno ucspi-tcp-0.88]# ps -ef | grep qmail
root 4937 1012 0 19:20 pts/0 00:00:00 grep qmail
[root@juno ucspi-tcp-0.88]#
|
[root@juno ucspi-tcp-0.88]# mkdir /etc/tcpserver
[root@juno ucspi-tcp-0.88]#
|
[root@juno ucspi-tcp-0.88]# cd /etc/tcpserver
[root@juno tcpserver]#
|
[root@juno tcpserver]# cat smtpd_rules
127.0.0.1:allow,RELAYCLIENT=""
juno.ujp.jp:allow,RELAYCLIENT=""
[root@juno tcpserver]#
|
- この設定では,ローカルからの受信と,指定したドメインからの受信を受け付ける事としている.
- ルールファイルのアクセス権を設定する.
[root@juno tcpserver]# chmod 644 smtpd_rules
[root@juno tcpserver]# ls -la
total 16
drwxr-xr-x 2 root root 4096 Oct 12 19:26 .
drwxr-xr-x 83 root root 8192 Oct 12 19:22 ..
-rw-r--r-- 1 root root 67 Oct 12 19:26 smtpd_rules
[root@juno tcpserver]#
|
- 作成したルールファイルを,cdb化する.
- cdbとは,tcpserverおよびqmailの作者が作成した簡易データベース.
[root@juno tcpserver]# /usr/local/bin/tcprules smtpd_rules.cdb ¥
> smtpd_rules.tmp < smtpd_rules
[root@juno tcpserver]#
|
[root@juno tcpserver]# ls -la
total 20
drwxr-xr-x 2 root root 4096 Oct 12 19:29 .
drwxr-xr-x 83 root root 8192 Oct 12 19:22 ..
-rw-r--r-- 1 root root 72 Oct 12 19:27 smtpd_rules
-rw-r--r-- 1 root root 2152 Oct 12 19:29 smtpd_rules.cdb
[root@juno tcpserver]#
|
4.qmail-smtpdの起動スクリプトの作成を行う
- qmail-smtpdは,qmailのインストールの際に作成したOS上のqmaildユーザを利用する.
- 起動スクリプトの中で,このqmaildユーザのユーザID&グループIDを利用する.
- まずは調べる.
[root@juno tcpserver]# id qmaild
uid=712(qmaild) gid=710(nofiles) groups=503(nofiles)
[root@juno tcpserver]#
|
- この場合は,uidは504,gidが503ということが確認できた.
- 次のようなシェルスクリプトを作成する.
[root@juno tcpserver]# cat /etc/rc.d/init.d/qmail-smptd
#!/bin/sh
echo -n 'qmail-smtpd starting.'
/usr/local/bin/tcpserver -x /etc/tcpserver/smtpd_rules.cdb -v -u 712 -g 710 0 smtp
/var/qmail//bin/qmail-smtpd 2>&1 /var/qmail/bin/splogger smtpd 3 & ←一行でつなげる
[root@juno tcpserver]#
|
[root@juno tcpserver]# chmod +x /etc/rc.d/init.d/qmail-smptd
[root@juno tcpserver]# ls -la /etc/rc.d/init.d/qmail-smptd
-rwxr-xr-x 1 root root 198 Oct 12 19:47 /etc/rc.d/init.d/qmail-smptd
[root@juno tcpserver]#
|
[root@juno tcpserver]# /etc/rc.d/init.d/qmail-smptd
qmail-smtpd starting.tcpserver: status: 0/40
[root@juno tcpserver]#
|
[root@juno tcpserver]# ps -ef | grep qmail
qmaild 4978 1 0 19:50 pts/0 00:00:00 /usr/local/bin/tcpserver -x /etc/
tcpserver/smtpd_rules.cdb -v -u 504 -g 503 0 smtp /var/qmail//bin/qmail-smtpd
/var/qmail/bin/splogger smtpd 3
root 4980 1012 0 19:50 pts/0 00:00:00 grep qmail
[root@juno tcpserver]#
|
[root@juno tcpserver]# /var/qmail/rc &
[1] 4981
[root@juno tcpserver]#
|
[root@juno tcpserver]# ps -ef | grep qmail
qmaild 4978 1 0 19:50 pts/0 00:00:00 /usr/local/bin/tcpserver -x /etc/
tcpserver/smtpd_rules.cdb -v -u 712 -g 710 0 smtp /var/qmail//bin/qmail-smtpd
/var/qmail/bin/splogger smtpd 3
qmails 4981 1012 0 19:51 pts/0 00:00:00 qmail-send
qmaill 4982 4981 0 19:51 pts/0 00:00:00 splogger qmail
root 4983 4981 0 19:51 pts/0 00:00:00 qmail-lspawn ./Maildir/
qmailr 4984 4981 0 19:51 pts/0 00:00:00 qmail-rspawn
qmailq 4985 4981 0 19:51 pts/0 00:00:00 qmail-clean
root 4987 1012 0 19:51 pts/0 00:00:00 grep qmail
[root@juno tcpserver]#
|
5.この後
- ここまで設定できたら,外部のメールサーバから,今回構築したメールサーバに対してメールを送信し,テストを行う.
6.tcpserverのオプション
- tcpserverを起動するときのオプションを指定する.
オプション |
意味 |
-q
|
エラーメッセージ出力 |
-Q
|
エラーメッセージ出力しない(デフォルト設定) |
-v
|
全メッセージ出力 |
-p
|
パラノイドを行う. リモートホスト名を調べ,IPアドレスを検索し,TCPREMOTEIPに一致するか確認する. |
-P
|
パラノイドを行わない(デフォルト設定) |
-h
|
リモートホスト名を調べる.(デフォルト設定) |
-H
|
リモートホスト名を調べない |
-r
|
IDENTを行いTCPREMOTEINFOを設定する.(デフォルト設定) |
-R
|
IDENTを行わない. |
-c nn
|
最大同時接続数を設定する.(デフォルト設定は40) |
-x
|
ルールデータベースファイル名. |
-B
|
接続時にバナーを出力.意味わからん. |
-u
|
起動時のUIDを設定. |
-g
|
起動時のGIDを設定. |
-l xxxxx
|
ローカルホスト名の調査を辞めxxxxxをTCPLOCALHOSTにセットする. |
-t nn
|
タイムアウト時間(デフォルト設定は26) |
- -Hや-cオプションを設定することによって,パフォーマンス向上などが見込める場合がある.