웹모아
웹모아[가입] 로그인 / 회원가입   검색     


  
강좌일반
 

Sendmail에 관하여 (version 8.12.1 설치방법)
2007-12-28 18:27:11 댓글:(0)   조회:9583
 


Sendmail에 관하여 (version 8.12.1 설치방법)

▷ 개 요

     sendmail이 정확히 무엇을 하는건지는 몰라도 이름은 익히 들어오셨을 줄 압니다.

     우선 전자메일 시스템에서 사용되는 용어 중에 다음을 이해해야 합니다.

 

     MTA(Mail Transfer Agent) - sendmail과 같은 메일서버 프로그램을 말합니다.

                               여러가지가 있지만 sendmail이 거의 독보적이라고 할 수 있습니다.

Ex> sendmail, qmail , IMS

 

     MUA(Mail User Agent)    - Outlook Express나 Netscape Messanger와 같은 mailer로서, 대체로 PC쪽에

                               설치되는 프로그램을 말합니다.

                               Ex> mail, pine, outlook express, netscape manager ..

    

     메일서버의 25번 포트에서 MTA(sendmail)가 대기하고 있다가 MUA에서 보내고자 하는 내용을 받아

     /var/mail/{username}(시스템마다 조금씩 다릅니다) 에 저장해 둔 후, 상대 메일서버의 25번 포트로 접속합니다. 

     상대 메일서버의 MTA(sendmail)에게 메일을 전달한 후 자신의 스풀에 있는 메일을 삭제합니다.

     만일 상대 메일서버에 접속할 수 없는 상태가 된다면 Mail을 spool 디렉토리에 가지고 수시로 접속을 시도하

다가 그래도 접속이 안된다면 메일을 보낸사람에게 되돌려 줍니다.

 

▷ 표지순서

 1. 패키지 구하는 방법

 2. 패키지 압축해제 / 기존 sendmail file backup

 3. configure / make

 4. sendmail 환경설정 내용

 

1. 패키지 구하기

   - gzip or gunzip package file

   - gcc or egcc package file

   - db-3.3.11 ( www.sleepycat.com 이나 ftp 192.41.61.122 )

   - M4-1.4  ( ftp 147.47.1.5 )

   - sendmail ( www.sendmail.org  ftp://ftp.sendmail.org/pub/sendmail )

   - groff-1.11a

sendmail을 설치 하는 도중에 groff 패키지가 없다고 경고가 날 수도 있는데, 이를 피하기 위해서

부가적으로 GNU에서 만든 groff 패키지를 가져온다. 물론 시간이 없는 분들은 가져오지 않아도 무방하다.

   - qpopper (www.sunfreeware.com)

 

2. 패키지 압축 풀기 / 기존 sendmail 관련 file backup

각 절차를 밟기 전에 C 컴파일러의 존재유무를 확인한다. 만일 C 컴파일러가 없다면 gcc를 구해서 먼저

설치해 둔다. 기존의 sendmail 관련 파일들을 backup후 실시

   /etc/mail 디렉토리 이름변경, /usr/lib 밑의 sendmail 파일도 이름변경.

  

   # cp p /usr/lib/sendmail /usr/lib/sendmail.old

   # cp -rp /etc/mail /etc/mail.old

  

1) Berkeley DB:

  다음과 같이 uncompress와 tar 명령을 내려 패키지를 푼다. db-3.x 계열을 가져왔을 경우 sendmail-8.9.3을

  컴파일 할 수 없다는 사실에 주목하기 바란다.

   # gzip -d db-3.3.11.tar.gz

   # tar xf db-3.3.11.tar

   

2) m4, groff:

  다음과 같이 gzip과 tar 명령을 내려 패키지를 푼다. groff를 가지고 오지 않았을 경우에는 groff 패키지를 풀지

  않아도 된다.

   # gzip -d m4-1.4.tar.gz

   # tar xf m4-1.4.tar

   # gzip -d groff-1.11a.tar.gz

   # tar xf groff-1.11a.tar

 

3) sendmail:

   # gzip -d sendmail.8.12.1.tar.gz

   # tar xvf sendmail.8.12.1.tar

    

