Skip to content

2010.11.19 23:14

메일 서버 구축

조회 수 20046 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
메일 서버 구축


- 참고 
1. 메일 관련 용어 
- MUA(Mail User Agent) : 사용자가 메일을 보내기 위해 사용하는 프로그램
 예) Outlook Express, Thunderbird 등

- MTA(Mail Transfer Agent) : 메일을 전달하는 프로그램으로 메일서버를 의미 
예) sendmail, postfix, qmail

- MDA(Mail Delivary Agent) : 전송받은 메일을 해당 사용자에게 전달(분류)하는 프로그램 
예) mail,procmail

2. 메일 관련 프로토콜
- SMTP(Simple Mail Transfer Protocol) - 포트번호 25 사용 
메일 전송 프로토콜로 메일 서버가 메일을 전송할 때 사용한다. 25번 포트 사용

- POP3(Post Office Protocol) - 포트번호 110 사용
메일 수신 프로토콜로 메일 서버에서 사용자가 메일을 받아 볼때 사용하는 프로토콜이다.
메일을 메일 서버에서 다운로드 하기 때문에 메일 시버에는 메일 없게 되어 서버에 부하가 적어진다. 
하지만 다운로드 하기 때문에 다른 컴퓨터에서는 메일을 볼수 없는 단점이 있다.           

- IMAP(Internet Mail Access Protocol) - 포트번호 114 사용
메일 수신 프로토콜로 메일 서버에서 사용자가 메일을 받아 볼때 사용하는 프로토콜이다. 
메일을 메일 서버와 동기화 하기 때문에 메일 서버에는 부하가 많아지는 단점이 있다. 
하지만 메일 서버와의 동기화로 인해 다른 컴퓨터에서도 볼수 있다는 장점이 있다. 
메일의 삭제시에는 메일서버와 연결된 상태에서 메일을 삭제하면 된다. 

3. 메일 서버의 동작 원리
- 사용자 A가 MUA(메일 프로그램) 를 통해 사용자가 B에게 보낼 메일을 작성한다.
-> 작성된 메일은 메일 서버 A의 queue(/var/spool/mqueue)에 저장되었다가 MTA(메일 서버)를 통해 사용자 B의 메일 서버 B로 전달된다.
-> SMTP 를 통해 전달받은 메일은 MDA를 통해 spool(/var/spool/mail/사용자 B)에 해당사용자의 메일 박스로 분류한다.
-> 사용자 B는 MUA를 통해 메일 서버에 접근하여 메일을 확인한다.
-> 확인된 자신의 메일을 POP3나 IMAP으로 수신한다.  

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

1. sendmail 패키지 설치 확인

[root@bban2 ~]# rpm -qa | grep sendmail
sendmail-8.13.8-2.el5
sendmail-cf-8.13.8-2.el5

[root@bban2 ~]# system-config-packages - 패키지 관리자를 통해서 설치를 확인 또는 설치할 수 있다.

[root@bban2 ~]# rpm -qi sendmail
Name        : sendmail                     Relocations: (not relocatable)
Version     : 8.13.8                            Vendor: CentOS
Release     : 2.el5                         Build Date: 
Install Date:       Build Host: builder5.centos.org
Group       : System Environment/Daemons    Source RPM: sendmail-8.13.8-2.el5.src.rpm
Size        : 1370586                          License: Sendmail
Signature   : DSA/SHA1, 2007년 04월 04일 (수) 오전 09시 27분 39초, Key ID a8a447dce8562897
Summary     : 널리 사용되는 메일 전송 에이전트 (MTA).
Description :
Sendmail 프로그램은 매우 널리 쓰이는 메일 전송 에이전트(MTA)입니다. MTA 는 특정 머신에서 다른 머신으로메일을 전송하는 역할을 합니다. Sendmail 은 이메일을 읽는 용도로 사용하는 클라이언트가 아닙니다. Sendmail 은당신의 이메일을 네트워크나 인터넷을 통해 보내고 싶은 곳으로 전송해주는 데몬 프로그램입니다.

