인터넷 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를 통한 원격송부 등을 다하기때문에, 메세지를 전달할때까지의 전체전달을 쉽게 추적할 수 있습니다. 큐메일에 동등한 능력은 없고, 모듈에서 모듈로 "디벅"플랙을 건네주는 것을 구현하려면 엄청나게 코드를 고쳐야 하고, 더 복잡해집니다.
/var/qmail이 큐메일파일구조의 근본입니다. 큐메일을 컴파일할때 바꿀 수는 있지만, 다른 애드민이 무엇인가를 어디에서 찾아야 할 지 알게 그대로 두어야 좋습니다. 큐메일트리의 일부 또는 전부를 다른곳에 꼭 놓고 싶으면, 심볼릭링크를 이용하는 것이 낳습니다. 자세한 내용은 설치항목의 디렉토리만들기항목을 보시기 바랍니다.
톱레벨 섭디렉토리입니다.
컴파일디렉토리의 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에 두어개 있습니다.
-------------------------------------------------------------
유의점: 큐메일이 가동중에는 큐메일파일을 수정하지 않아야 좋습니다. 큐를 수정하려면, 먼저 큐메일을 멈추고, 큐를 조심하여 다루고, 다시 큐메일을 가동하십시오.
-------------------------------------------------------------
/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/에서 보십시오.