3. Configure 및 make

 - BerkeleyDB :      

      # cd /db-3.3.11/dist

 

compiler가 CC일 경우

    # ./configure

 

compiler가 gcc 일경우

       # ./configure CC=gcc

   # make

   # make install    (/usr/local/BerkeleyDB 아래에 설치됨)

   # /usr/local/BerkeleyDB/lib/libdb.a /usr/lib에다 링크

   # /usr/local/BerkeleyDB/include/db.h 를 /usr/include 에다 링크.

 

 - m4 :

     GNU M4는 sendmail을 컴파일할 때, sendmail.cf를 작성할 경우에 사용되므로 sendmail 설치에 앞서 미리

     설치를 해두어야 한다

      

          # cd m4-1.4

   # ./configure

   # make

   # make install

 

 - groff :

GNUgroff는 sendmail에 딸려있는 문서를 formatting하기 위해 사용된다.

이를 설치하지 않아도 sendmail 자체를 컴파일하는데 전혀 문제가 없다.

  

# cd groff-1.11a

    # ./configure

    # make

    # make install

 

- Sendmail-8.12.1 :

     # uname -a (시스템 사양 확인)

    # cd /sendmail-8.12.1/devtools/OS

    # chmod u+w SunOS.5.8

# vi SunOS.5.8   à    vi로 SunOS.5.8를 열어서 (자신의 OS에 맞는 것을 선택)

      

- confCC: confCC의 값이 기본적으로 cc로 되어있을 것이다. gcc를 사용하시는 분들은 gcc로 변경한다.

- confMAPDEF: -DNDBM이 의미하는 바와 같이 시스템의 NDBM 라이브러리를 쓰도록 정의되어있는데,

    우리는 Berkeley DB를 사용할 예정이므로 -DNDBM-DNEWDB로 변경한다.

 

define(`confMAPDEF,`-DNEWDB -DNIS -DNISPLUS -DMAP_REGEX)

- confLIBS: NDBM를 쓰기 위해 -ldbm을 사용하여 라이브러리를 링크시키는데, 우리는 Berkeley DB를 사용할

           예정이므로 -ldbm-ldb로 변경한다.

      

  # cd /sendmail-8.12.1/devtools/Site

  # vi site.config.m4 파일을 만들어준다.

 내용은

  APPENDDEF(`confINCDIRS, `-I/usr/local/BerkeleyDB.3.3/include)

  APPENDDEF(`confLIBDIRS, `-l/usr/local/BerleleyDB.3.3/lib)

 

- 8.12.1 계열

  # cd sendmail-8.12.1

  # sh ./Build

  # cd sendmail-8.12.1/makemap

  # sh ./Build

 

컴파일이 완료되면 obj.SunOS.5.7.sun4 디렉토리가 생성되었는지 확인.

# cd ./obj.SunOS.5.7.sun4
# ls
libsmdb     mail.local  makemap     rmail       smrsh
libsmutil   mailstats   praliases   sendmail    vacation

위의 디렉토리에 필요한 파일들이 모두 컴파일되어 집니다..

      

      

4. Sendmail-8.12.1의 환경 설정 및 설치



  # cd sendmail-8.12.1/cf/cf

    # vi generic-solaris.mc

    

     FEATURE(access_db, dbm o /etc/mail/access)dnl   

 

  # /usr/local/bin/m4 ../m4/cf.m4 generic-solaris.mc > sendmail.cf

 

 1. sendmail 설치      

  # cd sendmail-8.12.1/obj.SunOS.5.8.sun4/sendmail

  # make install   (error가 날 것이다. /usr/share/man/cat directory 생성 후 반복 실행)

 

 2. makemap 설치      

  # cd sendmail-8.12.1/obj.SunOS.5.8.sun4/makemap

  # make install

     

 3. sendmail.cf 복사      

  # cp sendmail-8.12.1/cf/cf/sendmail.cf  /etc/mail

  # ln -s /etc/mail/sendmail.cf  /etc/sendmail.cf (관리의 편리를 위해)

     

 4. local-host-names 생성 (sendmail.cw는 8.9.x 이전 버전)

  # cd /etc/mail

  # vi local-host-names(본인 컴의 호스트이름을 각각 한줄씩 기입,도메인이름까지)

  # cd ..

  # ln -s mail/local-host-names .

 

 5. aliases 및 aliases.db생성

    ( sendmail 8.11.x 이상에서는 newaliases 명령을 실행해주어야 한다. )      

 # cp /sendmail-8.12.1/sendmail/aliases /etc/mail/       <-- aliases file copy

  # cd /etc/mail

  # newaliases (aliases.db 생성)

  # /usr/lib/sendmail -bi

 

 6. relay-domains 생성

  # vi /etc/mail/relay-domains      

