사이드바 영역으로 건너뛰기

게시물에서 찾기2006/07

DNS Authoritative answer & Non-authoritative answer

Authoritative answer & Non-authoritative answer

 

Name Server는 질의에 대한 결과를 캐쉬에 저장하고 있기 때문에 같은 질의가 요구되었을 때 Namespace를 뒤지지 않고 캐쉬의 자료로 빠르게 응답한다. 캐쉬의 자료는 Resolving시 얻은 TTL(Time To Live) 시간 동안에만 유효하고, TTL 경과후에는 파기된다. 클라이언트의 도메인 Resolving 요청시 네임서버가 캐쉬의 자료로 응답 할 경우는 Non-authoritative answer이고, 캐쉬에 자료가 없거나, 자료의 TTL이 만기되어 해당 도메인의 Primary 네임서버에서 직접 자료를 얻어 답변을 주었을 경우가 Authoritative answer이다.

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

/var/qmail/bin/qmail-smtpd: error while loading shared libraries: libc.so.6: failed to map segment from shared object: Cannot allocate memory

짜증이 물밀듯이...

리눅스는 다 좋은데 이렇게 사소한 지점에서 문제가 일어나고 그 해결방법또한 사소하게(?) 해야 하는 거

 

/var/qmail/bin/qmail-smtpd: error while loading shared libraries: libc.so.6: failed to map segment from shared object: Cannot allocate memory

 

이런 에러가 계속 일어나서 문제가 무언지 확인하느라고 하루를 꼬박 보냈는데 결론은...

 

 

# vi /var/qmail/supervise/qmail-smtp/run

 

해줘서

 

softlimit -m 5000000

 

라고 되어 있는 부분의 숫자를 늘려주면 되는 거였다...

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

메일서버 테스트

텔넷을 이용해 SMTP(25) 메일 발송이 가능한지 테스트

------------------------------------------------------------------------------------

C:>nslookup

>set type=mx

>domain.com

C:>telnet mail.domain.com 25



220 mail.domain.com Microsoft ESMTP MAIL Service, Version: 6.0.3790.0 ready at Tue, 25 Jan 2005 22:57:57 +0900
helo
250 mail.domain.com Hello [210.96.xxx.xxx]
mail from: marine6309@gmail.com
250 2.1.0 marine6309@gmail.com....Sender OK
rcpt to: marine6309@gmail.com

250 2.1.5 marine6309@gmail.com

data
354 Start mail input; end with .
subject: telnet mail test           <- 엔터 두 번



telnet mail test
.
250 2.6.0 <6ZYX20mgq00000002@mail.domain.com> Queued mail for delivery
quit
221 2.0.0 mail.domain.com Service closing transmission channel


호스트에 대한 연결을 잃었습니다.
진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

tcpserver: fatal: unable to bind: address already used

메일 프로세스 중 남아 있는 게 있을 때

 

1)

# ps -ef|grep qmail

 

를 하여서 떠있는 프로세스를 모두 죽이고 다시 시작해 본다.

 

2)

rprm 설치되어 있는 sendmail 이 있는지 확인해보고 있으면 삭제하고 다시 해본다.

 

3)

#netstat -na|grep LISTEN|grep 25

해보면 25번포트(smtp) 에 리슨하고 있는 것이 없어야 재시작이 가능

 

4)

 

lsof -i:25

해서 해당 PID 를 Kill 하고 다시 시작

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

qmail-quota

#!/bin/sh

# Qmail - mailquotacheck
#
# Author: Paul Gregg <pgregg@tibus.net>
# Url: http://www.tibus.net/pgregg/projects/qmail/
# Run this program ala: |mailquotacheck   before your ./Maildir/ or ./Mailbox
# entry in the .qmail file. e.g:
# |/usr/local/bin/mailquotacheck
# ./Maildir/

# Default quota is set to 3000Kb per user, this can be changed below

# You can also install per user quotas which will override the defaults
# by creating a .quota file in the same directory as the .qmail file, e.g:
# echo 10240 > .quota
# this will give that user a 10Mb mail quota

# Individual per message quotas can also be used by creating a file telling
# mailquotacheck that maximum permitted size per email - this is useful
# when you want to allow someone, say, a 20Mb limit but want to prevent emails
# larger than 5Mb. e.g:
# echo 5120 > .maxmsgsize