만약 Sendmail 의 설정을 변경할 필요가 있다면, sendmail.cf 패키지를 인스톨 해두어야 합니다. 또,Sendmail 에 대한 문서가 필요하다면, sendmail-doc 패키지를 인스톨 하면 됩니다.

[root@bban2 ~]# yum install sendmail-doc  - sendmail에 대한 설명을 볼수 있는 패키지

- 중략

Installed: sendmail-doc.i386 0:8.13.8-2.el5
Complete!

[root@bban2 ~]# rpm -qa | grep sendmail
sendmail-8.13.8-2.el5
sendmail-doc-8.13.8-2.el5
sendmail-cf-8.13.8-2.el5

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

2. sendmail 설치 폴더

[root@bban2 ~]# cd /etc/mail
[root@bban2 mail]# pwd
/etc/mail
[root@bban2 mail]# ls
Makefile   domaintable     local-host-names  sendmail.cf   submit.cf      virtusertable
access     domaintable.db  mailertable       sendmail.mc   submit.mc      virtusertable.db
access.db  helpfile        mailertable.db    spamassassin  trusted-users

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

3. sendmail 환경설정 파일 

[root@bban2 mail]# vi sendmail.mc - sendmail의 매크로 설정파일로 sendmail.cf를 새로 생성할때 사용한다.

[root@bban2 mail]# vi sendmail.cf - 센드 메일의 주 환경설정파일

- 참고
sendmail.cf 파일을 초기 설정으로 바꾸거나 파일에 이상이 생겼을 경우  

# m4 sendmail.mc > sendmail.cf
m4 매크로 명령을 이용하여 sendmail.mc 매크로 파일을 sendmail.cf파일로 변환한다.

즉, 센드메일.cf파일의 원본파일(초기 설정파일)이 센드메일.mc라고 생각하면 쉽다.

[root@bban2 mail]# vi local-host-names 
- 메일 서버의 최종 수신지를 지정한다. 메일 호스트 도메인 지정 파일로 여러 도메인을 한대의 메일서버에서 사용할 때 등록한다.
1 # local-host-names - include all aliases for your machine here.
2 bban2.co.kr

[root@bban2 mail]# vi domaintable - 특정 도메인에게 배달된 메일을 특정 메일로 전달한다. Forwarding 과 비슷 

- 예)  
# cat /etc/mail/domaintable
fedora5.co.kr          centos5-2.co.kr  : 이전에 쓰던 fedora5.co.kr 로 오는 메일들을 centos-5.2.co.kr로 보낸다. 

[root@bban2 mail]# vi mailertable
  - 특정 도메인에게 배달된 메일을 DNS를 참조하지 않고 특정 메일로 전달한다.

- 예) 우선 /etc/hosts 파일에 mail2를 등록한다. 
# cat /etc/hosts
192.168.0.5        mail2
# cat /etc/mail/mailertable
fedora5.co.kr        esmtp:mail2

[root@bban2 mail]# vi virtusertable - sendmail 가상 사용자를 등록하여 시스템 계정으로 받을 수 있게 설정한다.

- 예)  # cat /etc/mail/vitusertable
webmaster          centos5-2.co.kr  : webmaster 라는 가상 메일 계정으로 온 경우 centos5-2.co.kr인 시스템 계정으로 forwarding해준다. 

[root@bban2 mail]# vi access - 메일 릴레리 기능을 설정한다.
1 # Check the /usr/share/doc/sendmail/README.cf file for a description
2 # of the format of this file. (search for access_db in that file)
3 # The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc
4 # package.
5 #
6 # by default we allow relaying from localhost...
7 Connect:localhost.localdomain           RELAY
8 Connect:localhost                       RELAY
9 Connect:127.0.0.1                       RELAY

- 참고 : Option 
OK : DNS 조회없이 sendmail 릴레이를 허용 
RELAY : 메일 릴레이 허용
REJECT : 메일 수신 거부(반송)
DISCARD : 메일 수신 무시(반송하지 않음)
501 : 지정된 메일 주소가 같다면 메일 수신 거부 

