Operating System/Solaris2007/07/26 19:52

9장. MAIL

9.1 일반적 mail 사용법

Sending Mail:

example% mail user

/* 동일 host에 계정을 가지고 있는 사용자에게 mail을 보낼 경우 */

^D

/* message를 끝내는 방법 */

example% mail user@machine

/* host는 틀려도 network으로 연결 되어있는 사용자에게 mail을 보내는 방법 */

^C

/* message 편집을 포기하는 방법 */


Tilde Escapes:

message을 작성시 편리하게 작성할 수 있게 해주는 command이다. 이 tilde 명령은 mail user 명령을 입력한 후에 Mail 내용을 작성 중에 입력하는 명령이다.

example% mail dove

Subject: test

test

~b user

example%

~b user    

/* Blind Carbon Copy(Bcc) 의 names을 추가 한다. */

~c user    

/* Carbon Copy(Cc)에 names을 추가 한다. */

~f n

/* mail spool의 n번째 저장되어있는 mail을 forward한다. */

~h

/* header field(To,Subject,Cc,Bcc)을 편집한다.*/

~m n

/* mail spool의 n번째 저장되어 있는 mail을 읽어 들인다. */

~p

/* 편집한 내용을 처음부터 more로 display해 준다. */

~r

/* letter을 편집 중에 file을 삽입시킬 수 있다. */

~s subject text

/* subject를 바꾸거나 추가할 수 있게 한다. */

~t user1 user2

/* mail을 받을 주소를 추가시킨다. */

~v

/* text편집 도중에 vi editor로 편집할 수 있다. */

~w file    

/* message을 file로 저장한다. */

|층

/* 현재 입력한 내용을 shell command로 수행한다. */

~?

/* 사용 가능한 command menu을 display 한다. */

                                                                                        

Reading Mail :

example% mail            /* mailbox에 쌓여 있는 message의 headers을 출력 */

Mail version 2.18 5/19/83. Type ? for help.

"/usr/spool/mail/student": 2 messages 2 new

>N 1 john Tue May 14 15:31 11/278 "letter"

N 2 jane@universe tue May 14 15:33 13/437

&<cr>

/* '>'로 display될 message을 나타낸다. */

&n

/* 사용자가 원하는 message의 순번을 입력하면 그 번호에 해당하는message가 display 된다 */

&d n    

/* 사용자가 원하는 순번의 message가 삭제 된다. */

&h

/* 사용자가 볼 수 있는 message의 headers을 display한다.*/

&q

/* 종료 command이다. message들은 mbox에 저장된다. */

&r n

/* 순번 n에 대하여 응답을 하겠다는 command이다. */

&s n file

/* 순번 n의 message을 이름 file로 저장하는 command */

&x

/* mail을 수행하기 이전의 상태로 종료 한다. */

&?

/* 사용 가능한 command를 display한다. */

example% mail -f file

/* message을 저장해 놓은 이름이 file 인 file을 mail로 볼 수 있다. */

example% mail -f mbox

/* 위와 같은 경우로 mbox에 있는 message을 검색 한다. */

example% mail -f folders

/* folders 안의 message을 검색 한다. */

                                                                                                                                                        

Collecting in Mail folders :
----------------------------

set folder=Directory

/* message만을 저장해 놓는 directory정의*/

&s +file

/* '+' 뒤의 filename에 현제의 message가 추가된다. */

&folders

/* 현재의 folder directory에 들어 있는 file들의 list을 display한다. */

                                

Forwarding Mail :

사용자가 login한 machine의 home directory에 .forward file을 만들어둔다. 여기에는 login한 machine으로 들러오는 mail을 다른 machine으로 보낼 수 있게 다른 machine의 domain을 기록한다. 방법은 다음과 같다.

student@sun            /* Entry in .forward file. */

Customizing Mail :

사용자의 home directory에 .mailrc을 다음과 같이 생성하시오.

Set ask    

/* subject을 입력할 것인가 묻는다. */

Set askcc

/* 'carbon copy' 을 지정할 겻인지 묻는다 */

Set crt=34

/* page당 message의 출력 line 수 정의 */

set record=-/Mail/outbox

/* outbox에 mail을 recorde 단위로 보낸다.*/

alias ss student@sun

/* full name을 간단히 줄인 것이다. */

alias group student1@pioneer student2@discovery student3@challenger \
student4@mariner student5@columbia student6@mercury \
student7@galieo student8 @voyager

