3. 설정

권장 소스타볼 방법이나, 자동컴파일 패케지로부터 큐메일을 설치하셨습니다. 이번 항목에는 메일애드민이나 시스템애드민이 자기가 원하는 대로 큐메일을 운영하기 위해 큐메일을 설정하는 데 필요한 정보가 있습니다.

3.1. 설정파일

모든 큐메일 시스템설정파일은 ~alias에 있는 .qmail파일을 빼고는 모두 /var/qmail/control에 놓여져 있습니다. qmail-control 맨페지에는 다음과 같은 테이블이 있습니다.

표 5. 설정파일

Control Default Used by Purpose
badmailfrom none qmail-smtpd blacklisted From addresses
bouncefrom MAILER-DAEMON qmail-send username of bounce sender
bouncehost me qmail-send hostname of bounce sender
concurrencylocal 10 qmail-send max simultaneous local deliveries
concurrencyremote 20 qmail-send max simultaneous remote deliveries
defaultdomain me qmail-inject default domain name
defaulthost me qmail-inject default host name
databytes 0 qmail-smtpd max number of bytes in message (0 = no limit
doublebouncehost me qmail-send host name of double bounce sender
doublebounceto postmaster qmail-send user to receive double bounces
envnoathost me qmail-send default domain for addresses without "@"
helohost me qmail-remote host name used in SMTP HELO command
idhost me qmail-inject host name for Message-ID's
localiphost me qmail-smtpd name substituted for local IP address
locals me qmail-send domains that we deliver locally
me FQDN of system various default for many control files
morercpthosts none qmail-smtpd secondary rcpthosts database
percenthack none qmail-send domains that can use "%"-style relaying
plusdomain me qmail-inject domain substituted for trailing "+"
qmqpservers none qmail-qmqpc IP addresses of QMQP servers
queuelifetime 604800 qmail-send seconds a message can remain in queue
rcpthosts none qmail-smtpd domains that we accept mail for
smtpgreeting me qmail-smtpd SMTP greeting message
smtproutes none qmail-remote artificial SMTP routes
timeoutconnect 60 qmail-remote how long, in seconds, to wait for SMTP connection
timeoutremote 1200 qmail-remote how long, in seconds, to wait for remote server
timeoutsmtpd 1200 qmail-smtpd how long, in seconds, to wait for SMTP client
virtualdomains none qmail-send virtual domains and users

특정 컨트롤 파일에 대해 정보를 더 원하시면, "Used by"밑에 열거된 모듈에 해당하는 맨페지를 참조하십시오.

3.2. 릴레이

3.2.1. 소개서

릴레이는 무엇일까요? MTA가 SMTP를 통해서 메세지를 받아들이지만, 로컬주소로 오거나 또는 로컬송신자가 보내는 것이 아닐때를 말합니다.

스팸이전시대에는 MTA가 공개릴레이로 설정되는 것이 보통이었습니다. 송신자/수신자가 누구든 지 메일을 수용하는 무차별서버였습니다.

요즘의 MTA는 대개 릴레이를 금지하거나, 일정한 믿을만한 사용자나 시스템에게만 릴레이를 허용하고 있습니다.

Chris Johnson께서 큐메일사용자들을 위해 관련사항에 대한 매우 좋은 문서를 작성하셨으니까 꼭 보십시요.

3.2.2. 릴레이 금지

공식 큐메일설치지시사항을 따르면 릴레이는 기본이 안되게 되어있습니다. locals와 virtualdomains에 있는 도메인 네임들에 있는 완전 도메인네임들을 /var/qmail/control/rcpthosts파일에 적기 때문입니다. rcpthosts통제파일이름은 SMTP RCPT (수신자) 명령어에서 유래합니다. SMTP 세션에서 RCPT는 메세지수신인의 주소를 밝히는 데 씁니다. 그래서 rcpthosts에는 RCPT 주소에 나타나는 유효한 호스트네임을 열거합니다.

3.2.3. 릴레이허용자를 고르기

대부분의 단일사용자와 소규모 서버는 릴레이를 완전히 금지할 수 있지만, 분산된 사용자 공동체를 지원하려면 그 사용자에게만은 릴레이용으로 서버를 이용하게 할 수 있는 방법이 필요합니다. 이것은 tcpserver로 RELAYCLIENT환경변수를 정해서 qmail-smtpd에게 rcpthosts 파일을 무시하도록 하면 됩니다.

본문서의 설치지시사항을 따르면, 선택릴레이를 기본방침으로 하겠습니다. 클라이언트에게 릴레이접근권한을 주려면 /etc/tcp.smtp에 다음을 첨가하십시오.
 IP address of client:allow,RELAYCLIENT=""

그리고나서 SMTP 접근권한 데이터베이스를 재컴파일하십시오.
qmailctl cdb

또는 

tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp	
chmod 644 /etc/tcp.smtp*

공식설치지시사항을 따랐다면, Chris Johnson이 큐메일이 특정호스트에게만 릴레이를 허용하도록 설정하는 방법을 적으셨으니 http://www.palomine.net/qmail/selectiverelay.html를 참고하도록 하십시오.

3.3. 다중 호스트네임

한 호스트의 이름이 둘 이상이면, 예를 들어서 user@host1.example을 user@example.com이나 user@mail.example.com 등으로 적을 수 있다면, 큐메일에 이런 내용을 알려서 어떤 주소를 내부로 전달할 지, 원격시스템에서 어떤 메세지를 받을 지 등을 알게 합니다.

그렇게 하려면, 통제파일 두 개에 모든 이름을 첨가하기만 하면 됩니다.

3.4. 버츄얼도메인

버츄얼도메인은 전항목에서 말씀드린 다중호스트네임과 비슷합니다만, 중요한 차이점이 몇 개 있습니다. 첫째로, example.net에 virtual.example.com이라는 버츄얼도메인이 있다면, joe@example.net에게 보낸 메세지는 joe@virturl.example.com으로 보낸 메제지와 같은 메일복스에서 끝나지 않아야 합니다. 버추얼도메인에 대한 이름영역(namespace)은 다릅니다.

큐메일에서 버츄얼도메인은 virtualdomains파일에 설정되는데, 다음형식으로 하나 또는 그 이상을 적습니다.
user@domain:prepend 

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

역자주: 여기서 prepend는 virtual domain으로 오는 이메일을 관리하는 로컬머신의 사용자 아이디를 말합니다.

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

큐메일은 user@domain을 prepend-user@domain으로 바꾸고, domain이 로컬인 것처럼 그 결과를 취급합니다. user@부분은 선택입니다. 생략하면, @domain의 주소 모두에 해당합니다.

위의 example씨나리오를 다시 보면, example.net의 메일애드민이 john이라는 사용자의 관리하에 virtual.example.com이라는 버츄얼도메인을 만들기 위해서는 virtualdomains에 다음과 같이 써넣어야 합니다.
virtual.example.com:john

joe@virtual.example.com로 들어오는 메세지는 john-joe@virtual.example.com으로 써지고, 내부에서 전달됩니다. john이 어떻게 버츄얼도메인을 관리하는 지 .qmail항목주소연장 부항목을 보시기 바랍니다.

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

역자주: .qmail파일을 만들어보겠습니다.
# /var/qmail/bin/maildirmake /home/john/JOEMAILDIR 
# echo "/home/john/JOEMAILDIR/" > /home/john/.qmail-joe

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

다중호스트네임과 같이 모든 버츄얼도메인은 rcpthosts에 리스트되어서 qmail-smtpd가 그 주소로 된 메세지들을 받아들이게 합니다. 그렇지만, 다중호스트네임과 틀린점은 버츄얼도메인을 locals에 첨가해서는 안됩니다

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

역자주: 버츄얼도메인을 virtualdomains에 넣어야만 joe@virtual.example.com이라는 주소에서 joe만을 쓸 수 있습니다. 만약, locals에 버츄얼도메인을 넣으면, 그 주소는 john-joe@virtual.example.com 처럼 john-joe라는 주소를 써야만 이메일주소로 유효하게됩니다.

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

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

유의점: DNS의 MX기록은 버츄얼도메인으로 가는 메세지를 적절한 메일서버로 돌리도록 설치되어야 합니다. 이것은 네임서버애드민이 할일이고, 본 가이드의 범위를 벗어납니다.

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

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

역자주: 고정연결모뎀(케블모뎀, ADSL, 또는 일반 모뎀 등)으로 인터넷에 연결하고, dynamic dns 서비스를 이용하여, 유동아이피이지만 공인도메인에 연결하여 사용하는 경우, 서버의 호스트네임을 공인도메인네임으로 정하면 이메일이 서버로 직접들어옵니다. 호스트네임과 도메인네임이 다르면 다중호스트네임이나 버츄얼도메인의 설명대로 하면 됩니다. 케블모뎀이나 ADSL모뎀을 이용하시는 분들이 요즘 많습니다. 이 방법대로 하면 외부 이메일서버에 의존하지 않아도 되고, 또한 자신이 남에게 이메일계정을 만들어주거나 메일링리스트를 운영할 수도 있습니다.

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

3.5. 앨리어스

큐메일에서 로컬전달기술이 표준앨리어스기술로 자연히 발전했습니다. qmail-local은 localpart@host을 주소로 하는 메세지를 localpart라는 이름의 로컬사용자에게 전달하려고 합니다. 맞는 사용자가 없으면 메세지는 전체 큐메일시스템에서 /var/qmail/alias가 홈디렉토리이고 사이비사용자인 앨리어스 사용자에게 전달됩니다.

예를 들어 메세지를 tom에게 회송하는 info@example.com 앨리어스를 만들고자 한다고 합시다. example.com에서 룻사용자로서 다음과 같이 합니다.
 echo tom > /var/qmail/alias/.qmail-info

.qmail항목주소연장부항목에서 앨리어스를 지정하는 .qmail파일을 어떻게 만들고, 전달되는 메세지로 무엇을 해야 하는 지 설명합니다.

큐메일에서 앨리어스가 실행되는 방식때문에 앨리어스가 정당한 사용자 전달을 무시할 수는 없다는 것을 유의하십시오. 예) rachel이 정상 사용자라면 ~alias/.qmail-rachel 은 안됩니다.