553 : 발신지 주소가 없는 경우 메일 수신 거부 
550 : 지정된 도메인에 관련된 모든 메일 수신 거부

[root@bban2 etc]# pwd
/etc
[root@bban2 etc]# vi aliases - sendmail aliase 파일로 사용자 메일을 다른 사용자로 받아볼수 있게 설정한다. 

- 예) 실질적으로 존재하는 메일 계정만을 forwarding 해준다. 
# cat /etc/aliases
test1:        bban2 : test1 사용자의 메일을 bban2 사용자에게 보낸다. 이때 test1은 메일 확인이 불가능해진다.

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

4. Sendmail DB update

- /etc/mail/ 디렉토리 안에 sendmail 파일은 db화하여 관리하므로 업데이트 해야 한다.
- 실제적으로 sendmail은 XXX.db파일을 설정파일로 읽어들이기 때문이다. 

[root@bban2 mail]# pwd
/etc/mail
[root@bban2 mail]# ls
Makefile   domaintable     local-host-names  sendmail.cf   submit.cf      virtusertable
access     domaintable.db  mailertable       sendmail.mc   submit.mc     virtusertable.db
access.db  helpfile        mailertable.db    spamassassin  trusted-users

[root@bban2 mail]# makemap hash virtusertable.db < virtusertable - virusertable파일이 virusertable.db파일로 업데이트 된다.

[root@server3 mail]# make clean - rm -rf *.db 와 같은 명령어로 XXX.db 파일을 모두 삭제한다. 
[root@bban2 mail]# ls
Makefile  domaintable  local-host-names  sendmail.cf  spamassassin  submit.mc      virtusertable
access    helpfile     mailertable       sendmail.mc  submit.cf     trusted-users

[root@bban2 mail]# make
 - XXX.db파일을 생성하는 명령어로 /etc/mail/ 디렉토리 안의 모든 db파일을 업데이트 해준다. 
[root@bban2 mail]# ls
Makefile   domaintable     local-host-names  sendmail.cf   submit.cf      virtusertable
access     domaintable.db  mailertable       sendmail.mc   submit.mc      virtusertable.db
access.db  helpfile        mailertable.db    spamassassin  trusted-users

[root@bban2 mail]# newaliases
 - /etc/aliases 파일을 업데이트 하는 명령어이다.


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

4. 주 환경 설정 파일

[root@bban2 mail]# pwd
/etc/mail
[root@bban2 mail]# ls
Makefile   domaintable     local-host-names  sendmail.cf   submit.cf      virtusertable
access     domaintable.db  mailertable       sendmail.mc   submit.mc      virtusertable.db
access.db  helpfile        mailertable.db    spamassassin  trusted-users
[root@bban2 mail]# vi sendmail.cf

265 O DaemonPortOptions=Port=smtp,Addr=0.0.0.0, Name=MTA  - Addr=127.0.0.1 -> 0.0.0.0으로 바꿔준다.

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

4-1. DNS 정보 수정

[root@bban2 mail]# vi /var/named/chroot/var/named/server3.zone 

1 $TTL    86400
2 @               IN SOA  bban2.co.kr. root.bban2.co.kr. (
3                                         42              ; serial (d. adams)
4                                         60              ; refresh
5                                         15M             ; retry
6                                         1W              ; expiry
7                                         1D )            ; minimum
8                 IN NS           bban2.co.kr.
9                 IN A            10.10.33.3
10       
11                IN MX 5         bban2.co.kr 
12                IN A            192.168.0.7        - 이부분을 추가해 준다. 

[root@bban2 mail]# rndc reload
server reload successful
[root@bban2 mail]# nslookup
> set type=mx
> bban2.co.kr
Server:         192.168.0.7
Address:        192.168.0.7#53

bban2.co.kr     mail exchanger = 5 bban2.co.kr.    - 이렇게 나와야 설정이 제대로 된 것이다.
> exit

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

4-2. 지금까지 한 설정을 다시 한번더 확인 및 서비스 시작