# Program location defs:
cat="/bin/cat"
expr="/usr/bin/expr"
wc="/usr/bin/wc"
du="/usr/bin/du"
bc="/usr/bin/bc"
cut="/bin/cut"
awk="/bin/awk"
echo="/bin/echo"

# Program defaults
# quota is the default user quota if the user does not have a .quota file
quota=3000
# hardquotabuffer is the 'extra' space allowed for small (<1Kb) messages.
hardquotabuffer=100

# -------------------------------------------------------------------------
# You should not need to change anything below here
# -------------------------------------------------------------------------


# Find out how big the email is in Kb - We don't care about < 1Kb messages.
msgbytes=`$cat - | $wc -c`
ERROR=$?
if [ ${ERROR} -ne 0 ]; then
  # If this fails then you are in trouble ;) - Check program defs at the top.
  $echo "QUOTACHECK ERROR: The mail quotacheck program cannot determine the size ofnthis message. Please inform postmaster of the site you are trying to mail to."
  exit 100
fi
msgkb=`$expr $msgbytes / 1024`
# or you can use:
# msgkb=`$echo $msgbytes / 1024 | $bc`


# Get the users 'home' directory - where there .qmail file is
dir="$HOME"


# Figure out a users mail quota - default is 3000Kb (see above)
# If there is a file '.quota' in their dir then use that value instead.
if [ -f "$dir/.quota" ]; then
  quota=`$cat $dir/.quota 2>/dev/null`
  ERROR=$?
  if [ ${ERROR} -ne 0 ]; then
    $echo "An error occurred while trying to read the recipients quota limit.nDelivery will be attempted again later."
    exit 111
  fi
fi


# Impose a maximum 'per message' email size.  Use the users quota as standard
# but if there is a file '.maxmsgsize' then use that value.
maxmsgsize=$quota
if [ -f "$dir/.maxmsgsize" ]; then
  maxmsgsize=`$cat $dir/.maxmsgsize`
  ERROR=$?
  if [ ${ERROR} -ne 0 ]; then
    $echo "An error occurred while trying to read the recipients maximum message size.nDelivery will be attempted again later."
    exit 111
  fi
fi

absquota=`$expr $quota + $hardquotabuffer`

# What is the maildir's current disk usage
du=`$du -sk $dir | $awk {'print $1'}`
ERROR=$?
if [ ${ERROR} -ne 0 ]; then
  $echo "An error occurred while trying to get the user's current quota usage.nDelivery will be attempted again later."
  exit 111
fi

duwould=`$expr $du + $msgkb`

#debug - mail all these vars to me.
#set | mail pgregg@tibus.net

# Refuse the email if it is too big
if [ $msgkb -gt $maxmsgsize ]; then
  $echo "Sorry, This message is larger than the current maximum message size limit:nYour message was $msgkb Kbytes and the maximum is $maxmsgsize Kbytes."
  exit 100
fi

# Check if the user would be above the absolute quota
if [ $duwould -gt $absquota ]; then
  # Ok, we aren't going to deliver this message, lets try and give the sender
  # a decent error message
  if [ $du -gt $quota ]; then
    $echo "User's Disk Quota Exceeded.nSorry, your message cannot be delivered as the recipient has exceededntheir disk space limit for email."
  else
    $echo "Sorry, Your message cannot be delivered bacause the recipient does not havenenough disk space left for it.";
  fi
  if [ $du -lt $absquota ]; then
    $echo "n However, small (< 1Kb) message will be delivered should you wish
    toninform the person you tried to email."
  fi
  exit 100
fi

# If the email would put the user over quota, then refuse it (accept < 1Kb)
if [ $msgbytes -gt 1024 ]; then
  if [ $duwould -gt $quota ]; then

    $echo "User's Disk Quota Exceeded.nSorry, your intendend recipient has too much mail stored in their mailbox.nYour message totalled $msgkb Kbytes ($msgbytes bytes).nHowever a small (< 1Kb) message will be delivered should you wish toninform the person you tried to email."
    exit 100

  fi
fi

exit 0

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

apache + php + mysql + mssql + qmail + phpmail(1)

필요한 파일들은 /usr/local/src 에 모아놓고 작업한다.

구성이 복잡한 세팅의 경우에는 text 파일로 작업하고 #sh text 파일의 형태로 실행.

실행되는 서버의 경우(구성파일에 의해 구동 환경이 정해지는 경우) /usr/local 밑에 설치한다.

 