fastforward패케지는 Sendmail의 앨리어스 데이터베이스와 호환하는, 단일파일에 다수앨리어스를 적는 대체가능 앨리어스기술을 제공합니다.

다음의 qmail-users항목에서 앨리어스를 실행할 수 있는 다른 기술을 설명합니다.

3.6. qmail-users

qmail-users는 사용자에게 주소를 배정하는(나눠주는, 부여하는) 시스템입니다. 설정파일들이 /var/qmail/users/에 놓입니다. assign은 곧 할당테이블입니다. 단순배정과 wildcard 방법 등 두 종류의 할당이 있습니다.

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

유의점: 한 줄에 하나씩 적고, 마지막줄에는 마침표를 한개만 적습니다. 이 파일을 수동으로 만드시면 마침표줄을 잊지 마십시오.

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

3.6.1. 단순배정

단순배정은 다음과 같습니다.
 =address:user:uid:gid:directory:dash:extension:

address로 받은 메세지는 지정 uid와 gid를 지니고 user사용자로 작동하는데, directory/.qmaildashextension파일에 메세지를 어떻게 전달해야 하는 지를 규정한다는 뜻입니다.

3.6.2. 와일드카드 배정

와일드카드 배정은 다음과 같습니다.
 +prefix:user:uid:gid:directory:dash:prepend:

