1. 소개

1.1. 대상독자

「큐메일과 삶」 (Life with qmail, 이하 lwq라고 줄여서 부름)은 여유PC에 Linux를 이제 막 설치한 일반 아마추어 (신참자)부터 경험 많은 시스템 관리자 또는 메일 서버 관리자에 이르기까지 큐메일을 운영하고자 하는 누구든지 그 대상입니다. 빠지거나 불분명한 점들은 알려주십시오. lwq (at) sill.org로 보내주십시오.

큐메일에 대한 풍부한 정보가 다양한 소스에 있습니다. 어떤것은 신참자들을 대상으로 하고, 어떠것은 독자가 경험이 있다고 여깁니다. lwq는 틈새들좀 메우고, 독자가 다음의 기술들만 있다고 여기는 방법으로 이러한 정보를 붙여서 단일소스로 만들고자 합니다.

1.2. 큐메일이란?

큐메일은 유닉스류 운영체제의 인터넷 Mail Transfer Agent (MTA)입니다. 대부분의 UNIX운영체제가 제공하고 있는 Sendmail시스템을 대체합니다. Simple Mail Transfer Protocol (SMTP)을 이용해서 다른 시스템의 MTA와 메세지를 교환합니다.

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

유의점: 바른이름은 Qmail이 아니고 qmail입니다.

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

1.3. qmail의 장점?

당신의 운영체제도 Sendmail이라는 MTA를 제공하고 있으리라고 여기므로, 당신이 이문서를 읽고 계신다면, 당신은 아마 더 좋은 것을 찾고 있다고 생각합니다. 큐메일이 다른 vendor가 제공하는 MTA보다 더 좋은 이유는 다음과 같습니다.

1.3.1. 안전성

안전성이 높도록 설계되었습니다. Sendmail의 안전성은 오랫동안 심각한 문제였습니다. Sendmail이 처음 만들어졌을때의 Net계는 훨씬 더 우호가 있었습니다. 누구나 서로 알았고, 안전성을 제고하려고 설계하거나 코딩할 필요가 없었습니다. 오늘날 인터넷은 넷웍서버에게는 너무나 적들이 많은 환경입니다. Sendmail을 만든 Eric Allman께서도 많은 보안을 하셨지만, 진 짜로 안전하게 만들려면 다시 설계하는 수 밖에 없었습니다.

1.3.2. 성능

메일보내기를 병행처리합니다. (20개가 default입니다.)

1.3.3. 신뢰성

한번 받은 메세지는 결코 놓치지 않습니다. 새 메일복스형태도 제공하는데, NFS에서 locking하지 않고도 잘 작동합니다.

1.3.4. 간편성

다른 동급의 MTA보다 작습니다.

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

유의점: 공식홈페지 에 장점을 더 넓게 올려놓았습니다.

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

1.4. 경력

큐메일은 지금 시카고의 일리노잇대학에 수학교수로 계시는 Dan Bernstein (DJB)께서 만드셨습니다 ( DJB 홈페지 ). 번스타인박사께서는 암호분야에서의 업적과, 미국정부를 상대로 암호화소스코드공개에 대한 소송으로도 잘 알려지셨습니다. 소송에 대해서는 http://www.news.com/News/Item/0,4,36217,00.html?owv 를 참조하십시오.

큐메일의 시초공개판은 1996년 1월 24일에 나온 0.70 베타판입니다. 시초가마판은 1996년 8월 1일의 0.90입니다.

일반판으로 처음 처음나온것은 1997년 2월 20일의 1.0입니다. 지금의 버전인 1.03은 1998년 6월 15일에 나왔습니다.

다음판은 평가판이 2.0으로 예상합니다. http://cr.yp.to/qmail/future.html에 2.0의 내용들이 있습니다.

1.5. 특징

http://cr.yp.to/qmail.html에 큐메일특징을 종합해놓았습니다. 이번 단락은 그것을 많이 참고합니다.

1.5.1. 설치

  • 당신의 유닉스기종에 자동적응하므로 이식 (porting)할 필요가 없습니다.

  • 호스트별 자동설정

  • 빠르게 설치되므로 결정할 사항이 많지 않습니다.

1.5.2. 안전

  • 주소, 파일, 프로그램 등을 서로 깨끗하게 떼어놓았습니다.

  • setuid 코드를 최소화했습니다.

  • 룻(root) 코드를 최소화했습니다.

  • Five-way trust partitioning--심도 있는 안전

  • one-way 메세지 단편들, 또는 메세지내용전체 등을 골라서 할 수 있습니다. (드문질문에 있는 QUEUE_EXTRA?를 보십시오.)

