http://kldp.net/docman/view.php/207/100/file100.html
http://kldp.net/docman/view.php/207/101/file101.html

apache 설치
 # gzip -d apache_1.3.27.tar.gz
# tar xvf apache_1.3.27.tar
# cd apache_1.3.27
# ./configure --prefix=/usr/local/apache --enable-shared=max --enable-module=rewrite --enable-shared=rewrite --enable-module=info --enable-shared=info
# make
# make install

mysql 설치
 # gzip -d mysql-3.23.55.tar.gz
# tar xvf mysql-3.23.55.tar
# cd mysql-3.23.55
# ./configure --prefix=/usr/local/mysql --with-charset=euc_kr
# make
# make install
# cd /usr/local/mysql/bin/mysql_install_db
# vi /usr/local/mysql/share/mysql/mysql.server
* 182라인을 다음과 같이 수정
$bindir/safe_mysqld --user=root --datadir=$datadir --pid-file=$pid_file &  
# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
# ln -s /etc/init.d/mysqld /etc/rc3.d/S90mysqld
# /etc/init.d/mysql start

qmail 설치
 # gzip -d qmail-1.03.tar.gz
# tar xvf qmail-1.03.tar
# cd qmail-1.03
# mkdir -p /var/qmail
# sh user.ids
# make
# make setup check
# ./config-fast 메일서버도메인명

ucspi-tcp 설치
 # gzip -d ucspi-tcp-0.88.tar.gz
# tar xvf ucspi-tcp-0.88.tar
# cd ucspi-tcp-0.88
# make
# make setup check

daemontools 설치
 # gzip -d daemontools-0.76.tar.gz
# tar xvf daemontools-0.76.tar
# cd daemontools-0.76
# cd admin/daemontools-0.76
# package/install
# vi /etc/inittab
* 마지막라인의 다음내용을 삭제후 저장
SV:123456:respawn:/command/svscanboot  
# rm -rf /service
# rm -rf /command
# cd command
# mv * /usr/local/bin
# ps -ef | grep svscan
# kill -9 "관련프로세스종료"

checkpassword 설치
 # gzip -d checkpassword-0.90.tar.gz
# tar xvf checkpassword-0.90.tar
# cd checkpassword-0.90
# make
# make setup check

qmail 설정
 # mkdir -p /var/qmail/supervise/qmail-send/log
# mkdir -p /var/qmail/supervise/qmail-smtp/log
# mkdir -p /var/qmail/supervise/qmail-pop3/log
# chmod +t /var/qmail/supervise/qmail-send
# chmod +t /var/qmail/supervise/qmail-smtp
# chmod +t /var/qmail/supervise/qmail-pop3
# vi /var/qmail/supervise/qmail-send/run
#!/bin/sh
exec /var/qmail/rc

# vi /var/qmail/supervise/qmail-send/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/send

# vi /var/qmail/supervise/qmail-smtp/run
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 5000000 \
/usr/local/bin/tcpserver -v -R -l 0 -x /etc/tcp.smtp.cdb \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1

# vi /var/qmail/supervise/qmail-smtp/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtp

# vi /var/qmail/supervise/qmail-pop3/run
#!/bin/sh
exec /usr/local/bin/softlimit -m 5000000 \
/usr/local/bin/tcpserver -v -R -H -l 0 0 pop3 /var/qmail/bin/qmail-popup \
메일서버도메인명 /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1

# vi /var/qmail/supervise/qmail-pop3/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/pop3

