다음 이전 차례

4. 사용법

이 항목에서는 보통사용자가 큐메일을 사용하는 법을 다룹니다. 큐메일시스템에서 멜을 읽거나 보낸다면, 여기에서 어떻게 큐메일을 이용하는 지를 알게 될겁니다.

4.1 .qmail파일

사용자멜의 전달은 대개 .qmail파일이 통제하는데, 이것들은 사용자 홈디렉토리에 .qmail로 시작하는 이름으로 되어있습니다. dot-qmail맨페지에 .qmail파일 사용법을 설명해 놓았습니다.

.qmail파일에는 전달지시사항이 한 줄에 하나씩 들어있습니다. 줄의 처음문자는 전달방법을 결정합니다.

 문자               전달형태                  값
 #                  없슴 (코멘트)             무시
 |                  프로그램                  셸이 실행할 명령어
 / 또는 .           mbox (마지막글자가        mbox 경로 (/나 .를 포함)
                    /이 아니면)
 / 또는 .           maildir (마지막           mbox 경로 (/나 .를 포함)
                    글자가 /이면)
 &                  포워드                    메세지를 포워드할 주소
 글자 또는 숫자     포워드                    메세지를 포워드할 주소 
                                              (첫글자를 포함)

프로그램전달

프로그램전달지시를 만나면 큐메일은 셸(/bin/sh)을 가동해서 명령을 실행하는데, 들어오는 메세지를 복사해서 명령에 표준입력으로 넣습니다. qmail-command맨페지에 이 절차를 자세히 설명해 놓았습니다.

프로그램전달은 매우 강력하고 매우 넓은 기능을 구현할 수 있는데, 메세지필터링, 메세지에 자동으로 답하기, procmail 등 제3자 전달자를 통해 전달하는 것등입니다.

예)

  |preline /usr/ucb/vacation djb

이렇게 하면 큐메일은 preline을 가동해서 /usr/ucb/vacation과 djb를 인수로 주고, 메세지복사본을 표준입력으로 제공합니다.

mbox 전달

Mbox는 큐메일 용어로서 표준 유닉스 멜복스 형태인데, 다중메세지를 단일파일에 저장하고, 메세지에는 "From "줄이 머리에 있습니다. 이 줄은 헤더필드같이 보이지만 아닙니다. 이것은 다만 전달자가 첨가해서 멜을 읽는 사람이 해당메세지가 시작하는 곳을 알게하는 것뿐입니다.

예:
  ./Mailbox

이렇게 하면 "From "줄을 앞에 붙여서 $HOME/Mailbox에 추가합니다. 단일 메세지를 보유한 간단한 mbox멜복스는 다음과 같습니다.

  From user1@example.net Thu May 13 18:34:50 1999                             
  Received: (qmail 1287205 invoked from network); 13 May 1999 18:34:49 -0000  
  From: user1@example.net                                                     
  To: user2@example.com                                                       
  Subject: hey                                                                
                                                                              
  What's up?                                                                  

첫줄은 큐메일이 전달하면서 첨가한 것입니다.

maildir 전달

"Maildir"는 Dan Bernstein이 만든 멜복스형태로서 mbox형태의 결점을 말해줍니다. maildir멜복스에는 디렉토리로서 섭디렉토리가 세개 있는데, new, cur, tmp 등입니다. maildir멜복스에 있는 각 메세지는 상태에 따라 부디렉토리중 하나에 별개파일로 되어있는데, new는 읽지 않은 메세지가, cur는 읽은 메세지가, tmp는 전달중인 메세지가 들어 있습니다. maildir맨페지에 maildir형식에 대해 자세히 설명하였습니다.

maildir의 이점중 하나는 다른 전달자가 동시에 업데이트하는 것을 막기위해 하는 록킹을 사용하지 않아도 확실하다는 겁니다. 이것은 maildir멜복스는 NFS를 마운트한 파일시스템에 안전하게 사용할 수 있다는 것을 뜻합니다.

예:
  ./Maildir/

이것은 메세지를 maildir형태의 멜복스인 $HOME/Maildir에 저장합니다.

------------------------------------------------------------------------------
유의점: maildir멜복스는 큐메일과 같이 제공하는 maildirmake프로그램으로 만듭니다. 

        예) maildirmake ~/Maildir
------------------------------------------------------------------------------

포워드 전달

포워드전달은 명시주소로 메세지를 다시보냅니다. .qmail파일에 명시한 주소는 완전자격이어야 하며, 커멘트필드와 여백이 없어야 합니다.

다음은 틀렸습니다.

  &<user@example.com>            
  & user@example.com             
  &Joe User <user@example.com>   
  &user                          

