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 설정
bibaram