본문 바로가기

자격증/리눅스 마스터 1급

Part3) 네트워크 및 서비스의 활용 - 네트워크 서비스 | 메일 관련 서비스

IV. 메일 관련 서비스


메일 관련 서비스의 이해

1) 메일 서비스의 정의


*전자 메일

컴퓨터 인터넷을 통해 편지를 주고 받을 수 있는 시스템과 해당 편지를 일컫으며, 주소는 "아이디@메일서버이름"형식이다.


*SMTP(Simple Mail Transfer Protocol)

메일 전송 규약으로, 전자메일 전송을 위해 만든 프로토콜로, TCP 25번포트를 사용한다.


*POP(Post Office Protocol)

우체국 규약으로, 사용자가 메일서버에서 편지를 가져올 때 사용자 인증 및 일정한 규칙이 필요하기 때문에 이러한 규약이 정의되었다.


*IMAP(Internet Messaging Access Protocol)

인터넷 메일들을 접근하는 프로토콜로, 서버에 메일을 저장해 두고 필요하면 가져와서볼 때 사용하며, POP3와 함께 많이 사용된다.


POP3와 IMAP 비교


 

 POP3 

 IMAP 

 포트 

 110/TCP 

 143/TCP 

 메시지 확인 

 메일서버에 접속 후 모든 메일 내용을 메일 클라이언트로 가져와서 확인, 서버에는 메일을 남길 수도 있고 안 남길수도 있다. 

 메일서버에 접속 후 메일의 헤더 부분만 읽은 후 클라이언트로 가져와 리스트를 보여준다. 사용자가 메일을 읽을 때 메일의 본문을 가져온다.

 접속 

 메일을 받을 때만 접속해서 받아오기 때문에 접속이 적다. 

 메일을 읽을 때 마다 접속하기 때문에 접속이 많다. 

 서버의 메일박스 

 메일을 받아오는 동시에 삭제가 가능하기 때문에 효율적으로 메일 박스를 활용할 수 있다. 

 서버에 메일을 두고 확인하기 때문에 메일박스의 공간을 많이 차지 

 주 사용처 

 메일 클라이언트 프로그램(아웃룩, 썬더버드 등) 

 웹 메일, 메일 클라이언트 프로그램 

 특징 

 •메일을 모두 다운로드 받기 떄문이 확인 시간이 오래 소요됨

 •전체 받은 메일을 메일 클라이언트에 보관하기 때문에 오프라인에서도 저장된 메일 확인 가능 

 •메일 확인 시간이 짧

 •모든 메일은 메일서버에 보관되기 때문에 오프라인에서는 받은 메일 또한 확인할 수 없음 



2) 메일 서비스의 구조

*메일 서비스를 위한 컴퍼넌트


[1] MTA(Mail Transfer Agent)

메일을 전송해주는 컴퓨터로, 사용자로부터 메일을 받아서 다른 메일서버 혹은 사용자에게 전달하기 위해서 메일을 큐에 가지고 있고, 가능하다면 송신하도 그렇지않으면 일정 기간 동안 재시도 한다. (ex. Sendmail, Qmail, Postfix)

 

[2] MDA(Mail Delivery Agent)

메일을 배달하는 컴퓨터로, 메일을 각 가정에 배달하는 우체부와 같은 역할을 한다. (ex. mail, procmail)


[3] MUA(Mail User Agent)

메일 사용자의 일을 대신해주는 프로그램이다.(ex. Outlook, 썬더버드, 에볼루션)



메일서버의 설치 및 활용

1) 메일서버 설치 및 설정

①Sendmail 및 IMAP, POP3 설치

root@bjkim:~# yum install sendmail sendmail-cf uw-imap

설치되는 주요 파일들

 환경 설정 디렉터리

 /etc/mail/ 

 메일 Alias 파일 

 /etc/aliases 

 Sendmail 프로그램 

 /usr/sbin/sendmail.sendmail 

 메일큐 

 /var/spool/mqueue, /var/spool/clientmqueue 

 메일 로그 

 /var/log/maillog, /var/log/mail 

 메일 컨트롤 스크립트 

 /etc/init.d/sendmail 

 POP3 xinetd.d 설정 파일 

 /etc/xinetd.d/ipop3, ipop3s 

 IMAP xinetd.d 설정 파일

 /etc/xinetd.d/imap, imaps 