# chmod 755 /var/qmail/supervise/qmail-send/run
# chmod 755 /var/qmail/supervise/qmail-send/log/run
# chmod 755 /var/qmail/supervise/qmail-smtp/run
# chmod 755 /var/qmail/supervise/qmail-smtp/log/run
# chmod 755 /var/qmail/supervise/qmail-pop3/run
# chmod 755 /var/qmail/supervise/qmail-pop3/log/run
# cd ~alias
# echo 사용자아이디 > .qmail-mailer-daemon
# echo 사용자아이디 > .qmail-postmaster
# echo 사용자아이디 > .qmail-root
# cp /var/qmail/boot/proc /var/qmail/rc
# vi /var/qmail/rc
* 7라인을 다음과 같이 수정
qmail-start '|preline procmail ./Maildir/' splogger qmail  
# mkdir -p /var/log/qmail/send
# mkdir -p /var/log/qmail/smtp
# mkdir -p /var/log/qmail/pop3
# chown qmaill /var/log/qmail /var/log/qmail/send /var/log/qmail/smtp /var/log/qmail/pop3
# vi /etc/init.d/qmail
#!/bin/sh
# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 80 80
# description: sendmail을 대체하는 빠르며, 안정적이고, 유연한 MTA
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH
case "$1" in
start)
echo -n "Starting qmail: svscan"
cd /var/qmail/supervise
env - PATH="$PATH" svscan &
echo $! > /var/run/svscan.pid
echo "."
;;
stop)
echo -n "Stopping qmail: svscan"
kill `cat /var/run/svscan.pid`
echo -n " qmail"
svc -dx /var/qmail/supervise/*
echo -n " logging"
svc -dx /var/qmail/supervise/*/log
echo "."
;;
stat)
cd /var/qmail/supervise
svstat * */log
;;
doqueue|alrm)
echo "Sending ALRM signal to qmail-send."
svc -a /var/qmail/supervise/qmail-send
;;
queue)
qmail-qstat
qmail-qread
;;
reload|hup)
echo "Sending HUP signal to qmail-send."
svc -h /var/qmail/supervise/qmail-send
;;
pause)
echo "Pausing qmail-send"
svc -p /var/qmail/supervise/qmail-send
echo "Pausing qmail-smtp"
svc -p /var/qmail/supervise/qmail-smtp
echo "Pausing qmail-pop3"
svc -p /var/qmail/supervise/qmail-pop3
;;
cont)
echo "Continuing qmail-send"
svc -c /var/qmail/supervise/qmail-send
echo "Continuing qmail-smtp"
svc -c /var/qmail/supervise/qmail-smtp
echo "Continuing qmail-pop3"
svc -c /var/qmail/supervise/qmail-pop3
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtp."
svc -d /var/qmail/supervise/qmail-smtp
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /var/qmail/supervise/qmail-send
echo "* Restarting qmail-smtp"
svc -u /var/qmail/supervise/qmail-smtp
;;
cdb)
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
chmod 644 /etc/tcp.smtp*
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 -- sends qmail-send ALRM, scheduling queued messages for delivery
reload -- sends qmail-send HUP, rereading locals and virtualdomains
queue -- shows status of queue
alrm -- same as doqueue
hup -- same as reload
HELP
;;
*)
echo "Usage: $0 {start|stop|restart|doqueue|reload|stat|pause|cont|cdb|queue|help}"
exit 1
;;
esac
exit 0

# vi /etc/tcp.smtp
127.0.0.1:allow,RELAYCLIENT=""
릴레이를 허용할 아이피주소:allow,RELAYCLIENT=""
:allow

# /etc/init.d/qmail cdb
# /etc/init.d/sendmail stop
# mv /etc/rc3.d/S88sendmail /etc/rc3.d/K88sendmail
# mv /usr/lib/sendmail /usr/lib/sendmail.old
# mv /usr/sbin/sendmail /usr/sbin/sendmail.old
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
# vi /var/qmail/control/sqlserver
mysql_use yes
server localhost
login phpmail
password phpmail
db phpmail
table mailuser
port 3306
check_host yes
quota yes
ignore_validity yes
swap_check_order yes