1.5.3. 메세지구조

  • RFC 822과 RFC 1123을 따릅니다.

  • address group을 전부 지원합니다.

  • 구식 주소리스트를 RFC 822 형식으로 자동변환합니다.

  • 지금의 sendmail user agent와 호환하기 위해서 sendmail 명령을 지원합니다.

  • header줄길이의 한계는 메모리가 허용하는 데까지입니다.

  • host masquerading (참조: defaulthost )

  • user masquerading (참조: MAILUSER, MAILHOST )

  • Mail-Followup-To를 자동생성합니다. (참조: QMAILMFTFILE )

1.5.4. SMTP 서비스

  • RFC 821, RFC 1123, RFC 1651, RFC 1652, RFC 1854 등의 준수

  • 8-bit도 장애무

  • RFC 931/1413/ident/TAP callbak등으로 스팸메일과 위조자 등의 추적방조

  • relay 통제기능으로 외부의 권한이 없는 중계 저지

  • relay 통제와 alias간의 불간섭

  • local IP주소 자동인식

  • 버퍼별 timeout

  • hop counting

  • 병렬처리 한도 (ucspi-tcp를 이용)

  • (ucspi-tcp를 이용해서) 악용자들로부터의 접속거부

  • 권한인정된 client에 대한 중계와 메세지 재작성

  • (rblsmtpd를 통한) RBL/ORBS지원 선택

1.5.5. 큐관리

  • 큐에 더해진 메세지의 즉각처리

  • 병렬처리한계

  • 큐디렉토리의 분열로 비대한 큐의 속도저하 방지

  • 2차방정식에 의한 재시도 스케쥴로 오래된 메세지의 처리회수 저하 (큐메일은 지연메세지를 어느 정도 자주 보냅니까?를 보세요)

  • 메세지 재시도의 독립 스케쥴

  • 자동 안전 큐하기로 시스템이 무너져도 메일을 잃지 않음

  • 수신자별 자동 첵포인트하기

  • 자동 큐청소

  • 큐보기 (qmail-qread)

  • (qmailanalog를 이용한) 자세한 전달통계

1.5.6. 되돌리기 (Bounces)

  • 기계와 사람이 읽을 수 있는 QSBMF 되돌림 메세지

  • 언어에 상관없는 RFC 1893 에러코드인 HCMSSC 지원

  • 이중 되돌림으로 postmaster에게도 보냄

1.5.7. 도메인으로 라우팅하기

  • 로컬호스트에 대해서는 여러 이름이 가능함 (참조: locals )

  • 여러 버추얼도메인 (참조: virtualdomains )

  • 도메인 와일드카드 (참조: virtualdomains )

  • 설정가능한 "percent hack" 지원 (참조: percenthack )

  • UUCP hook

1.5.8. SMTP 전달

  • RFC 821, RFC 974, RFC 1123을 따름

  • 8빗을 처리

  • 다운된 호스트를 자동 backoff

  • smarthost, localnet, mailertable등의 인공지능 라우팅 (참조: smtproutes )

  • 버퍼별 타임아웃

  • SLIP/PPP에 가장 알맞은 (serialmail을 통한) 수동 SMTP 큐

  • (serialmail을 통한) autoTURN

1.5.9. 포워딩과 메일링리스트

  • sendmal의 .forward를 (dot-forward를 이용해서) 따름

  • (fastforward를 통한) hashed forwarding 데이터베이스

  • sendmail의 /etc/aliases를 (fastforward를 이용해서) 따름

  • 어드레스 와일드카드 (.qmail-default를 보세요.)

  • 바운스와 휴가메세지를 자동전환하는 메일링리스트소유자

  • 메일링리스트바운스를 위한 자동 수신자 인식인 VERP

  • Delivered-To의 룹을 자동차단을 호스트간에도 지원

1.5.10. 로컬전달

  • 어드레스계층을 사용자가 통제하므로 fred는 fred-anything mbox 전달을 통제함

  • 믿을수있는 NFS 전달 (maildir를 보세요.)

  • procmail 등 사용자가 통제하는 프로그램 전달 (qmail-command를 보세요)

  • 새메일통지 선택 (qbiff)

  • NRUDT 반송 증표의 선택 (qreceipt)

  • 조건 필터링 (condredirect와 bouncesaying)

1.5.11. POP3 서비스

  • RFC 1939를 따름

  • UIDL 지원

  • TOP 지원

  • APOP hook

  • (checkpassword를 이용해서) 패스워드검사의 모듈화

1.6. 관련 팩키지

큐메일에서 툴이란 잘 정의된 단일함수를 움직이고, 복합함수는 여러 간단한 툴들을 파입라인으로 연결하여 만들어야 한다는 전통유닉스철학을 따릅니다. 다른 방법에서는 더욱더 복합된 툴들을 만들어서 간단한 툴들의 많은 기능을 재구성합니다.