----------------- relay-domains ------------------------

         # Copyright (C)

211.xx.xxx

210.xxx.xxx

127.0.0.1

xxx.co.kr

xxx.com

mail

mail.xxx.com

mail.xxx.co.kr

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

만약, 릴레이를 전부 허용하려면     

 # vi /etc/mail/sendmail.cf 에서 1200번째 줄 쯤에 보면 ( bogus 로 검색 )

      # anything else is bogus

      R$* $#error $@ 5.7.1 $: "550 Relaying denied"

       여기를

        # anything else is bogus

        # R$* $#error $@ 5.7.1 $: "550 Relaying denied"

        #로 주석처리하고 sendmail을 재시작해주면 된다.

 

        : 센드메일 버전은 8.11.X 버전

        :

        : : /etc/sendmail.cf 파일에 보면...

        : : relay check name 이라는 문자열이 있다.

        : : 그 문자열 한 줄 아래에 있는 부분을 '#'을 이용하여 주석 처리하면 된다.

     

  # cd /etc/mail

  # touch access

  # chmod 644 access

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

     makemap 을 매번 실행하기 싫으면 다음과 같은 스크립트를 만들어둔다.

  # cd /etc/mail

 

자동 스크립트

  # vi do_it.sh 로 아래와 같이 만든다(실행권한 줄것)

 

  #!/bin/sh

    /usr/lib/makemap hash /etc/mail/access < /etc/mail/accesses

    or

  #!/bin/sh

   /etc/mail/makemap hash /etc/mail/access < /etc/mail/accesses       

      

 7. 디렉토리 접근허가 변경

  # chmod go-w /  /etc /etc/mail  /usr /var  /var/spool  /var/spool/mqueue

  # chown root /  /etc /etc/mail  /usr /var  /var/spool  /var/spool/mqueue

  # chmod -R go-w /etc/mail

    

   접근허가 테스트 :

# /usr/lib/sendmail -v -bi       

      

 8. sendmail 프로그램 시작하는 방법

     sendmail 이 모두 제자리를 잡았다면 이제 sendmail daemon을 동작시켜보자.

     원래 돌고 있던 sendmail daemon을 잠시 내린 다음 새로운 sendmail daemon을 올리도록 하자.

 -bd는 background daemon의 약어이고

 -q는 mail queue를 처리하는 인터벌 (단위: h--> 시, m --> 분, s > 초)이다.

 

      # ps ef | grep sendmail  kill -9 pid

   # /usr/lib/sendmail -bd -q30m    또는  # /etc/init.d/sendmail stop , start

     

          

9. sendmail 테스트 방법      

    # telnet localhost smtp (sendmail daemon 확인)

   # /usr/lib/sendmail -v yourid(panic) (sendmail 발송확인)

     test…..

     이것저것 적어보구

     CTRL+D ( ^D )

          

10. Troble shooting

A. BerkeleyDB를 설치할 경우 gcc를 찾지 못한다. 찾지 못할 경우 처리방법

        # env CC=gcc

 

B. 현재 sendmail에 디버깅 옵션을 주는 방법

   # /usr/lib/sendmail -d

  

C. /var/mail/mqueue 디렉토리에 쌓여있는 메시지 보는 방법

   # /usr/lib/sendmail -bp

        /var/spool/mqueue is empty

        Total requests: 0

  