# /usr/local/mysql/bin/mysqladmin create phpmail
# /usr/local/mysql/bin/mysql -u root -p mysql
mysql> insert into user values ('localhost', 'phpmail', password('phpmail'), 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N');
mysql> insert into db values ('localhost', 'phpmail', 'phpmail', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'Y', 'Y');
mysql> flush privileges;
mysql> exit;
# /usr/local/mysql/bin/mysql -u phpmail -p phpmail
mysql> create table mailuser (
mbox_host varchar(32) binary null,
id varchar(32) binary not null,
passwd varchar(32) binary not null,
crypt varchar(32) binary not null,
uid int(5) unsigned not null default '99',
gid int(5) unsigned not null default '99',
shell varchar(16) not null default '/bin/false',
home varchar(64) binary not null,
quota_size int(10) null,
start_date date not null default '0000-00-00',
expire_date date not null default '0000-00-00',
active enum('Y','N') not null default 'Y'
);
mysql> insert into mailuser (mbox_host, id, passwd, crypt, uid, gid, shell, home) values ('메일서버도메인명', 'phpmail', 'phpmail', encrypt('phpmail'), 99, 99, '/bin/false', '/phpmail/메일서버도메인명/phpmail');
mysql> exit;
# mkdir -p /phpmail/메일서버도메인명/phpmail
# /var/qmail/bin/maildirmake /phpmail/메일서버도메인명/phpmail/Maildir
# echo ./Maildir/ > /phpmail/메일서버돋事罐?phpmail/.qmail
# chown -R 99:99 /phpmail
# /etc/init.d/qmail start
# pstree
|-svscan-+-supervise---qmail-send-+-qmail-clean
| | |-qmail-lspawn
| | |-qmail-rspawn
| | `-splogger
| |-3*[supervise---multilog]
| `-2*[supervise---tcpserver]

# /var/qmail/bin/qmail-getpw phpmail 메일서버도메인명
* 다음과 같은 출력결과가 나와야 정상
phpmail9999/phpmail/메일서버도메인명/phpmail0  

imap 설치
 imap-2001a 버그가 존재하여 imap-4.7c를 이용하실것을 권장합니다.
# gzip -d imap-2001a.tar.gz
# tar xvf imap-2001a.tar
# cd imap-2001a
# gzip -d imap-4.7c.tar.gz
# tar xvf imap-4.7c.tar
# cd imap-4.7c
# make slx
# cd ..
# cp -r imap-2001a /usr/local/imap
# cp -r imap-4.7c /usr/local/imap
# cd /usr/local/imap
# ln -s c-client include
# ln -s c-client lib
# cd /usr/local/imap/c-client
# ln -s c-client.a libc-client.a
# cd ..
# cp imapd/imapd /usr/sbin/in.imapd
# vi /etc/xinetd.d/imap
service imap
{
disable = no
flags = REUSE
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/in.imapd
log_on_failure += USERID
}

# /etc/init.d/xinetd restart
# telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK localhost.localdomain IMAP4rev1 v12.264 server ready
a00 login phpmail@메일서버도메인명 비밀번호
a00 OK LOGIN completed
a01 list mbox *
* LIST (\NoInferiors) NIL INBOX
a01 OK LIST completed
a02 logout
#

libiconv 설치
 # gzip -d libiconv-1.7.tar.gz
# tar xvf libiconv-1.7.tar
# cd libiconv-1.7
# ./configure
# make
# make install

php 설치
 # vi /etc/ld.so.conf
* 다음라인을 추가
/lib
/usr/lib
/usr/local/lib
/usr/local/mysql/lib/mysql

# gzip -d php-4.3.1.tar.gz
# tar xvf php-4.3.1.tar
# cd php-4.3.1
# CFLAGS="-L/usr/local/mysql/lib/mysql -lmysqlclient" ./configure --with-apxs=/usr/local/apache/bin/apxs --with-imap=/usr/local/imap --with-mysql=/usr/local/mysql --with-iconv=/usr/local --with-language=korean --with-charset=euc_kr --enable-track-vars --enable-module=so --disable-cli --disable-cgi --with-config-file-path=/usr/local/apache/conf --enable-versioning
* --with-imap-ssl 관련 에러발생시 아래내용을 configure에 추가
--with-imap-ssl=/usr
위의 내용은 imap makefile내 ssl부분을 none으로 바꾸시면 ssl을 사용하지 않도록 할수 있습니다.
또는 imap 설치시 make slx PASSWDTYPE=std SSLTYPE=none 으로 설치를 하십시오  
# make
# make install
# cp php.ini-recommended /usr/local/apache/conf/php.ini
# vi /usr/local/apache/conf/php.ini
* 1088라인을 다음과 같이 수정
register_globals = On
* 1093라인을 다음과 같이 수정
magic_quotes_gpc = On  

hcode 설치
 # gzip -d hcode-2.1m3.tar.gz
# tar xvf hcode-2.1m3.tar
# cd hcode-2.1m3
# make
# cp hcode /usr/bin

procmail 설정
 # vi /phpmail/메일서버도메인/phpmail/.qmail
|/var/qmail/bin/preline /usr/bin/procmail -p -m /phpmail/메일서버도메인/phpmail/.procmailrc  
# vi /phpmail/메일서버도메인/phpmail/.procmailrc
PATH=/bin:/usr/bin:/usr/bin
DEFAULT=/phpmail/메일서버도메인/phpmail/Maildir/
MAILDIR=/phpmail/메일서버도메인/phpmail/Maildir/
LOGFILE=/var/log/qmail/procmail
VERBOSE=no
SHELL=/bin/sh
###### 제목 디코딩 ######
:0 Efhw
*^(Subject|From|Cc):.*=\?EUC-KR\?(B|Q)\?
|formail -c | hcode -dk -m
:0 Efhw
*^(Subject|From|Cc):.*=\?ks_c_5601-1987\?(B|Q)\?
|formail -c | hcode -dk -m
#########################
:0
* ^Subject: .*(advert|광고|홍보|廣告|몰카)
"/phpmail/메일서버도메인/phpmail/Trash/cur"

# /var/qmail/bin/maildirmake /phpmail/메일서버도메인/phpmail/Trash

quota 설정
 # cp qmail-quota /var/qmail/bin
# chmod 755 /var/qmail/bin/qmail-quota
# vi /phpmail/메일서버도메인/phpmail/.qmail
|/var/qmail/bin/qmail-quota
|/var/qmail/bin/preline /usr/bin/procmail -p -m /phpmail/메일서버도메인/phpmail/.procmailrc  
# echo 1024 > /phpmail/메일서버도메인/phpmail/.quota
# touch /var/log/qmail/procmail
# chown -R nobody:nobody /var/log/qmail/procmail

autorespond 설정
 # gzip -d autorespond-2.0.3.tar.gz
# tar xvf autorespond-2.0.3.tar
# cd autorespond-2.0.3
# make
# make install
# vi /phpmail/메일서버도메인/phpmail/.qmail
|/var/qmail/bin/qmail-quota
|/var/qmail/bin/qmail-autorespond 86400 5 /phpmail/메일도메인/phpmail/.autorespond /var/log/qmail/vaca 0 $
|/var/qmail/bin/preline /usr/bin/procmail -p -m /phpmail/메일서버도메인/phpmail/.procmailrc  
# mkdir -p /var/log/qmail/vaca
# chown -R nobody:nobody /var/log/qmail/vaca
# echo "test" > /phpmail/메일서버도메인/phpmail/.autorespond
* 정식배포판에서 제가 약간의 소스수정을 했습니다. 배포판을 설치하시면 안되실겁니다 :)


