강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
sendmail 설치 및 설정
조회 : 24,278  


여러분들이 Linux를 설치하게 되면 sendmail은 자동으로 설치 된다.

자 확인을 한번 해보자. rpm으로 설치된 프로그램을 확인하는 명령어가 기억나는가??

[root@rootshell root]#rpm -q sendmail
sendmail-8.9.3-20

여러분들의 시스템에는 sendmail이 설치되어 있는 것이다.

만약 sendmail이 설치 되지 않았다면 여기로 가서 다운을 받자.

이 문서는 알짜 레드햇 배포판 6.2버젼의 SendMail을 바탕으로 만들어 졌으며
여러분들의 시스템에 sendmail이 설치되어 있는 것으로 간주하고 이 장에서는 
설정 방법에 대해서만 알아 보도록 하겠다. 지금까지 많은 강좌를 공부해 온 
여러분은 sendmail설치 쯤은 간단하게 해결할 만큼 내공이 상승되어 있을 것이다.

$1. SendMail 설정

SendMail설정에 앞서 간단하게 메일이 보내지고 도착하는 원리에 대해서 
알아보고자 한다.

1)SendMail(이메일)전송의 원리

+프로토콜
여러분들은 이메일 계정을 아웃룩익스프레스를 통해서 설정할 때 다음과 같은 
단어들을 보았을 것이다. (아직 한번도 아웃룩익스프레스에서 이메일 계정을 
생성해 보지 않은 사람은 이장을 보고나서 계정을 한번 생성시켜 보라.)
       
SMTP (simple mail transfer protocol) : 메일을 보낼 때 사용되는 프로토콜.
POP3 (post office protocol) : 우체국처럼 메일을 받을 때 사용되는 프로토콜.
IMAP (internet mail protocol) : 메일을 받을 때 사용되는 프로토콜.
      
본인도 처음에 아웃룩익스프레스로 계정을 생성할 때 요것들이 몬 뜻인지를 
몰라 헤메인 기억이 있다. 위의 것들은 프로그램이 아니다.(헷갈리지 말것) 
여러분들에게 익숙한 TCP/IP와 같이 메일을 전송하기 위한프로토콜들이다.
      
+프로그램
MUA (Mail user agent) : 메일을 보내기 위해 사용되는 프로그램. 예) outlook ....
MTA (Mail transfer agent) : 메일을 전달받아 이를 외부로 전달해 주는 프로그램. 
(ex. sendmail)
간단한 메일 전달 과정 소개A가 (MUA)를 사용해서 B에게 메일을 보내면 
MTA(sendmail)가 SMTP를 이용하여 B가 사용하는 메일 서버에 전달 된다. 그러면 
B는 POP3를 이용하여 메일서버에 존재하는 메일을 로컬로 가지고 가서 확인한다.
만약 A와 B가 같은 동일한(하나의) 메일 서버에서 서로 메일을 주고 받을 경우에는,
메일이 MTA로 전달 되는 것이 아니라 MDA (mail delivery agent)로 전달이 된다.

요것들은 프로토콜이 아니라 프로그램이다.(위의 것과 개념을 헷갈리지 말것)

이해가 좀 됐는가? 그림으로 한번 확인해 보자.


+----------+               MTA                +----------+
| ServerA  |--------------------------------->| ServerB  |
+----------+               SMTP               +----------+
     |                                              | 
     |                                              |  
     | MUA                                          |POP3,IMAP   
     |                                              |
     |                                              |    
+----------+                                   +----------+
| ClientA  |                                   | ClientB  |
+----------+                                   +----------+

tip)SendMail은 보안에 취약성을 드러내고 있다. 그래서 요즘은 qMail이라는 
프로그램도 많이 쓰인다.

   2)sendmail 설정

    -imap프로토콜 설정

여기서는 프로토콜을 pop3대신에 imap을 쓰도록 하겠다.
[root@rootshell root]# vi /etc/inetd.conf
/imap  <--패턴매치입니다.
#pop-2  stream     tcp    nowait    root    /usr/sbin/tcpd  ipop2d
#pop-3  stream     tcp    nowait    root    /usr/sbin/tcpd  ipop3d  
요부분을 주석처리
imap  stream     tcp    nowait    root    /usr/sbin/tcpd imapd      
요부분을 주석제거


    -/etc/services 확인

[root@rootshell root]# vi /etc/services
/imap  <--패턴매치입니다.
imap2              143/tcp            imap   # Interim  Mail  Access  proto v2
imap2              143/udp            imap  
이 부분의 설정을 확인해 줍니다.