cent-os 4.3 으로 시스템을 구성하였고 꼭 필요한 경우가 아니면 yum 으로 rpm 인스톨해서 사용하였다.

 

세팅한 서버 종류

apache 1.3.33

mysql 4.1.11

curl 7.13.1

mhash 0.9.2

libmcrypt 2.5.7

clibpdf

swf

mm

freetype

jpeg

libungif

libpng

libtiff

t1lib

ming

gd

freetds

 

 

export LANG=ko_KR.eucKR

요새는 utf-8 형식으로 되어 있어서 언어 설정을 안해주면 화면이 온통 맛이 간다. perl의 경우에는 계속 에러메시지 봐야 하고.

일단 새로 리눅스를 세팅한 경우에는 언어설정해주는게. 참고로 이건 bash에서.

 

# vi /etc/sysconfig/i18n

LANG="ko_KR.eucKR"
SUPPORTED="ko_KR.eucKR:ko_KR:ko"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"

요렇게 적어주면 에러메시지가 뒹귁어로 나오는 건 안볼수 있다.

 

1. apache 설치(자세한 설정은 php를 설치한 후에 한다.)

  //rpm으로 깔려 있는 apache 가 있는지 확인 후 삭제한다.

  #rpm qa | grep apache

  #rpm e apache

 

  # tar xvfz apache_1.3. 33.tar.gz
  #vi configure-apache.txt

 

./configure

--prefix=/usr/local/apache

--enable-shared=max

--enable-module=rewrite

--enable-shared=rewrite

--enable-module=info

--enable-shared=info

--enable-module=so

 

(사실 아파치의 경우 그냥 깔아도 큰 문제 없는데 설정 안해주면 꼭 나중에 말썽이다.)

 

  # cd apache_1.3. 33

  #sh ../ configure-apache.txt
  # make
  # make install

 

2. cronlog 설치

 

http://cronolog.org/download/index.html

#./configure
#make
#make install

httpd.conf 수정
CustomLog "|/usr/local/sbin/cronolog --symlink=/var/log/httpd/access_log /var/log/httpd/%Y/%m/access_log.%Y%m%d" combined

 

3.  mysql 설치

 

  # tar xvfz mysql-4.1.11. tar.gz

  #vi configure-mysql.txt

./configure

--prefix=/usr/local/mysql

--localstatedir=/usr/local/mysql/data

--enable-local-infile

--enable-thread-safe-client

--with-extra-charsets=all

--with-zlib

--with-charset=euckr

--with-extra-charsets=complex

--without-readline

 

(mysql 이 4.1 대로 올라가면서 콘솔상에서 한글이 안써지는 문제가 있다.  charset 하고 readline 설정을 해줘야 웹상에서 보이는 한글과 콘솔상에서 보이는 한글이 맞춰진다.)

 

  # cd mysql-4.1.11
  # sh ../ configure- mysql.txt

  # make
  # make install-strip
  # /usr/local/mysql/bin/mysql_install_db

 

(mysql을 편하게 사용하기 위한 스크립트 작성)
  # vi /usr/local/mysql/share/mysql/mysql.server

 

$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file >/dev/null 2>&1 &

부분을

$bindir/mysqld_safe --user=root --datadir=$datadir --pid-file=$pid_file >/dev/null 2>&1 &

로 바꾼다.

 

(세팅 초기에는 위의 부분에 --log=로그파일명 을 덧붙여서 초기 세팅과정에서 에러나 오류가 있는지 확인하는 것이 좋다.)

 

# 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/mysqld start 

 

- 동적 라이브러리링크

# vi /etc/ld.so.conf
/usr/local/mysql/lib/mysql 추가
ldconfig

 

 

4. freetds 설치

 

mssql 을 사용하기 위해서 freetds 를 설치한다.

# tar xvfz feetds-0.63.tgz

# cd freetds-0.63/

# ./configure --prefix=/usr/local/freetds
# make
# make install

 

 

 

5. qmail 설치

 

(제발 패치 안할수는 없나.. 이건 정말 삽질이다.)

 

종류도 많은 qmail 패치들...

 

 

일단 필요한 패치는 qmail-1.03-mysql-0.7.2.patch

http://download.softagency.net/mysql/Downloads/Contrib/qmail-1.03-mysql-0.7.2.patch.gz

여기에서 구했다.

 

# tar xvfz qmail-1.03.tar.gz