다음과 같이 해야합니다.

  &user@example.com      
  user@example.com       

그러면 메세지사본을 user@example.com로 보냅니다.

연장주소

큐메일에서는 사용자통제 연장주소를 지원합니다. 기본주소인 username@hostname.domain외에 사용자는 username-extension@hostname.domain으로 멜을 받을 수 있습니다. 우리는 지금 로컬시스템에서 일어나는 행동을 고려하고 있으므로, 앞으로 이번 항목에서는 "@hostname.domain"부분은 적지 않기로 합니다.

username-extension에 대한 전달지시사항은  username/.qmail-extension에 있습니다.

예를 들면, dave-lwq@sparge.example.com은 sparge호스트에 있는  dave/.qmail-lwq가 통제합니다.

연장은 복수필드로 될 수 있습니다. 예를 들면 dave-list-qmail인데,  dave/.qmail-list-qmail이 통제합니다. 이번 예에서 dave-list-qmail은 큐메일 멜링리스트에 가입했고,  dave/.qmail-list-qmail은 리스트메세지를 별도의 멜복스에 파일보관합니다.

.qmail파일들은 -default를 와일드카드로 씁니다. 그래서 dave-list-qmail은  /.qmail-list-default로도 처리할 수 있습니다. 이렇게 하면 모든 dave-list-whatever주소들을 다루는데 있어서 .qmail파일은 하나만 있어도 족합니다. 그러나 dave-list는  dave/.qmail-list-default가 통제하지 못하는데, list다음에 "-"이 없기 때문임을 유의하십시오.

큐메일은 찾는 것중에서 제일 가까운 것을 씁니다. 예를 들어서, dave-list-qmail의 주소로 메세지가 왔다면, 다음과 같이 찾은 것중에서 첫번째것을 씁니다.

일치하는 .qmail파일이 없으면 전달은 실패하고 메세지는 보낸이에게 되돌려집니다.

4.2 메세지 보내기

멜사용자는 메세지를 보내는 데 있어서 MTA를 보통 직접 사용하지 않습니다. 대체로 Mail User Agent (MUA)인 pine이나 mutt 등을 써서 메세지를 작성하고 보내는데, MUA는 MTA를 호출해서 메세지를 전달합니다. MTA로 메세지를 건네주는 처리과정을 injection이라고 합니다.

대부분의 MTA로 메세지를 inject하는 방법에는 두 가지가 있습니다. Simple Mail Transfer Protocol (SMTP)과 이 목적으로 MTA가 제공하는 프로그램을 이용하는 것입니다.

SMTP

MUA는 로컬호스트나 지정한 멜서버에 있는 표준 SMTP포트인 25번 포트로 TCP 연결을 엽니다. 그 다음, MUA와 MTA는 다음과 같이 끝나는 대화중 하나를 합니다.

SMTP에는 인증장치가 없으므로 메세지를 보내는데 유저네임이나 패스워드가 필요없습니다. 그렇지만 많은 MTA는 로컬사용자가 보내거나 받는 것같지 않은 메세지를 거절합니다. 제대로된 메세지가 reject되면 릴레이제한이 그 원인일 경우가 제일 많습니다. 릴레이설정에 대한 정보는 릴레이항목을 보십시오.

/var/qmail/bin/sendmail

오랜 세월동안 Sendmail이 유닉스 MTA였습니다. 어느 곳에나 그것이 있었기에 많은 프로그래머들은 의례 그것이 MTA라고 여겼습니다. 그 결과, Sendmail의 로컬 인젝션 장치가 로컬멜인젝션에 대한 표준 Application Programmer's Interface (API)가 되었습니다. 큐메일과 기타 비Sendmail MTA는 sendmail프로그램을 공급해서 로컬인젝션에 대해서 진짜 Sendmail의 sendmail가 똑깥이 작동하도록 합니다.

큐메일의 sendmail은 보통 /var/qmail/bin/sendmail에 있는데, 대개 큐메일시스템에서 Sendmail의 sendmail을 대체합니다. 흔히 sendmail프로그램은 다음에 있습니다.

큐메일시스템에서 "ls -l path-to-sendmail"하면 sendmail이 /var/qmail/bin/sendmail로 심볼릭링크되어있슴을 보여줍니다.

  $ ls -l /usr/lib/sendmail
    lrwxrwxrwx   1 root     root           29 Feb 19 11:04 /usr/lib/sendmail \ 
            -> /var/qmail/bin/sendmail

qmail-inject

sendmail API외에 큐메일에는 qmail-inject라는 자체 인젝션프로그램이 있습니다. 사실 sendmail은 qmail-inject의 wrapper입니다.

