My/Job (개인작업물)

qmail vpopmail 사용자를 위한 pop3 동기화

알찬돌삐 2007. 4. 27. 11:52
아래 내용들은......
저와 같은 방식으로 운영하는 사람들에게 해당됩니다.

각 파일명은 볼드체로 표기합니다.

운영방법

Qmail + vpopmail

발송 : 기존 Qmail smtp 로 발송
수신 : Qmail local 에서 수신후 각 사용자별 디렉토리 new/수신된메일파일

위의 방식은 Qmail + vpopmail 입니다.

이제 이걸 디비에 넣도록 하겠습니다..

.qmail-default
| /home/vpopmail/bin/vdelivermail '' delete
| /var/qmail/bin/qmail-mailtodb "${EXT}" "${SENDER}"


메일이 수신되자마자 /var/qmail/bin/qmail-mailtodb 파일에 인자를 전달해 줍니다.
${EXT} : 수신자
${SENDER} : 발신자

/var/qmail/bin/qmail-mailtodb 는 따로 만든 php 스크립트이며....
메일파일을 파싱후 디비에 insert 하는 작업을 수행합니다.
이건 공개하기 쪽팔려서 -;-;.......

그럼 이제 메일이 수신되면 디비에도 메일이 존재하고 실제 사용자디렉토리에도 메일파일이 존재합니다.
웹메일은 디비의 메일을 사용하여 기존 다람쥐메일(Squirrel Mail) imap 사용시보다 체감속도가 5~8 배 이상
상승하였습니다.

이때 pop3 도 사용하기 때문에.......
pop3 사용자가 pop3 로 접속하여 메일을 삭제하였을 경우.
실제 pop3 에는 메일이 없지만 웹메일(디비)에는 메일이 존재하는 경우가 발생합니다.

이를 위해 qmail-pop3d.c 와 vpopmail 의 vchkpw.c 파일을 수정토록 하겠습니다.
qmail 은 임은재님의 칵테일 패치가 되었을때 수정하였습니다.

글자색이 빨간색이 추가,수정한 부분입니다.

qmail-pop3d.c   

Qmail 의 Makefile

전체 파일을 올리지 않고 수정내역이 두군데이기 때문에 두군데만 올립니다.

vpopmail 의 vchkpw.c


위 세파일을 수정하신후 컴파일 하시면 됩니다.

그러면 pop3 사용자가 접속하여.....
메일을 삭제하였을 경우
 sprintf(filename, "/pop3사용자가 지운 메일 로그를 저장할 절대경로/%s", TheName[0]); // 추가
이 부분에서 지정한 곳에 사용자아이디 로 지운 파일명이 누적이 됩니다.

위와 같이 해 주신후.

웹에서 사용자 로그인시. 해당 로그를 분석하여 동기화시켜주시면 됩니다..

전 로그인시 + cron으로 매시간마다 체크하도록 하였습니다.

* 위 게시물을 이용하여 생긴 서버 장애 및 데이터 손실은 본인에게 책임이 없음을 알려드립니다. *
* 불안하시면 직접 만들어 쓰시길 권해드립니다. *
.