prefix형식의 주소로 수신된 메세지는 지정 Uid와 gid를 지니고 user사용자로 작동하는데, directory/.qmaildashprepend파일에 메세지를 어떻게 전달해야 하는 지를 규정한다는 뜻입니다.

3.6.3. qmail-user 프로그램들

qmail-user에는 도우미 프로그램이 두 개 있는데, qmail-newu와 qmail-pw2u입니다.

qmail-newu는 assign파일을 처리해서 /var/qmail/users에 cdb라는 contstant 데이터베이스(CDB)파일을 만듦니다. CDB는 바이너리 형식이라서 배정이 수천개라도 qmail-lspawn이 매우 빨리 접근합니다.

qmail-pw2u는 시스템사용자데이터베이스인 /etc/passwd를 assign에 적합한 배정으로 변환합니다. qmail-pw2u는 변환규칙을 고치는데 파일 몇개를 사용합니다.

  • include: 포함할 사용자

  • exclude: 제외할 사용자

  • mailnames: 사용자에 대한 대체 mailnames

  • subusers: 사용자가 처리하는 가외주소로서 .qmail확장은 선택사항입니다.

  • append: 여러가지 할당

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

유의점: qmail-pw2u를 사용하면, 사용자를 추가, 삭제하거나 UID나 GID를 바꿀 때마다 qmail-pw2u와 qmail-newu를 재가동하셔야 합니다. 보통 다음과 같이 합니다.
 qmail-pw2u < /etc/passwd > /var/qmail/users/assign
 qmail-newu

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

3.7. 스팸통제

Chris Hardie께서 훌륭한 큐메일반스팸HOWTO을 쓰셨습니다.