그렇다면, 여러분은 큐메일 하나로 모든것을 다하기를 바랄지도 모르겠지만, 큐메일이 모든 것을 혼자하지 않는다는 것은 놀라운 일이 아닙니다. 이제, 큐메일을 위해 만든 가장 인기있는 add-on들중 몇개가 여기에 있습니다.

1.7. 구성

구조부록에 큐메일의 기능구조와 실제구조를 다루었습니다. 한마디로, 큐메일은 서로다른일을 하는 프로그램(모듈)들로 이어져 있습니다.

1.8. 면허

큐메일의 복사권리는 저자인 Dan Bernstein에 있고, 사용자권리진술로 배포하지 않습니다. http://cr.yp.to/softwarelaw.html에 보시면, 미국 복사권리법에서 당신의 권리라고 저자가 생각하는것을 적어놓았습니다. http://cr.yp.to/qmail/dist.html 에서 그는 큐메일의 소스코드의 배포권리를 허가했습니다. 바이너리배포는 그곳과 http://cr.yp.to/qmail/var-qmail.html.에 설명된대로 하면 용인됩니다만, 현재 누구도 실제로 하고 있지는 않습니다.

쉽게 예기해서 당신은 어떤 목적이든지 큐메일을 사용할 수 있고, 고치지 않은 큐메일소스코드배포판과 var-qmail 바이너리 배포판을 다시배포할 수 있고, 큐메일에 대한 패치를 배포할 수 있습니다. 수정된 큐메일소스코드나 비 var-qmail바이너리배포판을 배포할 수 없습니다.

1.9. 여타 MTA와 비교

이 주제로 책을 쓸 수도 있지만, 읽기에 지루합니다. 가장 많이 쓰는 유닉스 MTA들 몇개를 큐메일과 간단히 비교했습니다.

표 1. MTA들 비교

MTA 성숙 안전 특징 성능 Sendmail성 모듈화
qmail 중간 높음 높음 높음 add-on 되어있음
Sendmail 높음 낮음 높음 낮음 없음 안됨
Postfix 낮음 높음 중간 높음 맞음 되어있음
exim 중간 낮음 높음 중간 맞음 안됨

Sendmail성이란 해당 MTA가 여러면에서 Sendmail같아서, .forward 파일이나 /etc/aliases나 /var/spool/mail 등의 사용을 Sendmail에서 다른 MTA로 전환할 때 사용자들이 고려할 점이 없도록 하는 것입니다.

Cameron Laird가 http://starbase.neosoft.com/~claird/comp.mail.misc/MTA_comparison.html에 이것들과 다른 무료, 유료 MTA를 비교한 웹페지를 만들었습니다.

1.10. 문서

1.10.1. man page

큐메일배포판은 man page를 완비했습니다. 설치하면 /var/qmail/man에 놓입니다. MANPATH환경변수에 그 디렉토리를 추가하시기 바랍니다.

표 2. 큐메일 맨페지

Shell Command
Bourne (/bin/sh) MANPATH=$MANPATH:/var/qmail/man; export MANPATH
bash, Korn export MANPATH=$MANPATH:/var/qmail/man
C Shell setenv MANPATH $MANPATH:/var/qmail/man

그러면, "man qmail항목"이라고 하면 해당 man page를 보여줍니다.

http://www.qmail.org/man/index.html에서 HTML형식으로 온라인상에서도 man page를 참고할 수 있습니다.

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

유의점: 큐메일의 man page에는 정보가 있지만, 함축되고 학술형식으로 썼으므로 꼼꼼하게 읽으셔야 합니다. 한부를 인쇄하여 쭉 읽으셔서 무엇이 어디에 있는지 파악해놓아야 편합니다. 여러 장이지만 정보가 되풀이되지 않으므로, 어디에 무엇이 있는지 알지 못하면 찾기에 힘듭니다.

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

1.10.2. Docs

큐메일 배포판은 /var/qmail/doc에 다음의 서류들을 설치하여 제공합니다.

  • FAQ : Frequently Asked Questions (답과 함께)

  • INSTALL*: 설치문서

  • PIC.* : 큐메일의 핵심기능방법을 설명. 더 이상의 설명은 구조부록의 사진항목을 보십시오.

  • 설치관련한 기타 다양한 문서

이 문서들을 다음의 온라인에서도 보실 수 있습니다.

1.10.3. FAQ

다음에 공식 FAQ가 두개 있습니다.

  • /var/qmail/doc/FAQ: 일반 텍스트판,

  • web FAQ

web FAQ가 더 충실합니다.

1.10.4. 책

1.10.4.1. The qmail Handbook