[root@bban2 mail]# cat /etc/mail/local-host-names 
# local-host-names - include all aliases for your machine here.
bban2.co.kr
[root@bban2 mail]# vi /etc/mail/sendmail.cf
265 O DaemonPortOptions=Port=smtp,Addr=0.0.0.0, Name=MTA

[root@bban2 mail]# service sendmail restart  - sendmail 서비스를 시작한다. 
sm-client을 종료 중:                                       [  OK  ]
sendmail를 종료 중:                                        [  OK  ]
sendmail (을)를 시작 중:                                   [  OK  ]
sm-client를 시작 중:                                       [  OK  ]

[root@bban2 ~]# netstat -nat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      - 25번 포트가 열렸는지 확인한다.

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

5. 메일 보내기 & 메일 확인하기 

[root@bban2 ~]# mail guest@bban2.co.kr   - guest에게 메일을 보낸다. 
Subject: test mail    - 메일의 제목을 쓴다.
test
guest                      - 내용 작성
.                              - 메일 내용을 마무리 하려면  " . " 를 입력한다.
Cc:                          - enter를 입력하고 메일 작성창에서 빠져나간다. 
[root@bban2 ~]# mailq  
 - 송신이 제대로 되었는지 확인한다.
/var/spool/mqueue is empty - /var/spool/mqueue 파일은 메일 전송시 임시 저장장소이다.  
                Total requests: 0
[root@bban2 ~]# 

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

5-1. 보낸 메일 확인

[root@bban2 ~]# cd /var/spool/mail  - 사용자의 메일 박스로 이동합니다.
[root@bban2 mail]# ls
guest  root  rpc  test1
[root@bban2 mail]# cat guest - guest에게 보낸 메일의 목록을 확인 할 수 있다. 
From root@bban2  Sun Dec 21 18:10:37 2008
Return-Path: <root@bban2>
Received: from bban2 (localhost.localdomain [127.0.0.1])
        by bban2 (8.13.8/8.13.8) with ESMTP id mBL9AaHD006436
        for <guest@bban2.co.kr>; Sun, 21 Dec 2008 18:10:36 +0900
Received: (from root@localhost)
        by bban2 (8.13.8/8.13.8/Submit) id mBL9Aa4q006383
        for guest@bban2.co.kr; Sun, 21 Dec 2008 18:10:36 +0900
Date: Sun, 21 Dec 2008 18:10:36 +0900
From: root <root@bban2>
Message-Id: <200812210910.mBL9Aa4q006383@bban2>
To: guest@bban2.co.kr
Subject: test mail

test
guest

[root@bban2 mail]# 

-참고
[root@bban2 mail]# cat guest  
[root@bban2 mail]# 
이와 같이 guest가 메일을 확인하게 되면 guest에게 보낸 메일 목록이 사라지게 된다.  

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

5-2. 메일 확인 

[root@bban2 ~]# su - guest  - guest 사용자로 전환
[guest@bban2 ~]$ pwd
/home/guest
[guest@bban2 ~]$ mail 
- 메일 확인 
Mail version 8.1 6/6/93.  Type ? for help.
"/var/spool/mail/guest": 1 message 1 new
>N  1 root@bban2            Sun Dec 21 18:10  17/541   "test mail"
& 1   - 확인할 메일 번호를 입력한다. 
Message 1:
From root@bban2  Sun Dec 21 18:10:37 2008
Date: Sun, 21 Dec 2008 18:10:36 +0900
From: root <root@bban2>
To: guest@bban2.co.kr
Subject: test mail

test
guest

&  메일 함에서 나간다. 
Saved 1 message in mbox   - 메일 함에서 나가면서 메일 내용을 mbox에 저장 한다.  
[guest@bban2 ~]$ 

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

5-3. 저장된 받은 메일 확인

[guest@bban2 ~]$ pwd
/home/guest
[guest@bban2 ~]$ ls
mbox
[guest@bban2 ~]$ cat mbox 
From root@bban2  Sun Dec 21 18:10:37 2008
Return-Path: <root@bban2>
Received: from bban2 (localhost.localdomain [127.0.0.1])
        by bban2 (8.13.8/8.13.8) with ESMTP id mBL9AaHD006436
        for <guest@bban2.co.kr>; Sun, 21 Dec 2008 18:10:36 +0900
