일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- CPU
- 좌절교육
- apachetop
- 솔라리스
- Python
- DNS
- Kernel
- cadre
- rm -rf
- Linux
- ext4
- pid
- Hack
- 칭찬교육
- rsync
- ext3
- goaccess
- rm
- windows
- 디스크
- PERL
- Bash
- 리눅스
- Cache
- iptables
- Performance
- PORT
- Disk
- 쇼펜의상속자 #킨텍스메가쇼 #섬유향수탈취제
- http
- Today
- Total
Ben's
Qmail install 본문
☆★ qmail 설치문서 ☆★
■ ucspi-tcp 설치
1. 다운로드
* 소스 다운로드: wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
* 패치 다운로드: http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/
http://sylvestre.ledru.info/howto/qmail/ucspi-tcp-0.88-mysql.patch
2. 패치
* patch -d ucspi-tcp-0.88 < ucspi-tcp-0.88.a_record.patch
* patch -d ucspi-tcp-0.88 < ucspi-tcp-0.88.nobase.patch
* patch -d ucspi-tcp-0.88 < ucspi-tcp-0.88.errno.patch
* patch -d ucspi-tcp-0.88 < ucspi-tcp-0.88-mysql.patch(MYSQL only)
3. 설치전 준비
* db.c 수정(MYSQL only - ucspi-tcp-0.88-mysql.patch 를 적용했을때만 파일 생성됨)
#include </home/mysql/include/mysql/mysql.h>
* conf-ld 수정(MYSQL only)
gcc -s -I/home/mysql/include/mysql -L/home/mysql/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm
* load 수정(MYSQL only)
exec gcc -s -I/home/mysql/include/mysql -L/home/mysql/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -o "$main" "$main".o ${1+"$@"}
4. 설치
* make && make setup check
■ daemontools
1. 다운로드
* 소스 다운로드: wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
* 패치 다운로드: wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
2. 패치
* cd ./admin/daemontools
* patch -d src < ../../daemontools-0.76.errno.patch
3. 설치
* package/install
4. cp -a /root/archive/src/qmail_src/admin/daemontools/command/* /usr/local/bin
■ autorespond 설치
1. 다운로드
* 소스 다운로드: wget http://www.inter7.com/devel/autorespond-2.0.5.tar.gz
2. 설치
* make; cp -a autorespond /usr/local/bin
■ qmHandle 설치
1. 다운로드
* 소스 다운로드: wget http://umn.dl.sourceforge.net/sourceforge/qmhandle/qmhandle-1.2.0.tar.gz
2. 설치
* tar -zxf qmHandle-1.2.0.tar.gz
* mv qmHandle /usr/local/bin/qmHandle
■ qmail-1.03 설치
1. 다운로드
* 소스 다운로드: wget ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz
* 패치 다운로드: http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/
2. qmail 패치
* patch -d qmail-1.03 < qmail-103.patch
* patch -d qmail-1.03 < qmail-1.03.qmail_local.patch
* patch -d qmail-1.03 < qmail-1.03.errno.patch
* smtp-auth patch
cd qmail-smtpd-auth-0.31
cp README.auth base64.c base64.h ../qmail-1.03
patch -d ../qmail-1.03 < auth.patch
* patch -d qmail-1.03 < qmailqueue-patch
* patch -d qmail-1.03 < qmail-date-localtime.patch
* patch -d qmail-1.03 < doublebounce-trim.patch
echo -e "\n" > /var/qmail/control/doublebounceto
* patch -d qmail-1.03 < qregex-20060423.patch
Makefile.rej, qmail-smtpd.c.rej 내용 참조하여 Makefile, qmail-smtpd.c 파일 수동 패치
* patch -d qmail-1.03 < qmail-0.0.0.0.patch
* patch -d qmail-1.03 < sendmail-flagf.patch
3. 디렉토리 및 계정생성
* mkdir -p /var/qmail
* groupadd nofiles
* useradd -g nofiles -d /var/qmail/alias alias
* useradd -g nofiles -d /var/qmail qmaild
* useradd -g nofiles -d /var/qmail qmaill
* useradd -g nofiles -d /var/qmail qmailp
* groupadd qmail
* useradd -g qmail -d /var/qmail qmailq
* useradd -g qmail -d /var/qmail qmailr
* useradd -g qmail -d /var/qmail qmails
4. qmail PRE-INSTALL
* make && make setup check
5. qmail 운영에 필요한 스크립트 생성 및 등록
* /var/qmail/rc
============================================================
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start '|preline procmail ./Maildir/' splogger qmail
============================================================
* chmod a+x /var/qmail/rc
* mkdir -p /var/qmail/supervise/qmail-send/log
* mkdir -p /var/qmail/supervise/qmail-smtpd/log
* chmod +t /var/qmail/supervise/qmail-send
* chmod +t /var/qmail/supervise/qmail-smtpd
* /var/qmail/supervise/qmail-send/run
============================================================
#!/bin/sh
exec /var/qmail/rc
============================================================
* /var/qmail/supervise/qmail-send/log/run
============================================================
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/qmail
============================================================
* /var/qmail/supervise/qmail-smtpd/run
============================================================
#!/bin/sh
#QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
export QMAILQUEUE
ALIAS_UID=`id -u alias`
ALIAS_GID=`id -g alias`
exec /usr/local/bin/softlimit -m 9000000 \
/usr/local/bin/tcpserver -l nhkotest.com -H -R -x /home/vpopmail/etc/tcp.smtp.cdb \
-u $ALIAS_UID -g $ALIAS_GID 0 25 /usr/local/bin/fixcrio /var/qmail/bin/qmail-smtpd 2>&1
============================================================
* /var/qmail/supervise/qmail-smtpd/log/run
============================================================
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/qmail/smtpd
============================================================
* chmod 755 /var/qmail/supervise/qmail-send/run
* chmod 755 /var/qmail/supervise/qmail-send/log/run
* chmod 755 /var/qmail/supervise/qmail-smtpd/run
* chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
* mkdir -p /var/log/qmail/smtpd
* chown qmaill /var/log/qmail /var/log/qmail/smtpd
6. /etc/init.d/qmail 스크립트 등록후 stop 서브루틴의 kill 부분을 kill -9 로 고쳐줘야함.
7. sendmail 삭제
mv /usr/lib/sendmail /usr/lib/sendmail.old
mv /usr/sbin/sendmail /usr/sbin/sendmail.old
ln -s /var/qmail/bin/sendmail /usr/lib
ln -s /var/qmail/bin/sendmail /usr/sbin
8. /service 디렉토리 삭제
rm -rf /service
■ vpopmail 설치
1. 다운로드
* 소스 다운로드: wget http://downloads.sourceforge.net/vpopmail/vpopmail-5.4.10.tar.gz?modtime=1111305167&big_mirror=0
2. 계정생성
* groupadd vchkpw
* useradd -g vchkpw -d /home/vpopmail vpopmail
3. DB / DB계정 생성
* mysql 일때
- DB 생성
mysql> CREATE DATABASE vpopmail;
- DB 계정 생성
mysql> use mysql;
mysql> grant CREATE,INSERT,SELECT,DELETE,UPDATE on vpopmail.* to vpopmail@localhost;
mysql> grant CREATE,INSERT,SELECT,DELETE,UPDATE on vpopmail.* to vpopmail@mail.nhkotest.com;
- vpopmail에서 db 접근시 인증정보는 아래와 같이 저장해 두면 됨.
echo "localhost|3306|vpopmail|ghtmxldWkd|vpopmail" > ~vpopmail/etc/vpopmail.mysql
chown vpopmail.vchkpw ~vpopmail/etc/vpopmail.mysql
chmod 640 ~vpopmail/etc/vpopmail.mysql
* pgsql 일때
- vpopmail table space 로 사용될 디렉토리 생성
mkdir -p /home/postgresql/data/pg_tblspc/vpopmail
mkdir -p /home/postgresql/data/pg_tblspc/vpopmail_index
- vpopmail table space 생성
CREATE TABLESPACE vpopmail OWNER postgres LOCATION '/home/postgresql/data/pg_tblspc/vpopmail';
CREATE TABLESPACE vpopmail_index OWNER postgres LOCATION '/home/postgresql/data/pg_tblspc/vpopmail_index';
- DB 계정 생성
CREATE ROLE vpopmail;
ALTER ROLE vpopmail WITH SUPERUSER INHERIT NOCREATEROLE CREATEDB LOGIN PASSWORD '패스워드';
- DB 생성
CREATE DATABASE vpopmail WITH TEMPLATE = template0 OWNER = user ENCODING = 'EUC_KR' TABLESPACE = vpopmail;
4. 사전 작업
* /etc/ld.so.conf 에 경로 추가
- mysql 일때: /home/mysql/lib/mysql
- pgsql 일때: /usr/local/lib, /home/postgresql/lib/
* 경로 추가후 적용: ldconfig /etc/ld.so.conf
* vpopmail.c 수정
==========================================================================================
@@ -207,7 +207,7 @@
chdir(calling_dir);
return(VA_COULD_NOT_OPEN_qmail_DEFAULT);
} else {
- fprintf(fs, "| %s/bin/vdelivermail '' bounce-no-mailbox\n", VPOPMAILDIR); 이부분 빼고
+ fprintf(fs, "| %s/bin/vdelivermail '' delete\n", VPOPMAILDIR); 이부분 추가
fclose(fs);
}
==========================================================================================
5. mysql을 사용할때 설치
./configure --enable-auth-module=mysql --enable-roaming-users=y --enable-hard=20971520 --enable-relay-clear-minutes=60 --enable-logging=y --
disable-auth-logging --enable-incdir=/home/mysql/include/mysql --enable-libdir=/home/mysql/lib/mysql
make && make install-strip
6. pgsql을 사용할때 설치
* 먼저 ./configure 파일 수정하여 pg_config 경로를 잡아준다.
=========================================================================================================================
pgconfig=""
for f in /usr/local/pgsql/bin/pg_config /usr/local/bin/pg_config /usr/bin/pg_config /home/postgresql/bin/pg_config
do
=========================================================================================================================
./configure --enable-auth-module=pgsql --enable-logging=y --disable-auth-logging --enable-many-domains=y --enable-
incdir=/home/postgresql/include --enable-libdir=/home/postgresql/lib --disable-roaming-users --enable-relay-clear-minutes=60
make && make install-strip
7. /sbin/vpop3_start 스크립트 등록
8. SMTP 릴레이 설정
* /home/vpopmail/etc/tcp.smtp
===================================
127.0.0.1:allow,RELAYCLIENT=""
203.231.63.0:allow,RELAYCLIENT=""
===================================
* tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp
* /etc/init.d/qmail, /var/qmail/supervise/qmail-smtpd/run 내의 tcp.smtp 경로 수정
* ~vpopmail/bin/clearopensmtp 실행 / crontab 등록
============================================
# crontab -e
40 * * * * /home/vpopmail/bin/clearopensmtp
============================================
9. DB 테이블 생성 확인
* /home/vpopmail/bin/clearopensmtp -> relay db 생성됨.
* vadddomain 하면 dir_control, vpopmail 생성됨.
* DB 테이블 확인
vpopmail=# \dt;
List of relations
Schema | Name | Type | Owner
--------+-------------+-------+----------
public | dir_control | table | postgres
public | relay | table | postgres
public | vpopmail | table | postgres
* 테이블 스페이스 생성확인: 아래의 경로에 PG_VERSION 파일이 생성되어야 함.
- /home/postgresql/data/pg_tblspc/vpopmail
■ qmail + chkuser 패치 적용후 재 컴파일
1. chkuser 패치 적용
* patch -p1 -d ../qmail-1.03 < netqmail-1.05_chkuser-2.0.8.patch
2. qmail 재 컴파일
* make clean
* make && make setup check
* ./config-fast nhkotest.com
(원래 ./config 라고만 해주면 되는데 qmail 설치당시에 도메인이 네임서버에 등록되어 있지 않으면 이렇게 해줘야 함.)
■ qmail-scanner 설치
1. qmail-scanner 설치에 필요한 패키지 먼저 설치
* pere 설치(wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-6.7.tar.gz)
./configure
make
make check
make install
* perl-suidperlm, unzip 설치(yum install로 설치)
* maildrop-1.8.0 먼저 설치
./configure
make
make install-strip
make install-man
* Time-HiRes 설치
perl Makefile.PL
make
make test
make install
2. qscand 계정 생성
* groupadd qscand
* useradd -c "qmail-Scanner Account" -g qscand -s /bin/false qscand
3. 설치
* ./configure --spooldir /usr/local/qmailscan --qmaildir /var/qmail --bindir /var/qmail/bin --qmail-queue-binary /var/qmail/bin/qmail-queue
--admin root --domain nhkotest.com --notify none --local-domains nhkotest.com --silent-viruses auto --lang en_GB --debug no --unzip 0 --add-dscr-
hdrs 0 --archive 0 --redundant no --log-details 0 --log-crypto 0 --fix-mime 1 --scanners "auto" --install 1
4. 실행
/var/qmail/bin/qmail-scanner-queue.pl -g
■ 설치후 확인사항
1. /var/qmail/supervise/qmail-smtpd/run 파일 확인
=======================================================================================
#!/bin/sh
#QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
export QMAILQUEUE
ALIAS_UID=`id -u alias`
ALIAS_GID=`id -g alias`
exec /usr/local/bin/softlimit -m 15000000 \
/usr/local/bin/tcpserver -l nhkotest.com -H -R -x /home/vpopmail/etc/tcp.smtp.cdb \ ===> tcp.smtp 경로 확인할것
-u $ALIAS_UID -g $ALIAS_GID 0 25 /usr/local/bin/fixcrio /var/qmail/bin/qmail-smtpd 2>&1
=======================================================================================
2. qmail start 시 떠 있는 데몬이 아래와 비슷한지 확인
=======================================================================================
562 ? S 0:00 svscan
563 ? S 0:00 supervise qmail-send
564 ? S 0:00 supervise log
565 ? S 0:00 supervise qmail-smtpd
566 ? S 0:00 supervise log
567 ? S 0:00 qmail-send
568 ? S 0:00 /usr/local/bin/multilog t /var/log/qmail
569 ? S 0:00 /usr/local/bin/multilog t /var/log/qmail/smtpd
570 ? S 0:00 /usr/local/bin/tcpserver -v -p -x/etc/tcp.smtp.cdb -u 501 -g 501 0 25 /var/qmail/bin/qmail-smtpd
576 ? S 0:00 splogger qmail
577 ? S 0:00 qmail-lspawn |preline procmail
578 ? S 0:00 qmail-rspawn
579 ? S 0:00 qmail-clean
=======================================================================================
■ 메일 로컬 전송 테스트
* echo 'to: konh@ect571.nhkotest.com' | /var/qmail/bin/qmail-inject
■ qmail troubleshooting
1. /etc/init.d/qmail start 시 프로세스는 보이나 포트가 응답하지 않고 /var/log/maillog에 아래와 같은 메시지 나올때
===============================================================================
supervise: fatal: unable to acquire log/supervise/lock: temporary failure
supervise: fatal: unable to acquire qmail-smtpd/supervise/lock: temporary failure
supervise: fatal: unable to acquire log/supervise/lock: temporary failure
===============================================================================
==> 원인: qmail stop 시 svscan 프로세스가 정상적으로 종료되지 않아 프로세스가 떠 있는 상태에서 qmail start 를 했을때 이런 현상 발생
==> 해결방법
- pkill -9 svscan
- svc -dx /var/qmail/supervise/*; svc -dx /var/qmail/supervise/*/log
2. /etc/init.d/qmail start 시 프로세스는 보이나 포트가 응답하지 않고 /var/log/qmail/smtpd/current 에 아래와 같은 메시지 나올때
==============================================================================================================
@40000000461ed6a529aa4474 tcpserver: fatal: temporarily unable to figure out IP address for 0.0.0.0: file does not exist
==============================================================================================================
==> 원인: BUG 임. 간혹 64bit 서버에서 발생할수 있음.
==> 해결방법: touch /etc/dnsrewrite
3. /etc/init.d/qmail start 시 프로세스는 보이나 포트가 응답하지 않고 /var/log/qmail/smtpd/current 에 아래와 같은 메시지 나올때
========================================================
map segment from shared object: Cannot allocate memory
========================================================
==> 원인: softlimit 값이 너무 작으면 나타나는 현상임.
==> 해결방법: /var/qmail/supervise/qmail-smtpd/run 파일에서 아래의 라인에서 수치 늘림.
------------------------------------------
exec /usr/local/bin/softlimit -m 15000000 \
'리눅스 > mail' 카테고리의 다른 글
sendmail error 유형 (0) | 2013.01.21 |
---|---|
queue-fix 설치 및 사용법 (0) | 2013.01.16 |