/* 보내는 곳을 group으로만 하면 위의 모든 주소들로 보내준다. */


9.2 Mail Server Sendmail

1) Sendmail 구성

Sendmail은 /usr/sbin/sendmail Daemon Program과 /etc/sendmail.cf, /etc/sendmail.cw, /etc/aliases File 등의 설정 File로 구성되어 있다. Sendmail의 경우에는 현재 Internet 사회에서 큰 문제로 떠오르고 있는 SPAM Mail 문제에 대한 해결책의 하나로 아무나 여러분의 Sendmail Server를 Mail 중계기로 사용할 수 없도록 하는 설정 File Directory인 /etc/mail Directory와 설정 File이 추가되어 있기 때문에 주의해야 할 것이다. 그 동안 잘 되다가 Mail Server를 Upgrade 하자마자 내부 Network의 다른 Host에서 Mail이 밖으로 나가지 않는다든지 하는 문제가 이 SPAM 방지 / 중계 방지 기능 때문일 수도 있으니 주의 해야 한다.

2) Sendmail 설정 File /etc/sendmail.cf

Sendmail 설정 File의 난해함은 악명이 높다. 사실, 인간을 위한 설정 File이 아니라, 너무도 기계적인 측면에서 볼 때 편리한 방식을 사용하고 있기 때문이다.

그러나 Sendmail 설정 File의 모든 내용을 이해할 필요가 없으며, 중요한 몇 가지 설정 내용만을 알아두는 것으로 충분하다. 기본 설정 File만으로도 Sendmail은 잘 운영되므로 이해하지 못하는 부분은 건드리지 않는 것이 좋다. Sendmail 설정 File을 빈 상태에서 하나씩 만들어 가는 사람은 없으며, 모두들 필요한 그 부분만을 수정하여 잘 운용 하고 있다. 어렵게 보이는 것일수록 사실은 별로 다를 것이 없는 것이 일반적이다.

설정 File에서 # 문자로 시작하는 줄은 Unix 관례에 따라 설정 내용에 영향을 미치지 않는 주석이다. 설정 File은 전형적으로 D, C, F와 같은 한 글자 명령 다음에 한 글자 변수가 나오고, 정의할 내용이 뒤따른다. 다음과 같은 모습을 띤다.

# cat sendmail.cf
# Level 7 config file format

v7/Berkeley

Cwlocalhost

# file containing names of hosts for which we receive email

Fw/etc/sendmail.cw

#Dj$w.Foo.COM
# who I send unqualified names to (null means deliver locally)

DR

# who gets all local email traffic ($R has precedence for unqualified names)

DH

# who I masquerade as (null for no masquerading) (see also $=M)

DMalpha.sarang.net

주로 설정하여 사용하는 부분

Cw,Fw구문해석 : 어떤 Host 이름에 대하여 Mail을 받을 것인가?
Cw 명령은 w라는 Class의 값을 하나씩 추가하는 명령이다.
Fw 명령은 w라는 Class의 값에 File 내용을 추가하는 명령이다.

위에서 Cwlocalhost라고 한 것은 Sendmail이 기본적으로 지역 Host localhost로 온 Mail을 받아 처리하도록 하는 행으로서, 모든 Sendmail 설정에 기본으로 들어있다. 이 외에도 하나의 Host에 여러 Host 이름이 부여되어 있는 경우, 그 모든 이름에 대하여 Mail을 받도록 하려면 이름 하나 하나마다 Cw 명령을 계속 사용하면 된다.

Cwfoo0.bar.com
Cwfoo1.bar.com

foo0.bar.com과 fool.bar.com에 대하여 모두 Mail을 받아들이도록 한 예이다. Fw 명령은 그 뒤에 적은 File에 들어 있는 Host 이름에 대하여 모두 Mail을 받도록 할 때 사용한다. Fw/etc/sendmail.cw라는 기본 값이 설치 시에 들어 있으므로 /etc/sendmail.cw File에 받고자 하는, Host 이름 들을 나열하여 적으면 된다. Network 상에 여러 대의 Host가 있다 하더라도 한 대를 Mail Gateway로 사용하고자 할 때 유용하게 사용한다.

Mail Host 이름 강제 설정 Dj

Dj 명령 다음에는 Sendmail Server가 돌아가는 Host 이름을 적는다. 일반적으로 Dj행은 주석 처리되어 있다. 보통의 경우 Sendmail Server가 실행되면서 Host 이름을 자동으로 알아내기 때문이다. 하지만, 어떤 이유로 인해 Sendmail이 자기가 실행되는 Host 이름을 정확히 알아내지 못할 때는 Dj 명령 다음에 빈 칸 없이 Host 이름을 적는다.