Received: (from root@localhost)
        by bban2 (8.13.8/8.13.8/Submit) id mBL9Aa4q006383
        for guest@bban2.co.kr; Sun, 21 Dec 2008 18:10:36 +0900
Date: Sun, 21 Dec 2008 18:10:36 +0900
From: root <root@bban2>
Message-Id: <200812210910.mBL9Aa4q006383@bban2>
To: guest@bban2.co.kr
Subject: test mail
Status: RO

test
guest
 
IMAP & POP3 설치
Download  : ftp://ftp.cac.washington.edu/imap/
* imap-2001xx.tar.Z 버전이 잘 설치가 됨

[root:/usr2/src] tar xvzf imap.tar.gz
[root:/usr2/src] mv imap-2001a /usr/local/imap
[root:/usr2/src] cd /usr/local/imap
[root:/usr2/src] make slx
[root:/usr/local/imap] cp ipopd/ipop3d /usr/sbin
[root:/usr/local/imap] cp imapd/imapd /usr/sbin
[root:/etc/xinetd.d] cat imapd
service imap
{
        disable = no
        socket_type = stream
        wait  = no
        user = root
        server = /usr/sbin/imapd
        log_on_success += HOST DURATION
        log_on_failure += HOST
}

[root:/etc/xinetd.d] cat ipop3d
service pop3
{
        disable = no
        socket_type = stream
        wait  = no
        user = root
        server = /usr/sbin/ipop3d
        log_on_success += HOST DURATION
        log_on_failure += HOST
}
[root:/etc/xinetd.d] /etc/rc.d/init.d/xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]

[root:/etc/xinetd.d] telnet localhost 110

List of Articles
번호 제목 글쓴이 날짜 조회 수
22 네임서버에 SPF 적용하기(bind) l2zeo 2010.05.29 15312
21 SPF 레코드등록.. 이틀간의 삽질의 결과물..(hotmail) ADMINPLAY 2010.06.04 19056
20 개인서버에서 hotmail 쪽으로 발송이 안됨 ADMINPLAY 2010.06.04 20597
19 SPF(Sender Policy Framework) : 메일서버등록제 ADMINPLAY 2010.06.04 19263
18 /var/spool/clientmqueue 에 파일 적재될 때 ADMINPLAY 2010.06.04 19806
17 courier-authlib 와 courier-imap 의 설치 ADMINPLAY 2010.06.21 18326
16 Sorry,_no_mailbox_here_by_that_name._(#5.1.1) ADMINPLAY 2010.06.22 22180
15 Fedora Core에 dovecot 환경파일 상세설정 ADMINPLAY 2010.08.20 19887
» 메일 서버 구축 ADMINPLAY 2010.11.19 20046
13 SpamAssassin local.cf 룰 ADMINPLAY 2010.11.19 18405
12 UNIX 및 Linux 서버에 대한 Resource 모니터링 ADMINPLAY 2010.11.20 17823
11 sendmail POP3 : webmaster, support 등의 계정으로 SMTP... ADMINPLAY 2010.11.21 19533
10 virtualtable 설정 ADMINPLAY 2010.11.21 35665
9 sendmail 송수신 안될시 확인사항 ADMINPLAY 2010.11.21 25546
8 root 에게 온 메일 읽기 ADMINPLAY 2011.08.06 18788
7 sendmail 이메일 포워딩 설정방법 ADMINPLAY 2012.01.16 19297
6 sm-client를 시작 중: can not chdir(/var/spool/clientmq... ADMINPLAY 2012.01.18 20002
5 [팁] 리눅스 SendMail 속도 UP ADMINPLAY 2012.01.26 18717
4 sendmail spfmilter를 통한 스팸 방지 ADMINPLAY 2012.05.31 18898
3 RBL 또는 IP reputation 관련 해제 사이트 ADMINPLAY 2012.09.10 12577
Board Pagination Prev 1 2 3 4 5 6 Next
/ 6

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234