2. 리눅스 server 구축 및 실무 운영[email protected] user2 ----- * 실무 관리자를...

43
* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 1/43 페이지 서 진우([email protected]) 2. 리눅스 Server 구축 및 실무 운영 2.3. MAIL Server 리눅스 운영체제에서 사용할 수 있는 많은 서비스중에서 대표적인 서버스 중에 하나로 메일 서비스를 꼽을 수 있다. 이 장에서는 리눅스에서 가장 대중적으로 사용되어 지는 Sendmail 과 대규모 메일 발송에 탁월한 성능을 가지고 있는 Qmail 에 대해 그 구축법과 사용법에 대해 알아 보도록 하겠다. 구체적인 구축에 들어가기 앞서 먼저 메일시스템의 작동 원리에 대해 이해를 해야 할 것이다. 메일서버란 인터넷에서 E-Mail을 주고 받는 기능을 수행하는 서버를 말하며, E-Mail은 크게 두 종류의 프로그램과 프로토콜에 의해 전달된다. 여기서 두 종류의 프로그램이란MUA(Mail User Agent)와 MTA(Mail Transfer Agent)를 말한다. MUA로는사용자가 직접 메일을 작성하거나 보낼 때 사용하는 넷스케이프 메신저, MS Outlook 유도라 등의 프로그램이 있고, MTA는 실제로 메일을 전송해주는 Sendmail,Qmail등의 프로그램 이 있다. 아래의 그림과 같이 Sendmail이 설치된 메일서버는 SMTP(Simple Mail Transfer Protocol) 프로토콜을 사용하여 메일을 전송하고, 호스트로부터 받은 메일을 클라이언트로 전달할 때는 POP3 또는 IMAP등의 프로토콜을 사용합니다. [ 메일 작동 구성도 - 그림 ] 예를 들어 [email protected] 이라는 메일주소를 가진 사람이 다른 서버에 계정을 가진 [email protected]이라는 친구에게 메일을 보낸다고 가정하면, 아래와 같은 과정을 거쳐 메일이 전달되게 될것이다. 1. [email protected] 이라는 사람이 Outlook 이나 넷스케이프 메신저와 같은 MUA 프로그램에서 보낸 메일은 먼저 SMTP 프로토콜을 통해 arhfw.clunix.org 메일서버에 전달됩니다.

Upload: others

Post on 17-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

1/43 페이지 서 진우([email protected])

2. 리눅스 Server 구축 및 실무 운영

2.3. MAIL Server

리눅스 운영체제에서 사용할 수 있는 많은 서비스중에서 대표적인 서버스 중에 하나로 메일

서비스를 꼽을 수 있다. 이 장에서는 리눅스에서 가장 대중적으로 사용되어 지는 Sendmail

과 대규모 메일 발송에 탁월한 성능을 가지고 있는 Qmail 에 대해 그 구축법과 사용법에 대해

알아 보도록 하겠다.

구체적인 구축에 들어가기 앞서 먼저 메일시스템의 작동 원리에 대해 이해를 해야 할 것이다.

메일서버란 인터넷에서 E-Mail을 주고 받는 기능을 수행하는 서버를 말하며, E-Mail은 크게

두 종류의 프로그램과 프로토콜에 의해 전달된다.

여기서 두 종류의 프로그램이란MUA(Mail User Agent)와 MTA(Mail Transfer Agent)를 말한다.

MUA로는사용자가 직접 메일을 작성하거나 보낼 때 사용하는 넷스케이프 메신저, MS Outlook

유도라 등의 프로그램이 있고, MTA는 실제로 메일을 전송해주는 Sendmail,Qmail등의 프로그램

이 있다.

아래의 그림과 같이 Sendmail이 설치된 메일서버는 SMTP(Simple Mail Transfer

Protocol) 프로토콜을 사용하여 메일을 전송하고, 호스트로부터 받은 메일을 클라이언트로

전달할 때는 POP3 또는 IMAP등의 프로토콜을 사용합니다.

[ 메일 작동 구성도 - 그림 ]

예를 들어 [email protected] 이라는 메일주소를 가진 사람이 다른 서버에 계정을 가진

[email protected]이라는 친구에게 메일을 보낸다고 가정하면, 아래와 같은 과정을 거쳐

메일이 전달되게 될것이다.

1. [email protected] 이라는 사람이 Outlook 이나 넷스케이프 메신저와 같은 MUA

프로그램에서 보낸 메일은 먼저 SMTP 프로토콜을 통해 arhfw.clunix.org 메일서버에

전달됩니다.

Page 2: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

2/43 페이지 서 진우([email protected])

2. arhfw.clunix.org에서 대기하고 있던 MTADaemon(Sendmail, qmail)은 메일을 메일큐

Directory(/var/spool/mqueue)에 임시 저장한 후 SMTP 프로토콜을 통해 다시 yahoo.co.kr

메일서버로 전송하고 큐Directory에 저장했던 메일을 삭제합니다.

yahoo.co.kr에서는 sendmail Daemon이 대기하고 있다가 arhfw.clunix.org 메일서버가

보내온 메일의 도착지가 자신의 것인지 확인 한 후 맞으면 메일박스(/var/mail

Directory)에 webmaster라는 파일로 저장합니다.

3. [email protected]의 사용자는 마이크로소프트 아웃룩이나 유도라와 같은 MUA를

통해 메일을 확인하며, 이때에는 POP3나 IMAP등의 프로토콜을 통해 메일이 전송됩니다.

이와 같은 메일이 전달되어 지는 과정 중에 어느 하나라도 문제가 발생하면 정상적인

메일 송수신이 되지 않을 것이다. 관리자는 이런 메일 작동의 원리를 알고 있어야 실제

문제 발생 시 막연히 "메일이 안된다" 가 아닌 어느 지점에 문제로 인해 메일이 안된다

라는 인식을 할수 있게 된다.

2.3.1 Sendmail 로 Mail Server 구축하기

- Sendmail 설치 및 기본 설정

Sendmail은 메일서버로 가장 많이 사용되고 있는 MTA프로그램으로 공식사이트는

http://www.sendmail.org입니다. 대부분의 리눅스 배포판에 기본적으로 설치가 되어

있으므로 자신의 시스템에 맞는 환경설정을 한 후 사용하시면 됩니다.

패키지는 다음 사이트에서 다운 받을 수 있다.

Sendmail 공식 미러사이트 - ftp://ftp.sendmail.org

Sendmail 미러사이트 - http://www.sendmail.org/mirrors.html

국내 미러사이트 : ftp://ftp.linux.co.kr/server/sendmail

여기서는 Redhat Linux 배포판에서 기본 제공해 주는 RPM 패키지를 이용하여 구축 하여

보도록 하겠다.

[root@arhfw updates]# rpm -Uvh sendmail-8.12.8-9.90.i386.rpm

[root@arhfw updates]# rpm -Uvh sendmail-cf-8.12.8-9.90.i386.rpm

Page 3: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

3/43 페이지 서 진우([email protected])

[root@arhfw updates]# rpm -Uvh sendmail-doc-8.12.8-9.90.i386.rpm

Sendmail을 실행하기전에 /etc/services 파일을 열고 smpt 프로토콜에 주석처리가

되어 있는지 확인한 후 Sendmail 서버를 실행합니다.

[root@arhfw root]# cat /etc/services | grep smtp

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

smtp 25/tcp mail

smtp 25/udp mail

smtps 465/tcp # SMTP over SSL (TLS)

[root@arhfw root]# /etc/rc.d/init.d/sendmail restart

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

Shutting down sendmail: [ OK ]

Shutting down sm-client: [ OK ]

Starting sendmail: [ OK ]

Starting sm-client: [ OK ]

Sendmail 서버가 정상적으로 실행되었는지 확인하기 위해 telnet을 사용해 25번 포트(smpt)로

접속해봅니다. 아래와 같은 메시지가 출력되면 Sendmail이 정상적으로 실행된 것입니다.

[root@arhfw root]# telnet localhost 25

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

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

220 arhfw.clunix.org ESMTP Sendmail 8.12.8/8.12.8; Wed, 27 Apr 2005 13:47:18 +0900

