2012-10-31
java Framework]윈도우에서 톰캣5.0과 아파치2.0 그리고 jk2 연동하는 방법
<<윈도우에서 톰캣5.0과 아파치2.0 그리고 jk2 연동하는 방법 >>
우선 다음과 같은 S/W가 필요하다.
Apache2.0.45
J2SDK 1.4.1_02 (http://httpd.apache.org/download.cgi에서 apache_2.0.46-win32-x86-no_src.msi를 다운로드 )
Jakarta Tomcat4.1.24 (http://jakarta.apache.org/builds/jakarta-tomcat-4.0 /release/v4.1.24/bin/에서 jakarta-tomcat-4.1.24.exe 또는 jakarta-tomcat-4.1.24-LE-jdk14.exe를 다운로드합니다. J2SDK 1.4가 이미 설치되어 있다면 LE 버전만 받으면 됩니다. 그렇지 않다면 jakarta-tomcat-4.1.24.exe를 다운로드)
mod_jk2 (http://jakarta.apache.org/builds/jakarta-tomcat- connectors/jk2/release/v2.0.2/bin/win32/참고 윈도우용 mod_jk2-2.0.43.dll)
필 요한 소프트웨어를 모두 구했으면 각각을 설치한다. 가급적이면 설치는 J2SDK부터 설치하는 것이 좋다. 그 다음 아파치나 톰켓을 차례대로 설치하면 된다. JK2는 아파치 설치 후, modules 디렉토리에 mod_jk2-2.0.43. dll 파일을 복사하면 된다.
환경 설정
1) JAVA_HOME
JDK가 설치된 디렉토리를 JAVA_HOME 이라는 변수이름으로 환경변수에 추가한다. 바탕화면의 '내 컴퓨터'를 선택하고 팝업메뉴를 띄워 등록정보에 들어간 다음 ‘고급→환경변수’를 선택하면 된다. 모든 사용자에 관계없이 JAVA_HOME이 유효하게 하려면 시스템 변수에, 자신의 계정에만 유효하게 하려면 사용자 변수쪽에 추가하면 된다. 변수명은 JAVA_HOME으로 하고 변수값은 JDK를 설치한 디렉토리를 지정해주면 된다(예. C:\J2SDK_1.4.1_01). BIN 디렉토리까지 설정해주는 것이 아님을 기억하자.
JAVA_HOME 변수의 경우는 TOMCAT에서 JSP 컴파일 등을 할 때 사용할 뿐만 아니라 다른 자바관련 툴들(ANT같은)에서도 이 변수를 사용하므로 어떻든 간에 한번은 지정하는 것이 작업에 도움이 될 것이다.
2) CLASSPATH
TOMCAT 에서는 JSP를 컴파일 할 필요가 있을 때 JAVA_HOME에서 설정된 패스를 기준으로 lib 디렉토리를 뒤지거나 CLASSPATH 환경변수 설정을 참고해서 컴파일에 사용할 패키지인 servlet.jar를 찾는다. 따라서 servlet.jar를 $JAVA_HOME/jre/lib/ext 같은 곳에 넣어주거나 servlet.jar가 포함되어 있는 TOMCAT의 $TOMCAT_HOME/lib 디렉토리에 CLASSPATH 설정을 해주면 된다. 환경변수 설정하는 요령은 앞의 JAVA_HOME의 그것과 동일하다.
3) PATH
자바소스 컴파일에는 javac.exe가 사용되기 때문에, 이를 시스템 어디에서나 사용할 수 있도록 환경변수의 PATH에다가 $JAVA_HOME/bin 디렉토리를 추가해주면 된다. 자바프로그래머라면 대부분 이미 추가해 놓았으리라 생각한다.
4) 아파치 환경설정 - httpd.conf 와 workers2.properties
$APACHE/conf 디렉토리에 있는 httpd.conf 파일을 열고, LoadModule 이라고 되어있는 부분들을 찾아서 적당한 줄에다가 다음과 같이 입력한다.
LoadModule jk2_module modules/mod_jk2-2.0.43.dll
그 후에 DocumentRoot 항목을 찾아서 $TOMCAT_HOME/webapps과 같은식으로 지정해준다.
예) DocumentRoot "c:\Program Files\Apache Group\Tomcat 4.1\webapps"
그리고 아래쪽에 있는 Directory 항목 역시 동일하게 수정해준다.
예) <Directory "C:\Program Files\Apache Group\Tomcat 4.1\webapps">
다 끝냈으면 이번에는 workers2.properties를 편집한다. 이 파일은 기본적으로 아파치에 포함되지 않으므로 conf 폴더 내에서 찾을 수가 없다. 따라서 직접 만들어줘야 하는데 $APACHE_HOME/conf에다가 workers.properties 파일을 만들고 다음의 내용을 복사해넣고 저장하면 된다.
# Define the communication channel
[status:]
[uri:/jkstatus/*]
group=status:
[shm:]disabled=1
[channel.socket:localhost:8009]
info=Ajp13 forwarding over socket
tomcatId=localhost:8009
# Web Applicaton을 설정
[uri:/examples/*]
info=Map the whole webapp
위 에서 언급한 바와 같이 workers2.properties 파일은 $APACHE/conf에 있어야만 아파치가 읽어들일 수 있기 때문에 특히 파일의 경로에 주의해야 한다. ($TOMCAT_HOME/conf 가 아님)
5) 톰캣 환경설정 - jk2.properties 과 server.xml
$TOMCAT_HOME/conf/jk2.properties 파일을 열고 편집하면 되는데 내용을 잘 모른다면 다음의 셋팅예제를 그대로 복사해 써도 무방하다.
## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED
## WHEN YOU EDIT THE FILE.
## COMMENTS WILL BE _LOST_
## DOCUMENTATION OF THE FORMAT IN JkMain javadoc.
# Set the desired handler list
handler.list=apr,channelSocket,request,shm
# Override the default port for the socketChannel
# Set the default port for the channelSocket
channelSocket.port=8009
# Default:
# channelUnix.file=${jkHome}/work/jk2.socket
# Just to check if the the config is working
# shm.file=${jkHome}/work/jk2.shm
# In order to enable jni use any channelJni directive
# channelJni.disabled = 0
# And one of the following directives:
# apr.jniModeSo=/opt/apache2/modules/mod_jk2.so
# If set to inprocess the mod_jk2 will Register natives itself
# This will enable the starting of the Tomcat from mod_jk2
# apr.jniModeSo=inprocess
# Dynamic library
serverRoot= "C:/Program Files/Apache Group/Tomcat/webapps "
완료했으면 이번에는 server.xml을 편집한다. $TOMCAT_HOME/conf/server.xml 파일을 열고 아래의 부분을 찾아 주석처리 하거나 삭제한다. 주석처리는 ‘<!-’로 시작해서 ‘->’로 끝내면 된다. 아래부분은 TOMCAT에 포함되어 있는 Coyote 웹서버에 연결하는 커넥터인데, 여기서는 웹서버로 아파치를 사용할 것이므로 필요없다.
<!--
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="20000"
useURIValidationHack="false" disableUploadTimeout="true" />
-->
위의 내용이 있는 곳에서 조금 아래쪽을 보면 다음과 같은 부분이 있다. org.apache.coyote.tomcat4.CoyoteConnector라는 이름의 Connector가 mod_jk2로 연결할 때 사용하는 부분으로, 아래쪽의 org.apache.ajp.tomcat4.Ajp13Connector가 mod_jk를 사용할 때 쓰는 부분이므로 mod_jk 부분(아래쪽)을 주석 처리하도록 한다.
<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8009" minProcessors="5" maxProcessors="150"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="20000"
useURIValidationHack="false"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!--
<Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
port="8009" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0"/>
-->
서버 구동 확인
톰캣과 아파치를 실행시킨 후 다음의 주소를 입력해 본다.
http://localhost/examples/servlets/index.html
http://localhost/examples/jsp/index.html
제대로 servlet 또는 jsp의 예제 페이지가 나타나고 각 예제들이 올바로 실행된다면 설치가 올바로 이루어진 것이다. 만약 jsp 나 서블릿 파일이 다운로드 된다거나 소스코드가 보인다거나 404 에러 등이 발견되면 어디에선가 셋팅이 잘못된 것이다. 클래스패스의 문제, servlet.jar 패키지의 부재, 잘못된 JDK컴파일러 설치, 설정파일 편집 오류 등 다양한 문제가 있을 수 있다. 아파치의 톰캣의 로그파일과 설치메뉴얼을 보면서 약간의 노력을 더 기울인다면 무난하게 해결 할 수 있을 것이다.
2012-10-14
Linux] apache_php_openssl설치
httpd-2.0.59.tar.gz php-5.1.6.tar.gz 파일 이용.
apache설치
./configure --prefix=/usrl/local/apache --enable-module=so --enable-so
./configure --prefix=/usr/local/apache2 --enable-suexec \
--enable-so --with-suexec-caller=bin \
--enable-ssl --with-ssl=/usr/local/ssl --enable-cache \
--enable-ext-filter --with-z=/usr/include --enable-dav \
--with-dbm=db4 --with-berkeley-db=/usr/local/BerkeleyDB.4.2
make && make install
php설치
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-gd --disable-debug --enable-track-vars --with-jpeg-dir=/usr/local --with-zlib-dir=/usr/local --with-libxml-dir=/usr/local/libxml2
출처 : Tong - journae님의 Windows 통
make && make install
httpd.conf파일에서
LoadModule php5_module module/libphp5.so
파일 존재확인!
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
추가!
cp php.ini-dist /usr/local/lib/php.ini 설정파일 카피!
apache실행
/usr/local/apache/bin/apachectl start
하면
Syntax error on line 232 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: undefined symbol: php_escape_html_entities
라는 에러가 나오네요... nu,m
제가 리눅스 엄청 초보라 어떻게 대처해야 할지 모르겠어요
고수님들 도와주세요 ~~~~
바람난일용이 07-05-17 17:01
혹시 아파치 2개 설치 하셧는지요.. ?
컴파일시에는 --with-apxs2=/usr/local/apache2/bin/apxs 아파치2라는 디렉토리에 하셨는데
실행은 Syntax error on line 232 of /usr/local/apache/conf/httpd.conf:
아니면 디렉토리 이름을 바꾸신건지.... 설치 하고 실행하고 경로가 다르면.. 해당패스가
달라져 에러가 날수잇읍니다...
이부분 체크해 보심이...
혹시 아파치 2개 설치 하셧는지요.. ?
컴파일시에는 --with-apxs2=/usr/local/apache2/bin/apxs 아파치2라는 디렉토리에 하셨는데
실행은 Syntax error on line 232 of /usr/local/apache/conf/httpd.conf:
아니면 디렉토리 이름을 바꾸신건지.... 설치 하고 실행하고 경로가 다르면.. 해당패스가
달라져 에러가 날수잇읍니다...
이부분 체크해 보심이...
서비효과 07-05-17 17:04
앗.. 1mm의 오타가 있었네요.. 감사합니다 ^^
Don't forget to run 'make test'.
Installing PHP SAPI module: apache2handler
/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apache2/build/libtool' libphp5.la /usr/local/apache2/modules
/usr/local/apache2/build/libtool --mode=install cp libphp5.la /usr/local/apache2/modules/
cp .libs/libphp5.so /usr/local/apache2/modules/libphp5.so
cp .libs/libphp5.lai /usr/local/apache2/modules/libphp5.la
libtool: install: warning: remember to run `libtool --finish /usr/local/src/php-5.2.3/libs'
chmod 755 /usr/local/apache2/modules/libphp5.so
[activating module `php5' in /usr/local/apache2/conf/httpd.conf]
Installing PHP CLI binary: /usr/local/php/bin/
Installing PHP CLI man page: /usr/local/php/man/man1/
Installing build environment: /usr/local/php/lib/php/build/
Installing header files: /usr/local/php/include/php/
Installing helper programs: /usr/local/php/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/php/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment: /usr/local/php/lib/php/
[PEAR] Console_Getopt - installed: 1.2.2
[PEAR] Archive_Tar - installed: 1.3.2
[PEAR] Structures_Graph- installed: 1.0.2
pear/PEAR can optionally use package "pear/XML_RPC" (version >= 1.4.0)
[PEAR] PEAR - installed: 1.5.4
Wrote PEAR system config file at: /usr/local/php/etc/pear.conf
You may want to add: /usr/local/php/lib/php to your php.ini include_path
Installing PDO headers: /usr/local/php/include/php/ext/pdo/
2012-09-16
qmail 설치 (text문서)
#시스템 필요사항
#Mysql이 먼저 설치되어 있어야 합니다.
#큐메일은 대부분의 유닉스와 유닉스류 시스템에 설치되고 운영됩니다만 몇가지 필요사항이 있습니다.
#
#
#컴파일동안 컴파일부분에 약 10메가바잇의 여유공간. 컴파일후 옵젝트파일을 제거하면 4메가만 남습니다.
#컴파일러, 시스템헤더파일, 그리고 라입러리 등을 포함하는 완전한 C 개발시스템. 컴파일지시사항은 필요한 부분이 있으면 알려줍니다.
#바이너리, 문서, 그리고 설정 등의 파일에 대해 2-3메가바잇.
#큐에 대한 충분한 디스크공간. 소규모 단일사용자 시스템은 2-3메가바잇만 있으면 됩니다.
대용량 서버는 2-3 기가바잇이 있어야 될지도 모릅니다.
#호환 운영 시스템. 대부분의 유닉스종은 됩니다. 소스트리의 README를 보면 호환판의 리스트가 있습니다.
#DNS로의 접근을 강력히 권장합니다. 그렇지 않으면 큐메일은 smtproutes의 config 파일에 설정된 원격시스템으로만 보냅니다.
#적절한 넷웍 연결. 큐메일은 잘 연결된 시스템에 대해 설계되어서 28.8k 다이얼업에서 멜링리스트를 사용하고 싶지 않을지도 모릅니다. 큐메일을 연결이 나쁜 시스템에서 사용할 수 있도록 하려고 serialmail 패키지가 설계되었습니다. 더 많은 정보는 관련패키지 부록의 시리얼항목을 보시면 됩니다.
#
#2.4 소스를 받으십시오.
#오우케이, 이제 큐메일을 설치할 수 있도록 필요사항에 맞는 시스템을 준비하셨군요.
첫번째 단계는 큐메일과 다른 애드온의 소스코드를 다운로드하는 것입니다.
큐메일은 당연히 필요하고요, ucspi-tcp와 daemontools도 필요할 것입니다.
#
#
#qmail, ftp://koobera.math.uic.edu/www/software/qmail-1.03.tar.gz
#ucspi-tcp, http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
#daemontools, ftp://koobera.math.uic.edu/www/daemontools/daemontools-0.61.tar.gz
#
#웹브라우저나 FTP 클라이언트를 이용해서 이 파일들을 가져오세요.
#
#
#
#2.5 소스를 컴파일하세요.
#컴파일환경을 검증하세요.
#첫번째 할일은 프로그램을 컴파일하기에 필요한 툴을 갖추었는 지의 확인입니다.
이것을 결정하는 것은 사용중인 유닉스종류에 따릅니다. 말씀드릴 수 있는 가장 쉬운 방법은, 보장되지는 않지만, 해보는 겁니다.
#
#
#-----------------------------------------------------------------------------
#유의점: 이것들중 하나라도 통과하면, 다음 항목으로 넘어가셔도 됩니다.
#-----------------------------------------------------------------------------
#
#
#명령행프롬트에서, cc라 쓰고, 엔터를 누르세요:
#$ cc cc: No input files specified $
#
#
#
#답이 비슷하게 나오면, C 컴파일러가 경로에 있는 것입니다.
그렇지 않더라도, 설치되어 있지 않다는 것은 아닙니다.
설치되어 있을 지 모르지만, 경로에 포함되어 있지 않을 수도 있습니다.
물론, 설치되어 있지 않을 수도 있습니다. 이렇게 해보세요.
#
#/usr/bin/cc
#/usr/bin/gcc
#/usr/local/bin/cc
#/usr/local/bin/gcc
#/usr/ccs/bin/cc
#
#소용이 없으면, 플랫폼 특성에 맞는 방법으로 하셔야 합니다.
프롬트에서 다음 중 하나를 하시는데, 사용중인 OS에 따르셔야 합니다.
#
#Red Hat Linux: rpm -qa | grep gcc or rpm -qa | grep egcs
#FreeBSD: GCC가 디폴트로 포함됩니다.
#이번 항목에서는 큐메일을 실제로 컴파일하는 단계를 거칩니다.
오려붙이기가 간편하지만, 그렇게 필요하지는 않습니다.
#
#
#배포판을 풉니다.
#여기까지 오셨으면, 이미 C 컴파일러와 tarball을 준비하신 겁니다.
타볼을 작업하실 디렉토리로 복사하거나 옮기세요. /usr/local/src가 좋은데,
이 경우에는 /usr/local/src/qmail를 세 패케지 모두에 사용할 수 있습니다.
#
#
mkdir -p /usr/local/src/qmail
# mv *.tar.gz /usr/local/src/qmail
#
#
#/usr/local/src/qmail에 세 패케지가 전부 있으므로, 그것들을 푸십시오.
룻이 아니라면 여기에서는 룻이 되셔야 합니다.
프롬트에서 다음과 같이 하세요:
#
#
gunzip qmail-1.03.tar.gz;
tar xvf qmail-1.03.tar;
gzip -d qmail-1.03-mysql-0.6.6.patch.gz;
gunzip checkpassword-0.81.tar.gz;
tar xvf checkpassword-0.81.tar;
gzip -d checkpassword-0.81-mysql-0.6.6.patch.gz;
gunzip ucspi-tcp-0.84.tar.gz;
tar xvf ucspi-tcp-0.84.tar;
gunzip daemontools-0.61.tar.gz;
tar xvf daemontools-0.61.tar;
gunzip rblsmtpd-0.70.tar.gz;
tar xvf rblsmtpd-0.70.tar;
rm *.tar;
cd /usr/local/src/qmail/qmail-1.03;
patch -p1 < ../qmail-1.03-mysql-0.6.6.patch;
#
#
#qmail-1.03, ucspi-tcp-0.84, daemontools-0.61 등의 섭디렉토리가 생깁니다.
qmail-1.03 디렉토리로 가시면 시작하겠습니다.
#
#
#
#디렉토리를 만듭니다.
#필요한 섭디렉토리는 큐메일 설치 프로그램이 만들므로, 큐메일 홈디렉토리만 만들어 주면 됩니다.
#
#
mkdir /var/qmail;
#
#
#그러면 다음 항목으로 갑니다.
#
#
#------------------------------------------------------------------------------
#유의점: 큐메일파일들을 /var가 아닌 다른 곳에 놓고 싶으시면, /var/qmail디렉토리에
# 그곳을 가리키는 심볼릭 링크를 만드시면 됩니다.
#
# 예를 들면, 다음과 같이 하시면 됩니다.
#
# mkdir /var/qmail
# ln -s /usr/man /var/qmail/man
# mkdir /etc/qmail
# ln -s /etc/qmail /var/qmail/control
# ln -s /usr/sbin /var/qmail/bin
#--------------------------------------------------------------------------------
#
#
#사용자와 그룹을 만듭니다.
#필요한 사용자와 그룹을 만드는 가장 쉬운 방법은 작은 스크립트를 만들어서 하는 것입니다. 소스디렉토리에 INSTALL.ids 파일이 있습니다. 거기에는 여러 프랫폼에 해당하는 명령행이 있는데, 그 파일을 다른 이름으로 복사해서 편집하면 빠르고 쉽습니다.
#
#
# cp INSTALL.ids IDS
#
#
#좋아하시는 에디터로 필요한 행을 빼고 다 지웁니다.
# 예를 들면, 편집후에 FreeBSD에 대한 IDS는 다음과 같습니다.
#
#
pw groupadd nofiles;
pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent;
pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent;
pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent;
pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent;
pw groupadd qmail;
pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent;
pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent;
pw useradd qmails -g qmail -d /var/qmail -s /nonexistent;
# pw groupadd nofiles
# pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent
# pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent
# pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent
# pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent
# pw groupadd qmail
# pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent
# pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent
# pw useradd qmails -g qmail -d /var/qmail -s /nonexistent
#
#
#실행하려면, chmod를 써서 실행파일로 만드시거나 sh로 실행하십시오.
#
#
#첫번째 방법:
#
# chmod 700 IDS
# ./IDS
#
#
#두번째 방법:
#
# /bin/sh IDS
#
#
#스크립트의 실행이 완료되어 사용자와 그룹이 생기면 다음항목으로 갑니다.
#
#그러나, INSTALL.ids에 해당 시스템이 없으면 어쩝니까? 수동으로 그것들을 만들어야 합니다. 좋아하는 에디터를 사용해서 /etc/group을 편집하세요. 다음 두 줄을 그 파일끝에 첨가하십시오.
#
#
#
# qmail:*:2107:
# nofiles:*:2108:
#
#
#-------------------------------------------------------------------------
#유의점: 2107과 2108이 사용중인 것이 아님을 확인하셔야 합니다.
#-------------------------------------------------------------------------
#
#
#다음으로는, vipw를 이용해서 다음 줄들을 그 파일의 끝에 붙이십시오. (대부분의 시스템에 vipw가 있지만, 없으면 에디터로 /etc/passwd를 편집합니다.)
#
#
# alias:*:7790:2108::/var/qmail/alias:/bin/true
# qmaild:*:7791:2108::/var/qmail:/bin/true
# qmaill:*:7792:2108::/var/qmail:/bin/true
# qmailp:*:7793:2108::/var/qmail:/bin/true
# qmailq:*:7794:2107::/var/qmail:/bin/true
# qmailr:*:7795:2107::/var/qmail:/bin/true
# qmails:*:7796:2107::/var/qmail:/bin/true
#
#
#------------------------------------------------------------------------------------
#유의점: 7790-7796이 사용중이지 않는다는 것과 2107과 2108이 위에서 만든 그룹아이디와
# 같다는 것을 확인하십시오.
#------------------------------------------------------------------------------------
#
#
#이런 것들을 해당파일의 끝에만 첨가해야 하는 것은 아니지만, 그래야 설명하기가 제일 쉽습니다.
#
#
#다음 항목으로 가실 준비가 되셨군요.
#
#
#컴파일을 하세요.
#이제 큐메일을 컴파일하실 준비가 되었습니다.
#
#
#'컴파일환경을 검증한다'항목에서, C 컴파일러를 지정하셨습니다.
그것이 cc가 아니거나 디렉토리가 PATH환경변수에 있지 않으면 conf-cc와 conf-ld를 편집하십시오.
컴파일러가 gcc이고, PATH에 있다고 하면, conf-cc와 conf-ld를 가볍게 편집하고, cc를 gcc로 바꾸십시오.
#
#
#그렇게 하셨으면 명령행 프롬트에 다음과 같이 하세요.
#
# qmail 에 mysql 을 patch가 되어 있어야 합니다.
# patch를 안하셨으면 위에서 확인후 패치 하십시요.
# 참고 : 모든 patch 는 /usr/local/src/qmail/patch 에 있습니다.
# patch -p1 < ../patch/qmail-1.03-mysql-0.6.6.patch
vi Makefile
#MYSQL_LIBS=/usr/local/mysql/lib/mysql/libmysqlclient.a -lm -lz -lcrypt
==>로 고침고, 경로 확인
#MYSQL_INCLUDE=-Iusr/local/mysql/include ==> 경로 확인
make;
make setup check;
#
#큐메일이 시스템에 설치되어서 가동될 준비가 되었습니다!
다음항목은 큐메일을 가동하고 시험하는 단계를 안내합니다.
#
#
#2.6 ucspi-tcp를 설치합니다.
#먼저번에 qmail, ucpsi-tcp, daemontools 타볼을 풀었습니다.
예제에서 그것들을 /usr/local/src/qmail에 풀었습니다. 자 ucpsi-tcp디렉토리로 옮깁시다.
#
#
cd /usr/local/src/qmail/ucspi-tcp-0.84;
#
#
#'컴파일을 하세요'항목에서, conf-cc와 conf-ld를 고치셨으면, 이 디렉토리에서도 똑같이 해줍니다.
#
#
#그런뒤에 다음과 같이 하십시오.
#
#
make;
make setup check;
#
#
#2.7 daemontools를 설치합니다.
#daemontools 컴파일디렉토리로 이통합니다.
#
#
cd /usr/local/src/qmail/daemontools-0.61;
#
#
#또 한번, conf-cc와 conf-ld를 qmail과 ucspi-tcp 컴파일시 고쳤으면, 이 디렉토리에서도 똑같이 합니다.
#
#
#그리고 다음과 같이 합니다.
#
#
make;
make setup check;
#
#rblsmptd를 설치합니다.
cd /usr/local/src/qmail/rblsmtpd-0.70;
make;
make setup check;
#checkpassword를 설치합니다.
cd /usr/local/src/qmail/checkpassword-0.81;
patch -p1 < ../checkpassword-0.81-mysql-0.6.6.patch;
vi Makefile
#MYSQL_LIBS=/usr/local/mysql/lib/mysql/libmysqlclient.a -lm -lz -lcrypt ==>로 고침고, 경로 확인
#MYSQL_INCLUDE=-Iusr/local/mysql/include ==> 경로 확인
make;
make setup check;
vi /etc/inetd.conf
#아래와 같이 pop-3부분을 수정합니다.
#pop3 stream tcp nowait root /var/qmail/bin/qmail-popup qmail-popup co2.ritsworld.com /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir
#pop-3 stream tcp nowait root /usr/sbin/tcpd /var/qmail/bin/qmail-popup mail.ritsworld.com /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir
#(한줄에 적어줍니다)
killall -HUP inetd
#제대로 설치가 되었는지 확인을 합니다
#printf "www\0com1212\0Y123456\0" | /bin/checkpassword `which id` 3<&0
#printf "test\0test\0Y123456\0" | /bin/checkpassword 'id' 3<&0
#printf "test\0test\0Y123456\0" | /bin/checkpassword env 3<&0
#printf "test\0test1212\0Y123456\0" | /bin/checkpassword `/usr/bin/id` 3<&0
#"계정\0패스워드\0아무것이나...\0" 의 순입니다
#uid=101(popori) gid=100(users) groups=100(users)
#위와 같은 결과가 나오면 제대로 설치가 된것입니다.
#위와 같은 결과가 안나오고 밑의 결과가 나올때는
#Missing name for redirect
#
#DNS가 제대로 설정되었다면, 다음 스크립트를 실행하기만 하면 됩니다.
#
#
cd /usr/local/src/qmail/qmail-1.03;
./config;
#
#
#어떤 이유로 config가 DNS에서 hostname을 찾지 못하면, config-fast script를 실행하셔야 합니다.
#
#
# ./config-fast 호스트네임.완전.경로
#
#
#예를 들면, 도메인이 example.com이고, 당신컴퓨터의 호스트네임이 dolphin이라면, config-fast를 다음과 같이 실행합니다.
#
#
# ./config-fast dolphin.example.com
#
#
#2.8 큐메일을 가동합니다.
vi /var/qmail/rc
#/var/qmail/boot디렉토리에는 여러가지 설정에 대한 본보기 큐메일 붓 스크립트가 있습니다. /var/spool/mail 대 $HOME/Mailbox, procmail 또는 dot-forward를 이용하기, 그리고 이것들의 다양한 결합. 한번 부담없이 검토해보시기 바랍니다. 우리는 설치를 위해서 다음을 이용하겠습니다.:
#
############################################################################################
#!/bin/sh
# Using stdout for logging
# Using control/defaultdelivery from qmail-local to deliver messages by default
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start "`cat /var/qmail/control/defaultdelivery`"
############################################################################################
#
#에디터로 위의 내용을 /var/qmail/rc로 만드시고, 다음과 같이 명령합니다.
#
#
chmod 755 /var/qmail/rc;
mkdir /var/log/qmail;
#
#
#이쯤에서, .qmail파일이 전달하지 못하는 메세지들에 대한 기본전달모드를 결정해야 합니다.
#다음의 테이블에 몇가지 공통선택이 간략히 예시되어 있습니다.
#
#
#Mailbox
# format Name Location defaultdelivery Comments
#
#mbox Mailbox $HOME ./Mailbox most common, works
# with most MUA's
#
#maildir Maildir $HOME ./Maildir/ more reliable, less
# MUA support
#
#mbox username /var/spool/mail See INSTALL.vsm traditional UNIX
# mailbox
#
#
#정보를 더 원하시면 INSTALL.mbox, INSTALL.maildir, INSTALL.vsm 등을 보십시오.
#
#
#기본 멜복스 형태를 고르시려면, 위의 테이블의 defaultdelivery 값을
#/var/qmail/control/defaultdelivery에 적어넣으십시오.
#예) 표준 큐메일 Mailbox 전달을 선택하시려면 다음과 같이 합니다.
#
#
#echo ./Mailbox >/var/qmail/control/defaultdelivery
echo ./Maildir/ >/var/qmail/control/defaultdelivery
# /var/qmail/bin/maildirmake /usr1/mailmaster/test/Maildir;
#
#
#----------------------------------------------------------------------------------
#유의점: defaultdelivery는 표준 큐메일 통제 파일이 아닙니다. 위의 /var/qmail/rc파일의
# 특징입니다.
#----------------------------------------------------------------------------------
#
#
#시스템 기동 파일
#/var/qmail/rc 스크립트를 수동으로 실행하셔야 하면, 큐메일은 부분가동합니다. 그러나, 우리는 큐메일이 시스템이 부팅할때마다 자동으로 가동하기를 원하고, 시스템이 정지할 때는 깨끗하게 꺼지기를 원합니다.
#
#
#이것은 startup/shutdown스크립트를 다음과 같이 작성하면 됩니다.
#
vi /var/qmail/bin/qmail.sh;
###########################################################################################
#!/bin/sh
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-smtpd"
svc -p /var/qmail/supervise/qmail-smtpd
;;
cont)
echo "Continuing qmail-send"
svc -c /var/qmail/supervise/qmail-send
echo "Continuing qmail-smtpd"
svc -c /var/qmail/supervise/qmail-smtpd
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtpd."
svc -d /var/qmail/supervise/qmail-smtpd
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /var/qmail/supervise/qmail-send
echo "* Restarting qmail-smtpd."
svc -u /var/qmail/supervise/qmail-smtpd
;;
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 /var/qmail/bin/qmail.sh
#이 스크립트는 http://Web.InfoAve.net/~dsill/qmail-script-dt61.txt에서도 구할 수 있습니다.
#
#
#-------------------------------------------------------------------------------------
#유의점: 시스템이 재부팅한다음에 큐메일이 곧 없어지면, 스크립트의 "start"항목에 있는
# env 명령을 nohup으로 덧붙입니다.
#
# 예)
# nohup env - PATH="$PATH" svscan &
#-------------------------------------------------------------------------------------
#
#
#에디터로 스크립트를 만들거나 웹브라우저로 다운로드해서 시스템의 init.d디렉토리에 설치하시는데,
# 다음과 같은 장소가 됩니다.
#
#
#/etc/init.d
#/sbin/init.d
#/etc/rc.d/init.d
#
#스크립트를 qmail이라고 이름붙이십시오. 스크립트를 몇개의 rc디렉토리에 링크시키셔야 합니다.
# 이 데렉토리들은 rcN.d같이 되어있는데, N은 적용 runlevel입니다.
#기동디렉토리 구조가 복잡해서 본 문서에는 다루지 않습니다.
#그러니 간단한 지시사항이 맘에 차지 않으시면 시스템문서를 참조하십시오.
#rc 디렉토리는 다음중 하나일 겁니다.
#
#
#/etc
#/sbin
#/etc/rc.d
#
#링크를 만드시는데, 다음과 같이 하십시오. RCDIR를 시스템의 rc 디렉토리의 장소로 바꾸십시오.
#
#
# ln -s ../init.d/qmail RCDIR/rc0.d/K30qmail
# ln -s ../init.d/qmail RCDIR/rc1.d/K30qmail
# ln -s ../init.d/qmail RCDIR/rc2.d/S80qmail
# ln -s ../init.d/qmail RCDIR/rc4.d/S80qmail
# ln -s ../init.d/qmail RCDIR/rc5.d/S80qmail
# ln -s ../init.d/qmail RCDIR/rc6.d/K80qmail
#
#
#--------------------------------------------------------------------------------------
#유의점: 전단계의 숫자는 매우 시스템에 의존합니다. 그렇지만 다소 유연합니다.
# Sendmail이 현재 설치되어 있으면, "find RCDIR -name "*sendmail" -print" 명령을
# 실행하면 시스템에 적용할 수 있는 숫자를 알려줍니다.
#--------------------------------------------------------------------------------------
#
#
#이제 큐메일서비스를 위해 감독디렉토리를 만드십시오.
#
#
mkdir -p /var/qmail/supervise/qmail-send/log;
mkdir -p /var/qmail/supervise/qmail-smtpd/log;
mkdir -p /var/qmail/supervise/qmail-pop3/log;
chmod +t /var/qmail/supervise/qmail-send;
chmod +t /var/qmail/supervise/qmail-smtpd;
chmod +t /var/qmail/supervise/qmail-pop3;
#
#
#/var/qmail/supervise/qmail-send/run파일을 만드십시오.
#
vi /var/qmail/supervise/qmail-send/run
############################################################################################
#!/bin/sh
exec /var/qmail/rc
############################################################################################
#
#/var/qmail/supervise/qmail-send/log/run파일을 만드십시오.
#
vi /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파일을 만드십시오.
#
vi /var/qmail/supervise/qmail-smtpd/run
#############################################################################################
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb \
-u $QMAILDUID -g $NOFILESGID 0 smtp /var/qmail/bin/qmail-smtpd 2>&1
#############################################################################################
#예제
##############################################################################################
##!/bin/sh
#
#QMAILDUID=`id -u qmaild`
#NOFILESGID=`id -g qmaild`
#exec /usr/local/bin/softlimit -m 2000000 \
# /usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb \
# -u $QMAILDUID -g $NOFILESGID 0 smtp /usr/local/bin/rblsmtpd /var/qmail/bin/qmail-smtpd 2>&1
#############################################################################################
#
#/var/qmail/supervise/qmail-smtpd/log/run파일을 만드십시오.
#
vi /var/qmail/supervise/qmail-smtpd/log/run
#############################################################################################
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd
#############################################################################################
#
#/var/qmail/supervise/qmail-pop3/run파일을 만드십시오.
#
vi /var/qmail/supervise/qmail-pop3/run
#############################################################################################
#!/bin/sh
exec /usr/local/bin/tcpserver -v -R 0 pop3 /var/qmail/bin/qmail-popup 211.234.7.126 \
/bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1
#############################################################################################
##############################################################################################
##!/bin/sh
#
#exec /usr/local/bin/tcpserver -v -R 0 pop3 /var/qmail/bin/qmail-popup 211.234.7.126 \
# /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1 | \
# /var/qmail/bin/splogger pop3d &
#
##############################################################################################
#
#/var/qmail/supervise/qmail-pop3/log/run파일을 만드십시오.
#
vi /var/qmail/supervise/qmail-pop3/log/run
#############################################################################################
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/pop3d
#############################################################################################
#
#
#run파일들에 실행가능을 부여합니다.
#
#
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;
chmod 755 /var/qmail/supervise/qmail-pop3/run
chmod 755 /var/qmail/supervise/qmail-pop3/log/run;
#
#
#그런 다음에, 로그디렉토리를 만듭니다.
#
#
mkdir -p /var/log/qmail/smtpd;
mkdir -p /var/log/qmail/pop3d;
chown qmaill /var/log/qmail /var/log/qmail/smtpd /var/log/qmail/pop3d;
#
#
#기동스크립트에 실행권한을 부여하고, 실행경로에 있는 디렉토리로 링크합니다.
#
#
# # substitute the correct location of your rc dir on the next two lines
# chmod 755 /etc/init.d/qmail
# ln -s /etc/init.d/qmail /usr/local/sbin
#
#
#로컬호스트가 SMTP를 통해서 멜을 삽입 (inject)하도록 합니다.
#
#
echo '127.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp;
echo '211.234.7.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp;
/var/qmail/bin/qmail.sh cdb;
#
#
#기존에 설치된 MTA를 멈추고 무력하게 합니다.
#큐메일과 현존하는 MTA, 대개 Sendmail, 두개를 사용할 수도 있지만, 그렇게 하지 않을 것을 강력히 권고합니다.
그리고, 솔직히 말해서, 이 글을 읽고 계신다면, 그게 무엇을 뜻하는 지 모르실 겁니다. :-)
#
#
#현존 MTA가 Sendmail이라면, init.d 스크립트를 stop인수를 주어 실행하여 멈출 수 있습니다.
예) 다음 중 하나가 유효할 겁니다.
#
#
# /etc/init.d/sendmail stop
# /sbin/init.d/sendmail stop
# /etc/rc.d/init.d/sendmail stop
#
#
#init.d/sendmail 스크립트를 찾을 수 없다면, "ps -ef|grep sendmail" 또는 "ps waux|grep sendmail"을 사용해서 sendmail의 PID를 알아낸 뒤에, 다음과 같이 해서 멈춥니다.
#
#
# kill PID-of-sendmail
#
killall sendmail
#
#MTA가 Sendmail이 아니면, 해당문서에서 바른 멈춤 절차를 참고하십시오.
#
#
#시스템에서 기존의 MTA를 완전히 제거하는 것도 고려해볼 만합니다. 적어도 init.d 스크립트를 무력하게 하면 시스템이 재부팅할 때 다시는 가동하지 않습니다.
#
#
#레드햇리눅스에서는 다음과 같이 해서 Sendmail을 제거합니다.
#
#
# rpm -e --nodeps sendmail
#
#
#끝으로, 기존의 /usr/lib/sendmail을 큐메일판으로 바꿉니다.
#
#
mv /usr/lib/sendmail /usr/lib/sendmail.old;
mv /usr/sbin/sendmail /usr/sbin/sendmail.old;
chmod 0 /usr/lib/sendmail.old /usr/sbin/sendmail.old;
ln -s /var/qmail/bin/sendmail /usr/lib;
ln -s /var/qmail/bin/sendmail /usr/sbin;
#
#
#이제는 큐메일가동이 가깝습니다. 끝단계는 시스템앨리어스를 두어개 만드는 것입니다.
#
#
#시스템앨리어스를 만듭니다.
#모든 큐메일설치에서는 시스템앨리어스를 세개 만들어야 합니다.
#
#
#앨리어스 목적
#postmaster RFC 821 요구사항이며, 멜애드민 (당신)을 가리킵니다.
#mailer-daemon 바운스멜에 대한 사실상의 표준수취인
#root 특권계정에서 온 멜을 시스템애드민에게 보낸다.
#
#
#이 앨리어스들을 만들려면, 그것들 하나하나가 어디에 놓여져야 하는 지 (로컬사용자, 또는 원격주소) 결정하고, .qmail파일을 만들어서 갖다놓으면 됩니다. 예를 들어, 로컬사용자 dave는 시스템과 멜의 애드민이라고 하면 다음과 같이 합니다.
#
#
adduser master
echo master > /var/qmail/alias/.qmail-root;
echo master > /var/qmail/alias/.qmail-postmaster;
ln -s /var/qmail/alias/.qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon;
chmod 644 /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-postmaster;
#
#
#mysql 연동
#마찬가지로 README.mysql.en 파일이 생성되어 있으므로 설치에 참고하시고
#컴파일과 설치를 진행합니다. 역시 설치시에는 root 로...
#/var/qmail/control/sqlserver 파일을 다음과 같은 내용으로 생성합니다.
vi /var/qmail/control/sqlserver
#########################################################################
mysql_use yes
server localhost
login m
password su
db qmail
table users
check_host no
#########################################################################
또 다른 예
#########################################################################
#mysql_use yes
#server localhost
#login m
#password su
#db ritsworld
#table userinfo
#check_host no
#quota yes
#ignore_validity yes
#########################################################################
#간략하게 설명하면...
#
# mysql_use yes ... mysql 을 사용한다.
# server localhost ... 서버는 현재의 mysql 서버를 사용한다.
# login qmail ... mysql DB에 접근하는 사용자명
# password su ... mysql DB에 접근시에 필요한 비밀번호
# db qmail ... 사용자 계정을 가지고 있는 DB명
# table users ... 사용자 계정이 들어있는 테이블명
# check_host no ... 이것이 yes 이면 mysql DB에 있는 이용자명과
# 도메인 (호스트)로 부터만 메일을 수신한다.
# (무슨소리인지 잘 모르겠음...)
#
#로그인은 MySQL 에 접근하는것을 사전에 확인해 보도록 해야 합니다.
#즉 mysql -u <id> qmail 로 접근해 봐서 비밀번호를 넣고 설정한 qmail DB 에 들어갈
#수 있는지를 확인하라는 것입니다.
#즉, 이때에 login 은 DB의 접근권한(?)을 가지는 id를 이용하라는 것입니다.
#mysql의 access 모드와 password의 적절한 조정이 필요할 것 입니다..
#최초에 오픈시라면 mysql의 DB접근권한을 예제와 같는 test db와 같이 모두 열어놓고
#인터페이스가 완료 된후에 테스트를 거쳐서 적당하게 권한을 조정하는것이 속을 썩지
#않을 것입니다. 모두 열었을 경우에는 password 항목을 지정할 필요가 없습니다.
#(외부로도 열린것이 이므로 웨퍼나 파이어 월을 설정하지 않았으면 보안에 심각한 문
#제가 있음은 당연합니다.)
#
#설치되어 운영되고 있는 mysql DB 에 위에서 언급한 db 명 테이블명및 해당 이용자의
#권한을 설정합니다.
#
#먼저 qmail이란 db를 하나 만듭니다.
mysqladmin create qmail
#MySQL안에 popori란 계정을 추가하고(user table) popori가 qmail db를 사용할 수 있도록 권한을 줍니다(db table).
#이용자 테이블을 생성합니다. 이것은 필요에 따라서 만드는 것이므로 메일의 서비스
#에 필요한 항목을 추가해서 테이블을 만들어도 됩니다. 즉 해당 항목만 있으면 된다
#는 이야기 입니다.
#
CREATE TABLE users (
id char(32) NOT NULL,
crypt char(32) binary DEFAULT '' NOT NULL,
passwd char(32) NOT NULL,
uid int(10) unsigned DEFAULT '65534' NOT NULL,
gid int(10) unsigned DEFAULT '65534' NOT NULL,
shell char(100) DEFAULT '/sbin/nologin' NOT NULL,
home char(100) DEFAULT '' NOT NULL,
start_date date DEFAULT '0000-00-00' NOT NULL,
expire_date date DEFAULT '2030-01-01' NOT NULL,
active enum('Y','N') DEFAULT 'Y' NOT NULL,
KEY id (id(10)),
KEY start_date (start_date),
KEY expire_date (expire_date),
KEY active (active)
);
#insert into users(id, crypt, home) values ('test', encrypt('test1212'), '/usr/home/master/test');
#
#각 필드의 간단한 설명은...
#
# id field: 이용자 id
# uid field: 이용자 번호
# gid field: 이용자 그룹번호
# home field: 이용자의 메일박스 디렉토리 패스 (풀 패스이어야 함)
# shell field: 이용자의 SHELL (보통은 /bin/false를 지정)
# mbox_host field: 잘모름. 하여튼 NULL 이어야 한다고 함...
# 원문 : Recieve a mail when one's address ("To: xxx@xxx") is
# 'id'@'mbox_host'. must be accepted NULL.
# 수정 : To 에 기본적으로 E-mail 주소 설정을 해주는거라는거 같음.
# Not Null 은 데이터가 없을때 NULL로 설정 함으로 DB 의 속
# 도 향상을 기대한것으로 보임.
#
# active: 메일을 이용할 수 있는 상태 플래그
# start_date: 메일의 이용기간을 정함. 시작일
# expire_date: 메일의 이용 기간을 정함. 끝일
#
#테이블을 생성후에 이용자의 계정을 DB에 등록 합니다.
#passwd 기록시에는 encryption 을 하기위에 mysql 매크로 거맨드인 password () 를
#사용합니다. 이용자가 등록되었으면 DB에 기록한 home 디렉토리를 생성 합니다.
#
#예제:
#MySQL table
#+----------+-------+------+---------------------+------------
#+ id | uid | gid | home | shell
#+----------+-------+------+---------------------+------------
#+ username | 65534 | 65534 | /somewhere/username | /bin/false
#
#
#와 같이 DB에 등록되어 있으면...
#
mkdir /usr/home/master/test;
/var/qmail/bin/maildirmake /usr/home/master/test/Maildir;
chown -R 65534 /usr/home/master/test;
chgrp -R 65534 /usr/home/master/test;
#
#
#와 같이하여 Maildir 구조의 메일박스를 생성합니다. 꼭 해당 ID로 소유가 설정 되도
#록 하여야 합니다. (아니면 수신되지 않음) 이때 Maildir 로 서비스가 되게 하려면
#해당이용자의 홈디렉토리의 .qmail 파일에 ./Maildir/ 문장을 넣어 놓거나 qmail 실
#행시에 기본 서비스가 ./Maildir/ 서비스가 되도록 구동합니다.
#qmail-start ./Maildir/ 로 실행하는데 /var/qmail/rc 의 스크립트 파일을 수정 합니
#다. 아니면 그냥 Mailbox 를 사용하셔도 됩니다.
#
#
#설정되었으면 테스트를 해봅니다.
#
/var/qmail/bin/qmail-getpw test localhost
#username12346789/home1/qmail-box/g/gumdong
#
#위와 같이 id, uid, gid, home 을 돌려줄것입니다. 제대로 DB를 접근하지 못하면 DB
#의 내용과는 다른 alias의 기본값이 나타나게 됩니다. 이때는 mysql을 log파일을 남
#기도록 실행을 시켜서 적절한 시점에 SQL 쿼리를 내는지 확인하십시오. mysqld를 로
#그를 남기도록 실행하는 방법은 다음과 같습니다. 단일 프로세스로 구동되는 것이므
#로 실제 서비스에는 적용하지 마십시요.
#
# # /var/libexec/mysqld --log=/tmp/mysql.log
#
#
#그러면 테스트 메일을 보내 봅니다.
#
# # echo to:username | /var/qmail/bin/qmail-inject
#
#성공적으로 메일이 보내졌는지 ~username/Maildir/new 디렉토리의 파일을 참조하십시
#요. 만약에 파일이 보내지지 않으면 /var/mail/maillog 파일을 확인하여 원인을 찾아
#보도록 하여야 합니다.
#
#파일의 수신은 성공적으로 이루어 졌는데 POP-3 와 연동하는 checkpassword 가 정상
#적으로 동작하는 지 다음과 같이 확인합니다.
#
# # telnet localhost pop3
# Trying 127.0.0.1...
# Connected to localhost.
# Escape character is '^]'.
# +OK <6195.936784767@calypso.mydomain.or.kr>
# user username
# +OK
# pass 1234
# +OK
# quit
# +OK
# Connection closed by foreign host.
#
#이렇게 pass 까지 DB에 넣어진 내용과 일치하여 +OK 가 나오면은 확인 된것입니다.
#만일 제대로 되지 않으면 DB의 crypt 항목에 있는 비밀번호와 일치하는지 확인해야
#합니다.
#
#crypt 항목에 비밀번호를 넣을 때는 encrypt() 의 mysql 매크로를 이용합니다.
#
# > update users set crypt=encrypt('1234') where id='gumdong'\g
#
#정상적으로 동작하지 않을시에 앞에서 언급한 큐메일의 로그와 mysql의 로그를 참조
#하십시요.
#
#
#아래에 적는 내용은 사용자 quota제한에 대한 내용입니다. 웹메일을 써보면 사용자별로 10M, 20M의 용량을 주고 제한을 하지요. 그런 방법입니다.
#몇가지의 추가로 쉽게 제한이 가능합니다.
#quota제한은 unix의 quota를 이용한 것이 아니라 내부적으로 du명령을 이용해서 구현이 되있습니다.
#1. MySQL안에 있는 users테이블에 필드를 1개 추가합니다.
#mysql> alter table users add quota_size int unsigned default 0 not null;
#2. /var/qmail/control/sqlserver 파일에 다음의 1줄을 추가합니다.
#quota yes
#단지 위의 두가지 설정으로 quota가 제한됩니다. 저의 경우 qmail과 tcpserver를 restart시켰는데 시켜주지 않아도 가능한지 확인은 못했습니다.
#용량제한은 MySQL의 users테이블에서 quota_size필드에서 정합니다. 필드값이 0이라면 제한을 안합니다. 500이면 500k로 제한을 두는겁니다. 1 = 1kbyte입니다.
#만약 제한된 용량을 초과하는 메일이 들어오면 보낸사람에게 Mailbox is Full이라는 메세지와 함께 바로 리턴이 됩니다.
#--------------------------------------------------------------------------------
#큐메일을 가동합니다.
#마지막으로, 큐메일을 가동합니다.
#
#외부에서 메일을 수신하기 위해서는 /var/qmail/control/rcpthost 파일을 삭제한다.
rm /var/qmail/control/rcpthosts
/var/qmail/bin/qmail.sh start
#
#
#
#
#
# imap을 설치합니다.
#imap-4.7b.tar.Z 과 imap-4.7b-maildir-mysql.patch을 /usr/local에 복사합니다.
tar -xzvf /usr/local/imap-4.7b.tar.Z;
mv /usr/local/imap-4.7 /usr/local/imap;
#(이름을 바꿔 주시구요)
cd /usr/local/imap;
patch -p1 < ../imap-4.7b-maildir-mysql.patch
make bsf;
ln -s /usr/local/imap/c-client /usr/local/imap/include;
ln -s /usr/local/imap/c-client /usr/local/imap/lib;
cp /usr/local/imap/ipopd/ipop2d /usr/sbin;
cp /usr/local/imap/ipopd/ipop3d /usr/sbin;
cp /usr/local/imap/imapd/imapd /usr/sbin;
vi /etc/services;
# 하시고 pop-2 pop-3 imap 에 #이 있으면 풀어주시면 되구요!!
###########################################################################
pop2 109/tcp postoffice #Post Office Protocol - Version 2
pop2 109/udp postoffice #Post Office Protocol - Version 2
pop3 110/tcp postoffice #Post Office Protocol - Version 3
pop3 110/udp postoffice #Post Office Protocol - Version 3
imap 143/tcp imap
imap 143/udp imap
##############################################################################
vi /etc/inetd.conf;
##############################################################################
pop2 stream tcp nowait root /usr/sbin/ipop2d ipop2d
imap stream tcp nowait root /usr/sbin/imapd imapd
##############################################################################
# 하시고 pop-2 pop-3 imap 에 #이 있으면 풀어주시면 되구요!!
killall -HUP inetd;
# imap test
##############################################################################
#telnet localhost 143
#Trying ::1...
#Trying 127.0.0.1...
#Connected to localhost.
#Escape character is '^]'.
#* OK localhost IMAP4rev1 v12.264 server ready
#^]
#telnet> quit
#Connection closed.
##############################################################################
#telnet 0 143
#Trying 0.0.0.0...
#Connected to 0.
#Escape character is '^]'.
#* OK [211.234.7.126] IMAP4rev1 v12.264 server ready
#aaa login master su
#aaa OK LOGIN completed
#lll logout
#* BYE co2.ritsworld.com IMAP4rev1 server terminating connection
#lll OK LOGOUT completed
#Connection closed by foreign host.
##############################################################################
#
#
#
#
# 기본설치 끝
#
--------------------------------------------------------------------------------
7. PHP4설치
[root@www /apache_1.3.14]#cd ..
[root@www /tmp]#cd php-4.0.4pl1
[root@www /php-4.0.4pl1]#../configure --with-apache=../apache --with-mysql=/usr/local/mysql \
--with-imap=/usr/local/imap \
--enable-track-vars --disable-debug
옵션에 대한 추가 설명은 PHP메뉴얼을 참고하기 바랍니다.
만약 PostgeSQL이나 mSQL을 사용한다면 --with-pgsql=디렉토리경로 --with-msql=디렉토리 경로와 같이 옵션을 사용하면 된다.
--enable-track-vars 옵션은 HTTP_GET_VARS, HTTP_POST_VARS, HTTP_COOKIE_VARS 배열에 들어 있는 GET, POST, cookie 변수들이 어디서 왔는지 기억하도록 합니다. 꼭 설정해 두세요.
위의 많은 옵션들을 모두 설치하실 필요는 없습니다. 배포판인 레드햇의 기본설정에서 저가 필요한 것들을 예를 들어 나열한 것이므로 꼭 필요한 옵션만 사용하시면 됩니다.
그중에서 파란색으로 되어 있는 옵션은 기본적으로 권장하는 옵션들입니다.
[root@www /php-4.0.4pl1]#make 컴파일을 하고,
[root@www /php-4.0.4pl1]#make install 인스톨을 한다.
8. Apache Configure(2), 컴파일
[root@www /php-4.0.4pl1]#cd /tmp/apache_1.3.14
[root@www /apache_1.3.14]#./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a
단골로 묻는 질문의 원인 중에 하나가 위의 옵션 때문입니다. 옵션을 줄 때 그냥 TAB key를 두르리지 말고 위 옵션을 잘 보고 입력하세요.
[root@www /apache_1.3.14]#make 아파치를 컴파일한다.
[root@www /apache_1.3.14]#make install 아파치 인스톨
10. 환경설정 파일 편집
[root@www /tmp]# cp /tmp/php/php.ini-dist /etc/httpd/php.ini
[root@www /tmp]#vi /etc/httpd/php.ini
[root@www /tmp]#vi /usr/local/apache/conf/httpd.conf 아파치의 환경설정 파일을 열어서 다음과 같은 설정을 한다.
360라인쯤에 Default 시작페이지 설정을 해 준다
<IfModule mod_dir.c>
DirectoryIndex index.php index.php3 index.php4 index.html index.htm
</IfModule>
720라인 정도에서 다음 내용의 주석을 풀고 원하는 환경으로 설정을 한다.
AddType application/x-httpd-php .php .php3 .ph
AddType application/x-httpd-php-source .phps
[root@www /root]# /usr/local/apache/bin/httpd -t 엔터를 두드리고 다음과 같은 메시지만 있으면 아파치 환경이 잘 설정되었다.
Syntex OK
만일 에러가 발생하면 몇 번째 라인에서 잘못되었다는 메시지를 잘 보고 수정하기 바랍니다.
[root@www root]# /usr/local/apache/bin/apachectl start
/usr/bin/apachectl start: httpd started 이런 메세지가 보인다면 아파치가 정상적인 실행이 된 것이다.
11. Test 하기
테스트 화일을 만들어 확인을 해 보세요. 물론 홈페이지가 뜰 수 있는 디렉토리가 되어야 합니다.
메인 홈페이지 경로는 아파치 환경설정파일 281라인 정도에서 DocumentRoot "/usr/local/apache/htdocs"에 의해 설정된 경로입니다.
[root@www /root]#vim /usr/local/apache/htdocs/test.php
에디터 창에서 다음내용을 입력합니다.
<?
phpinfo();
?>
저장을 하고 브라우저에서 http://localhost/test.php 또는 홈페이지URL/test.php를 입력하여 어떤 내용이 출력되는지 봅시다.
다음과 같은 내용이 출력된다면 정상적으로 설치가 잘 되었습니다.
PHP Version 4.0.4pl1
System Linux linux.kyungsung.ac.kr 2.2.16-22smp #1 SMP Tue Aug 22 16:39:21 EDT 2000 i686 unknown
Build Date Nov 27 2000
Configure Command './configure' '--with-config-file-path=/etc/httpd' '--disable-debug' '--with-imap=/usr/local/imap' '--with-mysql=/usr/local/mysql' '--with-apache=../apache_1.3.14' '--enable-track-vars' '--prefix=/usr' '--with-regex=system' '--with-gettext' '--with-gd=shared' '--with-jpeg-dir=/usr' '--with-png' '--with-zlib' '--enable-pic' '--with-db2' '--with-db3' '--with-gdbm' '--enable-debugger' '--enable-magic-quotes' '--enable-safe-mode' '--enable-sysvsem' '--enable-sysvshm' '--with-exec-dir=/usr/bin' '--enable-ftp' '--enable-inline-optimization' '--with-xml' '--with-ldap' '--enable-shared' '--enable-yp'
Server API Apache
Virtual Directory Support disabled
Configuration File (php.ini) Path /etc/httpd
ZEND_DEBUG disabled
Thread Safety disabled
This program makes use of the Zend scripting language engine:
Zend Engine v1.0.3, Copyright (c) 1998-2000 Zend Technologies
with Zend Optimizer v1.0.0, Copyright (c) 1998-2000, by Zend Technologies
속도 테스트
자신의 시스템에서 다음과 같은 프로그래밍으로 Optimizer하기전과 비교해 보세요.
<?
$start = time();
for ( $i = 1; $i <= 5000000; $i++ );
$t_time = time() - $start;
echo "Time : $t_time";
?>
참고로 저의 PC에서는 처음 14초가 나왔는데 Optimizer를 하고난후 7초가 나왔습니다.
12. 시스템 부팅시 자동으로 아파치 데몬과 MySQL데몬 실행하기
/etc/rc.d/rc.local 파일을 열어서 마지막 줄에 다음 명령을 입력한다.
[root@www /root]#vim /etc/rc.d/rc.local
/usr/local/apache/bin/apachectl start
/usr/local/mysql/bin/mysql.server &
또는 다음과 같이 배포판처럼 부팅시 실행과정을 확인하도록 만들 수도 있다.
[root@www root]# cp -p /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd
[root@www root]# cp -p /usr/local/mysql/bin/mysql.server /etc/rc.d/init.d/mysqld
[root@www root]# cd /etc/rc.d/rc3.d
[root@www rc3.d]# ln -s /etc/rc.d/init.d/httpd S85httpd
[root@www rc3.d]# ln -s /etc/rc.d/init.d/mysqld S85mysqld
혹시 서버를 xwindow로 부팅되도록 해두었다면 /etc/rc.d/rc5.d 디렉토리에 같은 방법으로 설정해 두면 된다
[root@www2 rc3.d]#reboot 리부팅을 시켜 잘 실행이 되는지 확인하자.
이상으로 MySQL+Apache+PHP4+IMAP+Zend Optimizer 의 설정을 모두 마쳤습니다.
부족한 내용이 많지만 이 글을 통해 리눅스에 입문하는 분들께 많은 도움이 되기를 바랍니다.
2001. 1. 28 백명훈(mhbaek@chollian.net)
###################################################################################################
또 좀 다른 아파치 + PHP 설치 방법...
설치하기
%주의 : 여기서는 쓰고자 하는 DB들과 gd, imap이 깔려있는 상태라 가정한다.
위의 부분들에 대해서는 kldp내의 문서를 참조하기 바란다.
# 패키지 풀기
$ gzip -d -c apache_1.3.12.tar.gz | tar xvf -
$ gzip -d -c mod_ssl-2.6.2-1.3.12.tar.gz | tar xvf -
$ gzip -d -c php-4.0.0.tar.gz | tar xvf -
# 아파치 소스 위치 확인 => 아파치를 설치하는 곳이 아닌 소스 위치다 헷갈리지 말기.
%참고로 필자는 apache는 /usr/local/src/apache-1.3.12에
mod_ssl-2.6.2-1.3.12는 /usr/local/src/mod_ssl-2.6.2-1.3.12에 소스를 풀었다
$ cd mod_ssl-2.6.2-1.3.12
$ ./configure \
--with-apache=../apache_1.3.12
$ cd ..
# mv apache_1.3.12 apache
# PHP를 컴파일 하기 전의 아파치 사전 설정
$ cd apache
$ ./configure --prefix=/usr/local/apache
$ cd ..
# PHP컴파일 하기 (DB,imap,gd,apache)
$ cd ../php-4.0.0
$ CFLAGS='-O2 -I/path/to/openssl/include' \
./configure --with-apache=../apache --with-mysql=/usr/local/mysql --with-imap=/usr/local/imap \
--enable-track-vars --disable-debug
$ gmake
$ gmake install
$ cd ..
# Apache 와 mod_ssl, PHP3, etc...컴파일하기.(마무리 하기)
$ cd apache_1.3.x
$ SSL_BASE=/path/to/openssl \
./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a \
--enable-module=php4
$ make
$ make certificate
$ make install
이제 다 마무리 되었다.
+--------------------------------------------------------+
| You now have successfully built and installed the |
| Apache 1.3 HTTP server. To verify that Apache actually |
| works correctly you now should first check the |
| (initially created or preserved) configuration files |
| |
| /usr/local/apache/conf/httpd.conf
| |
| and then you should be able to immediately fire up |
| Apache the first time by running: |
| |
| /usr/local/apache/bin/apachectl start
| |
| Or when you want to run it with SSL enabled use: |
| |
| /usr/local/apache/bin/apachectl startssl
| |
| Thanks for using Apache. The Apache Group |
| http://www.apache.org/ |
+--------------------------------------------------------+
위 안내 메세지가 제대로 뜬다면 성공한 것이다.
conf파일을 수정하여 기동하자.
$cd /usr/local/apache/bin/apachectl startssl
설치중에 넣었던 패스워드를 넣으면 기동이 된다. ps ax | grep httpd로 확인해 본다.
:)
--------------------------------------------------------------------------------
다음 이전 차례
2012-09-15
Mail]qmail 설치후 다람쥐메일(squirrelmail)설치하기(웹메일시스템구현)
qmail+ mysql +vpopmail+ qmailadmin 은 앞서 작성한 문서를 참고 하시면 됩니다.
여기에 이번에 추가적으로 웹메일클라이언트인 squirrelmail을 포트로 설치하고자 하며, 또한 스팸방지를위해 spamassassin이라고 하는것을 추가적으로 설치하고자 합니다.
앞서 문서에서 qmailadmin까지의 설정을 마치셨으면 다음의 작업을 합니다.
(사실 qmailadmin에서 유저계정을 추가하면 (vpopmail설치시) ~vpopmail/domains/해당도메인/계정 이 생성이 됩니다. 아래의 경우는 일반유저를 대상으로 한경우를 대비해서랍니다. )
1. /usr/share/skel/ 하의 몇몇 파일을 수정합니다.
-- dot.cshrc 파일의 경우
set mail = (/var/mail/$USER)행을 찾아 다음과 같이 추가를 해줍니다.
-----------------------------------------------
...
#set mail=(/var/mail/$USER)
setenv MAIL ~vpopmail/domains/해당도메인명/$USER/Mailbox
setenv MAILDIR ~vpopmail/domains/해당도메인명/$USER/Maildir
setenv MAILTMP ~vpopmail/domains/해당도메인명/$USER/Maildir/tmpfile
alias mail `/var/qmail/bin/maildir2mbox;/var/qmail/bin/qmail`
alias pine `/var/qmail/bin/maildir2mbox;/var/qmail/bin/pinq`
alias elm `/var/qmail/bin/maildir2mbox;/var/qmail/bin/elq`
-----------------------------------------------
-- dot.shrc 파일의 경우
-----------------------------------------------
...
MAIL=~vpopmail/domains /해당도메인명/$USER/Mailbox
MAILDIR=~vpopmail/domains/해당도메인명/$USER /Maildir
MAILTMP=~vpopmail/domains/해당도메인명/$USER/Maildir/tmpfile
export MAIL MAILDIR MAILTMP
alias mail=`/var/qmail/bin/maildir2mbox;/var/qmail/bin/qmail`
alias pine=`/var/qmail/bin/maildir2mbox;/var/qmail/bin/pinq`
alias elm=`/var/qmail/bin/maildir2mbox;/var/qmail/bin/elq`
-----------------------------------------------
2. Maildir 을 작성합니다.
# /var/qmail/bin/maildirmake /usr/share/skel/Maildir
3. 현재 계정이 있는 유저를 위해 작업합니다.
# cp -R /usr/share/skel/Maildir ~vpopmail/domains/도메인명/유저명
# chown -R 유저명 ~vpopmail/domains/도메인명/유저명/Maildir
4. 각자 계정의 rc파일을 변경합니다.
5. 이제 courier-imap을 설치합니다.
만약 qmail의 pop3프로그램을 사용하시겠다면 systemadmin.co.kr의 qmail설치문서를 참고하셔서 qmail-pop3d.sh를 작성하세요.
# cd /usr/ports/mail/courier-imap/
# make WITHOUT_OPENSSL=yes WITHOUT-PAM=yes WITHOUT_AUTHDAEMON=yes WITH_VPOPMAIL=yes WITH_TRASHQUOTA=yes install
**포트로 설치시 5.3R기준으로볼때 Makefile 에서 VPOPMAIL=${LOCALBASE}/vpopmail 로 되어있어 에러가 나는 경우 이 부분의 경로를 수정해주고 다시 make를 하면 됩니다. **
# vi Makefile
VPOPMAILDIR?= ${LOCALBASE}/vpopmail
+->VPOPMAILDIR?= /home/vpopmail
위 와 같이 수정을 합니다.
<B>
==> 5.4R 에서 설치시 주의사항 :
courier-imap 을 포트로 설치히면 이때 버전이 5.3R보다 높은 4.0.2버전이 설치된다.
이는 Makefile에서 VPOPMAIL이란 변수가 사라져서 vpopmail을 소스로 설치한 경우 "/usr/local/vpopmail/" 에서 파일을 찾을수 없다고 하면서 에러를 내고 인스톨이 중지된다.
그럼 인스톨중에 생성한 /usr/local/vpopmail을 삭제하고
1. /usr/ports/mail/vpopmail/Makefile 에 있는 PREFIX의 경로를 현재 설정에 맞게 수정한 다음 다시 make install
/usr/ports/mail/vpopmail/Makefile:
# User-configurable variables
#
# Define these to change from the default behaviour
#
[...]
# PREFIX - installation area for vpopmail (see comment below)
[...]
# Uncomment this, or set PREFIX to /home if you have an existing
# vpopmail install with the vpopmail users' home directory set to
# /home/vpopmail - package rules dictate we default
to /usr/local/vpopmail
#
#PREFIX?= /home
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ==> 이부분의 주석을 해제한다.
2. 심볼릭링크를 걸어서 해결한다.
# ln -s /home/vpopmail /usr/local/vpopmail
명 령어로 링크를 생성 한 다음 위의 make ... 명령을 다시 실행하면 원활히 진행이 된다.
imap 인증시에 vpopmail의 인증시스템을 사용합니다.
6. courier-imap의 세팅을 변경합니다.
# cd /usr/local/libexec/courier-imap/authlib/
Vchkpw 의 인증모듈만 남겨둡니다. (??)
# mkdir sample
# mv * ./sample(Vchkpw는 제외)
==> mv authcustom authpam authuserdb ./sample
////////////////////////////////////////////////////////////////////
[주 의]
5.4R 에서 포트로 courier-imap설치후 변화된점.
/usr/local/lib/courier-authlib/libauthvchkpw.so.0
/usr/local/lib/courier-authlib/libauthvchkpw.so
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ==> 기존의 파일대신에 생기는 파일이다.
디렉토리 구조의 변화로 인해
# cd /usr/local/libexec/courier-imap/authlib/
이 존재하지 않는다.
대신 아래와 같이 .so파일이 생성되는것을 알 수 있다.
#find / | egrep authvchkpw
/usr/local/lib/courier-authlib/libauthvchkpw.so.0
/usr/local/lib/courier-authlib/libauthvchkpw.so
그 래서 5.4R에서 설치시
=================================================
Vchkpw 의 인증모듈만 남겨둡니다. (??)
# mkdir sample
# mv * ./sample(Vchkpw는 제외)
==> mv authcustom authpam authuserdb ./sample
=================================================
부 분은 일단 건너뛴다.
/etc/rc.conf 파일에
courier_authdaemond_enable="YES"
courier_imap_imapd_enable="YES"
항 목을 추가한다.
////////////////////////////////////////////////////////////////////
# cd /usr/local/etc/courier-imap
# mv imapd.dist imapd
# vi imapd <- imapd의 내용을 수정한다.
*****************************************************
(아 래 ADDRESS는 수정해도되고 안해도 됨)
ADDRESS=0
+--> ADDRESS=192.168.1.21 -> 서버 ip
##NAME: AUTHMODULES:0
...
#AUTHMODULES="authcustom authuserdb authvchkpw authpam"
AUTHMODULES="authvchkpw"
##NAME: AUTHMODULES_ORIG:0
#
# For use by webadmin
#AUTHMODULES_ORIG="authcustom authuserdb authvchkpw authpam"
AUTHMODULES_ORIG="authvchkpw"
MAXPERIP=4
+--> MAXPERIP=10 -> 동일 ip에서 최대 접속 (각자 알아서 정하세요.)
IMAPDSTART=NO
+--> IMAPDSTART=YES -> yes로 해야 대몬이 시작함
*****************************************************
# mv imapd.cnf.dist imapd.cnf
# chmod 644 imapd.cnf
# vi imapd.cnf
****************
[ req_dn ]
C=US
ST=NY
L=New York
O=Courier Mail Server
OU=Automatically-generated IMAP SSL key
CN=localhost
emailAddress=postmaster@example.com --> emailAddress=postmaster@pettree.co.kr
****************
# chmod 444 imapd.cnf
# mv quotawarnmsg.example quotawarnmsg
# cd /usr/local/etc/rc.d
마찾가지로 sample이라는 폴더를 만들고 courier-imap관련 파일을 모두 옮깁니다. (courier-imap-imapd.sh 제외)
==> # mkdir sample
# mv courier-imap-imapd.sh.sample courier-imap-imapd.sh
# mv *.sample ./sample
courier-imap-imapd.sh 파일에서 imapd-ssl 관련사항들을 지웁니다.
안지우면 제대로 작동이 안되더군요... ^_____________^
# vi /usr/local/etc/rc.d/courier-imap-imapd.sh
===================================================================== 삭제된 부분
18
19 #if test ! -f /usr/local/etc/courier-imap/imapd-ssl
20 #then
21 # echo "/usr/local/etc/courier-imap/imapd-ssl does not exist, forgot make install-configure?"
22 # exit 1
23 #fi
26 #. /usr/local/etc/courier-imap/imapd-ssl
53 . /usr/local/etc/courier-imap/imapd ;#
54 # . /usr/local/etc/courier-imap/imapd-ssl ;
=====================================================================
////////////////////////////////////////////////////////////////////
==> 5.4R 포트에서 설치시 각각 해당 설정파일에 해당 항목만 존재한다.
따라서 위의 courier-imap-imapd.sh 파일에 위의 내용이 존재하질 않는다.
그리고 courier-imap-*.sh 파일이 courier_authdaemond.sh(imap인증담당)이 먼저 기동이
되어야 실행이 된다. 또한 이 데몬들은 /etc/rc.conf파일에 아래와 같이 등록이 되어야 한다.
courier_authdaemond_enable="YES"
courier_imap_imapd_enable="YES"
////////////////////////////////////////////////////////////////////
# /usr/local/etc/rc.d/courier-imap-imapd.sh start
이제 테스트를 해봅니다. 로컬에서 로컬, 외부에서 로컬, 로컬에서 외부를 해봅시다.
릴레이 설정도 검사합니다.
** 143포트가 열렸는지 확인합니다.
# netstat -na
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 *.143 *.* LISTEN
tcp6 0 0 *.143 *.* LISTEN
...
**
7. squirrelmail을 설치합니다.
# cd /usr/ports/mail/squirrelmail
# make install
7.1 php.ini 파일 수정
# cd /usr/local/etc
# vi php.ini-recommended(저장할때 php.ini로 저장) 혹은 vi php.ini
register_global=On
file_uploads = On
session.auto_start = 1
과 같이 수정한 후
:w php.ini => 현재 작업중인 파일을 php.ini파일로 저장
:q! => 현재 작업중인 파일을 저장하지 않고 끝냄
8. 아파치 설정에서 alias를 만들어줍니다.(httpd.conf)
# vi /usr/local/etc/apache2/httpd.conf
Alias /squirrelmail "/usr/local/www/squirrelmail/"을 추가합니다.
<Directory "/usr/local/www/squirrelmail">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
9. squirrelmail 설정
# cd /usr/local/www/squirrelmail
# ./configure
-------------------------------------------------------------
configure 화면의 설정 내용.
1.Organization Preferences :
-> 6. Default Language : ko_KR
2. Server Setting :
-> 1. Domain 으로 들어가서 해당 도메인 명을 넣는다.
-> A. Update IMAP Settings : localhost:143 (courier)
-> 6. Authentication type : login <--확인
4. General Options :
-> 1. Default Charset : euc-KR
D. Set pre-defined settings for specific IMAP servers
-> courier
8. Plugins
-> 다람쥐메일의 플러그인입니다. 필요한것을 받아서 설치하세요.
# lynx www.squirrelmail.org/plugins.php 에서
아래의 플러그인을 받는다.
- unsafe_image_rules : html로 오는 메일과 그림을 바로 출력하게 해줌.
- address_add(address book) : 편지본문에서 바로 주소추가 가능하게 함
- archive_mail : 편지함의 편지를 html이나 elm형식으로 백업 가능하게 함.
- bookmarks(Add-ON) : 간단하게 즐겨찾기 기능 제공
- folder_sizes : 폴더의 사용률을 보여준다.
- msg_flags : 읽은 메시지와 읽지 않은 메시지등을 이쁜 아이콘으로 표시
- notes : 간단한 메모를 남길수 있는 기능을 제공
- view_as_html : 편지 본문에서 html과 text로 보기전환 가능
# tar -xvzpf unsafe_image_rules.xxx.tar.gz -C /usr/local/www/squirrelmail/plugins/
와 같은형식으로 squirrelmail 의 plugins 디렉토리 밑에 디렉토리를 만들어서 푼다.
( tar 의 -C 옵션은 타겟디렉토리를 지정하는 거랍니다.)
압축을 다 푼 후에
# chown -R www:www /usr/local/www/squirrelmail/plugins/
그리고 위에서 플러그 인을 추가하던 메뉴에서 해당 플러그인을 추가합니다.
(# cd /usr/local/www/squirrelmail/
# ./configure -> 8번에서 해당 플러그인을 추가하고 저장후 빠져나오기)
설 정을 하고 나옴.
그외의 설정을 한 뒤 "S"를 눌러 save를 합니다.
그 후 "q"를 눌러 빠져 나오면 됩니다.
-------------------------------------------------------------
웹 메일을 설정합니다.
여기서 imap login 형태는 login으로 합니다.
참고로 한글메일이 깨질 수가 있습니다.
이것은 php compile시 mbstring옵션을 넣으셔야 합니다.
안하셨다면 재설치
여기에 이번에 추가적으로 웹메일클라이언트인 squirrelmail을 포트로 설치하고자 하며, 또한 스팸방지를위해 spamassassin이라고 하는것을 추가적으로 설치하고자 합니다.
앞서 문서에서 qmailadmin까지의 설정을 마치셨으면 다음의 작업을 합니다.
(사실 qmailadmin에서 유저계정을 추가하면 (vpopmail설치시) ~vpopmail/domains/해당도메인/계정 이 생성이 됩니다. 아래의 경우는 일반유저를 대상으로 한경우를 대비해서랍니다. )
1. /usr/share/skel/ 하의 몇몇 파일을 수정합니다.
-- dot.cshrc 파일의 경우
set mail = (/var/mail/$USER)행을 찾아 다음과 같이 추가를 해줍니다.
-----------------------------------------------
...
#set mail=(/var/mail/$USER)
setenv MAIL ~vpopmail/domains/해당도메인명/$USER/Mailbox
setenv MAILDIR ~vpopmail/domains/해당도메인명/$USER/Maildir
setenv MAILTMP ~vpopmail/domains/해당도메인명/$USER/Maildir/tmpfile
alias mail `/var/qmail/bin/maildir2mbox;/var/qmail/bin/qmail`
alias pine `/var/qmail/bin/maildir2mbox;/var/qmail/bin/pinq`
alias elm `/var/qmail/bin/maildir2mbox;/var/qmail/bin/elq`
-----------------------------------------------
-- dot.shrc 파일의 경우
-----------------------------------------------
...
MAIL=~vpopmail/domains /해당도메인명/$USER/Mailbox
MAILDIR=~vpopmail/domains/해당도메인명/$USER /Maildir
MAILTMP=~vpopmail/domains/해당도메인명/$USER/Maildir/tmpfile
export MAIL MAILDIR MAILTMP
alias mail=`/var/qmail/bin/maildir2mbox;/var/qmail/bin/qmail`
alias pine=`/var/qmail/bin/maildir2mbox;/var/qmail/bin/pinq`
alias elm=`/var/qmail/bin/maildir2mbox;/var/qmail/bin/elq`
-----------------------------------------------
2. Maildir 을 작성합니다.
# /var/qmail/bin/maildirmake /usr/share/skel/Maildir
3. 현재 계정이 있는 유저를 위해 작업합니다.
# cp -R /usr/share/skel/Maildir ~vpopmail/domains/도메인명/유저명
# chown -R 유저명 ~vpopmail/domains/도메인명/유저명/Maildir
4. 각자 계정의 rc파일을 변경합니다.
5. 이제 courier-imap을 설치합니다.
만약 qmail의 pop3프로그램을 사용하시겠다면 systemadmin.co.kr의 qmail설치문서를 참고하셔서 qmail-pop3d.sh를 작성하세요.
# cd /usr/ports/mail/courier-imap/
# make WITHOUT_OPENSSL=yes WITHOUT-PAM=yes WITHOUT_AUTHDAEMON=yes WITH_VPOPMAIL=yes WITH_TRASHQUOTA=yes install
**포트로 설치시 5.3R기준으로볼때 Makefile 에서 VPOPMAIL=${LOCALBASE}/vpopmail 로 되어있어 에러가 나는 경우 이 부분의 경로를 수정해주고 다시 make를 하면 됩니다. **
# vi Makefile
VPOPMAILDIR?= ${LOCALBASE}/vpopmail
+->VPOPMAILDIR?= /home/vpopmail
위 와 같이 수정을 합니다.
<B>
==> 5.4R 에서 설치시 주의사항 :
courier-imap 을 포트로 설치히면 이때 버전이 5.3R보다 높은 4.0.2버전이 설치된다.
이는 Makefile에서 VPOPMAIL이란 변수가 사라져서 vpopmail을 소스로 설치한 경우 "/usr/local/vpopmail/" 에서 파일을 찾을수 없다고 하면서 에러를 내고 인스톨이 중지된다.
그럼 인스톨중에 생성한 /usr/local/vpopmail을 삭제하고
1. /usr/ports/mail/vpopmail/Makefile 에 있는 PREFIX의 경로를 현재 설정에 맞게 수정한 다음 다시 make install
/usr/ports/mail/vpopmail/Makefile:
# User-configurable variables
#
# Define these to change from the default behaviour
#
[...]
# PREFIX - installation area for vpopmail (see comment below)
[...]
# Uncomment this, or set PREFIX to /home if you have an existing
# vpopmail install with the vpopmail users' home directory set to
# /home/vpopmail - package rules dictate we default
to /usr/local/vpopmail
#
#PREFIX?= /home
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ==> 이부분의 주석을 해제한다.
2. 심볼릭링크를 걸어서 해결한다.
# ln -s /home/vpopmail /usr/local/vpopmail
명 령어로 링크를 생성 한 다음 위의 make ... 명령을 다시 실행하면 원활히 진행이 된다.
imap 인증시에 vpopmail의 인증시스템을 사용합니다.
6. courier-imap의 세팅을 변경합니다.
# cd /usr/local/libexec/courier-imap/authlib/
Vchkpw 의 인증모듈만 남겨둡니다. (??)
# mkdir sample
# mv * ./sample(Vchkpw는 제외)
==> mv authcustom authpam authuserdb ./sample
////////////////////////////////////////////////////////////////////
[주 의]
5.4R 에서 포트로 courier-imap설치후 변화된점.
/usr/local/lib/courier-authlib/libauthvchkpw.so.0
/usr/local/lib/courier-authlib/libauthvchkpw.so
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ==> 기존의 파일대신에 생기는 파일이다.
디렉토리 구조의 변화로 인해
# cd /usr/local/libexec/courier-imap/authlib/
이 존재하지 않는다.
대신 아래와 같이 .so파일이 생성되는것을 알 수 있다.
#find / | egrep authvchkpw
/usr/local/lib/courier-authlib/libauthvchkpw.so.0
/usr/local/lib/courier-authlib/libauthvchkpw.so
그 래서 5.4R에서 설치시
=================================================
Vchkpw 의 인증모듈만 남겨둡니다. (??)
# mkdir sample
# mv * ./sample(Vchkpw는 제외)
==> mv authcustom authpam authuserdb ./sample
=================================================
부 분은 일단 건너뛴다.
/etc/rc.conf 파일에
courier_authdaemond_enable="YES"
courier_imap_imapd_enable="YES"
항 목을 추가한다.
////////////////////////////////////////////////////////////////////
# cd /usr/local/etc/courier-imap
# mv imapd.dist imapd
# vi imapd <- imapd의 내용을 수정한다.
*****************************************************
(아 래 ADDRESS는 수정해도되고 안해도 됨)
ADDRESS=0
+--> ADDRESS=192.168.1.21 -> 서버 ip
##NAME: AUTHMODULES:0
...
#AUTHMODULES="authcustom authuserdb authvchkpw authpam"
AUTHMODULES="authvchkpw"
##NAME: AUTHMODULES_ORIG:0
#
# For use by webadmin
#AUTHMODULES_ORIG="authcustom authuserdb authvchkpw authpam"
AUTHMODULES_ORIG="authvchkpw"
MAXPERIP=4
+--> MAXPERIP=10 -> 동일 ip에서 최대 접속 (각자 알아서 정하세요.)
IMAPDSTART=NO
+--> IMAPDSTART=YES -> yes로 해야 대몬이 시작함
*****************************************************
# mv imapd.cnf.dist imapd.cnf
# chmod 644 imapd.cnf
# vi imapd.cnf
****************
[ req_dn ]
C=US
ST=NY
L=New York
O=Courier Mail Server
OU=Automatically-generated IMAP SSL key
CN=localhost
emailAddress=postmaster@example.com --> emailAddress=postmaster@pettree.co.kr
****************
# chmod 444 imapd.cnf
# mv quotawarnmsg.example quotawarnmsg
# cd /usr/local/etc/rc.d
마찾가지로 sample이라는 폴더를 만들고 courier-imap관련 파일을 모두 옮깁니다. (courier-imap-imapd.sh 제외)
==> # mkdir sample
# mv courier-imap-imapd.sh.sample courier-imap-imapd.sh
# mv *.sample ./sample
courier-imap-imapd.sh 파일에서 imapd-ssl 관련사항들을 지웁니다.
안지우면 제대로 작동이 안되더군요... ^_____________^
# vi /usr/local/etc/rc.d/courier-imap-imapd.sh
===================================================================== 삭제된 부분
18
19 #if test ! -f /usr/local/etc/courier-imap/imapd-ssl
20 #then
21 # echo "/usr/local/etc/courier-imap/imapd-ssl does not exist, forgot make install-configure?"
22 # exit 1
23 #fi
26 #. /usr/local/etc/courier-imap/imapd-ssl
53 . /usr/local/etc/courier-imap/imapd ;#
54 # . /usr/local/etc/courier-imap/imapd-ssl ;
=====================================================================
////////////////////////////////////////////////////////////////////
==> 5.4R 포트에서 설치시 각각 해당 설정파일에 해당 항목만 존재한다.
따라서 위의 courier-imap-imapd.sh 파일에 위의 내용이 존재하질 않는다.
그리고 courier-imap-*.sh 파일이 courier_authdaemond.sh(imap인증담당)이 먼저 기동이
되어야 실행이 된다. 또한 이 데몬들은 /etc/rc.conf파일에 아래와 같이 등록이 되어야 한다.
courier_authdaemond_enable="YES"
courier_imap_imapd_enable="YES"
////////////////////////////////////////////////////////////////////
# /usr/local/etc/rc.d/courier-imap-imapd.sh start
이제 테스트를 해봅니다. 로컬에서 로컬, 외부에서 로컬, 로컬에서 외부를 해봅시다.
릴레이 설정도 검사합니다.
** 143포트가 열렸는지 확인합니다.
# netstat -na
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 *.143 *.* LISTEN
tcp6 0 0 *.143 *.* LISTEN
...
**
7. squirrelmail을 설치합니다.
# cd /usr/ports/mail/squirrelmail
# make install
7.1 php.ini 파일 수정
# cd /usr/local/etc
# vi php.ini-recommended(저장할때 php.ini로 저장) 혹은 vi php.ini
register_global=On
file_uploads = On
session.auto_start = 1
과 같이 수정한 후
:w php.ini => 현재 작업중인 파일을 php.ini파일로 저장
:q! => 현재 작업중인 파일을 저장하지 않고 끝냄
8. 아파치 설정에서 alias를 만들어줍니다.(httpd.conf)
# vi /usr/local/etc/apache2/httpd.conf
Alias /squirrelmail "/usr/local/www/squirrelmail/"을 추가합니다.
<Directory "/usr/local/www/squirrelmail">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
9. squirrelmail 설정
# cd /usr/local/www/squirrelmail
# ./configure
-------------------------------------------------------------
configure 화면의 설정 내용.
1.Organization Preferences :
-> 6. Default Language : ko_KR
2. Server Setting :
-> 1. Domain 으로 들어가서 해당 도메인 명을 넣는다.
-> A. Update IMAP Settings : localhost:143 (courier)
-> 6. Authentication type : login <--확인
4. General Options :
-> 1. Default Charset : euc-KR
D. Set pre-defined settings for specific IMAP servers
-> courier
8. Plugins
-> 다람쥐메일의 플러그인입니다. 필요한것을 받아서 설치하세요.
# lynx www.squirrelmail.org/plugins.php 에서
아래의 플러그인을 받는다.
- unsafe_image_rules : html로 오는 메일과 그림을 바로 출력하게 해줌.
- address_add(address book) : 편지본문에서 바로 주소추가 가능하게 함
- archive_mail : 편지함의 편지를 html이나 elm형식으로 백업 가능하게 함.
- bookmarks(Add-ON) : 간단하게 즐겨찾기 기능 제공
- folder_sizes : 폴더의 사용률을 보여준다.
- msg_flags : 읽은 메시지와 읽지 않은 메시지등을 이쁜 아이콘으로 표시
- notes : 간단한 메모를 남길수 있는 기능을 제공
- view_as_html : 편지 본문에서 html과 text로 보기전환 가능
# tar -xvzpf unsafe_image_rules.xxx.tar.gz -C /usr/local/www/squirrelmail/plugins/
와 같은형식으로 squirrelmail 의 plugins 디렉토리 밑에 디렉토리를 만들어서 푼다.
( tar 의 -C 옵션은 타겟디렉토리를 지정하는 거랍니다.)
압축을 다 푼 후에
# chown -R www:www /usr/local/www/squirrelmail/plugins/
그리고 위에서 플러그 인을 추가하던 메뉴에서 해당 플러그인을 추가합니다.
(# cd /usr/local/www/squirrelmail/
# ./configure -> 8번에서 해당 플러그인을 추가하고 저장후 빠져나오기)
설 정을 하고 나옴.
그외의 설정을 한 뒤 "S"를 눌러 save를 합니다.
그 후 "q"를 눌러 빠져 나오면 됩니다.
-------------------------------------------------------------
웹 메일을 설정합니다.
여기서 imap login 형태는 login으로 합니다.
참고로 한글메일이 깨질 수가 있습니다.
이것은 php compile시 mbstring옵션을 넣으셔야 합니다.
안하셨다면 재설치
라벨:
리눅스,
아파치,
웹메일,
apache,
linux,
Mail,
Mail server,
qmail,
squirrelmail
피드 구독하기:
글 (Atom)