A.4. 구조

A.4.1. 모듈시스템구조

인터넷 MTA는 다양한 일을 합니다. Sendmail과 smail 등의 초기 디자인은 단일구성체입니다. 다른 말로, 하나의 커다란 복합으로서 '모자를 바꿔쓰는' 식인데, SMTP서버가 되려고 한 모자를 쓰고, SMTP클라이언트가 되려고 다른 모자를 쓰고, 또 메세지를 로컬로 삽입하려고 다른 모자를 쓰고, 큐를 관리하려고 다른 모자를 씁니다.

큐메일은 모듈방식입니다. 위의 각 기능들을 별개의 프로그램으로 수행합니다. 따라서, 프로그램들은 훨씬 더작고, 더간단하며, 기능이나 보안의 벅이 더 적습니다. 보안을 더 강화하기 위해서, 큐메일모듈은 상이한 특권으로 운행하고, 서로 "기대"하지 않기 때문에, 다른 모듈이 늘 하던대로 하리라고 추정하지 않습니다. < /para>

핵심모듈들입니다.

표 A-1. 핵심모듈

모듈 기능
qmail-smtpd SMTP를 통한 메세지의 수용과 거절
qmail-inject 메세지의 로컬삽입
qmail-rspawn/qmail-remote 원격전달처리
qmail-lspawn/qmail-local 로컬전달처리
qmail-send 큐처리
qmail-clean 큐청소

모듈방식에는 단점도 있습니다. 단일구성체의 MTA와 달리, 모듈간 상호작용은 잘정의되어있어서 모듈은 최소한의 필요정보만 서로 교환합니다. 이는 대개 '좋은일'이지만, 때로는 일을 하기가 어렵게 합니다. 예를 들면, sendmail의 "-v"플랙은 디버깅목적으로 Sendmail이 동작궤적을 표준출력으로 내보냅니다. 한 sendmail바이너리가 삽입, 큐, 앨이어스처리, .forward파일처리, SMTP를 통한 원격송부 등을 다하기때문에, 메세지를 전달할때까지의 전체전달을 쉽게 추적할 수 있습니다. 큐메일에 동등한 능력은 없고, 모듈에서 모듈로 "디벅"플랙을 건네주는 것을 구현하려면 엄청나게 코드를 고쳐야 하고, 더 복잡해집니다.

A.4.2. 파일구조

/var/qmail이 큐메일파일구조의 근본입니다. 큐메일을 컴파일할때 바꿀 수는 있지만, 다른 애드민이 무엇인가를 어디에서 찾아야 할 지 알게 그대로 두어야 좋습니다. 큐메일트리의 일부 또는 전부를 다른곳에 꼭 놓고 싶으면, 심볼릭링크를 이용하는 것이 낳습니다. 자세한 내용은 설치항목의 디렉토리만들기항목을 보시기 바랍니다.

톱레벨 섭디렉토리입니다.

표 A-2. 섭디렉토리

디렉토리 내용
alias 시스템전반의 앨리어스에 대한 .qmail 파일
bin 프로그램바이너리와 스크립트
boot 기동스크립트
control 설정파일
doc 문서 (맨페지 제외)
man 맨페지
queue 보내기전메세지의 큐
users 큐메일사용자 데이터베이스 파일

A.4.3. 큐구조

컴파일디렉토리의 INTERNALS파일에 큐의 자세한 내용을 더 잘 설명해놓았습니다. 다음은 큐구조의 좀더 넓은 개요입니다.

표 A-3. 큐구조

섭디렉토리 내용
bounce 영구전달에러
info* 송신자주소를 봉투하기
intd qmail-queue의 봉투진행
local* 로컬봉투수신자주소
lock lock파일
mess* 메세지파일
pid qmail-queue가 i-node번호를 얻기 위해 사용
remote* 원격봉투송신자주소
todo 완전봉투

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

유의점: 디렉토리에 "*"표시가 있으면 (conf-split-1)까지 "0", "1", ..., 등으로 된 분할섭디렉토리를 갖고 있는데, conf-split은 컴파일디렉토리의 conf-split파일에 포함된 컴파일시설정입니다. 기본은 23입니다. 이렇게 디렉토리를 쪼개는 것은 매우 바쁜서버에서 단일디렉토리의 파일수를 줄이기 위해서입니다.

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

아이노드번호에 따라서 섭디렉토리하의 파일들을 이름짓습니다. 이것이 뜻하는 바는, 표준 유닉스 유틸리티인 mv, dump/restore, tar 등을 써서 수동으로 그것들을 움직이지 못합니다. 큐파일을 정확하게 이름바꾸는 사용자공헌 유틸리티가 http://www.qmail.org에 두어개 있습니다.

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

유의점: 큐메일이 가동중에는 큐메일파일을 수정하지 않아야 좋습니다. 큐를 수정하려면, 먼저 큐메일을 멈추고, 큐를 조심하여 다루고, 다시 큐메일을 가동하십시오.

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

A.4.4. 사진

/var/qmail/doc에 PIC로 이름을 시작하는 파일들이 죽 있습니다. 이들은 큐메일이 감당하는 다양한 상태의 문장"사진"입니다. 다양한 모듈을 통한 통제흐름을 보여주며, 복잡한 설정을 만들고 디버깅하는 데 큰 도움이 됩니다.

표 A-4. 사진들

파일이름 개요
PIC.local2alias 로컬앨리어스에 전달한 로컬삽입메세지
PIC.local2ext 확장주소로 전달한 로컬삽입메세지
PIC.local2local 로컬사용자에게 전달한 로컬삽입메세지
PIC.local2rem 원격주소로 전달한 로컬삽입메세지
PIC.local2virt 로컬버추얼도메인상의 주소로 전달한 로컬삽입메세지
PIC.nullclient 널클라이언트에 삽입한 메세지
PIC.relaybad 로컬호스트를 중계로 사용하는 시도의 실패
PIC.relaygood 로컬호스트를 중계로 사용하는 시도의 성공
PIC.rem2local SMTP를 통해 받은 로컬사용자에로의 메세지

이 파일들은 http://www.qmail.org/man/index.html에서 온라인으로 구할 수 있습니다.

큐메일의 진짜사진을 원하신다면, Andre Opperman의 "대형큐메일사진"을 http://www.nrg4u.com/에서 보십시오.