자 포트가 열려 있는지 확인해 봅시다.
[root@rootshell root]# telnet localhost imap
Trying 127.0.0.1...
telnet unable to connect to remote host: 연결이 거부됨

[root@rootshell root]# telnet localhost pop-3
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'

우리는 방금 pop프로토콜을 주석처리하고 imap프로토콜의 주석을 제거 하였다. 
그러나 서비스가 거부되고 있다. 왜 그런가?

[root@rootshell /root]# /etc/rc.d/init.d/sendmail  stop
shutting down sendmail                                 [ok]
[root@rootshell /root]# /etc/rc.d/init.d/sendmail start
starting sendmail                                      [ok]

그렇다. 데몬 설정 파일을 변경했으니 데몬을 재실행해 주어야 한다.

데몬 재실행 이후에 다시 시도해 보자.
[root@rootshell root]# telnet localhost imap
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'

[root@rootshell root]# telnet localhost pop-3
Trying 127.0.0.1...
telnet unable to connect to remote host: 연결이 거부됨


자 이제 포트가 열렸다. 메일을 한번 보내보자.
    -메일 보내기

자기 자신에게 메일을 보내보자.
[root@rootshell root]# mail root
Subject: test     <--제목입니다.
hi test           <--본문내용입니다.
.                 <--글마침 표시입니다.
Cc:               <--참조 입니다.  (주)메일을 함께 읽을 메일 주소를 적어 주는 
                     부분입니다.

다른 콘솔로 로그인해서 메일을 확인해 보자.
login:root
passwd:xxxxxxxxxx
You have a new mail
[root@rootshell root]# mail
Mail version 8.1 6/6/93.   type  ?  for   help
"var/spool/mail/root": 1 message 1 new
> 1 root@localhost.local   Tue  Jun  17  15:30  13/369   "hi"

메일이 도착했는가? 축하한다.

tip) var/spool/mail/root 각 계정별로 메일의 임시 저장소이다. 이 파일에 
메일이 임시 저장되었다가 메일을 확인하게 되면 ~/mailbox 각 계정의 
홈디렉토리에 mailbox로 옮겨진다.

-/etc/sendmail.cf 설정
실질적으로 이 파일은 전문가들 조차도 까다롭게 생각하는 파일입니다. 
따라서 꼭 필요한 부분에 대해서만
     설정을 하도록 하겠습니다.

[root@rootshell root]# vi /etc/sendmail.cf

        *중략*

#########################
#     local info        #
#########################
Cwlocalhost
예)Cwdacker.net
   Cwwww.yahoo.co.kr
메일 서버의 도메인 지정(복수 도메인 가능)

Fw/etc/sendmail.cw
많은 복수 도메인을 기입하는 것의 불편을 막기 위해 별도의 
파일을 만들어 저장

#Dj$ww.Foo.COM
예)Djdacker.net
j뒤에 도메인명을 지정하면 sendmail이 자신의 호스트명을 
알아내지 못하는 실수가 있을 때 강제적으로 그 도메인으로 메일이 작동될 수 
있게 해주는 것

#who I masquerade as (null for no masquerading) (see alse $=M)
DM
DMhacker.net
예)현재 메일 호스트명이 dacker.net이지만 위와 같이 해놓으면 메일을 받는 
사람들에게는 hacker.net에서  편지가 온 것으로 표시됩니다.
(디립따 욕을 해놓고 다른 발신지를 적어놓으면 안돼겠죠*^^*)
원래 목적은 메일을 보내고 답장을 받을 때 hacker.net으로 받겠다는 의미입니다.
메일 전송자의 주소를 메일 호스트와 다르게 지정

#Foward file research path
O ForwardPath=$z/.forward.Sw:$z/.forward
이메일 주소가 여러개일 때 한 이메일 주소에서만 메일을 
수신하겠다 할 때 사용

        *생략*


    -/etc/sendmail.cw 설정

[root@rootshell root]# vi /etc/sendmail.cw
#sendamail.cw - include all aliases for your machine here
여기에 메일 호스트로 사용하고자 하는 도메인들을 
입력해 주면sendmail.cf파일에서 지정한 Fw 명령에 의해 이 파일 내용을 읽어서 
여기에 기록된 도메인들에 관하여 Sendmail기능이 작동하게 됩니다.


    -/etc/sendmail.mc 설정(매크로 파일 설정)

[root@rootshell root]# vi /etc/sendmail.mc