D. DB설치시 다음에러는 아래와 같이 수정한다.

에러내용: checking whether the C compiler (cc ?o) works…no

configure:error:installation or confggurayion problem :C complier cannot create exec….

 

--수정--> #env CC=gcc ../dist/configure

 

E. Sendmail Server 8.12.1버전에서 메일 송수신과 관련된 사이즈 용량제한하기

  

* Outgoing mail 용량제한

 

# vi sendmail.cf 를 연다. SMTP Mailer가 정의되어 있는 부분에서 Msmtp 와 Mesmtp에 대해 M=byte 옵션을

  지정한다.

   



      Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21, E=rn, L=990,

    T=DNS/RFC822/SMTP, M=3000000

    A=IPC $h

      Mesmtp, P=[IPC], F=mDFMuX, S=11/31, R=21, E=rn, L=990,

    T=DNS/RFC822/SMTP, M=3000000

    A=IPC $h

         이상은 3Mbyte로 제한한것임.

   

* Incoming mail 용량제한

 

      Mlocal, P=/usr/lib/mail.local, F=lsDFMAw5:/|@qfSmn9, M=3000000

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

    T=DNS/RFC822/X-Unix,

              A=mail.local -d $u

       이상과 같이 지정하면 3Mbyte로 제한된다.

 

11. sendmail.cf 설정파일에서 설정 내용 라인 검색

   # grep "/[^0-9].*/"  /etc/sendmail.cf

위에 명령어를 입력하면 현재 설정되고 있는 라인이 출력된다.

 

12. sendmail 현재 설치된 버전 확인하는 방법

  # ps -ef | grep sendmail     <-- sendmail이 실행 되어 있는지 확인한다

  # mconnect    <-- sendmail 실행되어 있는 경우만 명령어를 사용할 수 있다.

  또는

  # more /etc/mail/sendmail | grep version    

  이라고 입력해도 현재 sendmail 의 버전을 확인할 수 있다.

 

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

            

POP3 (qpopper) 설치방법

 POP3의 설치방법

 

일반 PC에 SMTP (Simple Mail Transfer Protocol)를 지원하는 서버를 설치하기에는 부담스러운 경우가 있다. 따라서, 대부분의 경우 기존 UNIX 기계에 sendmail MTA(Message Transfer Agent)를 설치하여 mail 서버로 삼고, PC쪽에서는 NS, Outlook, Eudora등의 MUA(Message User Agent)를 설치하여 서버쪽에 저장된 편지를 끌어당겨서 읽도록 한다. 이럴 경우, 클라이언트로부터 계정별 전자편지 요청을 받아들이기 위해 UNIX 서버쪽의 소프트웨어가 필요한데, 이 소프트웨어가 바로 POP3(Post Office Protocol version 3) daemon이다.

패키지 구하기

   - http://sunfreeware.com

   - http://www.eudora.com/freeware   

   - ftp://ftp.dacom.co.kr/pub/sun_freeware/sparc/8  

 

주의사항

  qpopper의 설치 작업으로 넘어가기 이전에, 다음 주의사항을 반드시 숙지하기 바란다.

 

1. Buffer Overflow 공격을 피하기 위해 반드시 3.x 이상 버전을 가져오도록 한다. 기존 2.3, 2.4 버전을 쓰시는 분

   들께서는 이번 기회에 POP3 서버를 교체하는 편이 좋겠다. 버전 확인은 다음과 같이 하면 된다:

  % telnet localhost pop3

  Trying 127.0.0.1

  Connected to localhost.

  Escape character is '^]'.

  +OK QPOP (version 4.0.3) at localhost starting.

 

2. NFS로 디렉토리를 마운트시켜 사용할 경우 qpopper를 쓰면 위험할 수도 있다.

패키지 풀기

  # gzip -d qpopper4.0.3.tar.gz

  # tar xf qpopper4.0.3.tar

  # cd qpopper4.0.3

 

Configure / 컴파일 / 설치