# cd qmail-1.03

# patch -p1 < ../qmail-1.03-mysql-0.7.2.patch

# patch < ../qmail-1.03.errno.patch

 

패치후에 수정해줘야 하는 작업이 몇가지 있다.(mysql 의 인스톨 위치 때문에)

 

mysql.c (mysql.h 절대 위치) :

#include mysql/mysql.h

Makefile (수정내용) :

#include  /usr/local/mysql/include/mysql/mysql.h

 

# for Linux libc6
MYSQL_LIBS=/usr/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl 를
MYSQL_LIBS=/usr/local/mysql/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl

qmail-getpw.c (수정내용) :

#include mysql/mysql.h 를
#include  /usr/local/mysql/include/mysql/mysql.h 

 

계정 생성

 

# 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

 

# make

# make setup check

# ./config-fast 메일서버도메인명

 


 

6.  ucspi-tcp 설치

 

# tar xvfz ucspi-tcp-0.88.tar.gz

# cd ucspi-tcp-0.88

# patch < ../ucspi-tcp-0.88-mysql.patch

# patch < ../ucspi-tcp-0.88.errno.patch

 

db.c 수정 (mysql.h 절대 위치)

#include
#include

conf-ld 수정

gcc -s  -I/usr/include/mysql -L/usr/local/lib/mysql -lmysqlclient 를
gcc -s -I/usr/local/mysql/include/mysql -L/usr/local/mysql/lib/mysql -lmysqlclient

# make

# make setup check

 

 

7. daemontools 설치

 

# tar xvfz daemontools-0.76.tar.gz

# cd admin/

 

# patch < ../daemontools-0.76.errno.patch

 

나오는 파일 패스입력하는 프롬프트에

File to patch: daemontools-0.76/src/error.h 입력

 

# cd 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 "관련프로세스종료"

 

8. checkpassword 설치

 

# tar xvfz checkpassword-0.90.tar.gz

# cd checkpassword-0.90

# patch < ../checkpassword-0.90-mysql-0.6.6.patch

 

패치는 이걸로.. 버전이 높다고 해서 꼭 좋은 것은 아닌가봐.. 아님 내가 모르는 뭔가가 있던가..

 

mysql.c (mysql.h 절대 위치) :

#include
#include

Makefile (수정내용) :

MYSQL_LIBS=/usr/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl 를
MYSQL_LIBS=/usr/local/mysql/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl

(# Don't edit Makefile! Use conf-* for configuration.
라고 되어 있는데도 이걸 수정하다니... 수정안하면 더 귀찮아지니까..

결국 제작자의 의지라는 건 뭐 수용할 수 있으면 수용하는 정도 ㅎㅎ)

 

# patch < ../checkpassword-0.90.errno.patch

 

# make

# make setup check

 

 

9. 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

 

# chmod 755 /etc/init.d/qmail

 

# 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 (Host,User,Password) values ('localhost', 'phpmail', password('phpmail'));

 

mysql> insert into db values ('localhost', 'phpmail', 'phpmail', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'Y', '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', '/home/phpmail/메일서버도메인명/phpmail');

 

mysql> exit

 

# mkdir -p /home/phpmail/메일서버도메인명/phpmail

# /var/qmail/bin/maildirmake /home/phpmail/메일서버도메인명/phpmail/Maildir

# echo ./Maildir/ > /home/phpmail/메일서버도메인명/phpmail/.qmail
# chown -R 99:99 /home/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

 

 

10. imap 설치

# ln -s /usr/local/mysql/lib/mysql/libmysqlclient.a /usr/lib/mysql/libmysqlclient.a

(귀찮아서...)

 

다시 imap4.7 로 복귀...

 

Linux 7.1이상에서는 ucspi-tcp, imap 설치시에 time.h가 문제가 됩니다.
따라서, 아래와 같이 수정하신다음에 다른 패키지를 컴파일하거나 설치하실때는
원래대로 되돌려 놓으면 됩니다.

# mv /usr/include/sys/time.h /usr/include/sys/time.h.ori
# ln -s /usr/include/time.h /usr/include/sys/time.h

 

 

# tar xvfz imap-2001a_patched.tar.gz

# cd imap-2001a

# make slx PASSWDTYPE=std SSLTYPE=none

# cd ..

# cp -R imap-2001a /usr/local/imap

# cd /usr/local/imap/

# ln -s c-client/ include