Mail 발신지를 속이는 DM

DM 다음에 Host 이름을 적으면 Mail 송신자 주소에 실제로 보낸 이름이 아니라, 적어준 그 이름이 사용된다. 주로 Mail Gateway를 자신의 Sendmail Server가 아닌 중앙의 Sendmail Server로 지정하는 경우 필요하다.

자신 이외의 다른 Mail Server 를 Mail 중계 Server로 사용하려는 Client Host들에 대해서 Mail Gateway 에서는 /etc/mail Directory 설정을 해주어야 한다. 아무나 아무 Mail Server를 중계 Server로 사용할 수는 없다.

3) 사용자 별칭 Table /etc/aliases

/etc/aliases File에는 계정 이름 이외의 별칭을 만들어 사용할 수 있도록 해주고 있다.

# General redirections for pseudo accounts.

bin:        root
daemon:    root
games:    root
ingres:    root
nobody:    root
system:    root
toor:        root
uucp:    root

# Well-known aliases.

manager:    root
dumper:    root
operator:    root

# trap decode to catch security attacks

decode:    root

설정 형식은 다음과 같다.

    name: name1, name2, ...
name: include:fileName

위의 예에서 nobody라는 사용자에게 Mail을 보내면 그 Mail은 nobody: 오른쪽에 적힌 root라는 사용자에게 전달된다. operator라는 사용자에게 보내도 그 Mail은 root에게로 전달된다.

Mail은 계정 등록된 사용자에게만 갈 수 있으나, 이렇게 별칭 Table을 사용하면 Web Master라든지, FTP Master와 같은 기능적인 이름의 계정에게 Mail을 보내게 할 수 있다.

어떤 그룹에게 Mail을 보내고 싶을 때 간단하게 별칭 Table을 사용할 수 있다. 별칭 뒤에 실제 Mail 주소를 여러 개 적어나가거나, :include: 다음에 Mail 주소가 적힌 File 이름을 적어줄 수 있다. 예를 들어, me: yong@foo.net, yong@bar.net이라고 적고, me에게 편지를 보내면 그 뒤에 적힌 두 개의 주소로 Mail이 전송된다.

전문적인 Mailing List 기능은 Majormodo와 같은 Program을 사용한다. 별칭 Table 내용을 바꾼 다음에는 newaliases라는 명령을 1회 내려주는 것이 좋다.

# newaliases

/etc/aliases: 15 aliases, longest 18 bytes, 175 bytes total

Sendmail은 빠른 검색을 위해 실제로는 /etc/aliases.db라는 버클리 DB File을 사용하는데, 위 newaliases 명령이 그 DB File을 생성시키는 Utility 이다.

4) Mail 중계 기능 설정 /etc/mail

Mail 중계 설정은 내부 Network에서 특정 Mail Host를 중계 Host로 지명할 때 매우 중요하다. 왜냐하면, /etc/mail Directory 이하의 설정을 명확하게 해주지 않으면 기본적으로 Mail 중계를 허락하지 않도록 되어 있기 때문이다.

이는 Spammer라고 부르는 원하지 않는 광고성 Mail을 무작위로 뿌려지게 되는 것을 막아내기 위한 방책이다. 보통 Spammer들은 남의 Mail Server를 중계 Server로 사용하여 Mail을 마구 확산시키기 때문에 중계 기능은 철저히 관리되어야 한다.

access

Sendmail 8.9.x Version에서 Mail Server에 대한 접근을 허용할 것인지 아닌지를 설정하는 File이다.

File 형식에 대해서는 File 안에 주석으로 잘 설명되어 있을 것이다. 형식은 다음과 같다.

# cyberspammer.com        REJECT
# sendmail.org        OK
# 128.32            RELAY

192.168.1            RELAY
198.60            REALY

설정 File을 Server 환경에 맞게 수정 후 access.db라는 버클리 DB File을 아래와 같이 생성 시킨다. 이렇게 하면 Server에 들어오는 Mail을 신속하게 처리 할 수 있게 된다.

     # cd /etc/mail
# makemap hash /etc/mail/access < /etc/mail/access

sendmail command

The sendmail command is executed in the script /etc/rc2.d/S88sendmail when the machine is started.

The default command is 아래