만약 레드헷 버젼이 7.1 이상부터는 relay 보안 기능이 강화 되어서 초기 셋팅상태에서는

내부 사용자 끼리만 메일을 보내고 받을수 있다. 원격지에서는 이 서버를 통해서 메일을

주고 받을수가 없다. 일단..새로 sendmail.cf 파일을 만들어야 한다.

이를 확인 하기 위해서는 telnet 으로 25번 포트에 접근을 해보면 되는데 이때는 로컬

시스템에서 확인하는 것이 아니라 원격 호스트에서 확인을 해야 한다. 로컬은 기본 설정

Page 4: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

4/43 페이지 서 진우([email protected])

에서 이미 허가가 되어져 있으니 위의 테스트결과 처럼 정상적으로 접속이 되어질 것이다.

[root@arhdev root]# telnet arhfw.clunix.org 25

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

Trying 192.168.133.254...

telnet: connect to address 192.168.133.254: Connection refused

위와 같이 원격 시스템에서는 arhfw 서버에 접근을 할 수 없기 때문에 메일을 보낼 수 없다.

정상적인 메일 서비스를 위해서는 위 부분의 제한을 제거해 주어야 한다.

[root@arhfw root]# cd /etc/mail

[root@arhfw mail]# vi sendmail.mc

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

.

.

아래 부분을 찾는다

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')

해당 서버의 외부 통신 IP로 메일을 Detect 할 수 있게 아래와 같은 설정을 추가한다.

