본문 바로가기

Linux/기타

ucspi-tcp 설치하기

=====================================================================
QMAIL-LAB 1> ucspi-tcp 설치하기

최신버전 : http://cr.yp.to/ucspi-tcp/install.html

소스에 있는 README 파일을 참고한다.

- CentOS 에서는 gcc 버전 4 이상을 사용하기 때문에 소스를 그대로 설치면 
- 에러가 나므로 헤더파일을 수정해야 된다.

- 큐메일은 혼자서 작동하지 않기 때문에 다른 데몬과 연계해서 실행을 해야만 한다.
- 큐메일의 실행은 xinetd와 tcpserver로 할 수 있으나 보안과 속도면에서 큐메일과 잘 맞는
- tcpserver로 구축을 하도록 한다.

- ucspi-tcp는 UNIX Client-Server Program Interface 로써 tcpserver와 tcpclient 전송제어 
- 프로토콜(TCP client-server)을 구축하는데 좀더 편리하게 사용할 수 있도록 제작된 command-line 툴 이다.
- 이 프로그램의 자세한 정보는 http://cr.yp.to/ucspi-tcp.html 이곳을 참조하시면 된다.


-- 설치 순서 --
1. 소스를 다운로드한다.
2. 압축을 해제한다.
3. 헤더파일을 수정한다.
4. 소스를 컴파일 한다.
5. 시스템에 설치한다.
6. 설치된 파일을 확인한다.
-- 설치 순서 --

1. 소스를 다운로드한다.
# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz

2. 압축을 해제한다.
# tar xfz ucspi-tcp-0.88.tar.gz
# cd ucspi-tcp-0.88	 
3. 헤더파일을 수정한다.
- gcc 버전이 3(or 4)이상으로 업그레이드가 되었으므로 소스를 그대로 설치하면
- 에러가 나므로 헤더파일을 수정해야 된다.
# vi error.h
-- error.h --
#include <errno.h>      <-- 추가
#ifndef ERROR_H
#define ERROR_H

// extern int errno;    <-- 주석처리
  :
  :
-- error.h --

4. 소스를 컴파일 한다.
# make

5. 시스템에 설치한다.
# make setup check	 

6. 설치된 파일을 확인한다.
- 아래와 같은 파일들이 설치가 되었다면 시스템에 정상적으로 설치된 것이다.
# ls /usr/local/bin
  :
  :
-rwxr-xr-x 1 root root    29896 May 21 14:38 rblsmtpd
-rwxr-xr-x 1 root root    15832 May 21 14:38 recordio
-rwxr-xr-x 1 root root      143 May 21 14:38 tcpcat
-rwxr-xr-x 1 root root    38628 May 21 14:38 tcpclient
-rwxr-xr-x 1 root root    16808 May 21 14:38 tcprules
-rwxr-xr-x 1 root root    15468 May 21 14:38 tcpruleschec
-rwxr-xr-x 1 root root    43248 May 21 14:38 tcpserver
=====================================================================
=====================================================================
QMAIL-LAB 2> daemontools 설치하기

최신버전 : http://cr.yp.to/daemontools/install.html

-- 설치 순서 --
1. 소스를 다운로드한다.
2. /package 디렉토리를 생성한다.
3. /package 디렉토리에 압축을 해제한다.
4. 헤더파일을 수정한다.
5. 컴파일 & 설치한다.
6. 설치된 파일을 확인한다.
-- 설치 순서 --

1. 소스를 다운로드한다.
# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz

2. /package 디렉토리를 생성한다.
# mkdir -m 1755 /package

3. /package 디렉토리에 압축을 해제한다.
# tar xfz daemontools-0.76.tar.gz -C /package

4. 헤더파일을 수정한다.
# cd /package/admin/daemontools-0.76	 
# vi src/error.h
-- src/error.h --
/* Public domain. */
#include <errno.h>      <-- 추가
#ifndef ERROR_H
#define ERROR_H

// extern int errno;    <-- 주석처리
  :
  :
-- src/error.h --

5. 컴파일 & 설치한다.
# package/install	 

6. 설치된 파일을 확인한다.
- 아래 내용이 파일에 추가되어 부팅시 자동으로 활성화 된다.
# tail /etc/inittab 
  :
  :
SV:123456:respawn:/command/svscanboot  <-- 추가된다.

- ps로 확인해서 readproctitle 프로세스가 있으면 정상적으로 설치된 것이다.
# ps -ef 
root      7066  7063  0 06:58 ?        00:00:00 readproctitle service errors: .........