예전 버전과는 달리 2.5.x 버전부터는 configure script를 사용하여 자동으로 Makefile을 생성할 수 있도록 설계되어 있다. configure가 성공적으로 끝나면 Makefile이 생성되어 있을 것이다. 만일 매크로 설정을 위해 Makefile을 수정했을 경우에는 % make clean 명령으로 혹시 남아있을지도 모르는 목적 파일을 모두 삭제해야한다. 이후 컴파일을 한다. 컴파일이 끝나면 popper란 실행파일이 만들어진다.

  # cd qpopper4.0.3

  # ./configure

  # make

 

먼저 생성된 popper를 복사한다. 만일 /usr/local/lib 디렉토리가 없다면 mkdir 명령으로 생성시킨다. 디렉토리가 존재할 경우 mkdir 명령을 내릴 필요 없이 복사 작업만 하면 된다. 기존에 popper가 설치되어 있다면, 비상시를 대비하여 이를 popper.old라는 이름으로 변경하여 보존한다.

  # cd /usr/local

  # mkdir lib

  # cp popper /usr/local/lib/

 

  이제 /etc 디렉토리 아래의 services와 inetd.conf 파일을 다음과 같이 수정한다.

 

1. services 의 hostnames 밑에 다음 라인을 추가한 다음 저장한다.

  pop3 110/tcp # popper

 

2. inetd.conf의 마지막 행에 다음 라인을 추가한 다음 저장한다.

  pop3 stream tcp nowait root /usr/local/lib/popper popper -s

 

3. pop3에 관련된 라인이 절대로 중복되어서는 안 된다. 라인을 추가하기 전에 반드시 확인이 필요하다. 그리고

   popper 명령을 제외한 각 공백은 탭 키를 눌러 널찍널찍하게 들여쓰기를 맞추도록 한다.

 

4. pop이나 imap과 혼동해서는 안된다. 두 프로토콜과 pop3는 호환성이 없다.

 

5. Linux의 경우 110번 포트가 pop-3라고 되어있다. 혼동을 막기 위해 아에 이를 주석처리하기 바란다.

 

6. 만일 inetd.conf를 수정하였다면, inetd를 다음과 같이 죽였다 살린다.

  # kill -HUP < inetd process id >

 

7. AIX를 사용할 경우 다음과 같은 방법으로 inetd를 재시동할 수 있다.

  # refresh -s inetd

 

POP3 서버의 테스트 방법

POP3 서버가 설치된 호스트 이름이 localhost이며 계정 이름이 myname이라고 가정하면, 다음의 방법으로 서비스 유무를 손쉽게 확인할 수 있다. telnet을 수행한 다음 user 뒤에 계정 이름을, pass 뒤에 암호를 넣으면 된다. POP3의 규약에 의거하여 user 및 pass라는 명령어도 직접 타이핑해야 함에 유의하기 바란다.

 

  # telnet localhost pop3

  Trying 127.0.0.1

  Connected to localhost.

  Escape character is '^]'.

  +OK QPOP (version 4.0.3) at localhost starting.

  user myname

  +OK Password required for myname.

  pass ******

  +OK myname has 0 visible messages (0 octets).

  quit

  +OK Pop server at localhost signing off.

  Connection closed by foreign host.

 

위의 시나리오와 같이 banner가 나오고 사용자에 대한 편지 확인이 되면 qpopper가 정상적으로 설치된 것이다.

 

Trouble Shooting

qpopper의 테스트를 위해

% telnet localhost pop3

 

명령을 내렸을 경우 다음과 같은 메시지가 나올 수 있다.

1. pop3: bad port number

2. connect: Connection refused

3. connect: Connection closed

 

1. services 파일에 POP3 포트 번호가 설정이 안된 경우: 직접 services 파일을 열어 pop3 설정을 확인한다. Linux의 경우 pop3 대신 pop-3라고 정의되어 있을 것이므로 이 행을 주석처리하고 새로 pop3라는 이름으로 설정하기 바란다.

 

2. inetd.conf 파일에 POP3가 설정이 안된 경우: 직접 inetd.conf 파일을 열어 pop3 설정을 확인한다.

 