# ln -s c-client/ lib

# cd 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

11. libiconv 설치

 

http://www.gnu.org/software/libiconv/

 

# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.2.tar.gz

 

# tar xvfz libiconv-1.9.2.tar.gz

# cd libiconv-1.9.2

# ./configure --enable-static --enable-shared

# make

# make install

 

12. freetype2 설치

 

# tar xvfz freetype-2.2.1.tar.gz

# cd freetype-2.2.1

# ./configure --enable-shared --enable-static

# make

# make install

 

 

 

 

13. PHP 설치

 

# tar xvfz php-4.4.2.tar.gz

# cd php-4.4.2

# vi ../conf-php.txt

 

CFLAGS="-L/usr/local/mysql/lib/mysql -lmysqlclient" ./configure
--with-apxs=/usr/local/apache/bin/apxs
--with-kerberos
--with-mysql=/usr/local/mysql
--with-imap=/usr/local/imap
--with-iconv
--with-gd
--with-jpeg-dir
--with-zlib
--with-png-dir
--with-gif
--with-tiff
--with-freetype-dir=/usr
--with-dbm
--with-gdbm
--with-ldap
--with-xml
--with-dom
--with-language=korean
--with-charset=euc_kr
--with-ttf
--with-mssql=/usr/local/freetds
--enable-sockets
--enable-pcntl
--enable-mbstring
--enable-mbregex
--enable-mssql
--enable-ftp
--enable-sockets
--enable-track-vars
--enable-module=so
--enable-gd-native-ttf
--enable-ftp
--enable-sockets
--disable-debug
--enable-sysvsem
--enable-sysvshm
--enable-shmop
--enable-track-vars
--enable-freetype-4bit-antialias-hack
--enable-calendar
--enable-sigchild
--enable-magic-quotes
--enable-trans-sid
--enable-inline-optimization
--enable-bcmath
--disable-cgi
--with-config-file-path=/usr/local/apache/conf
--enable-versioning
~

 

# sh ../conf-php.txt

 

흠.. 에러가 나네요...

jpeg 를 못찾는다는 에러가

 

지금 서버를 cent-os 4.3 으로 깔았는데 이게 좋은 이유중의 하나가 yum 이라는 유틸을 이용해서 업데이트가 간편하다는 점...

 

그래서

 

#yum list

#yum -y install libjpeg-devel.i386

 

그리고는 다시

#sh ../conf-php.txt

 

흠.. 다시 에러가

이번엔 png를 못찾는다고

 

그래서

#yum -y install libpng-devel.i386

 

그리고는 다시

#sh ../conf-php.txt

 

 

 

이번엔 에러가 나지 않고 구성이 끝났네요..

 

짜증이 물밀듯이 밀려온다. CFLAGS="-L/usr/local/mysql/lib/mysql -lmysqlclient" 를 선언해 주지 않으면 에러가 나는구만....

 

# 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

 

mssql.datetimeconvert = Off

upload_max_filesize = 20M

 

 

 

# vi /usr/local/apache/conf/httpd.conf

 

AddType application/x-httpd-php .html .htm .php .ph .inc .sc
추가

 

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

 

14. hcode 설치

 

# tar xvfz hcode2.1-mailpatch3.tar.gz

# cd hcode2.1-mailpatch3

# make

# cp hcode /usr/bin

 

 

15. procmail 설정

 

# vi /home/phpmail/메일서버도메인/phpmail/.qmail

|/var/qmail/bin/preline /usr/bin/procmail -p -m /home/phpmail/메일서버도메인/phpmail/.procmailrc

 

# vi /home/phpmail/메일서버도메인/phpmail/.procmailrc

PATH=/bin:/usr/bin:/usr/bin
DEFAULT=/home/phpmail/메일서버도메인/phpmail/Maildir/
MAILDIR=/home/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 /home/phpmail/메일서버도메인/phpmail/Trash

 

16. quota 설정

 

# cp qmail-quota /var/qmail/bin

# chmod 755 /var/qmail/bin/qmail-quota

 

# vi /home/phpmail/메일서버도메인/phpmail/.qmail

|/var/qmail/bin/qmail-quota
|/var/qmail/bin/preline /usr/bin/procmail -p -m /home/phpmail/메일서버도메인/phpmail/.procmailrc

 