# ps auxww | grep readproctitle
root     28124  0.0  0.1   1608   256 ?        S    02:11   0:00 readproctitle service errors: ................................................................................................................................................................................................................................................................................................................................................................................................................


--------------------------------------------------------------------
※ 만약 daemontools를 설치하는데 아래와 같은 에러가 나는 경우가 있다.
./compile tai64nlocal.c
tai64nlocal.c: In function `main':
tai64nlocal.c:54: warning: assignment makes pointer from integer without a cast
tai64nlocal.c:55: dereferencing pointer to incomplete type
...	 

이것은 tai64nlocal.c의 두 번째 줄 #include <sys/time.h>에서 에러가 나는것이고
이 부분을 #include <time.h>로 수정해주면 정상적으로 설치가 가능하다.
------------------------------------------------------------------------

=====================================================================

===================================================================== QMAIL-LAB 3> qmail 설치하기 최신버전 : http://www.qmail.org/qmail-1.03.tar.gz -- 설치 순서 -- 1. 소스 다운로드 2. 압축 해제 3. 칵테일 패치 4. concurrency limit 파일 수정 5. 유저, 그룹 추가 6. 소스코드 수정 7. 소스 컴파일 8. 시스템 설치 9. 도메인 등록 10. 설치된 파일 확인 11. 큐메일 데몬을 위한 디렉토리와 스크립트 파일 생성 12. rc 파일 생성 13. qmail 실행에 관련된 디렉토리 생성 14. qmail 실행에 관련된 4개의 run 파일 생성 15. 큐메일을 위한 로그 디렉토리 생성 16. 큐메일을 위한 Alias 파일 생성 17. sendmail 패키지 삭제 18. sendmail 링크 생성 19. 릴레이파일 생성 20. qmail 시작 21. qmail 서버 확인 22. qmail 부트 스크립트 생성 -- 설치 순서 -- 큐메일은 AUTH 릴레이를 여러가지와 연동해서 사용을 할 수 있고 여기서는 AUTH 릴레이를 vchkpw에 맡기고, 큐메일은 사용만 가능하도록 설치를 할 것이다. - 시스템계정 (/etc/passwd) - cmd5checkw (/etc/poppasswd) - checkpassword + mysql (유저 데이터를 db에 저장) - vchkpw (vpopmail pop 유저 데이터를 사용, db 또는 vpasswd) 칵테일패치 (최신버전 : http://people.kldp.org/~eunjea/qmail/patch/) 칵테일 패치는 qmail.kldp.org의 운영자인 임은재 님께서 제작하신 패치이며 큐메일을 사용하는데 있어 여러가지 편리한 패치가 종합적으로 되어 있기 때문에 여기서는 일일히 패치를 하나씩 찾아 해주는 번거로움을 줄이기 위해 칵테일 패치를 한다. 1. 소스 다운로드 - 공식 사이트에서 소스를 다운로드 한다. # wget http://www.qmail.org/qmail-1.03.tar.gz # wget http://people.kldp.org/~eunjea/qmail/patch/qmail-ej-cocktail-14.tar.gz 2. 압축 해제 - 압축된 파일들을 해제한다. # tar xfz qmail-1.03.tar.gz # tar xfz qmail-ej-cocktail-14.tar.gz 3. 칵테일 패치 - 칵테일 패치를 한다. - 만약 패치도중 hunk나 fail이 나온다면 큐메일 바닐라 소스(순정파일)가 - 아니므로 반드시 큐메일 바닐라 소스(순정파일)를 이용해야 한다. # cd qmail-1.03 # patch -p1 < ../qmail-ej-cocktail-14/cocktail.patch patching file Makefile patching file Makefile-cert.mk patching file TARGETS patching file base64.c : 4. concurrency limit 파일 수정 - concurrency limit 파일을 수정한다. - 큐메일 설치작업을 하기전 수정할 소스가 있다. - 바로 위에서 패치했던 파일중 conf-spawn 파일이다. - 이 파일의 기본값은 1000 이지만 각 OS에 따라서 설정값이 다르다. - 여기서는 레드헷을 이용하고 있기 때문에 1000을 509로 수정 하도록 한다. # vi conf-spawn -- conf-spawn -- 509 This is a silent concurrency limit. You can't set it above 255. On some systems you can't set it above 125. qmail will refuse to compile if the limit is too high. -- conf-spawn -- 5. 유저, 그룹 추가 - qmail 운영을 위한 유저와 그룹을 생성한다. - 각 OS에 필요한 유저및 그룹은 INSTALL.ids 파일에 명시되어 있다. - 아래 -r 옵션은 시스템 계정(uid 500미만)으로 유저를 생성하겠다는 의미이다. # groupadd -r nofiles # useradd -r -g nofiles -d /var/qmail/alias alias # useradd -r -g nofiles -d /var/qmail qmaild # useradd -r -g nofiles -d /var/qmail qmaill # useradd -r -g nofiles -d /var/qmail qmailp # groupadd -r qmail # useradd -r -g qmail -d /var/qmail qmailq # useradd -r -g qmail -d /var/qmail qmailr # useradd -r -g qmail -d /var/qmail qmails 6. 소스코드 수정 - 칵테일 패치를 해도 아래 내용의 코드를 수정해야 한다. - make 시 오류가 발생하므로 const 를 extern 으로 변경하면 된다. - 여기서는 이전 코드는 주석으로 처리하고 새로운 코드를 추가한다. # vi +12 tls.c -- tls.c -- : //const char *strerror(int); <-- 주석 extern char *strerror(int); <-- 추가 : -- tls.c -- 7. 소스 컴파일 - qmail을 컴파일한다. # make 8. 시스템 설치 - qmail을 시스템에 설치한다. # make setup check (nroff: command not found 에러가 난다면 groff 패키지를 설치해준다) 9. 도메인 등록 - 도메인을 등록한다. # ./config ------------------------------------------------------------------- ※ 정상적으로 config가 되지 않았을 경우 # ./config Your hostname is mail.foobar.com. hard error Sorry, I couldn't find your host's canonical name in DNS. You will have to set up control/me yourself. ※ 만약 위처럼 메시지가 나온다면 Network설정과 DNS 문제이다. 혹 DNS가 설치되어 있고 DNS 서버에 이름이 정상적으로 등록되어 있다면 Network 설정을 확인해야된다. # cat /etc/resolv.conf search mail.foobar.com nameserver 168.126.63.1 nameserver 168.126.63.2 ※ 필자는 search 부분을 등록하지 않은 서버를 세팅할 때 고생한적이 있다. resolv에서 search [domain name] 부분은 반드시 있어야 된다. # cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.0.1 mail.foobar.com mail # cat /etc/sysconfig/network ... HOSTNAME=mail.foobar.com ... ------------------------------------------------------------------- - 호스트네임 부분 또한 반드시 있어야 된다. - 만약 위의 모든 세팅이 정상적인데도 config가 제대로 되지 않는다면 아래와 같이 - 해주면 된다. # ./config-fast mail.sbs.com 10. 설치된 파일 확인 - 큐메일이 정상적으로 설치되면 /var/qmail 과 /var/qmail/control/ 디렉토리에 - 각종 설정파일이 생성된다. # ls -F /var/qmail/ alias/ bin/ boot/ control/ doc/ man/ queue/ users/ # ls -l /var/qmail total 64 drwxr-sr-x 2 alias qmail 4096 May 3 07:17 alias drwxr-xr-x 2 root qmail 4096 May 3 07:17 bin drwxr-xr-x 2 root qmail 4096 May 3 07:17 boot drwxr-xr-x 2 root qmail 4096 May 3 07:19 control drwxr-xr-x 2 root qmail 4096 May 3 07:17 doc drwxr-xr-x 10 root qmail 4096 May 3 07:17 man drwxr-x--- 11 qmailq qmail 4096 May 3 07:17 queue drwxr-xr-x 2 root qmail 4096 May 3 07:17 users # ls -l /var/qmail/control total 40 -rw-r--r-- 1 root root 8 May 3 07:19 defaultdomain -rw-r--r-- 1 root root 13 May 3 07:19 locals -rw-r--r-- 1 root root 13 May 3 07:19 me -rw-r--r-- 1 root root 8 May 3 07:19 plusdomain -rw-r--r-- 1 root root 13 May 3 07:19 rcpthosts - 컨트롤 파일 수정 참고 : http://yoonperl.tistory.com/38 - 에러가 발생한 경우에 파일을 수동으로 생성한다. # cd /var/qmail/control # echo localhost > defaultdomain # echo localhost > locals # echo localhost > me # echo localhost > plusdomain # echo localhost > rcpthosts 11. 큐메일 데몬을 위한 디렉토리와 스크립트 파일 생성 - qmail 의 데몬을 띄우기 위해서 실행파일 5개를 생성한다. - 실행파일 5개의 경로는 아래와 같다. - 5개의 파일은 반드시 실행권한을 가지고 있어야 한다. /var/qmail/rc /var/qmail/supervise/qmail-send/run /var/qmail/supervise/qmail-smtpd/run /var/qmail/supervise/qmail-send/log/run /var/qmail/supervise/qmail-smtpd/log/run 12. rc 파일 생성 - rc 파일을 생성하고 그 안에 스크립트의 내용을 넣는다. # cd /var/qmail # install /dev/null rc # vi rc -- /var/qmail/rc -- #!/bin/sh exec env - PATH="/var/qmail/bin:$PATH" qmail-start ./Maildir/ -- /var/qmail/rc -- 13. qmail 실행에 관련된 디렉토리 생성 # mkdir -p /var/qmail/supervise/qmail-send/log # mkdir -p /var/qmail/supervise/qmail-smtpd/log # chmod 1755 /var/qmail/supervise/qmail-send # chmod 1755 /var/qmail/supervise/qmail-smtpd # tree -p supervise supervise |-- [drwxr-xr-t] qmail-send | `-- [drwxr-xr-x] log `-- [drwxr-xr-t] qmail-smtpd `-- [drwxr-xr-x] log 14. qmail 실행에 관련된 4개의 run 파일 생성 # install /dev/null supervise/qmail-send/run # vi supervise/qmail-send/run -- supervise/qmail-send/run -- #!/bin/sh exec /var/qmail/rc -- supervise/qmail-send/run -- # install /dev/null supervise/qmail-send/log/run # vi supervise/qmail-send/log/run -- supervise/qmail-send/log/run -- #!/bin/sh exec /usr/local/bin/setuidgid qmaill \ /usr/local/bin/multilog t /var/log/qmail -- supervise/qmail-send/log/run -- # install /dev/null supervise/qmail-smtpd/run # vi supervise/qmail-smtpd/run -- supervise/qmail-smtpd/run -- #!/bin/sh Q_UID=`id -u qmaild` Q_GID=`id -g qmaild` exec /usr/local/bin/softlimit -m 70000000 \ /usr/local/bin/tcpserver -vRHl 0 \ -x /etc/tcp.smtp.cdb \ -u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1 -- supervise/qmail-smtpd/run -- # install /dev/null supervise/qmail-smtpd/log/run # vi supervise/qmail-smtpd/log/run -- supervise/qmail-smtpd/log/run -- #!/bin/sh exec /usr/local/bin/setuidgid qmaill \ /usr/local/bin/multilog t /var/log/qmail/smtpd -- supervise/qmail-smtpd/log/run -- 15. 큐메일을 위한 로그 디렉토리 생성 - 큐메일을 위한 로그 디렉토리를 /var/log 디렉토리에 생성한다. # mkdir -p /var/log/qmail/smtpd # chown qmaill /var/log/qmail /var/log/qmail/smtpd 16. 큐메일을 위한 Alias 파일 생성 - 큐메일을 위한 Alias 파일을 생성한다. - 큐메일은 root로 메일을 배달하지 않으므로 반드시 알리아스를 만들어야 한다. - 그리고 postmaster, mailer-daemon으로 오는 메일도 알리아스로 사용한다. - 아래는 kbsuser@kbs.com 이란 주소로 알리아즈 시킨 것이다. # echo kbsuser@kbs.com > /var/qmail/alias/.qmail-root # echo kbsuser@kbs.com > /var/qmail/alias/.qmail-postmaster # echo kbsuser@kbs.com > /var/qmail/alias/.qmail-mailer-daemon # chmod 644 /var/qmail/alias/.* 17. sendmail 패키지 삭제 - 시스템에 설치된 sendmail 패키지를 삭제한다. # rpm -qa | grep sendmail sendmail-8.13.8-8.1.el5_7 # /etc/init.d/sendmail stop # yum -y groupremove "Mail Server" 18. sendmail 링크 생성 - sendmail 링크를 걸어준다. - MTA를 필요로 하는 많은 프로그램이 아직까지 sendmail을 사용하고 있기 때문에 - qmail 바이너리 파일을 sendmail로 심볼릭 링크로 걸어준다. # ln -s /var/qmail/bin/sendmail /usr/lib # ln -s /var/qmail/bin/sendmail /usr/sbin 19. 릴레이파일 생성 ==> 메일을 전달해주기 위한 설정파일 - 릴레이파일을 생성한다. - /etc/tcp.smtp -> /etc/tcp.smtp.cdb 파일을 생성하고 strings 로 확인한다. # vi /etc/tcp.smtp -- /etc/tcp.smtp -- 127.0.0.1:allow,RELAYCLIENT="" 192.168.:allow,RELAYCLIENT="" -- /etc/tcp.smtp -- # tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp # strings /etc/tcp.smtp.cdb ==> tcp.smtp.cdb 파일이 data파일이기 때문에 strings 명령어를 사용해야한다. 127.0.0.1+RELAYCLIENT= 192.168.+RELAYCLIENT= 20. qmail 시작 - qmail을 시작한다. - /var/qmail 디렉토리가 가끔씩 권한이 644로 변경되므로 755로 변경해준다. - 권한을 변경하지 않으면 데몬 실행시에 에러가 발생한다.(qmaild, qmaill, .... 등이 접근을 못하기 때문에) # ls -ld /var/qmail # chmod 755 /var/qmail # ln -s /var/qmail/supervise/qmail-send /service/ # ln -s /var/qmail/supervise/qmail-smtpd /service/ 21. qmail 서버 확인 - qmail 서버가 동작하는지 확인한다. - 열린 포트를 확인한다. # netstat -nltp | grep 25 tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 10974/tcpserver - ps 로 에러를 확인할 때 - 이때 체크해야 할 부분은 두가지다 ... 부분에 에러가 안나거나 좀비 프로세스가 없다면 성공이다. # ps -efww : : root 7066 7063 0 06:58 ? 00:00:00 readproctitle service errors: ....... : : - qmail 서버가 정상적으로 받아들이는지 확인한다. - 여기서 나오는 도메인은 # telnet localhost 25 Trying 127.0.0.1... Connected to www.sbs.com (127.0.0.1). <-- /etc/hosts 파일에 등록한 도메인 Escape character is '^]'. 220 mail.sbs.com ESMTP <-- /var/qmail/control/me 파일 <-- 멈추면 qmail 서버 구축을 성공한 것이다. 22. qmail 부트 스크립트 생성 - RedHat 의 데몬 시작/중지 스크립트를 생성한다. - 이 스크립트를 이용해서 데몬을 시작하고 종료할 수 있다. - http://pkg.tini4u.net/mta/qmail/ 에서 받으실 수 있습니다. # install /dev/null /etc/init.d/qmail # vi /etc/init.d/qmail -- /etc/init.d/qmail -- #!/bin/sh # For Red Hat chkconfig # chkconfig: - 80 30 # description: the qmail MTA PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin export PATH case "$1" in start) echo "Starting qmail" if [ -e /service/qmail-send ] ; then if svok /service/qmail-send ; then svc -u /service/qmail-send else echo qmail-send supervise not running fi else ln -s /var/qmail/supervise/qmail-send /service/ fi if [ -e /service/qmail-smtpd ] ; then if svok /service/qmail-smtpd ; then svc -u /service/qmail-smtpd else echo qmail-smtpd supervise not running fi else ln -s /var/qmail/supervise/qmail-smtpd /service/ fi if [ -d /var/lock/subsys ]; then touch /var/lock/subsys/qmail fi ;; stop) echo "Stopping qmail..." echo " qmail-smtpd" svc -dx /service/qmail-smtpd /service/qmail-smtpd/log rm -f /service/qmail-smtpd echo " qmail-send" svc -dx /service/qmail-send /service/qmail-send/log rm -f /service/qmail-send if [ -f /var/lock/subsys/qmail ]; then rm /var/lock/subsys/qmail fi ;; stat) svstat /service/qmail-send svstat /service/qmail-send/log svstat /service/qmail-smtpd svstat /service/qmail-smtpd/log qmail-qstat ;; doqueue|alrm|flush) echo "Flushing timeout table and sending ALRM signal to qmail-send." /var/qmail/bin/qmail-tcpok svc -a /service/qmail-send ;; queue) qmail-qstat qmail-qread ;; reload|hup) echo "Sending HUP signal to qmail-send." svc -h /service/qmail-send ;; pause) echo "Pausing qmail-send" svc -p /service/qmail-send echo "Pausing qmail-smtpd" svc -p /service/qmail-smtpd ;; cont) echo "Continuing qmail-send" svc -c /service/qmail-send echo "Continuing qmail-smtpd" svc -c /service/qmail-smtpd ;; restart) echo "Restarting qmail:" echo "* Stopping qmail-smtpd." svc -d /service/qmail-smtpd echo "* Sending qmail-send SIGTERM and restarting." svc -t /service/qmail-send echo "* Restarting qmail-smtpd." svc -u /service/qmail-smtpd ;; cdb) tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp chmod 644 /etc/tcp.smtp.cdb echo "Reloaded /etc/tcp.smtp." ;; help) cat << HELP stop -- stops mail service (smtp connections refused, nothing goes out) start -- starts mail service (smtp connection accepted, mail can go out) pause -- temporarily stops mail service (connections accepted, nothing leaves) cont -- continues paused mail service stat -- displays status of mail service cdb -- rebuild the tcpserver cdb file for smtp restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it doqueue -- schedules queued messages for immediate delivery reload -- sends qmail-send HUP, rereading locals and virtualdomains queue -- shows status of queue alrm -- same as doqueue flush -- same as doqueue hup -- same as reload HELP ;; *) echo "Usage: $0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}" exit 1 ;; esac exit 0 -- /etc/init.d/qmail -- # chkconfig --add qmail # chkconfig qmail on # chkconfig --list qmail qmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off # /etc/init.d/qmail start # netstat -nltp | grep 25 # /etc/init.d/qmail stop # netstat -nltp | grep 25 # /etc/init.d/qmail start # netstat -nltp | grep 25 # /etc/init.d/qmail stop # netstat -nltp | grep 25 ***** qmail 서버에 에러가 발생되면 체크해야 할 사항들 ***** 1. /var/qmail 디렉토리 권한을 확인한다. - 644 가 되면 안되고 755 or 711 이어야 한다. # ls -ld /var/qmail drwxr-xr-x 11 root qmail 4096 May 3 08:11 /var/qmail 2. (rc 1개 + run 4개)5개의 파일들이 모두 실행권한이 있는지 확인한다. - 실행권한 확인 # find \( -name rc -o -name run \) -ls - 파일의 내용 확인 /var/qmail/rc /var/qmail/supervise/qmail-send/run /var/qmail/supervise/qmail-send/log/run /var/qmail/supervise/qmail-smtpd/run /var/qmail/supervise/qmail-smtpd/log/run 3. 확인이 다 되었다면 /etc/inittab 파일을 수정한다. - kill -1 로 다시 리로드한다. # vi /etc/inittab -- /etc/inittab -- : : #SV:123456:respawn:/command/svscanboot -- /etc/inittab -- # kill -1 1 # vi /etc/inittab -- /etc/inittab -- : : SV:123456:respawn:/command/svscanboot -- /etc/inittab -- # kill -1 1 4. qmail 의 로그를 확인한다. # tree /var/log/qmail/ /var/log/qmail/ |-- current <-- 확인 |-- lock |-- smtpd | |-- current <-- 확인 | |-- lock | `-- state `-- state 5. 다른 메일서버가 25번 포트를 사용하는지 확인한다. # netstat -nltp | grep 25 ***** qmail 서버에 에러가 발생되면 체크해야 할 사항들 *****