apache 설정
 # vi /usr/local/apache/conf/httpd.conf
* 1036라인 아래에 다음내용을 추가
AddType application/x-httpd-php .html .php .ph

# cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
# /etc/init.d/httpd start


phpmail 1.0.x 설정

압축풀기
 * DocumentRoot 디렉토리에 압축파일을 다운받는다  
# gzip -d phpmail-1.0.x.tar.gz
# tar xvf phpmail-1.0.x.tar
# cd phpmail-1.0.x

테이블 작성
 * 먼저 작성된 mailuser테이블을 삭제한다  
# /usr/local/mysql/bin/mysql -u phpmail -p phpmail
mysql> drop table mailuser;
mysql> exit;
# cd sql
# /usr/local/mysql/bin/mysql -u phpmail -p phpmail < phpmail.sql
Enter password:
테이블이 제대로 생성됐는지 확인한다
# /usr/local/mysql/bin/mysql -u phpmail -p phpmail
mysql> show tables;
+-------------------+
| Tables_in_phpmail |
+-------------------+
| mailaddr |
| maildomn |
| mailgrup |
| mailnoti |
| mailpop3 |
| mailpost |
| mailrule |
| mailuser |
+-------------------+
8 rows in set (0.01 sec)  
maildomn테이블에 도메인정보를 입력한다
mysql> insert into maildomn values ('메일서버도메인명', '회사명', '관리자아이디', '관리자메일주소', '관리자전화번호', '관리자핸드폰번호', '도메인디스크위치', '도메인당 아이디갯수', '도메인기본제한용량', '등록일자', '사용여부');
sample> insert into maildomn values ('nsets.org', 'phpmail', 'popori', 'popori@kldp.org', '02-2103-xxxx', '017-339-xxxx', '/phpmail/nsets.org', '20', 10240, '2003-04-28', 'Y');

디렉토리 생성
 # mkdir -p /phpmail/nsets.org
첨부파일 업로드 디렉토리생성
# mkdir -p /phpmail/files
# chown -R nobody:nobody /phpmail

환경설정
 # vi DocumentRoot/phpmail-1.0.x/lib/config.lib.html
관리자 메일주소입력
> $phpmail["admin"] = "popori@kldp.org";
편지함의 홈디렉토리 설정
> $phpmail["mhome"] = "/phpmail"; 편지함 홈디렉토리가 NFS일경우 nfs주석을 해제 선택해준다
> $phpmail["mtype"] = "lfs"; # $phpmail["mtype"] = "nfs"; 첨부파일 업로드 디렉토리설정
$phpmail["upload"] = $phpmail["mhome"]."/files/";

접속확인
 브라우저를 띄우고 phpmail접속을 확인한다
http://도메인//phpmail-1.0.x

'linux > Mail' 카테고리의 다른 글

qmail FAQ  (0) 2007.03.16
qmail 과 삶  (0) 2007.03.16
qmail+phpmail+imap4.7  (0) 2007.03.15
squirrelmail+spamassasin+qmail-scanner -- imsi  (0) 2007.03.15
Qmail installation --임시  (0) 2007.03.15
Posted by efrit
,