# /usr/lib/sendmail -bd -q1h

    -bd background daemon
-q quest the messages for retry when sendmail fails to deliver.
The associated value 1h tells sendmail to process the queue every hour.

5) Sendmail Server 설치하기

현재 Sendmail은 8.9.10 Version이 Beta Test 중이며, 사용해도 무방한 안정적인 최종 Version은 sendmail 8.9.3 으로서, 자원연구소의 서상용박사님 와 한글 Sendmail 8.8.7을 만든 과학기술원의 노정석님의 노고로 sendmail-8.9.3H Version으로 재구성 되어 Linux와 Solaris 환경에서 설치하기 쉬운 상태로 Package화 되어 배포 되고 있다.

Solaris 환경에서 설치 운영해 본 결과 예전의 Version들에 비해 상당히 쉽게 설치할 수 있도록 배려되어 있는 것을 확인 할 수 있었고, 운용상에도 전혀 문제가 없는 것으로 나타났다.

sendmail 8.9.x의 가장 큰 특징은 SPAM Mail을 차단하는 기능이라 할 수 있는데, 이것 또한 몇 개의 File에 의해 쉽게 구현할 수 있어 Mail Server를 운영하는 관리자는 Server의 관리에 별 어려움이 없을 걸로 판단된다.

Sendmail Source Download 및 압축풀기

임의의 directory에 File을 이동시켜 압축해제 한다. 여기서는 /tmp Directory로 설명된다.

% cd /tmp
% gzip -dc sendmail-8.9.3H-bin.tar.gz | tar xvf -

압축을 풀면 아래와 같은 directory가 생성되며 그곳에 설치관련 File들이 생성된다.

생성된 directory로 이동한다.

% cd sendmail-8.9.3H-bin

Sendmail은 Super User 상태에서 설치되기 때문에 일반 User계정이라면 Super User로 Switching.

% su

설치 Script를 실행한다.

# ./install

Script가 실행되면서 아래와 같은 Message들이 보일 것이다.

[www:/tmp/sendmail-8.9.3H-bin]# ./install

Please enter your domain name [dct.co.kr]:
saving old sendmail binaries in "sendmail.bck.19991028-154651.tar.gz"

a /usr/lib/sendmail 665K
a /usr/lib/smrsh 8K
a /etc/mail/sendmail.hf 6K
a /etc/mail/sendmail.st 1K
a /usr/sbin/mailstats 10K
a /usr/sbin/makemap 303K
a /usr/sbin/praliases 290K

/etc/sendmail.cf는 /etc/mail/sendmail.cf와 기호 링크됨

a /etc/mail/sendmail.cf 32K

backup done
now installing sendmail-8.9.3H-Solaris-bin.tar

x usr/lib/sendmail, 680892 bytes, 1330 테이프 블럭
x usr/lib/smrsh, 7272 bytes, 15 테이프 블럭
x etc/mail/sendmail.hf, 5342 bytes, 11 테이프 블럭
x etc/mail/sendmail.st, 616 bytes, 2 테이프 블럭
x usr/sbin/mailstats, 10168 bytes, 20 테이프 블럭
x usr/sbin/makemap, 309272 bytes, 605 테이프 블럭
x usr/sbin/praliases, 296548 bytes, 580 테이프 블럭

installing sendmail.cf
installing /etc/mail/sendmail.cw

setting directory mode
/etc/mail/aliases: 94 aliases, longest 10 bytes, 1033 bytes total

killing old sendmail process...

Starting new sendmail...

All done.

[www:/tmp/sendmail-8.9.3H-bin]#

아무런 문제 없이 위처럼 Script가 실행 완료 됐다면, 설치가 잘 된 것이다. Server에 따라서 sendmail.cf, sendmail.cw, relay-domains, access, aliases... 등의 File 설정이 제대로 되 있는지 다시 확인하고 sendmail deamon을 start한다. 설치 Script 실행 시 error가 발생했다면, 설치 시에 아래처럼 하여 error Log File을 만들어 아래의 Mail 주소로 Mailing하면 정확한 해답을 얻을 수 있을 것이다.

# ./install -y >&! install.log
# mail sysuh@kigam.re.kr < install.log

※ /etc/mail/access는 처음 설치 시 없을 수가 있는데, 없다면 외부로부터 모든 mail_relay를 거부한다. 그러므로 허용 하고자 하는 IP나 domain을 앞서 설명한 Rule에 따라 설정해준다.

Creative Commons License
Posted by BLUEDAY™