daemontools-0.76.tar.gz


qmail-1.03.tar.gz


qmail-ej-cocktail-14.tar.gz


qmail.tar.gz


ucspi-tcp-0.88.tar.gz


vpopmail-5.4.13.tar.gz


=====================================================================
QMAIL-LAB4> qmail 의 에러를 발생시키고 잡아보자.
- 아래 내용을 여기에 삽입...

# ln -s /var/qmail/supervise/qmail-send  /service/
# ln -s /var/qmail/supervise/qmail-smtpd /service/
# netstat -nltp | grep 25
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      10974/tcpserver   
# chmod 644 rc
# vi /etc/inittab 
# kill -1 1
# ps auxww
# vi /etc/inittab 
# kill -1 1
# ps auxww
# 

=====================================================================

=====================================================================
QMAIL-LAB5> 메일을 발송해보자.

sbs.com 
DNS  IP addr : 192.168.56.200
MX   10      : mail.sbs.com
Mail IP addr : 192.168.56.150

- IP Address 설정
56.200(DNS)# ifconfig eth1:200 192.168.56.200
56.200(DNS)# ifconfig eth1:150 192.168.56.150

- name server 설치
56.200(DNS)# yum -y groupinstall "DNS Name Server"
56.200(DNS)# yum -y install caching-nameserver
56.200(DNS)# vi /etc/named.caching-nameserver.conf 
-- /etc/named.caching-nameserver.conf  --
   DNS 포트를 외부에 오픈한다.
   any 를 추가한다.