DAEMON_OPTIONS(`Port=smtp,Addr=192.168.133.254, Name=MTA')

.

.

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

[root@arhfw mail]# m4 sendmail.mc > sendmail.cf

m4 를 이용하여 sendmail.mc 설정 파일을 토대로 sendmail.cf 파일을 재생성하도록 한다.

[root@arhfw mail]# /etc/rc.d/init.d/sendmail restart

새로운 설정을 적용하기 위해 sendmail 재시작한다.

이제 다시 외부 호스트에서 25번 port 테스트를 해보도록 하자.

[root@arhdev root]# telnet arhfw.clunix.org 25

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

Trying 192.168.133.254...

Page 5: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

5/43 페이지 서 진우([email protected])

Connected to arhfw.clunix.org.

Escape character is '^]'.

220 arhfw.clunix.org ESMTP Sendmail 8.12.8/8.12.8; Wed, 27 Apr 2005 14:01:57 +0900

위와 같이 정상적으로 접속이 되면 일단 메일을 주고 받을 준비가 되어진것이다.

이제 구체적인 메일 설정을 해 보도록 하자.

- Sendmail.cf 설정

Sendmail에서 가장 중요하고도 어려운 부분이 sendmail.cf 파일의 설정입니다.

O’Reilly사에서 Sendmail에 대한 전문서적이 나올 정도로 방대하고 다양한 기능을 가지고

있으며 사용법도 매우 다양합니다. Sendmail을 사용하기 위해 기본적으로 알아야 할 설정

파일들에 대해 살펴보겠습니다.

[root@arhdev root]# vi /etc/mail/sendmail.cf

Sendmail의 가장 중요한 설정파일로 /etc 또는 /etc/mail Directory에 자동으로 설치되어

있습니다. 여기서는 주요 항목에 대해서만 설명하도록 하겠습니다.

Fw/etc/mail/local-host-names

메일을 수신할 호스트 이름을 명시한 파일의 위치를 설정합니다.

FR-o /etc/mail/relay-domains

relay-domains파일에는 Relay를 허용할 호스트의 이름을 설정합니다. 주석으로 처리하면

모든 IP에 대해서 Relay가 허용되므로 스팸메일과 같은 문제가 발생할 수도 있으므로

주의하시기 바랍니다.

DnMAILER-DAEMON

Sendmail 서버가 에러메시지를 보내야 할 경우 보낸 사람의 이름을 결정합니다. 잘못된

메일이 되돌아 온 경우 FROM : Mail Delivery Subsystem

&ltMAILER-DAEMON>과 같은 메시지를 보신적이 있을 것입니다.

Kaccess hash /etc/mail/access

Page 6: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

6/43 페이지 서 진우([email protected])

Relay를 허용하거나 거부할 특정 IP와 도메인을 설정하는 파일입니다.

relay-domains보다 사용이 편리하므로 많이 사용됩니다.

O MaxMessageSize=2000000

메일의 최대 크기를 결정합니다. 주석을 제거하면 설정한 크기(Byte단위)보다 큰 메일은

전송할 수 없게 됩니다. 지금 써준 2000000은 2메가로 제한한 메일 용량입니다.

O QueueDirectory=/var/spool/mqueue

큐 Directory를 설정합니다.

O Timeout.queuereturn=5d

메일을 보내려는 호스트에 문제가 생기면 메일은 큐 Directory에 저장됩니다. Sendmail

서버는 쌓인 메일을 상대방 호스트에 보내기 위해 주기적으로 접속을 시도하며, 일정한

기간이 지나면 메일을 다시 발송한 사람에게 되돌려 보냅니다. Sendmail이 메일을 보내려고

시도하는 기간을 설정하는 옵션으로 5d는 5일을 의미합니다.

O Timeout.queuewarn=4h

큐 Directory에 쌓인 메일이 지정한 시간안에 전송되지 못할 경우 메일을 보낸 사람에게 경고

메일을 보냅니다. 기본값은 4h로 4시간안에 전송되지 못하면 보낸 사람에게 경고의 메일을

보냅니다.

Mlocal,

P=/usr/bin/procmail, F=lsDFMAw5u:/|@qSPfhn9,

S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,

T=DNS/RFC822/X-Unix,

A=procmail -Y -a $h -d $u

사용자계정에 대문자가 있는 경우에도 메일을 받을 수 있도록 설정하려면 Mlocal로

시작하는 부분을 찾아 F= 부분에 'u'를 추가합니다.

- access 설정

[root@arhfw mail]# vi access

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

Page 7: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

7/43 페이지 서 진우([email protected])

localhost.localdomain RELAY

localhost RELAY

127.0.0.1 RELAY

192.168.133. RELAY

spam.com REJECT

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

스팸메일을 방지하기 위해 Relay를 허용할 호스트의 IP와 도메인을 설정하는 매우 중요한

파일입니다

위의 localhost 나 192.168.133.0/24 IP 대역에서 Relay를 허용하나 spam.com 에서 오는

모든 메일은 Relay를 거부 한다는 뜻이다.

이와 같이 허용이나 거부 대역을 지정후 access.db 파일을 갱신시켜주면 바로 적용이된다.

[root@arhfw mail]# makemap hash /etc/mail/access < /etc/mail/access

- local-host-names 설정

[root@arhfw mail]# vi local-host-names

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

clunix.org

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

메일을 수신할 호스트의 이름을 입력하는 파일로, Sendmail 8.9.x 버전이하에서 사용되었던

sendmail.cw 파일의 명칭이 Sendmail 8.10.x 버전부터는 local-host-names로 변경되었습니다.

Sendmail 서버는 이곳에 적힌 호스트의 이름으로 메일이 들어오면 더 이상다른 서버로 메일을

보내지 않고 자신의 메일박스에 저장합니다.

아래와 같이 메일서버의호스트이름을 입력하거나 여러 개의 가상호스트를 사용한다면 모두

입력해야 합니다.

- aliases 설정

[root@arhfw mail]# vi /etc/aliases

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

# Basic system aliases -- these MUST be present.

mailer-daemon: postmaster

postmaster: root

Page 8: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

8/43 페이지 서 진우([email protected])

.

.

mailing: user1, user2, user3

mailing2: :include:/etc/mail/mailing_users

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

특정 사용자에게 온 메일을 다른 사람에게 보내주거나, 메일링리스트를 작성해야 하는 경우에

사용되는 파일로 보안에 주의하여 사용해야 합니다.

aliases 파일을 열어보면 시스템 계정들이 아래와 같이 root로 alias되어 있습니다.

또한 특정 사용자를 다른 사용자로 alias 시킬 수도 있습니다.

위와 같이 설정을 하고 설정을 적용 시켜 주는 newaliases 명령을 실행시키면 된다.

[root@arhfw mail]# newaliases

/etc/aliases: 65 aliases, longest 32 bytes, 691 bytes total

위 설정에서는 [email protected] 로 메일을 보내면 user1, user2, user3 계정에게 메일이

전송되게 된다. [email protected] 로 메일을 보내면 /etc/mail/mailing_users 파일에 저장

된 계정 리스트 모두에게 메일이 전송되어 진다.

[root@arhfw mail]# cat mailing_users

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

user1

user2

user3

- virtusertable 설정

[root@arhfw mail]# vi virtusertable

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

[email protected] alang

[email protected] user1

[email protected] user2

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

Page 9: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

9/43 페이지 서 진우([email protected])

virtusertables 설정은 동일 시스템에 여러개의 도메인이 메일 서비스를 받고 있을 경우

webmaster 나 admin 과 같은 도메인 별로 중복되어 사용되어지는 계정이 있을 경우 가상

계정으로 만들어 가상계정으로 들어오는 메일을 실제 시스템 계정으로 포워딩 시켜 주는

설정이다.

위와 같은 형태로 설정을 하고 난 후 virtusertable.db 파일을 생성해 주어야 한다.

[root@arhfw mail]# makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable

그럼 실제 [email protected] 로 메일을 보내면 [email protected] 로 메일이 전송되게

된다.

- sendmail monitoring 하기

[root@arhfw mail]# mailstats

Statistics from Wed Jan 23 04:02:04 1980

M msgsfr bytes_from msgsto bytes_to msgsrej msgsdis Mailer

5 361145 14357435K 89312 3671483K 16983 0 esmtp

8 236772 11571389K 661786 20775066K 8687 0 local

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

T 597917 25928824K 751098 24446549K 25670 0

- sendmail mail queue monitoring 하기

[root@ns /root]# mailq

Mail Queue (5 requests)

--Q-ID-- --Size-- -----Q-Time----- ------------Sender/Recipient------------

LAA21970 2375 Sat Jul 21 11:40 MAILER-DAEMON

8BITMIME (Deferred: Connection refused by web.kdlp.org.)

<[email protected]>

QAA29807 11059 Fri Jul 20 16:58 MAILER-DAEMON

8BITMIME (Deferred: Connection refused by tmail.simmani.com.)

<[email protected]

KAA01947 7550 Fri Jul 20 10:29 MAILER-DAEMON

Page 10: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

10/43 페이지 서 진우([email protected])

8BITMIME (Deferred: Connection refused by web.kdlp.org.)

<[email protected]>

OAA05202 3153 Wed Jul 18 14:43 MAILER-DAEMON

8BITMIME (Deferred: Connection refused by web.kdlp.org.)

<[email protected]>

PAA19364* (no control file)

- sendmail 통해 송수신 메일 용량 제한 하기

송신 메일 크기 제한은 sendmail.cf 의 MaxMessageSize 를 찾아서 허용할 크기의 용량을

정의 하면 된다. 용량단위는 Byte 이며 5MByte 크기의 데이터를 메일로 송신 하고 싶을

경우는 MaxMessageSize=5024000 라고 설정하면 된다.

수신 메일 크기 제한은 Mlocal 설정 부분을 찾는다.

Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL,

R=EnvToL/HdrToL, T=DNS/RFC822/X-Unix,

이곳에서 M=5024000 와 같은 설정을 추가해 준다.

Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL,

R=EnvToL/HdrToL, M=5024000, T=DNS/RFC822/X-Unix,

그런 후 sendmail 을 재 시작해 주면 바로 적용된다.

2.3.2 Post Office Protocol(POP) 서버 구축하기

- POP3의 작동 원리

Post Office Protocol의 약자인 POP은 각 SMTP 로 부터 보내진 메일이 저장된 메일서버

의 저장 박스에 있는 메일 데이터를 MUA에서 수신하도록 서비스를 해주는 프로그램이다.

여기에서는 UWIMAP 에서 지원하는 POP3 구축과 Qpopper로 구축하는 방법에 대해 알아

Page 11: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

11/43 페이지 서 진우([email protected])

볼것이다. POP 방식은 IMAP의 POP3 나 Qpopper 의 POP3 중 하나만을 선정하여 사용을 해야

할것이다. 두개를 동시에 쓰면 POP3 의 Service Port 인 110 번 Port 를 두개의 프로그램

에서 서로 점유할려는 충돌이 발생할것이다.

- IMAP/POP3 설치 하기

Sendmail을 통해 메일을 메일 서버의 메일 박스에 보관하는 부분까지는 위 단계 설정으로

완료가 되었다. 하지만 메일 서버의 보관된 메일을 사용자 MUA를 통해 사용자 PC로 가져

오기 위해서는 POP3 나 IMAP 같은 프로그램이 필요 하게 된다.

여기서는 IMAP 과 POP3를 설치하는 방법에 대해 알아 보도록 하자.

- IMAP 설치 및 설정 하기

해당 사이트에서 Imap source 를 다운 받는다.

ftp://ftp.cac.washington.edu

적절한 경로에 Source 를 옮겨 놓고 압축을 푼다.

[root@arhfw apmj]# tar xzvf imap-2004.tar.Z

압축이 풀린 Imap Directory를 /usr/local/imap Directory로 옮긴다.

[root@arhfw apmj]# mv imap-2004 /usr/local/imap

[root@arhfw apmj]# cd /usr/local/imap

[root@arhfw imap]# make slx SSLTYPE=none

컴파일이 완료되면생성된 imapd 와 ipop3d 실행 파일을 /usr/sbin 으로 옮겨 놓는다.

[root@arhfw imap]# cp imapd/imapd /usr/sbin

[root@arhfw imap]# cp ipopd/ipop3d /usr/sbin

imapd, ipop3d Daemon을 xinetd Daemon에서 제어 가능하도록 설정한다.

Page 12: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

12/43 페이지 서 진우([email protected])

[root@arhfw imap]# vi /etc/xinetd.d/imapd

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

service imap

{

disable = no

socket_type = stream

wait = no

user = root

server = /usr/sbin/imapd

log_on_success += DURATION USERID

log_on_failure += USERID

nice = -2

}

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

[root@arhfw imap]# vi /etc/xinetd.d/ipop3d

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

service pop3

{

disable = no

socket_type = stream

wait = no

user = root

server = /usr/sbin/ipop3d

log_on_success += USERID

log_on_failure += USERID

nice = -2

}

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

imap 관련 라이브러리와 헤더 파일을 옮겨서 다른 프로그램에서 Imap이 호환되게 처리 한다

[root@arhfw imap]# cp c-client/c-client.a /usr/lib

[root@arhfw imap]# cp c-client/mail.h /usr/local/include

[root@arhfw imap]# cp c-client/rfc822.h /usr/local/include

Page 13: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

13/43 페이지 서 진우([email protected])

[root@arhfw imap]# cp c-client/linkage.h /usr/local/include

xinetd Daemon을 재시작 한다.

[root@arhfw imap]# /etc/rc.d/init.d/xinetd restart

정상적으로 작동하는지 확인 한다.

- IPOP3 확인하기

[root@arhfw xinetd.d]# telnet localhost 110

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

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

+OK POP3 localhost.localdomain 2004.87 server ready

user <mail account> -> 메일 계정을 입력한다.

+OK User name accepted, password please

pass <passowrd> -> 패스워드를 입력한다.

+OK Mailbox open, 4 messages -> 메일이 4통 보관되어 있다는 의미

list -> 보관된 메일 리스트 확인

+OK Mailbox scan listing follows

1 758

2 547

3 766

4 767

.

retr 1 -> 1번 메일 확인

+OK 758 octets

Page 14: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

14/43 페이지 서 진우([email protected])

Return-Path: <[email protected]>

Received: from arhdev.clunix.org (arhdev.clunix.org [192.168.133.9])

by arhfw.clunix.org (8.12.8/8.12.8) with ESMTP id j3R5J4pa006011

for <[email protected]>; Wed, 27 Apr 2005 14:19:04 +0900

Received: from arhdev.clunix.org (localhost.localdomain [127.0.0.1])

by arhdev.clunix.org (8.12.8/8.12.8) with ESMTP id j3R5N5Fg026088;

Wed, 27 Apr 2005 14:23:05 +0900

Received: (from root@localhost)

by arhdev.clunix.org (8.12.8/8.12.8/Submit) id j3R5N5Yc026086;

Wed, 27 Apr 2005 14:23:05 +0900

Date: Wed, 27 Apr 2005 14:23:05 +0900

From: root <[email protected]>

Message-Id: <[email protected]>

To: [email protected]

Subject: test

Cc: [email protected]

Status: O

test

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

- IMAP 확인하기

[root@arhfw xinetd.d]# telnet localhost 143

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

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

* OK [CAPABILITY IMAP4REV1 LITERAL+ SASL-IR LOGIN-REFERRALS AUTH=LOGIN]

localhost.localdomain IMAP4rev1 2004.350 at Wed, 27 Apr 2005 17:12:25 +0900 (KST)

위와 같이 접속이 완료되면 정상적으로 동작을 하는 것이다.

Page 15: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

15/43 페이지 서 진우([email protected])

- QPOPPER 설치 하기

Qpopper는 Qualcomm 사의 Eudora 부서에서 개발하여 무료로 배포하고 있으며 UNIX계열의

POP3 서버로 가장 흔히 사용하는 프로그램이다. 일반 배포판에서 기본 지원하고 있는

POP3 프로그램에 비해 대형 서비스에 안정스럽다고 알려져 있다.

설치에 앞서 먼저 ftp://ftp.eudora.com/eudora/servers/unix/popper/ 에서 qpopper

최신 버전을 다운 받는다.

[root@arhfw src]# tar xzvf qpopper4.0.7.tar.gz

[root@arhfw src]# cd qpopper4.0.7

[root@arhfw qpopper4.0.7]# ./configure \

--enable-specialauth \

--enable-servermode \

--enable-apop=/etc/pop.bin \

--with-popuid=bin

configure 옵션에 대해 간단히 설명하겠다.

--enable-apop=path : APOP은 POP3의 확장 버전으로 보안이 강화된 버전이다.

이전에 POP3 에서는 사용자가 암호를 서버로 보낼때 비암호화 방식으로 전달을 했는데

APOP 에서는 이를 암호화 시켜 준다.

--with-popuid=user : 이 옵션의 위의 apop 와 항상 함께 사용되어져야 하는 옵션으로

실제 apop 기능을 실행하는 사용자의 의미이다.

--enable-servermode : 서버에 부하가 많이 걸리는 환경에서 효율적으로 POP3 서비스를

할수 있게 해주는 기능이다.

--enable-specialauth : POP 인증 패스워드를 Shadow 패스워드로 사용하기 위한 옵션이다.

[root@arhfw qpopper4.0.7]# make

정상적으로 컴파일이 완료되면 popper 과 popauth 란 두개의 실행 파일이 생성이 될을것

이다. popper 은 POP3 서버 Daemon의 실행 파일이고 popauth 는 APOP 계정을 관리하는

프로그램이다. 이 두개의 실행 파일을 /usr/bin 에 옮기고 아래와 같이 퍼미션을 조정한다.

Page 16: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

16/43 페이지 서 진우([email protected])

[root@arhfw qpopper4.0.7]# cd popper/

[root@arhfw popper]# cp popper /usr/bin

[root@arhfw popper]# cp popauth /usr/bin

[root@arhfw popper]# chmod 755 /usr/bin/popper

[root@arhfw popper]# chmod 4755 /usr/bin/popauth

[root@arhfw popper]# chown root. /usr/bin/popper

[root@arhfw popper]# chown bin.root /usr/bin/popauth

만일 popper 의 man page 를 사용할 필요가 있을 경우는 man 관련 페이지를 기본

man page 경로에 옮겨 둔다.

[root@arhfw qpopper4.0.7]# cd man

[root@arhfw man]# chown root. *

[root@arhfw man]# chmod 644 *

[root@arhfw man]# cp *.8 /usr/man/man8/

- Qpopper 설정하기

Qpopper 은 xinetd Daemon에 의해 가동된다.

먼저 Qpopper 에 대한 xinetd 설정을 한다.

( 주의 : 위의 IMAP/POP3 서비스가 enable 되어 있을 경우 충돌이 나므로 IMAP/POP3

의 xinetd 설정의 disable 설정을 yes 로 해두길 바란다. )

[root@arhfw root]# vi /etc/xinetd.d/qpop3d

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

service pop3

{

disable = no

socket_type = stream

wait = no

user = root

server = /usr/bin/popper

log_on_success += USERID

log_on_failure += USERID

Page 17: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

17/43 페이지 서 진우([email protected])

nice = -2

}

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

xinetd Daemon을 재시작한다.

[root@arhfw root]# /etc/rc.d/init.d/xinetd restart

Qpopper 실행이 정상적으로 동작하는지 확인한다.

[root@arhfw root]# telnet localhost 110

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

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

+OK Qpopper (version 4.0.7) at arhfw.clunix.org starting.

위와 같이 접속이 되어지면 정상적이 동작이 확인 되는 것이다.

2.3.3 Qmail 로 Mail Server 구축하기

큐메일은 기존의 sendmail 을 대체하는 메일 전송 에이전트( MTA )로써 보다 안정하고

빠른 속도로 많이 알려져 있다. 하지만 어려운 설치 과정과 많은 설정파일때문에 일부

관리자들만이 사용하고 있다. 이런 큐메일에 몇가지 프로그램을 같이 사용하여 웹호스

팅용 메일 서버 패키지로 사용하고자 한다. 기존의 sendmail 에서 할수 없었던 많은

기능을 발휘할수 있을것이다.

- 주요 기능

* 무한정(?) 도메인과 pop 메일 아이디를 발급할수 있다.

* 한개의 시스템 계정생성으로 모든 버츄얼 도메인,pop 계정을 만들수 있다.

( 불필요한 유저 생성을 막을수 있다. - 보안적인 측면에 유리 )

* 각 도메인 마다 메일 계정, 메일링 리스트의 한계를 설정할수 있다.

* 웹인터페이스로 메일 추가,삭제,메일링 및 각 도메인에 대한 메일 관리가 가능하다.

* 유저별 quota 설정이 가능하다.

* 각 도메인 관리자가 자기 도메인의 메일 계정 추가 삭제가 가능하다.

Page 18: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

18/43 페이지 서 진우([email protected])

* 가상 메일 없이도 도메인 마다 똑같은 사용자 계정을 만들수 있다.

위의 내용은 웹호스팅용 메일 시스템으로 아주 유리한 기능들이다. 이밖에 다양한

기능들이 많이 있다.

- 필요한 프로그램

qmail-1.03.tar.gz

qmail-1.03.qmail_local.patch

qmail-1.03.errno.patch

qmail-0.0.0.0.patch

sendmail-flagf.patch

ucspi-tcp-0.88.tar.gz

ucspi-tcp-0.88.errno.patch

daemontools-0.76.tar.gz

autorespond-2.0.2.tar.gz

qmailadmin-1.2.1.tar.gz

vpopmail-5.4.0.tar.gz

ezmlm-0.53.tar.gz

ezmlm-idx-0.40.tar.gz

qmail , ucspi-tcp , daemontools : http://qmail.org

vpopmail, qmailadmin, autoresponder : http://inter7.com

ezmlm , ezmlm-idx : http://www.ezmlm.org

- qmail 설치 하기

qmail 컴파일 설치

위 프로그램들을 모두 /usr/local/src/qmail Directory 및에 옮겨두고 tar 를 푼다.

그리고 qmail 이 설치될 Directory를 만든다. 그런뒤 qmail103.patch 파일을

qmail-1.03 Directory 안에 둔다.

[root@arhdev qmail]# tar xzvf qmail-1.03.tar.gz

Page 19: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

19/43 페이지 서 진우([email protected])

[root@arhdev qmail]# cd qmail-1.03

[root@arhdev qmail-1.03]# patch -p1 < ../qmail-1.03.errno.patch

[root@arhdev qmail-1.03]# patch -p1 < ../qmail-1.03.qmail_local.patch

[root@arhdev qmail-1.03]# cp ../sendmail-flagf.patch .

[root@arhdev qmail-1.03]# patch -p0 < sendmail-flagf.patch

[root@arhdev qmail-1.03]# mkdir /var/qmail

INSTALL.ids 파일을 편집한다.(qmail 에 필요한 계정과 그룹들이다. 해당 OS에 맞추어

편집한다.)

[root@arhdev qmail-1.03]# vi INSTALL.ids

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

groupadd nofiles

useradd -g nofiles -d /var/qmail/alias alias

useradd -g nofiles -d /var/qmail qmaild

useradd -g nofiles -d /var/qmail qmaill

useradd -g nofiles -d /var/qmail qmailp

groupadd qmail

useradd -g qmail -d /var/qmail qmailq

useradd -g qmail -d /var/qmail qmailr

useradd -g qmail -d /var/qmail qmails

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

INSTALL.ids 를 실행하여 qmail 운영에 필요한 계정과 그룹을 생성한다.

[root@arhdev qmail-1.03]# sh INSTALL.ids

qmail 관련 계정,그룹이 생성되었는지 확인한다.

[root@arhdev qmail-1.03]# cat /etc/passwd

qmail을 컴파일 한다.

[root@arhdev qmail-1.03]# make

Page 20: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

20/43 페이지 서 진우([email protected])

[root@arhdev qmail-1.03]# make setup check

참고로 상황에 따라 아래와 같은 에러가 나타날 수 있다. 그 해결 방법이다.

문제 1-

qmail-1.03 make 시 발생하는 make: *** [spawn.o] 오류 1

해결법 :

vi qmail-1.03/conf-spawn

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

1000

위의 1000 을 509 로 변경

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

문제 2-

/usr/include/openssl/kssl.h:157: parse error before '*' token

/usr/include/openssl/kssl.h:159: parse error before "kssl_ctx_setkey"

/usr/include/openssl/kssl.h:159: parse error before '*' token

/usr/include/openssl/kssl.h:161: parse error before "context"

/usr/include/openssl/kssl.h:162: parse error before "kssl_build_principal_2"

/usr/include/openssl/kssl.h:162: parse error before "context"

/usr/include/openssl/kssl.h:165: parse error before "kssl_validate_times"

/usr/include/openssl/kssl.h:165: parse error before "atime"

/usr/include/openssl/kssl.h:167: parse error before "kssl_check_authent"

/usr/include/openssl/kssl.h:167: parse error before '*' token

/usr/include/openssl/kssl.h:169: parse error before "enctype"

In file included from tls.h:4,

from qmail-remote.c:53:

/usr/include/openssl/ssl.h:909: parse error before "KSSL_CTX"

/usr/include/openssl/ssl.h:931: parse error before '}' token

Page 21: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

21/43 페이지 서 진우([email protected])

qmail-remote.c: In function `quit':

qmail-remote.c:263: dereferencing pointer to incomplete type

qmail-remote.c: In function `main':

qmail-remote.c:655: warning: return type of `main' is not `int'

make: *** [qmail-remote.o] 오류 1

해결법 :

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

qmail-1.03/conf-cc 파일 수정

cc -O2 -DTLS=20021228 -I/usr/local/ssl/include

행을

cc -O2 -DTLS=20021228 -I/usr/local/ssl/include -I/usr/kerberos/include

로..

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

기본 /var/qmail/control 및의 설정 파일의 설정을 위해 다음을 실행한다.

[root@arhdev qmail-1.03]# ./config

만일 여기서 정상적으로 실행되지 않으면 직접적으로 설정을 실행하는 방법을

사용한다. ( 단 DNS 에 문제가 있을수도 있다. )

[root@arhdev qmail-1.03]# ./config-fast clunix.co.kr -> << Domain >>

qmail 을 위한 몇가지 부수적은 프로그램을 설치한다.

- uscpi-tcp 설치 하기

[root@arhdev qmail]# tar xzvf ucspi-tcp-0.88.tar.gz

[root@arhdev qmail]# cd ucspi-tcp-0.88

Page 22: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

22/43 페이지 서 진우([email protected])

[root@arhdev ucspi-tcp-0.88]# patch -p1 < ../ucspi-tcp-0.88.errno.patch

[root@arhdev ucspi-tcp-0.88]# make

[root@arhdev ucspi-tcp-0.88]# make setup check

- daemontools 설치 하기

[root@arhdev qmail]# mkdir -p package

[root@arhdev qmail]# chmod 1755 package

[root@arhdev qmail]# cd package/

[root@arhdev package]# cp ../daemontools-0.76.* .

[root@arhdev package]# tar xzvf daemontools-0.76.tar.gz

[root@arhdev package]# cd admin/daemontools-0.76/

[root@arhdev daemontools-0.76]# patch -p1 < ../../daemontools-0.76.errno.patch

[root@arhdev daemontools-0.76]# package/install

- autorespond 설치 하기

[root@arhdev daemontools-0.76]# cd ../../..

[root@arhdev qmail]# tar xzvf autorespond-2.0.2.tar.gz

[root@arhdev qmail]# cd autorespond-2.0.2

[root@arhdev autorespond-2.0.2]# make

[root@arhdev autorespond-2.0.2]# cp autorespond /usr/local/bin

모두 이상없이 설치가 되었다면 다시 qmail 을 위해 파일을 만든다.

[root@arhdev qmail]# vi /var/qmail/rc

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

#!/bin/sh

exec env - PATH="/var/qmail/bin:$PATH" \

qmail-start ./Maildir/

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

Page 23: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

23/43 페이지 서 진우([email protected])

[root@arhdev qmail]# chmod a+x /var/qmail/rc

다음은 큐메일 Daemon을 위한 Directory와 파일들을 생성.

mkdir -p /var/qmail/supervise/qmail-send/log

mkdir -p /var/qmail/supervise/qmail-smtpd/log

chmod +t /var/qmail/supervise/qmail-send

chmod +t /var/qmail/supervise/qmail-smtpd

/var/qmail/supervise/qmail-send/run 의 내용

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

#!/bin/sh

exec /var/qmail/rc

/var/qmail/supervise/qmail-send/log/run 의 내용

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

#!/bin/sh

exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail

/var/qmail/supervise/qmail-smtpd/run 의 내용

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

#!/bin/sh

Q_UID=`id -u qmaild`

Q_GID=`id -g qmaild`

exec /usr/local/bin/softlimit -m 2000000 \

/usr/local/bin/tcpserver -vRHl 0 -x /etc/tcp.smtp.cdb \

-u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1

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

/var/qmail/supervise/qmail-smtpd/log/run 의 내용

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

#!/bin/sh

exec /usr/local/bin/setuidgid qmaill \

/usr/local/bin/multilog t /var/log/qmail/smtpd

Page 24: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

24/43 페이지 서 진우([email protected])

이렇게 편집한 파일들에 실행 권한을 준다.

chmod 755 /var/qmail/supervise/qmail-send/run

chmod 755 /var/qmail/supervise/qmail-send/log/run

chmod 755 /var/qmail/supervise/qmail-smtpd/run

chmod 755 /var/qmail/supervise/qmail-smtpd/log/run

다음은 qmail-smtpd 를 위한 로그 Directory 만들기

mkdir -p /var/log/qmail/smtpd

chown qmaill /var/log/qmail /var/log/qmail/smtpd

다음 파일에는 qmail smtp Daemon이 메일을 중계할 주소를 적어주는 것이다.

192.168.133.167 은 당연히 설치할 서버의 주소로바꿔야 한다.

그외 메일을 중계 해줄 서버의 주소가 있다면 같은 형식으로 추가한다.

vi /etc/tcp.smtp

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

127.0.0.1:allow,RELAYCLIENT=""

192.168.133.167:allow,RELAYCLIENT=""

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

후에 이 파일에 변경이 있는 경우 다음의 qmail 부트 스크립트를 이용해 다음과

같이 한다.

/etc/rc.d/init.d/qmail cdb

혹은 tcprules 를 이용한 적용 방법으로 아래 command 를 실행한다.

tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

- Aliases 설정

Page 25: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

25/43 페이지 서 진우([email protected])

만약 주 도메인의 메일 계정들도 모두 vpopmail 로 관리할 것이 아니라면

(필자는 주 도메인의 메일 계정들도 모두 vpopmail로 관리할것을 권장한다.)

몇가지 알리아스를 설정해 준다. 여기서 silver 는 root, postmaster 등으로 오는

메일을 받을 일반계정이다.

cd ~alias

echo clunix > .qmail-mailer-daemon

echo clunix > .qmail-postmaster

echo clunix > .qmail-root

chmod 644 .qmail-root .qmail-postmaster .qmail-mailer-daemon

- qmail 부트 파일

다음은 qmail Daemon의 부트 스크립트이다. /etc/rc.d/init.d/qmail 로 만들어준다.

/etc/rc.d/init.d/qmail

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

#!/bin/sh

# For Red Hat chkconfig

# chkconfig: - 80 30

# description: the qmail MTA

PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin

export PATH

case "$1" in

start)