레드햇6.0패키지에 들어 있는 Sendmail버젼 8.9.3 버젼에 
추가된 파일로 sendmail.cf파일을 변경했을 때 m4라는 전 처리기(preprocessor)로 
이 매크로 설정을 작동시켜 /etc/sendmail.cf 파일을 새롭게 생성시켜 주여야 합니다. 
만일 여러분이 Sendmail설정 파일을 실수로 인하여 삭제를했거나 원상태의 설정 파일로 
복원하고 싶다면 아래와 같은 명령을 실행하면 sendmail.cf가 생성됩니다.

[root@rootshell root]# m4 /etc/sendmail.mc > /etc/sendmail.cf

    -/etc/aliases

메일 알리아스 기능이란, 어느 계정으로 메일을 보냈을 때 그 계정으로 메일이 
도착하지 않고, 알리어스 파일에 지정된 다른 계정으로 메일이 전송될 수 있게 
하는 기능입니다.

[root@rootshell root]# vi /etc/aliases
hacker: dacker@dacker.net, admin@hitel.net, linux
linux: sa@dacker.net, webma@dacker.net
이것은 hacker라는 계정으로 메일을 보내면, 
dacker@dacker.wo.to, admin@hitel.net로 메일이
전달되고, 로컬 호스트에 있는 linux 계정으로오는 메일은 다시 
sa@dacker.net, webma@dacker.wo.to 계저으로 메일이 전달됩니다.
설정을 바꿔 준 후에는 newaliases 명령을 이용하여 /etc/aliases/를 etc/aliases.db
파일로 저장시켜 줘야 한다.

    -/etc/mail/access 설정

레드햇 5.0 이후 부터 Sendmail에는 스팸 메일을 방지하기 위하여 메일 중계기능이 
추가 되었다. 따라서 다른 네트워크들이 나의 서버를 통하여 메일을 전송하는 것이 
막혀있다. 자신의 네트워크가 아닌 곳에서도 메일을 전송하기 위해서는 access에 
도메인 또는 호스트 주소를 입력하여 DB 파일로 저장해야 한다.

[root@rootshell root]# vi /etc/mail/access
/*모든 간격은 Tab key을 사용한다는 것을 잊지 말기 바란다.*/
yahoo.co.kr      RELAY     
dacker.net       RELAY
linux.com        RELAY
hacker.net       REJECT

이를 DB화 해 준다.
[root@rootshell root]# makemap hash /etc/mail/access < /etc/mail/access


    -/etc/mail/vitusertable 설정(가상 메일 서버스)
만약 여러개의 도메인을 서비스 하던 중, 모두들 admin계정을 달라고 요구할 경우에는 
virtusertable파일을 설정해야 한다.

[root@rootshell root]# vi /etc/mail/virtusertable
새로작성=>
admin@dacker.com              hacker    
admin@dacker.co.kr            dacker
admin@dacker.net              webma
위의 설정은 실제로는 admin이라는 계정이 3개나 존재할 수  없다.
다만 이렇게 오는 메일을 실제 계정을 가지고 있는 사용자로 전달하는 역활을 한다.

[root@rootshell root]# 
makemap hash /etc/mail/vitusertable < /etc/mail/vitusertable 
이를 DB화 해 준다.

    -SendMail의 재시동

[root@rootshell /root]# /etc/rc.d/init.d/sendmail  stop
shutting down sendmail                                 [ok]
[root@rootshell /root]# /etc/rc.d/init.d/sendmail start
starting sendmail                                      [ok]

  
여기 까지 오시느라고 대단히 수고가 많으셨습니다. sendmail에 대해서는 여기까지 
알아보도록 하겠습니다. 더 궁금한 것이 있으신 분들은 관련 서적이나 인터넷사이트를 
뒤져 보면 많은 것들이 나와있습니다.


===================================================================================================

이 사이트에서 제공하고 있는 내용은 개인의 경험을 바탕으로 제공되고 있습니다.
그러므로 이용시 예기치 않은 오류가 발생할 수도 있음을 알려드립니다.
여러분이 도움 및 정보를 바라신다면 저에게
메일을 보내 주십시요. 감사합니다.

www.dacker.wo.to copyleft (c) 2000 by park byoung-seo all lefts reserved


[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=774


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
박병서
1. 강사명 : 박병서


2. E-mail : pbseo72골뺑이hanmail.net


3. 홈페이지 : www.dacker.wo.to


4. 직업: 현직서버관리자
(서버관리자 전문가 그룹소속)