# echo 1024 > /home/phpmail/메일서버도메인/phpmail/.quota
# touch /var/log/qmail/procmail
# chown -R nobody:nobody /var/log/qmail/procmail

 

 

17. autorespond 설정

 

# tar xvfz autorespond-2.0.3.tar.tar

# cd autorespond-2.0.3

# make

# make install

 

# vi /home/phpmail/메일서버도메인/phpmail/.qmail

|/var/qmail/bin/qmail-quota
|/var/qmail/bin/qmail-autorespond 86400 5 /home/phpmail/메일도메인/phpmail/.autorespond /var/log/qmail/vaca 0 $
|/var/qmail/bin/preline /usr/bin/procmail -p -m /home/phpmail/메일서버도메인/phpmail/.procmailrc

 

# mkdir -p /var/log/qmail/vaca
# chown -R nobody:nobody /var/log/qmail/vaca
# echo "test" > /phpmail/메일서버도메인/phpmail/.autorespond

 

18. phpmail 1.0.x 설정

 

# tar xvfz phpMail-1.0.1.tar.gz

# cd phpMail-1.0.1

 

테스트 중에 생성한 테이블 삭제

 

# /usr/local/mysql/bin/mysql -u phpmail -p phpmail

mysql> drop table mailuser;

mysql> exit

 

테이블 작성

# /usr/local/mysql/bin/mysql -u phpmail -p phpmail < phpmail-linux.sql

 

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 /home/phpmail/files

# chown -R nobody:nobody /home/phpmail/

 

 

 


진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

살면서 회사에 사표를 처음 내보네요...

 
그동안 회사에서 사장이 새로 들어오고(원래 우리 회사가 감정평가하고 부동산 프렌차이즈사업을 하려는 벼룩시장하고 합해져서 생긴회사.. 그동안 계속 적자나고 그런 부분을 벼룩시장에서 보전해주고 하다가 결국은 사장 파견) 기존의 사장이 감정평가 회사를 분사시켜서 나가고.. 내가 따라다니는 상무님은 중간에서 상황만 보다가(원래는 내년쯤에 인터넷 감정회사로 분사할 계획이었어요.) 결국은 6월말에 사표내는 걸로 결론이 난 통에 나도 30일에 사표를 냈습니다.
 
새로온 사장은 내가 하는 일이 뭔지를 모르니까 별 말은 없을건데...(뭔 놈의 회사가 퇴직을 하려면 한달전에 사표를 제출하고 부서장 면담을 해야만 퇴직을 인정해 준다는 허무맹랑한 이야기를.. 퇴직금을 안준다나요.. 퇴직 후 14일 내에는 퇴직금 주게 되어 있습니다. 안주면 노동부에 고발해야지...) 팀장은 회사하고 이야기 잘 되어서 사표내면 수리해주기로 했다고 하네요.. 그래서 목요일 까지만 근무하기로 했습니다. 흠 퇴직금은 언제, 얼마나 주려나... 잘만하면 노트북 하나 살 정도는 되지 않을까 기대합니다. 혹시 술살지 모른다고 기대하시는 분들은 꿈깨시길... 둘째도 들어선 마당에 한푼이라도 아끼는 자린고비 단단이아빠..
 
생각해보면 2001년도에 이 바닥에 뛰어들면서 사표는 처음 내보는 것 같네요.. 처음 동생하고 하던 사업은 업종을 바꿔가면서(생각해보면 아찔합니다. 인터넷 게임->성인만화->성인게임->웹에이전시) 2004년까지 유지하다가 결국은 망하고,2004년에 들어간 회사는 마케팅 대행 회사였는데 지금하는 인터넷 감정일을 하다가 저는 이 회사로 들어오게 되면서 뭐 사표나 퇴직금 그런 이야기는 못하고..(원래 아는 형님이라 이후에 돈독한 관계만 유지)
하긴 마님께서 이 회사에 들어온 다음에 마음을 놓으시게 되었으니까요.. 월급 안밀리고 나오고..
 
이후 일은 무지하게 걱정은 되는데(상무님께서 회사를 만들어서 거기서 일하는데 과연 지금처럼 월급 안밀리고 잘 나올 수 있을지는 해봐야 아는 거니까...) 사표내는 기분은 상큼(?)한 경험이었습니다.
 
한줄요약
 
사표냈다. 퇴직금 나와도 술 못산다. 혹시나 지금 가는 회사 망하면 일자리 구할 때 도와줍쇼.
진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크