echo "Starting qmail"

if [ -e /service/qmail-send ] ; then

if svok /service/qmail-send ; then

svc -u /service/qmail-send

else

echo qmail-send supervise not running

fi

Page 26: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

26/43 페이지 서 진우([email protected])

else

ln -s /var/qmail/supervise/qmail-send /service/

fi

if [ -e /service/qmail-smtpd ] ; then

if svok /service/qmail-smtpd ; then

svc -u /service/qmail-smtpd

else

echo qmail-smtpd supervise not running

fi

else

ln -s /var/qmail/supervise/qmail-smtpd /service/

fi

if [ -d /var/lock/subsys ]; then

touch /var/lock/subsys/qmail

fi

;;

stop)

echo "Stopping qmail..."

echo " qmail-smtpd"

svc -dx /service/qmail-smtpd /service/qmail-smtpd/log

rm -f /service/qmail-smtpd

echo " qmail-send"

svc -dx /service/qmail-send /service/qmail-send/log

rm -f /service/qmail-send

if [ -f /var/lock/subsys/qmail ]; then

rm /var/lock/subsys/qmail

fi

;;

stat)

svstat /service/qmail-send

svstat /service/qmail-send/log

svstat /service/qmail-smtpd

svstat /service/qmail-smtpd/log

Page 27: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