3. popper daemon에 문제가 있는 경우 : inetd.conf나 service파일에 적힌 popper의 위치와 실행 파일 이름을    

  확인한다. 그리고 inetd를 다시 동작시킨다. 또한 inetd.conf에 110번 포트를 잡는 프로그램을 두개 이상

등록하면 이런 현상이 생길 수 있다.

# ls -al 로 /usr/local/lib/popper 프로그램이 존재하는지 확인한다.

  pop3 tcp /usr/local/lib/popper qpopper -s

 

접속이 잘되었더라도 사용자 계정과 암호를 주면 이를 거부할 때가 있다. 이럴 경우에는 다음 항목을 살펴본다.

 

1. shadow password 사용시: configure를 --enable-specialauth 선택 사양을 주어 새로 돌리거나 Makefile에

  AUTH_SPECIAL 마크로를 추가해서 새로 컴파일한다.

 

2. AUTHFILE, NONAUTHFILE 마크로 정의시:

   각각의 인증 목록 파일을 검사하여 해당 사용자가 인증이 거부되고 있는 상황인지 살펴보기 바란다.

   하지만 사용자 인증까지 잘 넘어갔음에도 불구하고 임시 파일을 생성시킬 수 없다는 오류가 발생할 수 있다.

 

1. -ERR System error, can't open temporary file, do you own it?

 

이럴 경우 다음 항목을 살펴본다.

 

1. 각종 파일에 대한 소유주가 틀리게 설정된 경우: popper daemon의 소유주가 root인지 확인하며, 전자편지가

   저장되는 디렉토리(예: /usr/mail)의 소유주가 root이고 그룹이 mail이며, 전자편지가 저장되는 디렉토리에 생성

   되는 임시 파일인 .username.pop의 소유주가 username인지 확인한다.

   또한 전자편지가 저장되는 디렉토리의 접근허가를 살펴서 임시 파일인 .username.pop이 생성될 수 있는지 확

   인한다.

   만일 디렉토리 접근허가에 문제가 있으면 다음과 같은 명령을 내려 전자편지가 저장되는 디렉토리의 접근허가

   를 drwxrwxrwt로 변경한다.

  # chmod 1777 /usr/mail

 

이상의 경우를 모두 따져보았음에도 불구하고 원인을 제대로 파악할 수 없다면 Makefile에 DEBUG 마크로를 추가해서 새로 컴파일하여 inetd.conf의 popper 명령에 -d 선택사양을 주어 popper를 시동하도록 한다. syslog 파일에 popper의 활동상황이 기록되어 있으므로 이를 분석하여 문제를 해결한다. 또한 선택 사양을 잘못 설정하여 문제가 발생할 수도 있으므로, 이럴 경우 선택 사양을 지정하지 않고 순수하게 configure 명령만으로 popper를 만들어 테스트에 임하기 바란다

 

* mail server가 spam server로 등록되었을 경우

 

 Mail service가 이루어지는 원리

    mail service역시 , 다른 대부분의 internet service와 마찬가지로 server/client환경을 기반으로 이루어집니다.

    즉, mail server가 daemon으로 떠 있는 host에 mail client가 메일 발송 요청을 하면, server가 해당 메일의

    내용을 전송해주는 식으로 이루어집니다. 이때, 메일을 전송하는 것과 메일을 수신하는 것은 그 방법과 담당

    하는 프로그램이 조금 다릅니다.

 

 * 메일을 보낼 경우

    mail client(mail, mailx, pine, mutt, Netscape messageer, Outlook Express ) 에서 메시지 작성하고, 메일 전송

     버튼 누름 ---> server에 접속, 해당 메시지 전송 요청 -----> 요청이 승인되면, 해당 메일 발송, 이때에는

     port number 25의 smtp(sample message transfer protocol)을 이용하고,mail client는 sendmail에게 요청한다.

 

 * 메일을 받을 경우

   sendmail이 해당 mail 수신 ---> local mailer가 /var/mail 등의 해당 디렉토리에 메일 저장(사용자가 mail   

   program실행) ---> 해당 디렉토리에서 메일 가져옴. 사용자의 mail spool에서 메일을 가져오게 되는데, 이것 

   은 Solaris의 경우는 /var/mail(사용자의 계정)이고, Linux의 경우는 /var/spool/mail(사용자의 계정)입니다.

     Mail client program을 실행시키면, 해당 디렉토리를 검사해서 쌓여 있는 mail(text 형식)을 화면에 적당히 알

     아보기 쉽게 나타내 주는 것입니다. 이때, Outlook Express나 Netscape messageer는 popd, imapd를 이용해

     서 시스템에 로그인 하지 않고도, id,passwd만 입력하면 메일을 가져올수 있습니다. 단 popd, imapd를 이용

     하는 것은 SSL을 이용하지 않은 경우에는 id, passwd가 text형식으로 전송되어서, 보안상 문제를 가져 올수

     있으니 주의 하시기 바랍니다.

 