-- /etc/named.caching-nameserver.conf  --

- sbs.com 도메인 등록
56.200(DNS)# vi /etc/named.rfc1912.zones
-- /etc/named.rfc1912.zones --
  :
  :
zone "sbs.com" IN {
	type master;
	file "sbs.com.zone";
	allow-update { none; };
};
-- /etc/named.rfc1912.zones --

56.200(DNS)# cd /var/named/chroot/var/named
56.200(DNS)# cp -a localhost.zone sbs.com.zone
56.200(DNS)# vi /var/named/sbs.com.zone
-- /var/named/sbs.com.zone --
$TTL	60
@           IN SOA      ns     root ( 2015061201 3H 15M 1W 1D )
            IN NS       ns
            IN MX  10   mail              <-- mail 서버 관련 설정
            IN A        192.168.56.150
ns          IN A        192.168.56.200
mail        IN A        192.168.56.150    <-- mail 서버 관련 설정
www         IN A        192.168.56.150
-- /var/named/sbs.com.zone --

56.200(DNS)# ln -s /var/named/chroot/var/named/sbs.com.zone /var/named
56.200(DNS)# /etc/init.d/named restart
56.200(DNS)# dig @localhost sbs.com mx +short
10 mail.sbs.com.
56.200(DNS)# dig @localhost mail.sbs.com  +short
192.168.56.150