27/43 페이지 서 진우([email protected])

qmail-qstat

;;

doqueue|alrm|flush)

echo "Flushing timeout table and sending ALRM signal to qmail-send."

/var/qmail/bin/qmail-tcpok

svc -a /service/qmail-send

;;

queue)

qmail-qstat

qmail-qread

;;

reload|hup)

echo "Sending HUP signal to qmail-send."

svc -h /service/qmail-send

;;

pause)

echo "Pausing qmail-send"

svc -p /service/qmail-send

echo "Pausing qmail-smtpd"

svc -p /service/qmail-smtpd

;;

cont)

echo "Continuing qmail-send"

svc -c /service/qmail-send

echo "Continuing qmail-smtpd"

svc -c /service/qmail-smtpd

;;

restart)

echo "Restarting qmail:"

echo "* Stopping qmail-smtpd."

svc -d /service/qmail-smtpd

echo "* Sending qmail-send SIGTERM and restarting."

svc -t /service/qmail-send

echo "* Restarting qmail-smtpd."

svc -u /service/qmail-smtpd

Page 28: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

28/43 페이지 서 진우([email protected])

;;

cdb)

tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

chmod 644 /etc/tcp.smtp.cdb

echo "Reloaded /etc/tcp.smtp."

;;

help)

cat <<HELP