Spam mail이란?

   허락 받지 않고 아무에게나 마구잡이로 살포하는 상업적 광고메일을 말합니다.

   Spam mail에는 크게 두 종류가 있습니다.

 

Incoming spam

   : 내 site로 직접 들어오는 spam입니다. 불법광고 메일이 이쪽에 해당됩니다. 너무 많을 경우 사용자가 불편해

    지고, 심한 경우 폭탄메일이 되어서 서버를 다운시키는 경우도 있습니다. 이것을 막기 위해서는 spam mailer

    로 인정되는 사람 혹은 site에서의 mail은 사전에 access_db등을 통해서 차단해야 합니다.

 

Relay spam

   : 내 site의 mail server가 third part relay를 허용하는 경우, 내 컴퓨터가 폭탄 메일 제조기가 되어서 spam

     mail을 발송하게 되는 수가 있습니다. 그러면 우선 자신의 네트웍에서 메일을 보내므로 , 회선 속도가 감속하

     고 spam mailer로 지목되어 상대방이 내 메일을 보지 않게 됩니다.( 내가 incoming spam에서 취하는 조치와

     같은 조치를 당한다고 생각하시면 될 것입니다.)

   spam mail을 차단하는 방법에는 client level , server level, network level등이 있습니다.

 

Sendmail Compile & Configuration

 

  Sendmail에서 spam을 방지하는 것은 대부분 Compile단계가 아닌, Configuration단계에서 이루어집니다.

 Configuration은 /etc/mail/sendmail.cf 파일의 수정, /etc/mail/access 와 /etc/mail/relay-domains 파일의 생성

 등을 해야 합니다. Sendmail.cf는 sendmail이 처음 실행되면서 읽어들이는 파일인데, 규칙이 복잡하여 직접 건 

 들리기 보다는 m4 라는 툴을 이용해서 생성하게 됩니다.

   보통,{sendmail compile directory}/cf/cf/generic-{ostype}.mc 파일을 수정하여 sendmail.cf를 만들게 됩니다.

   단, 이때 8.9.x 이하 버전과 8.10.x 버전의 차이가 있습니다.

 

 * 8.9.x 이하 버전의 경우

 generic-{ostype}.mc 를 직접 수정하여 m4 명령으로 만듭니다.

# m4 generic-{ostype}.mc > sendmail.cf

 

* 8.10.x 이상 버전의 경우

generic-{ostype>}.mc 를 config.mc로 copy하여, 그 후에 sh Build config.cf 명령으로 config.cf 생성 ---> /etc/sendmail.cf 로 copy

 

incoming spam mail 방지법

 

 1. access_db 이용

 

FEATURE(access_db) or FEATURE(access_db,hash o /etc/mail/alias) --> 8.9.x

FEATURE(access_db,hash /etc/mail/alias) ---> 8.10.x

위의 라인 추가 후 /etc/mail/access 파일을 만듭니다.

 spammer@aol.com">spammer@aol.com              REJECT

 cyberspammer.com                   REJECT

 192.168.211                          REJECT

 

행동 부분에 해당하는 4가지 경우

 OK

Accept mail even if other rules in the running in the running ruleset would reject it, for

Example, if the domain name is unresolvable

 RELAY