②Sendmail 기본 설정


[1] /etc/sendmail.mc 파일 수정

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

▲Sendmail의 기본 설정은 로컬호스트(127.0.0.1)에 대해서만 SMTP포트(TCP/25)를 리스닝하고 있는데, 이 설정으론 외부에서 Sendmail서버에 접속할 수 없기 때문에 서버에 할당된 IP 또한 리스닝 할 수 있게 파일을 수정해야한다.


dnl TRUST_AUTH_MECH('EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define('confAUTH_MECHANISMS', 'EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
TRUST_AUTH_MECH('EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define('confAUTH_MECHANISMS', 'EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

▲SMTP AUTH 기능을 활성화(dnl은 주석(#)과 같다.)


root@bjkim:~# service saslauthd start
saslauthd (을) 를 시작 중:
root@bjkim:~# chkconfg saslauthd on

▲saslauthd 서비스가 활성화되어 있어야 이 기능을 사용할 수 있다.




[2] /etc/mail/local-host-names 설정

bjkim.com

▲ 위 파일은 "bjkim.com"도메인으로 수신된 메일을 모두 받게다고 설정하는 것이며, 최종 수신지 도메인 설정 파일이다.



[3] Sendmail 및 POP3, IMAP 시작

root@bjkim:~# service sendmail start
sendmail (을)를 시작 중:              [ OK ]
sm-client를 시작 중:                  [ OK ]
root@bjkim:~# chkconfig sendmail on
root@bjkim:~# chkconfig ipop3 on
root@bjkim:~# chkconfig imap on
root@bjkim:~# service xinetd restart
xinetd 를 정지 중:                    [ OK ]
xinetd (을)를 시작 중:                [ OK ]


③Sendmail 고급 설정


주요 설정 파일

 설정파일 위치 

 설명 

 /etc/mail/access 

 메일 Relay 제어 및 스팸메일 방지 설정 파일 

 /etc/mail/local-host-names 

 최종 수신지 도메인 설정 파일 

 /etc/mail/virtusertable 

 가상 메일 유저 설정 파일 

 /etc/aliases 

 메일 유저 별명 설정 파일 

 ~/.forward

 메일 포워딩 설정 파일(각 사용자의 홈디렉터리에 위치) 

 /etc/mail/sendmail.mc 

 sendmail.cf를 생성하기 위한 설정 파일 

 /etc/mail/sendmail.cf 

 Sendmail의 주 설정 파일 



[1] /etc/mail/access 설정

localhost               RELAY
127.0.0.1               RELAY
bjkim.com               RELAY
kim@bjkim.com           RELAY
220.113.223             RELAY
123.123.123.123         550 I hate spammer~

1~2행: 로컬인 내부에서 보내는 메일 모두 Relay를 허용

3~4행: 도메인, 메일 주소에 대해서 Relay를 허용

5행: 220.113.223.xxx의 모든 ip를 허용

6행: 123.123.123.123에서 들어오는 메일을 거부하면서 "I hate spammer~"이라는 메세지 전송


 옵션

 의미 

 RELAY

 Relay를 허용 

 OK 

 조건 없이 허용 

 REJECT 

 Relay를 허용하지 않음 (스팸 서버 IP를 주로 등록) 

 DISCARD  

 메일을 Relay하지않고 폐기해 버림 

 501 메세지

 지정된 메일주소와 일치하는 모든 메일 수신 차단 

 503 메세지 

 지정된 도메인과 관련된 메일 수신 차단 

 550 메세지 

 특정한 도메인에 대해 지정된 메세지로 거부 

 553 메세지

 발신자 주소와 호스트명이 없을 경우 메일 수신 거부 

 571 메세지 

 지정된 메세지로 경로메일을 보낸 후 수신 거부 


※/etc/mail/access 파일의 편집 작업이 끝났으면 DB파일(/etc/mail/access.db)로 만들어 주어야 한다.


access.db 파일 생성

root@bjkim:~# makemap hash /etc/mail/access < /etc/mail/acess

 

[2] /etc/mail/local-host-names 설정


이 파일에 도메인을 추가 하면 해당 도메인으로 수신되는 메일을 수신할 수 있다.



[3] /etc/mail/virtusertable 설정


여러 도메인을 설정 시 여러 도메인에서 같은 아이디를 사용해야 한다면 시스템 계정을 공유해야한다. 

 예를 들자면 A회사의 웹사이트 관리자 메일주소 webmaster@a.co.kr와 B회사의 웹사이트 관리자 메일주소 webmaster@b.co.kr가 같은 메일서버에 설정 되어 있다고 생각했을 때, 위 두 회사의 메일주소로 들어오는 메일은 webmaster의 메일박스에 수신될 것이다. 두 회사는 webmaster 시스템 계정을 공유해야 하는 상황이 발생하는데, 다음과 같은 방법으로 해결할 수 있다.


webmaster@a.co.kr    a
webmaster@b.co.kr    b

▲webmaster@a.co.kr로 수신된 메일은 a계정의 메일박스에 저장되고, webmaster@b.co.kr으로 수신된 메일은 b계정의 메일박스에 저장된다. 왼쪽은 메일주소, 오른쪽은 사용자 계정을 설정한다.


※virtusertable 파일 수정 후에는 똑같이 access 파일 처럼 db를 만들어 주어야 한다.

root@bjkim:~# makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable


[4] /etc/aliases 설정


# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root

▲수신자 이름을 다른 별명으로 바꿀 때 사용하며, 왼쪽에 있는 계정으로 오는 메일은 오른쪽의 계정으로 오게된다는 의미이다.


※이 파일을 수정 했으면 'newaliases' 이나 'sendmail -bi' 명령어를 수행하여야 한다.


[5] ~/.forward 설정


john@linux.com 
bob@superuser.com
\bjkim

▲'bjkim@도메인'으로 수신되는 메일은 'john@linux.com' 및 'bob@superuser.com'으로 메일을 포워딩 한다.



[6] /etc/mail/sendmail.mc 설정


'm4' 명령어를 사용하여 sendmail.mc를 이용해 sendmail.cf 파일을 생성할 수 있다.


root@bjkim:~# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf


파일 주요 내용 ('dnl'로 시작하는 줄은 주석처리)

 내용

 의미 

 dnl define('SMART_HOST', 'smtp.your.provider')dnl 

 스마트 호스트에 관한 부분으로 메일 발송 시 외부 다른 메일 서버로 보낼 때 사용한다. 

 define('SMART_HOST', 'mail.bjkim.com')dnl

 define('confDEF_USER_ID', ''8:12")dnl 

 메일 기본 사용자 계정 및 그룹을 설정하며 "사용자ID:그룹ID"형식으로 설정한다.

 (◀sendmail.cf에는 "O DefaultUser=8:12"로 설정됨)

 define('confTO_CONNECT', '1m')dnl

 커넥션 타임아웃과 관련된 설정으로 기본 1분으로 설정되어있다.

 (◀sendmail.cf에 "O Timeout.connect=1m"로 설정됨) 

 define('PROCMAIL_MAILER_PATH', '/usr/bin/procmail')dnl

 procmail의 경로를 설정한다. 

 define('ALIAS_FILE', '/etc/aliases')dnl

 aliases 파일의 경로를 설정한다.

 (◀sendmail.cf에 "O AliasFile=/etc/aliases"로 설정됨) 

 define('STATUS_FILE', '/var/log/mail/statistics')dnl

 Sendmail 통계를 위한 파일의 경로를 설정한다.

 (◀sendmail.cf에 "O StatusFile=/etc/mail/statistics"로 설정됨) 

 define('confUSERDB_SPEC', '/etc/mail/userdb.db')dnl

 구버전의 Aliases로 사용되었던 파일의 위치를 나타낸다.

 (◀sendmail.cf에 "O UserDatebaseSpec=/etc/mail/userdb.db"로 설정됨)

 define('confPRIVACY_FLAGS', 'authwarnings,novrfy,noexpn,restrictqrun')dnl 

 프라이버시 플래그를 설정하는 부분이다.

 dnl TRUST_AUTh_MECH('EXTERNAL ..... PLAIN')dnl

 dnl define('confAUTh_MECHANISMS', ... PLAIN')dnl 

 SMTP 인증 설정 부분이다.

 define('confTO_QUEUEWARN' '4h')dnl  

 Sendmail이 메일을 보내지 못했을때, 메일 발송자에게 경고 메일을 보내는 시간이다. 

 define('confTO_QUEUERETURN', '5d')dnl 

 Sendmail이 메일을 보내지 못했을떄, 큐에 보관하는 시간을 지정한다.  

 define('confQUEUE_LA', '12')dnl

 서버부하가 일정수치 이상이면 메일을 보내지 않고 큐에 넣을 때의 수치를 기술한다. 

 define('confREFUSE_LA', '18')dnl

 서버부하가 일정수치 이상이면 샌드메일은 메일 수신을 거부한다.

 define('confTO_IDENT', '0')dnl 

 IDENT 쿼리를 던진 후 기다리는 시간을 설정한다. 

 FEATURE('smrsh', '/usr/sbin/smrsh')dnl 

 Sendmail에서 사용할 쉘을 설정한다. 

 FEATURE('mailertable', 'hash -o /etc/mail/mailertable.db')dnl 

 특정 도메인 메일러 라우팅 설정 파일인 mailertables.db파일의 경로를 설정한다. 

 FEATURE('virtusertable' 'hash -o /etc/mail/virtusertable.db')dnl 

 가상 유저 설정파일의 위치를 기술해준다. 

 FEATURE('user_cw_file)dnl 

 /etc/mail/local-host-names 파일을 읽어 사용한다는 설정이다. 

 FEATURE('user_ct_file)dnl 

 /etc/mail/trusted-users 파일을 읽어 사용한다는 설정이다. 

 FEATURE('local_procmail, '', 'procmail -t -Y -a $h -d $u')dnl 

 procmail의 옵션을 설정한다. 

 FEATURE('access_db', 'hash -T<TMPF> -o /etc/mail/access.db')dnl 

 access.db와 관련된 설정이다. 

 FEATURE('blacklist_recipients')dnl 

 access DB를 이용해 스팸 메일 필터링을 한다. 

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

 Snedmail 데몬 실행 옵션이다. 

 LOCAL_DOMAIN('localhost.localdomain')dnl

 메일서버의 도메을 설정하는 부분이다. 



[7] sendmail.cf 설정


Q. sendmail.cf 파일 설정에서 특정 도메인(ihd.co.kr)을 강제로 지정하려고 할때 관련 항목  ▶ Djhd.or.kr



2) 메일서버 동작 확인

①Sendmail 동작 확인


[1] 프로세스 확인

root@bjkim:~# ps -ef | grep snedmail
root    6213   1   0   Jun03 ?      00:00:00 sendmail: accepting connections
smmsp   6221   1   0   Jun03 ?      00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue
[2] 리스닝 포트 확인(TCP/25)
root@bjkim:~#netstat -anp | grep -w LISTEN | grep sendmail
tcp      0      0 127.0.0.1:25     0.0.0.0:*       LISTEN      6213/sendmail
[3] telnet으로 메일서버 접속
root@bjkim:~# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 SULinux-64Bit.sulinux.net ESMTP Sendmail 8.13.8/8.13.8; Thu, 6 Jun 2013 07:42:23 +09 00
mail from : bob@bjkim.com
250 2.1.0 bob@bjkim.com... Sender ok
rcpt to : bob@suidc.com
250 2.1.5 john@linux.com... Recipient ok
data
354 Enter mail, end with "." on a line by itself
from : doly
to : bob@suidc.com
subject : Test Mail!!!
This mail is test mail!!
.
250 2.0.0 r55MgNoB018034 Message accepted for delivery
quit
221 2.0.0 SULinux-64Bit.bjkim.com closing connection
Connection closed by foreign host.

 내용

 의미 

 telnet localhost 25 

 텔넷으로 localhost라는 서버에 25번 포트로 접속 가능 

 mail from

 발신자의 주소 

 rcpt to 

 받는 사람의 주소 

 data

 지금부터 데이터라는 의미 

 from, to, subject 

 head로 간주되어 처리되므로 꼭 "."을 입력해 본문 입력을 마침 

 quit 

 접속을 끊기 위해 입력 



②POP3 동작 확인


[1] 리스닝 포트 확인(TCP/110)
root@bjkim:~#netstat -anp | grep 110
tcp      0      0 0.0.0.0:110     0.0.0.0:*       LISTEN      18107/xinetd


[2] telnet으로 POP3 서버 접속

root@bjkim:~# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK QPOP (version 3.0.2) at localhost.localdomain starting.
user owner
+OK Password required for owner.
pass 
+OK owner has 2 visible messages (0 hidden) in 3007 octets.
list
+OK 2 visible messages (3007 octets)
1 1503
2 1504
.
retr 1
+OK 1503 octets
Return-Path: 
Received: from sspark09 ([210.101.112.240])
by localhost.localdomain (8.9.3/8.9.3) with SMTP id IAA10116
for ; Thu, 6 Jul 2000 08:45:29 +0900
Message-ID: <021a01bfe6da$17e4e8c0$f07065d2@kornet.net>
From: "owner" 
To: 
Subject: mail test02
Date: Thu, 6 Jul 2000 08:38:10 +0900
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

test
.
quit

 내용

 의미 

 telnet localhost 110 

 localhost 서버에 110포트로 접속 

 user owner 

 계정 입력 

 pass 비밀번호 

 비밀번호 입력 

 list

 수신한 메일 리스트 확인 

 retr 1

 리스트 중 1번째 메일을 읽음 

 quit

 접속을 종료 



③IMAP 동작 확인


[1] 리스닝 포트 확인 (TCP/143)

root@bjkim:~# netstat -anp | grep 143
tcp      0      0 0.0.0.0:143     0.0.0.0:*       LISTEN      18107/xinetd

[2] telnet으로 IMAP 서버 접속

# telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.
a login owner 비밀번호
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a SELECT INBOX
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a UID FETCH 1 BODY.PEEK[]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a OK UID FETCH completed
a log out

 내용

 의미 

 telnet localhost 143 

 로컬호스트에 143포트로 접속 

 a login owner 비밀번호 

 owner 계정으로 로그인 

 a SELECT INBOX

 메일 박스 중에 INBOX 선택 

 a UID FETCH 메일번호 BODY.PEEK[] 

 메일번호에 해당하는 메일 읽음 

 a logout

 접속 종료 



④Sendmail 고급 옵션


운영모드로 실행


-bd :  background daemon 모드로 실행

root@bjkim:~#  sendmail -bd -q1h


-bi :  /etc/aliases 파일의 db 갱신

root@bjkim:~#  sendmail -bi
/etc/aliases: 76 aliases, longest 10 bytes, 765 bytes total
root@bjkim:~# newaliases
/etc/aliases: 76 aliases, longest 10 bytes, 765 bytes total


-bm :  MDA만의 기능을 작동 (MTA 기능을 사용하지 않음)


-bp :  메일 큐 내용을 보여줌

root@bjkim:~# sendmail -bp
     Mail Queue (1 request)
---QID---- --Size-- -----Q-Time----- ------Sender/Recipient-----
AA02508        3    Thu Dec 17 10:01            root
            (User unknown)
                                     bad_user
root@bjkim:~# mailq
     Mail Queue (1 request)
---QID---- --Size-- -----Q-Time----- ------Sender/Recipient-----
AA02508        3    Thu Dec 17 10:01            root
            (User unknown)
                                     bad_user


-bs :  표준 입력 smtp 실행

root@bjkim:~# sendmail -bs


-bt :  테스트 모드로 실행

root@bjkim:~# sendmail -bt


-bv : 확인 모드

root@bjkim:~# sendmail -bv bjkim
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter  
> 3 0 bob@linux canonify input: 0 bob @ linux Canonify2 input: 0 bob < @ linux > Canonify2 returns: 0 bob < @ linux . bjkim .com . > canonify returns: 0 bob < @ linux. bjkim. com . > bjkim... deliverable: mailer local, user bjkim


-v :  실행과정을 보여주는 옵션

root@bjkim:~# echo "test" | sendmail -v bob@suidc.com


-d :  디버깅 모드

root@bjkim:~# sendmail -d숫자.숫자 메일주소


⑤메일 통계(mailstats) - Sendmail이 얼마나 많은 일을 하고 있는지 확인하고 싶을 때 사용

root@bjkim:~# mailstats
Statistics from Fri Aug   31  04:02:05 2018
 M  msgsfr  bytes_from  msgto   bytes_to  msgsrej msgsdis msgsqur  Mailer
 4       8         13K      2         2K    0       0       0      esmtp
 9      74        147K     67       152K    0       0       0      local
==========================================================================
 T      82        160K     69       154K    0       0       0          

위 옵션들의 의미

 옵션 

 의미 

 M(The mailer number) 

 메일러 번호 

 msgsfr(Number of messages from the mailer) 

 받은 메일 통 수 

 bytes_from(Kbytes from the mailer) 

 받은 메일 크기 

 msgsto(Number of messages to the mailer) 

 보낸 메일 수 

 bytes_to(Kbytes to the mailer) 

 보낸 메일 크기 

 msgsrej(Number of messages rejected)

 거부한 메세지 수 

 msgsdis(Number of messages discarded) 

 파기한 메세지 수 

 Mailer(The name of the mailer) 

 메일러 이름 



3) SPAM 메일 차단

①procmail을 이용한 스팸메일 차단


procmail은 Sendmail과 연동되는 MDA이다. 설정파일은 /etc/procmailrc 와 ~/.procmailrc 가 있으며, 메일의 헤더, 제목, 내용 등의 단어로 스팸 메일을 차단할 수 있다.



②/etc/mail/access 파일을 이용한 스팸메일 차단


access 설정 파일을 이용하면, 메일을 수신하기 전에 차단하므로 더 빠르고, 서버에 부하를 덜 주면서 스팸 메일을 처리할 수 있다.



③Spamassassin을 이용한 스팸메일 차단


룰 기반하에 메일 헤더와 내용을 분석하거나 실시간 차단리스트를 참고하여 각각의 룰에 매칭도리 경우 "+" 나, "-" 점수를 주어 기준 점수를 추고활 경우 스팸으로 결정한다. 많은 기능을 가진 대신 메일서버에 부하를 많이 준다.



④RBL(Real-time Blocking List) 적용하기


이메일 수신시 간편하게 스팸여부를 판단하여 차단할 수 있도록 제공되는 스팸발송에 이용되는 IP리스트를 말하며, 대체로 DNS Lookup을 통해 확인하는 방식을 이용하므로 DNSBL(DNS-based Blackhole List)이라고도 한다.



4) 메일링 리스트

①메일링 리스트 매니저(MLM) - [SendMail: Majordomo, Qmail: Ezmlm]


메일링리스트에 사용자가 너무 많아지면 앞에서 알아본 /etc/aliases파일을 수정하는 일은 너무 번거롭다. 그래서 이를 이용하면, 읽기 전용 메일링 리스트를 설정, 메일의 머리말, 꼬리말 기능, spam 메일로부터의 보호 기능, 웹과 ftp등과 연동하여 메일링 리스트를 간편하게 운영할 수 있다.


②Majordomo 설정

*majordomo.cf 설정 - 메인 설정 파일
 #$whereami = "example.com";
$whereami = "bjkim.com";
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#$homedir = "/usr/test/majordomo";
$homedir = "/usr/local/majordomo-1.94.5";


5) 메일 암호화(PGP를 이용한 암호화 전송)

①PGP를 이용한 메일 암호화 전송

 

보내는 사람의 메일을 안전하게 받는 사람에게 전달하기 위해서는 받는 사람만이 풀수 있는 방법으로 암호화하고, 보낸느사람은 보내는사람의 서명을 더하여 메일을 발송하면 받는 사람은 서명을 확인하고 메일을 해독하여 볼 수 있는 방법이 공개된 인터넷에서 중요한 메일을 안전하게 전송하는 방법일 것이다. 이러한 방법을 이용한 보안 도구가 PGP(Pretty Good Privacy)이다.

•기밀성(Confidentiality), 인증(Authentication), 무결성(Integrity), 부인방지(Nonrepudiation) 등의 기능을 지원

•공개키 기반으로 이 시스템은 개인키와 공개키가 한 쌍을 이룬다.