stop -- stops mail service (smtp connections refused, nothing goes out)

start -- starts mail service (smtp connection accepted, mail can go out)

pause -- temporarily stops mail service (connections accepted, nothing leaves)

cont -- continues paused mail service

stat -- displays status of mail service

cdb -- rebuild the tcpserver cdb file for smtp

restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it

doqueue -- schedules queued messages for immediate delivery

reload -- sends qmail-send HUP, rereading locals and virtualdomains

queue -- shows status of queue

alrm -- same as doqueue

flush -- same as doqueue

hup -- same as reload

HELP

;;

*)

echo "Usage: $0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}"

exit 1

;;

esac

exit 0

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

실행 퍼미션을 준다.

chmod 755 /etc/rc.d/init.d/qmail

Page 29: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

29/43 페이지 서 진우([email protected])

ntsysv 실행시키면 qmail 이라는 새로운 항목이 보일것이다.

리부팅 할때 qmail Daemon이 실행되도록 체크해준다.

- vpopmail 설치

vpopmail 은 가상 도메인 추가, 설정, pop 유저 설정과 pop3 Daemon등의 기능을 한다.

컴파일과 설치

설치 하기 전에 vpopmail 이 사용할 유저와 그룹을 만든다.

groupadd vchkpw

useradd -g vchkpw vpopmail

vpopmail 을 설치하자.

[root@arhdev alias]# cd /usr/local/src/qmail/

[root@arhdev qmail]# tar xzvf vpopmail-5.4.6.tar.gz

[root@arhdev qmail]# cd vpopmail-5.4.6

MySQL 사용하지 않을 경우

설치시 몇가지 옵션이 있는데 자세한것은 vpopmail faq 를 읽어보도록.

보통 다음 옵션만 주고 컴파일 하면 된다.

./configure --enable-default-domain=clunix.co.kr

make

make install-strip

MySQL을 사용 할 경우

MySQL db를 사용하려 한다면, 컴파일 하기전에 먼저 vmysql.h 를 열어서

sql 서버를 억세스할수 있는 user와 암호등을 설정해 주어야 한다.

Page 30: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

30/43 페이지 서 진우([email protected])

테이블을 생성/삭제 할수 있는 사용자 이여야하므로 보통 root 나 해당 유저로

설정해 준다.

./configure --enable-default-domain=clunix.co.kr --enable-mysql=y \

--enable-sqlincdir=/usr/local/mysql/include/mysql \

--enable-sqllibdir=/usr/local/mysql/lib/mysql

make

make install-strip

이때 --enable-large-site=n|y 옵션을 사용할수도 있는데 이것은, 디폴트로 vpopmail

은 모든도메인, 유저 정보를 한개의 테이블에서 관리한다. 만약 각각의 도메인에

많은 메일유저가있다면 y 로 설정하면, vpopmail은 도메인별로 테이블을 생성,유저

정보를 관리한다.

참고 :

vpopmail 5.4.x 이상 버전은 --enable-default-domain 컴파일 옵션이 없어지고

~vpopmail/etc/defaultdomain 파일을 사용하도록 되었다.

이 파일에 직접 default domain 이름을 넣어주면 된다.

vpopmail 5.0 이상 버전은 --enable-large-site 옵션이 --enable-many-domains 으로

바뀌었다. 즉, 각 도메인별로 테이블을 생성관리 할것이라면 --enable-many-domains=n

옵션을 사용한다.

만약 sql 헤더파일이나 라이브러리를 찾지 못한다며 컴파일에 실패한다면,

--enable-sqlincdir= sql 헤더파일 경로. --enable-sqllibdir= sql 라이브러리

경로 등을 ./configure 할때 추가 해준다.

위의 예에서 clunix.co.kr 는 주 서버의 도메인 이름이다. 이것을 설정하면 주서버의

메일 계정도 모두 가상 도메인의 메일 계정과 동일하게 관리 할수 있다.

(이렇게 하는 것을 권장한다)

Page 31: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

31/43 페이지 서 진우([email protected])

이 문서의 설정은 아래와 같이 했다.

./configure --enable-roaming-users=y \

--enable-tcprules-prog=/usr/local/bin/tcprules \

--enable-relay-clear-minutes=15 \

--enable-auth-logging=y \

--enable-logging=e

make

make install-strip

설치가 되었다면 ~vpopmail 안에는

bin

doc

domains

etc

include

lib

users

등의 Directory과 필요한 바이너리들이 생겼을 것이다.

chmod 777 ~vpopmail/etc

echo "127.0.0.1:allow,RELAYCLIENT=\"\"" > ~vpopmail/etc/tcp.smtp