Accept mail addressed to the indicated domain or received form the indicated domain for relaying through your

SMTP server. RELAy also servers as an implicit OK for the other checks

REJECT

Reject the sender/recipient with a general purpose message.

 DISCARD

Discard the message completely using the $#discard mailer. This only works for sender addresses ( i.e.,it

indicates that you should discard anything anything received from the indicated domain).

 ### any text

where ### is an RFC 821 compliant error code and any text is a message to return for the command.

 

막약 REJECT 된 서비스를 사용하는 계정의 특정 id로 된 메일을 받고 싶으면, userid@rejecteddomain.com">userid@rejecteddomain.com OK 라고 맨 윗줄에 추가해 주면 된다.

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

 

Relaying spam mail 방지법

   우선은 자신의 site가 spam mailer인지 검사해 봅니다.

   테스트 방법은 # telnet mail-abuse.org을 하면 여러 가지의 Relay test를 해서, 결과를 출력해 줍니다.

 

특정 site에서의 Relay 허용방법

    작업하기 전에 항상 백업을 해두고, 작업후에는 sendmail을 다시 뛰우거나 makemap 명령으로 db 재성성할것

    access_db 이용법

  access_db에서 RELAY라고 해 놓으면 다른 조건이 만족하지 않아도 무조건 relay를 허용하게 됩니다.

 

  Relay-domains이용법

  /etc/mail/relay-domains 에 relay를 허용하기 원하는 도메인, 또는 IP를 넣습니다.

  Snu.ac.kr  ----> 도메인으로 허용할 경우

  Atropos.snu.ac.kr ----> host로 허용

  147.46.102   --à subnet IP로 허용

  147.46.102.149 ---> IP로 허용

  이 방법의 단점은 relay mail을 보내는 것뿐만 아니라 받는것도 허용한다는 것입니다.

  따라서 spammer가 relay-domain로 설정된 컴퓨터로 메일을 보내는 경우, mail server는 해당 메일을 전송해

  버립니다.

site가 spam mailer로 등록되었을 경우 처리 방법

    www.mail.abuse.org 에 스팸 메일러로 등록되었을 경우에는 , 받는 sendmail의 compile시에 define(rbl) 또

    는 defin(dnsbl)을 설정하였을 경우에는 spammer로 등록된 쪽의 메일은 편지 수신을 하지 못하게 되는 일이

    발생할수 있습니다. Sendmail upgrade등을 통해 spam mail 해결하고 rbl@mail.abuse.org">rbl@mail.abuse.org 로 메일 보내준다.


. 


[이전글]  Fedora(페도라) 메일서버 구축(dovecot) 이용
[다음글]  sendmail 동작 테스트 하기


 
댓글쓰기는 회원(로그인 하신분) 이상 가능합니다.


 댓글 (0)

  
강좌일반
페이지: 1 / 8   

 리눅스 명령어
열람:1028   2010.06.06


 리눅스 파티션 나누기 (포멧)
열람:88   2010.06.06


 리눅스에서 c 프로그램을 작성하고 실행하기까지의 과정
열람:1080   2009.08.12


 시스템 명령어인 netstat 를 사용하는 방법
열람:1503   2008.10.10


 사용자 계정 관리
열람:2240   2008.10.06


 passwd 파일에 있는 유저들에 관한 정보
열람:1428   2008.03.15


 리눅스 GRUB이 날라갓는데 복구시킬 방법은?
열람:1154   2008.01.29


 [Fedora] 윈도우 재설치, Grub복구
댓글:(1) 열람:1158   2008.01.29


 멀티 부팅시 문제점 및 복구 간략 소개
열람:1338   2008.01.29


 Fedora(페도라) 메일서버 구축(dovecot) 이용
열람:1374   2007.12.28



[1]  [2]  [3]  [4]  [5]  

복수단어 검색은 공백(space)로 구분해 주세요.




 
최근 글 [손님]
 
인기 글 [손님]
[예진아씨] 자료없음
[홈마스타] (1) 아이피포워팅이란?
[홈마스타] [RE] input type=\\
[깊은연못] KMFM - 24시간 연주곡