- 메일 도메인 확인
56.150(QMAIL)# vi /var/qmail/control/locals 
-- /var/qmail/control/locals --
sbs.com
-- /var/qmail/control/locals --
56.150(QMAIL)# vi /var/qmail/control/rcpthosts 
-- /var/qmail/control/rcpthosts --
sbs.com
-- /var/qmail/control/rcpthosts --
56.150(QMAIL)# /etc/init.d/qmail restart

- 메일 사용자 생성
56.150(QMAIL)# PATH=$PATH:/var/qmail/bin
56.150(QMAIL)# useradd sbsuser
56.150(QMAIL)# su - sbsuser
56.150(QMAIL)$ /var/qmail/bin/maildirmake Maildir
56.150(QMAIL)$ ls -ld Maildir
drwx------ 5 sbsuser sbsuser 4096 Apr  4 06:58 Maildir
56.150(QMAIL)$ 
$ tree  Maildir
Maildir
|-- cur
|-- new
`-- tmp

3 directories, 0 files

- 메일수신 로그 확인
56.150(QMAIL)# tail -f /var/log/qmail/smtpd/current
  :
  :

- DNS resolver 설정
- 보내는 쪽 서버의 메일 설정
56.120# /etc/init.d/sendmail restart
56.120# vi /etc/resolv.conf
-- /etc/resolv.conf --
nameserver 192.168.56.200
-- /etc/resolv.conf --

56.120# dig sbs.com mx   <-- mail.sbs.com 이 출력이 되면 성공
10 mail.sbs.com.
56.120# dig mail.sbs.com <-- 56.150 이 출력이 되면 성공

- 메일발송 로그 확인
56.120# tail -f /var/log/maillog 

56.120# mail -v -s testmail sbsuser@sbs.com < /etc/fstab

- 받는 쪽 설정
56.150(QMAIL)# iptables -F
56.150(QMAIL)# su - sbsuser
56.150(QMAIL)$ tree  Maildir
/home/sbsuser/Maildir/
|-- cur
|-- new
|   `-- 1401064505.15810.www.sbs.com   <-- 성공적으로 메일을 수신함.
`-- tmp
=====================================================================

=====================================================================
QMAIL-LAB6-0> kbs.com 의 멀티호스트 도메인을 생성하고 kbsuser@kbs.com 
사용자로 메일을 발송해보자.

-- 조건 --
도메인 : kbs.com
사용자 : kbsuser
메일주소 : kbsuser@kbs.com
DNS 메일 호스트 : mail.kbs.com
메일 우선순위 : 10
메일 IP주소 : 192.168.56.150
-- 조건 --

-- 순서 --
1. DNS 설정
2. 메일서버에 kbs.com 추가
3. 사용자 메일박스 생성
4. 사용자 생성
5. 메일 발송
6. 메일 확인
-- 순서 --

1. DNS 설정
- DNS 서버에서 메일을 받을 kbs.com 호스트(MX레코드)를 생성한다.
56.200(DNS)# vi /etc/named.rfc1912.zones
-- /etc/named.rfc1912.zones --
  :
  :
zone "kbs.com" IN {
    type master;
    file "kbs.com.zone";
    allow-update { none; };
};
-- /etc/named.rfc1912.zones --
56.200(DNS)# cd /var/named/chroot/var/named
56.200(DNS)# vi kbs.com.zone
-- kbs.com.zone --
$TTL  60
@       IN SOA  ns1   root ( 2014121501 3H 15M 1W 1D )
        IN NS     ns1
        IN MX 10  mail               <-- 메일서버
        IN A      192.168.56.200
mail    IN A      192.168.56.150     <-- 메일서버
ns1     IN A      192.168.56.200
www     IN A      192.168.56.200
-- kbs.com.zone --

56.200(DNS)# chgrp named kbs.com.zone
56.200(DNS)# ln -s /var/named/chroot/var/named/kbs.com.zone /var/named
56.200(DNS)# rndc reload
56.200(DNS)# dig kbs.com mx +short
10 mail.kbs.com.
56.200(DNS)# dig mail.kbs.com +short
192.168.56.200

- 56.200 에서 kbs.com 메일서버를 확인한다.
56.150(QMAIL)# vi /etc/resolv.conf 
-- /etc/resolv.conf --
nameserver 192.168.56.200
-- /etc/resolv.conf --
56.150(QMAIL)# dig kbs.com mx +short
10 mail.kbs.com.
56.150(QMAIL)# dig mail.kbs.com +short
192.168.56.150

2. 메일서버에 kbs.com 추가
- qmail에서 멀티호스트를 사용하기 위해서는 qmail을 설정한다.
- 이때 환경설정 디렉토리(/var/qmail/control) 에서 
- 환경설정 파일(rcpthosts,locals) 파일에 메일을 받을 도메인을 추가한다.
56.150(QMAIL)# cd /var/qmail/control
56.150(QMAIL)# vi locals 
-- locals --
localhost
sbs.com
kbs.com       <-- 추가
-- locals --

56.150(QMAIL)# vi rcpthosts 
-- rcpthosts --
localhost
sbs.com
kbs.com       <-- 추가
-- rcpthosts --

56.150(QMAIL)# /etc/init.d/qmail restart

3. 사용자 메일박스 생성
- /etc/skel 디렉토리에 Maildir 메일박스를 생성한다.
56.150(QMAIL)# PATH=$PATH:/var/qmail/bin
56.150(QMAIL)# echo 'PATH=$PATH:/var/qmail/bin' >> ~/.bashrc
56.150(QMAIL)# maildirmake /etc/skel/Maildir 

4. 사용자 생성
- 사용자 존재 : $HOME/$USER/Maildir 디렉토리를 생성한다. 
56.150(QMAIL)# useradd kbsuser
56.150(QMAIL)# passwd kbsuser
56.150(QMAIL)# su - kbsuser
56.150(QMAIL)$ tree Maildir
Maildir
|-- cur   <-- 메일수신 후에 옮겨지는 디렉토리
|-- new   <-- 메일수신 디렉토리
`-- tmp   <-- 메일발송 임시 디렉토리