echo "192.168.133.167:allow,RELAYCLIENT=\"\"" >> ~vpopmail/etc/tcp.smtp

이제 기본 릴레이 파일을 만들었다면 다음 명령을 한번 실행해 준다.

~vpopmail/bin/clearopensmtp

마지막으로 crontab을 하나 설정해야 하는데, 이것은 cron에 의해 주기적으로 실행되어

릴레이가 허용된 IP 주소중 pop 인증 시간이 한시간 이상된 것이 있으면 지워준다.

vpopmail 컴파일시 별다른 옵션을 주지 않았다면 기본적으로 릴레이 허용 시간은

한시간이며 이것은 --enable-relay-clear-minutes= 옵션으로 바꿔줄수 있다.

Page 32: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

32/43 페이지 서 진우([email protected])

# crontab -e

40 * * * * /home/vpopmail/bin/clearopensmtp

qmail-smtpd 시동 스크립트는 vpopmail이 조절하는 cdb 파일을 참고하도록,

다음과 같이 바꾼다.

/var/qmail/supervise/qmail-smtpd/run 의 내용

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

#!/bin/sh

Q_UID=`id -u vpopmail`

Q_GID=`id -g vpopmail`

exec /usr/local/bin/softlimit -m 2000000 \

/usr/local/bin/tcpserver -vRHl 0 \

-x /home/vpopmail/etc/tcp.smtp.cdb \

-u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1

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

- pop3 Daemon 시동 파일

vpopmail 의 pop3 시동 파일을 만들자. 적당한 곳에 Directory를 만들고 run 파일을 만든다.

mkdir /var/qmail/supervise/vpop

/var/qmail/supervise/vpop/run 파일의 내용

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

#!/bin/sh

VPOP_UID=`id -u vpopmail`

VPOP_GID=`id -g vpopmail`

exec /usr/local/bin/softlimit -m 2500000 \

tcpserver -vRHl 0 -u $VPOP_UID -g $VPOP_GID 0 110 \

/var/qmail/bin/qmail-popup arhdev.clunix.co.kr \

Page 33: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

33/43 페이지 서 진우([email protected])

/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1

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

chmod 755 /var/qmail/supervise/vpop/run

ln -s /var/qmail/supervise/vpop /service

5초 이내로 daemontool에 의해 pop Daemon이 구동될 것이다.

위와 같이 pop3 Daemon을 daemontool/tcpserver로 운영하거나 다음과 같이 inetd 또는

xinetd 모드로 운영할수도 있다.

xinetd 모드로 운영할때 /etc/xinetd.d/ 아래 아래와 같은 파일을 하나 만들어 둔다.

vi /etc/xinetd.d/vpop3

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

service pop3

{

disable = no

socket_type = stream

protocol = tcp

wait = no

user = root

server = /var/qmail/bin/qmail-popup

server_args = babo.org /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir

log_type = FILE /var/log/xinetd.log

log_on_success = HOST

log_on_failure = HOST RECORD

}

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

그런 후

/etc/rc.d/init.d/xinetd restart

/etc/rc.d/init.d/xinetd restart

Page 34: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

34/43 페이지 서 진우([email protected])

- 도메인, 메일 계정 추가하기

~vpopmail/bin Directory 안에 가상 도메인 관리를 위한 바이너리들이 있는데

다음과 같은 기능을한다.

표 1. 각 바이너리들의 용도

vadddomain :

가상 도메인을 추가한다. postmaster 암호를 물어보는데 이것은 다음에

설치할 qmailadmin 웹 인터페이스에서 로그인 할때 물어볼 암호이다.

형식은 [ vadddomain 도메인명 ]

vdeldomain :

가상 도메인과 모든 유저를 삭제한다. vdeldomain 도메인명

vadduser :

pop 메일 유저 계정을 만든다. [ vadduser [email protected] ]

vdeluser :

pop 메일 유저 삭제. [ vdeluser [email protected] ]

vpasswd :

메일 유저의 암호 바꾸기 [ vpasswd [email protected] ]

vsetuserquota :

각 유저 별로 quota 설정을 할수 있다. [ vsetuserquota [email protected] 51200 ]

(단위는 byte 이다).

vpopbull :

서버에 설정되어 있는 모든 유저들에게 한번에 메일을 보낼때 유용하게 사용할수

있다.

이제 도메인을 추가하자. 위에서 주 도메인도 vpopmail에서 관리하기로 했다면

주 도메인과 메일 계정들도 추가해야 한다.

Page 35: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

35/43 페이지 서 진우([email protected])

만약 주 도메인이 clunix.co.kr 이고, 추가할 가상 도메인이 arhdev.org,

arhdev.co.kr 라고 한다면 다음과 같이 한다

(추가하기 전에 가상 도메인들의 DNS MX 레코드의 IP주소가 주 서버로 되어있는지

확인 해보자).

vadddomain clunix.co.kr

vadddomain tru64unix.co.kr

재대로 설정파일이 변경이 되었는지 확인해 보자.

cat /var/qmail/control/locals

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

localhost

주 도메인도 vpopmail이 관리하기로 했다면 /var/qmail/control/locals 파일의

내용은 localhost 만이 있어야 정상이다. 다른것이 있으면 지운다.

cat /var/qmail/control/virtualdomains

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

clunix.co.kr:clunix.co.kr

tru64unix.co.kr:tru64unix.co.kr

cat /var/qmail/users/assign

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

+clunix.co.kr-:clunix.co.kr:515:510:/home/vpopmail/domains/clunix.co.kr:-::

+tru64unix.co.kr-:tru64unix.co.kr:515:510:~vpopmail/domains/tru64unix.co.kr:-::

- 메일 계정 생성

cd ~vpopmail/bin

./vadduser [email protected]

- 기존 POP 사용자 변환

cd ~vpopmail/bin

Page 36: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

36/43 페이지 서 진우([email protected])

./vconvert -e -c 도메인명

- sendmail 에서 qmail 로의 전환

모든 설정이 확실히 되었다고 생각이 들면 sendmail을 죽이고 qmail로 전환한다.

/etc/rc.d/init.d/sendmail stop : sendmail 죽인다.

이제 기존의 sendmail 바이너리를 qmail 의 것으로 바꾼다.

mv /usr/lib/sendmail /usr/lib/sendmail.old

mv /usr/sbin/sendmail /usr/sbin/sendmail.old

ln -s /var/qmail/bin/sendmail /usr/lib

ln -s /var/qmail/bin/sendmail /usr/sbin

- qmail 가동 하기

ln -s /var/qmail/supervise/qmail-send /service/

ln -s /var/qmail/supervise/qmail-smtpd /service/

/etc/rc.d/init.d/qmail start : qmail 가동

이렇게 /service Directory에 링크를 한번 걸어주면 링크가 존재하는 한 즉,

재부팅 한다해도 daemontools에 의해서 자동으로 서비스가 시작된다.

- Daemon Tool 로 서버 제어 방법

daemontools은 상당히 편리한 서비스 관리 도구로 tcpserver와 함께 xinetd를 완전히

대체할 수 있다.

// 종료 방법

cd /service/qmail-send

Page 37: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

37/43 페이지 서 진우([email protected])

rm -f /service/qmail-send

svc -dx . log

cd /service/qmail-smtpd

rm -f /service/qmail-smtpd

svc -dx . log

cd /service/vpop

rm -f /service/vpop

svc -dx .

// stat 보기

svstat /service/vpop/

// qmail 큐에 있는 메일을 강제로 배달하기

svc -a /service/qmail-send

// 서버 잠시 중지 시키기

svc -p /service/qmail-send

svc -p /service/qmail-smtpd

svc -p /service/vpop

// 다시 진행 시키기

svc -c /service/qmail-send

svc -c /service/qmail-smtpd

svc -c /service/vpop

이로써 MS 의 아웃룩이나 Netscape 의 메일메신져 에서 메일을 받아보실수가 있다.

여기서 주의 할것.

Page 38: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

38/43 페이지 서 진우([email protected])

주 도메인 이외의 도메인 pop3 메일 계정 사용자들은 메일 클라이언트의

유저 이름을 [email protected] 과 같이 아이디@도메인명 으로 모두 써주어야