큐메일과삶의 저자인 Dave Sill이 Apress출판사에서 큐메일에 대한 책을 냈는데 2001년 10월 21일에 구입가능합니다. 이 qmail Handbook이란 책은 본 가이드에 있는 내용 모두를 다루지만, 더 깊이 들어가고, 새로운 내용도 많이 있습니다.

더 알고 싶으시면 요기를 보시고, 미리주문하시려면 요기여기를 보십시오.

1.10.4.2. qmail

John Levine 께서 O'Reilly & Associates출판사에서 qmail이란 책을 쓰고 계시고 올해말쯤에 구입가능합니다. O'Reilly는 컴퓨터관련출판에서는 탁월한 명성을 갖고 있습니다.

1.10.4.3. Running qmail

Richard Blum께서 Running qmail을 쓰셨고, Sams출판사에서 출간되었습니다. 이 책은 큐메일메일링리스트에서 다양한 평가를 받았습니다.

더 알고 싶으시거나 주문하시려면 요기를 보십시오.

1.10.5. 메일링리스트 고문서

Dan Bernstein이 유지하는 큐메일의 이메일 메일링리스트는 귀중한 정보소스입니다. 메일링리스트메세지의 고문서는 http://www.ornl.gov/its/archives/mailing-lists/qmail/에 보관됩니다.

그 고문서에 대한 서치엔진은 http://www-archive.ornl.gov:8000/에 있습니다.

기타 web 고문서는 다음에서 얻을 수 있습니다.

큐메일에 관한 대부분의 질문은 먼저 메일링리스트 고문서를 뒤지면 답을 얻을 수 있습니다.

1.10.6. 기타 웹사이트

1.11. 지원

1.11.1. 메일링리스트

다음의 메일링리스트는 cr.yp.to에 있습니다. 스패머가 이메일주소를 거두지 못하게 하려고 완전하고 유효한 주소와 "mailto" URL을 쓰지 않습니다.

메일링리스트는 ezmlm으로 관리하는데, 주소별로 고유기능을 담당합니다.

  • listname(at)list.cr.yp.to: 메세지송부주소로서 이리로 메세지를 보내시면 모든 가입자에게 보내집니다. 가입/가입해제 신청을 이리로 하시면 안되는데, 그러면 가입(해제)가 되지도 않을 뿐만 아니라, 가입자들을 성가시게 하기 때문입니다.

  • listname-help(at)list.cr.yp.to: "help"주소입니다. 명령주소와 일반사용정보를 보내드립니다.

  • listname-subscribe(at)list.cr.yp.to: 빈 메세지를 이리로 보내면 가입됩니다.

  • listname-unsubscribe(at)list.cr.yp.to: 빈 메세지를 이리로 보내면 가입해제됩니다.

예로서 joe@example.com와 같이 가입(해제)주소를 적으시려면 다음과 같이 주소를 만들어 보냅니다.
listname-subscribe-joe=example.com@list.cr.yp.to

1.11.1.1. 큐메일

주요 큐메일 메일링리스트. serialmail을 빼고는 큐메일에 관련된 모든것에 관한 토론과 질문과 대답. 질문을 보내시기 전에 FAQ를 읽으시고, 메일링리스트고문서를 뒤지시기 바랍니다. 질문을 하실때에는 다른 사람이 답해줄 수 있도록 다음과 같은 충분한 내역을 포함하시기 바랍니다.

  • 무엇을 하셨습니까? 설정을 어떻게 하셨습니까? 무엇이 중요한 지 모르시면 qmail-showctl명령의 결과물을 포함하십시오. 무슨 행동을 하셨습니까?

  • 무엇이 일어나길 바라셨습니까? 무슨 결과를 얻으려고 하셨습니까? 읽는 분이 추측해서 알아내리라고는 생각지 마십시오.

  • 무슨일이 일어났습니까? 실제 결과를 설명하십시오. 로그파일을 잘라서 포함하시고, 메세지사본을 헤더와 함께 포함하십시오.

1.11.1.2. qmailannounce

새로운 발행은 여기에 공표됩니다. 가입신청주소는 없고, 읽기전용입니다.

1.11.1.3. serialmail

serialmail 패케지관련 토론입니다.

1.11.1.4. ezmlm

ezmlm 메일링리스트 관리에 대한 토론입니다.

1.11.2. 상담역

http://www.qmail.org/top.html#paidsup를 보시면 상용 지원 제공자명단이 있습니다.

1.12. FAQTS 지식기지

큐메일관련 질의응답은 http://qmail.faqts.com에 있습니다. FAQ에서도 답해주지 않는 질문은 이 지식기지를 검색해보세요. "어쩌지"류의 질문에 답하는 데는 특히 좋습니다.