5. 메일 발송
- 메일수신 로그 확인
56.150(QMAIL)pts/0# tail -f /var/log/qmail/smtpd/current

- 메일발송 로그 확인
56.150(QMAIL)pts/1# tail -f /var/log/maillog 

56.200(DNS)# mail -v kbsuser@kbs.com
Subject: 안녕하세요...
반가워요...

.     <-- 메일의 끝은 . 을 입력한다.
Cc: 

*** 두 개의 로그에 메일발송이 기록되어야 한다. ***

6. 메일 확인
- qmail 서버에서 사용자의 메일박스에 수신한 메일을 확인한다.
56.150(QMAIL)pts/2# tree  ~kbsuser/Maildir/
/home/kbsuser/Maildir/
|-- cur
|-- new
|   `-- 1418172404.9960.localhost.localdomain   <-- 한 개가 있어야 한다.
`-- tmp

56.150(QMAIL)pts/2# cat ~kbsuser/Maildir/new/1418172404.9960.localhost.localdomain 
Return-Path: <root@localhost.localhost>
Delivered-To: kbsuser@kbs.com
Received: (qmail 9957 invoked by uid 0); 10 Dec 2014 09:46:44 +0900
Date: 10 Dec 2014 09:46:44 +0900
Message-ID: <20141210004644.9956.qmail@localhost>
From: root@localhost.localhost
To: kbsuser@kbs.com
Subject: 안녕하세요...

반가워요...

- 메일을 발송하고 파일이 저장된다면 정확하게 메일이 오는 것이다.
56.200(DNS)pts/2# mail -v -s testmail kbsuser@kbs.com < /etc/fstab
56.150(QMAIL)pts/2# tree  /home/kbsuser/Maildir
/home/kbsuser/Maildir/
|-- cur
|-- new
|   |-- 1418172404.9960.localhost.localdomain
|   `-- 1418172603.9980.localhost.localdomain
`-- tmp

3 directories, 2 files

=====================================================================


'Linux > 기타' 카테고리의 다른 글

Telnet & OpenSSH & VNC  (0) 2015.06.16
vpopmail + cdb 설치  (0) 2015.06.15
네임서버 세팅하기  (0) 2015.06.11
연습 2  (0) 2015.05.29
db 활용  (0) 2015.05.28