pop 로긴이 가능하다.

- qmailadmin 설치

qmailadmin 설치시에는 vpopmail 을 mysql 사용 안함으로 설치 하세요.

/usr/local/src/qmail 가서

tar xzvf ezmlm-0.53.tar.gz

tar xzvf ezmlm-idx-0.42.tar.gz

mv -f ezmlm-idx-0.42/* ezmlm-0.53/

cd ezmlm-0.53

patch < idx.patch

make

// make 중에 <<./makelang : 허가 거부>> 와 같은 에러가 발생 하면

// chmod +x makelang 으로 makelang 파일에 실행 권한을 준다.

make man

make setup

ezmlm 은 /usr/local/bin/ezmlm/ 에 설치될 것이다.

- qmailadmin 설치

tar xvzf qmailadmin-1.21.tar.gz

cd qmailadmin-1.21

./configure 에 몇가지 옵션이 있다. 서버의 설정이 디폴트와 다른 경우 설정해 주자.

--enable-cgibindir : qmailadmin 이 설치될 Directory이다.

웹서버가 사용중인 cgi-bin Directory를 적어준다.

디폴트는 /usr/local/apache/cgi-bin 이다.

Page 39: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

39/43 페이지 서 진우([email protected])

--with-htmllibdir : qmailadmin 의 html 템플레이트 파일 (당연히 이 파일들은

후에 입맛에 맞게 수정할수 있다.)들이 저장될 장소이다.

그냥 디폴트로 나두어도 된다. (/usr/local/share/qmailadmin)

--enable-cgipath : 사용중인 웹서버의 cgi path가 /cgi-bin/ 이 아닌 경우

설정해준다. 디폴트는 /cgi-bin/qmailadmin 이다.

make

make install-strip

설치가 잘 되었는지 브라우저로 접속해본다.

http://localhost/cgi-bin/qmailadmin

- qmailadmin 설치 팁..

만일 특정 멀티도메인으로 qmailamdin 을 설치하고자 할때의 예제이다.

여기서 전 vpopmail 계정에 qmailadmin 까지 합쳐서 관리하고자 한다.

그리고 mail.domain.com 이란 도메인으로 접속하고자 한다.

먼저 소스를 풀고 ..그 소스 Directory로 이동한다. 그런뒤...

# ./configure --enable-cgibindir=/usr/local/apache/cgi-bin \

--with-htmllibdir=/home/vpopmail/www \

--enable-htmldir=/home/vpopmail/www \

--enable-cgipath=/cgi-bin/qmailadmin \

# make

# make install-strip

그런 뒤 apache 의 httpd.conf 설정에서

ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

Page 40: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

40/43 페이지 서 진우([email protected])

설정의 주석을 제거하고 난뒤 /usr/local/apache/cgi-bin/qmailadmin 파일 생성을

확인한다.

그런 뒤 웹페이지에서 http://mail.domain.com/cgi-bin/qmailadmin 로 접속하자..무사히 페이>

지가

뜨면 성공~~

이제 원하는 도메인과 postmaster의 암호를 넣으면 로그인해서 여러가지 설정을

편안하게 할수있다.

- qmail 운영, 관리 하기

도메인 추가 후

qmail 과 vpopmail 이 돌아가고 있는 상태에서 vadddomain 으로 도메인을 추가했다면

/etc/rc.d/init.d/qmail reload 또는 kill -HUP 시그날을 qmail-send 에게 보내서

/var/qmail/user 설정 파일을 다시 읽도록 해야 한다.

- 알리아스와 포워드 계정

알리아스와 포워드 계정은 거의 비슷한 기능을 하는데 다른점은 알리아스는 이 서버

에 존재하는 메일 계정에 다른 이름을 여러게 설정하는 것이고, 포워드 계정은 도착

한 메일을 설정해 놓은 다른도메인의 메일 계정(들)로 보내는 것이다.

다음 설정 과정을 보면 이해가 쉬울 것이다.

qmailadmin 에서는 쉽게 설정 할수 있겠고, 만약 qmailadmin 을 설치하지 않은 경우

다음과 같이 한다.

# 알리아스

silver 라는 팝 메일 계정이 존재하고, webmaster 라는 알리아스를 만드는 경우.

Page 41: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

41/43 페이지 서 진우([email protected])

해당 도메인 Directory(~vpopmail/domains/도메인/)에 다음과 같은 내용의

.qmail-webmaster 파일을 만든다.

/home/vpopmail/domains/도메인/silver/Maildir/

이제 webmaster 로 오는 메일은 silver 가 받을 것이다.

# 포워드

silver 로 오는 메일을 [email protected] 라는 다른 도메인으로 포워딩 해줄때.

해당 도메인 Directory(~vpopmail/domains/도메인/)에 다음과 같은 내용의

.qmail-alang 파일을 만든다.

&[email protected]

이제 이 도메인의 alang 으로 오는 메일들은 [email protected] 로 보내질 것이다.

# 각 도메인마다 메일 계정, 메일링 리스트 수 한계 정하기

이것은 웹 호스팅 업체에서 qmailadmin 으로 각 유저들에게 사용중인 도메인의

메일 설정을 직접 하게 해줄때 매우 유용하게 쓰일수 있을것이다.

각 도메인마다 메일,메일링 리스트의 설정 한계를 줄수 있는데, 이것은

~vpopmail/domains/도메인/ 에 .qmailadmin-limits 파일을 만들어 주면 된다.

형식은 다음과같다.

maxpopaccounts X

maxaliases X

maxforwards X

maxmailinglists X

maxautoresponders X

X 는 해당 도메인이 사용할수 있는 최대한의 수를 넣어주면 되겠다.

Page 42: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

42/43 페이지 서 진우([email protected])

- bounce 되는 메일에 메세지 넣기

해당 도메인으로 수신되는 메세지가 바운스 되는 경우가 있는데 보통, 팝 유저의

쿼타 용량이한도를 넘었거나, 유저가 존재하지 않을 경우이다.

다음과 같은 파일을 만들어 각 가상 도메인의 Directory에 넣어 놓으면 바운스 되는

메일들에포함되어 되돌려 지며 당신은 센스있는 관리자가 된다 :-)

.over-quota.msg 에는 메일 유저의 쿼타 용량이 초과 되었으므로 메일 수신을 할수

없다는메세지를.

.no-user.msg 에는 우리 도메인엔 그런 메일 계정 없지롱 하는 내용의 메세지를

넣어 두면 된다.

이 파일들이 없다면 vpopmail은 바운스되는 메일에 뻣뻣한 영문 메세지 만을 포함

시킨다.

- ezmlm 으로 대용량 메일링 보내기

메일링 테스트를 해보도록 하자.

먼저 ~ezmlm/bin 로 간다.

그런뒤 메일링 리스트의 메일링 대표 아이디를 생성한다.

./ezmlm-make [대표도메인Directory/대표아이디]

[대표도메인Directory/.qmail-대표아이디]

[대표아이디 domain]

예)

$ ./ezmlm-make /home/vpopmail/domains/clunix.co.kr/mailling \

/home/vpopmail/domains/clunix.co.kr/.qmail-mailling mailling clunix.co.kr

그 다음으로 메일링 리스트의 리스트를 작성한다.

Page 43: 2. 리눅스 Server 구축 및 실무 운영webmaster@manpa.co.kr user2 ----- * 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service ) 9/43 페이지 서

* 실무 관리자를 위한 Linux Enterprise Server ( To construct Linux Service )

43/43 페이지 서 진우([email protected])

$ ./ezmlm-sub /home/vpopmail/domains/clunix.co.kr/mailling [email protected]

위와 같은 식으로 계속 추가 하면 된다.

추가된 리스트 확인은 ezmlm-list 명령어로 가능하다.

$ ./ezmlm-list /home/vpopmail/domains/clunix.co.kr/mailling

자 이제 메일링을 보내 보도록 하자.

mail -v [email protected]

메일링이 재대로 이루어 졌는지 확인하면 된다.

주의 : 꼭 vpopmail 사용계정으로 메일링 리스트 설정을 해야 합니다.

root 로 하였을 경우 메일링이 발송 안되는 수도 있습니다.