API이지만 sendmail은 매우 널리 쓰이므로 더 나은 듯합니다. qmail-inject가 제공하는 큐메일 API는 큐메일을 설치한 시스템이서만 작동하지만, sendmail 인터페스는 거의 어디에나 있습니다.

예를 들면, joe@example.com에게 빈 메세지를 보내려면 다음과 같이 합니다.

  echo To: joe@example.com | /var/qmail/bin/qmail-inject

4.3 환경변수

큐메일프로그램이 환경변수를 정하거나 사용하기도 합니다. 다음의 테이블에 변수를 열거하고 사용법을 적었습니다.

 변수명             해당 맨페지    설정    사용목적

 DATABYTES          qmail-smtpd    used    Overrides control/databytes             
                                           Portion of address matching             
 DEFAULT            qmail-command  set     "-default" in a .qmail file             
                                           name.                                   
 DTLINE             qmail-command  set     Delivered-To header field               
 EXT                qmail-command  set     The address extension                   
                                                                                   
 EXT2               qmail-command  set     Portion of EXT following first          
                                           dash                                    
                                                                                   
 EXT3               qmail-command  set     Portion of EXT following second         
                                           dash                                    
                                                                                   
 EXT4               qmail-command  set     Portion of EXT following third          
                                           dash                                    
 HOME               qmail-command  set     The user's home directory               
                                                                                   
 HOST               qmail-command  set     The domain part of the recipient        
                                           address                                 
                                                                                   
 HOST2              qmail-command  set     Portion of HOST preceding last          
                                           dot.                                    
                                                                                   
 HOST3              qmail-command  set     Portion of HOST preceding               
                                           second-to-last dot                      
                                                                                   
 HOST4              qmail-command  set     Portion of HOST preceding               
                                           third-to-last dot                       
                                                                                   
 LOCAL              qmail-command  set     The local part of the recipient         
                                           address                                 
                                                                                   
 LOGNAME            qmail-inject   used    User name in From header field          
                                           (4)                                     
                                                                                   
 MAILHOST           qmail-inject   used    Host name in From header field          
                                           (2)                                     
                                                                                   
 MAILNAME           qmail-inject   used    Personal name in From header            
                                           field (2)                               
                                                                                   
 MAILUSER           qmail-inject   used    User name in From header field          
                                           (2)                                     
                                                                                   
 NAME               qmail-inject   used    Personal name in From header            
                                           field (3)                               
                                                                                   
 NEWSENDER          qmail-command  set     Forwarding sender address (see          
                                           "man dot-qmail")                        
 QMAILDEFAULTDOMAIN qmail-inject   used    Overrides control/defaultdomain         
 QMAILDEFAULTHOST   qmail-inject   used    Overrides control/defaulthost           
                                                                                   
 QMAILHOST          qmail-inject   used    Host name in From header field          
                                           (1)                                     
 QMAILIDHOST        qmail-inject   used    Overrides control/idhost                
                                                                                   
 QMAILINJECT        qmail-inject   used    Specify various options (see            
                                           next table)                             
                                           File containing list of mailing         
 QMAILMFTFILE       qmail-inject   used    list addresses for                      
                                           Mail-Followup-To generation             
                                                                                   
 QMAILNAME          qmail-inject   used    Personal name in From header            
                                           field (1)                               
 QMAILPLUSDOMAIN    qmail-inject   used    Overrides control/plusdomain            
                                                                                   
 QMAILSHOST         qmail-inject   used    Host name in envelope sender            
                                           address                                 
                                                                                   
 QMAILSUSER         qmail-inject   used    User name in envelope sender            
                                           address                                 
                                                                                   
 QMAILUSER          qmail-inject   used    User name in From header field          
                                           (1)                                     
 RECIPIENT          qmail-command  set     Envelope recipient address              
                                           Ignore control/rcpthosts and            
 RELAYCLIENT        qmail-smtpd    used    append value to recipient               
                                           address                                 
 RPLINE             qmail-command  set     Return-Path header field                
 SENDER             qmail-command  set     Envelope sender address                 
 UFLINE             qmail-command  set     UUCP-style "From " line                 
 USER               qmail-command  set     The current user                        
                                                                                   
 USER               qmail-inject   used    User name in From header field          
                                           (3)                                     
                   QMAILINJECT Flags                                               
                                                                                   
 Letter Purpose                                                                    
 c      Use address-comment style for the From field                               
 s      Do not look at any incoming Return-Path field                              
 f      Delete any incoming From field                                             
 i      Delete any incoming Message-ID field                                       
 r      Use a per-recipient VERP                                                   
 m      Use a per-message VERP                                                     


다음 이전 차례