커피닉스, 시스템 엔지니어의 쉼터 커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
* HanIRC의 #coffeenix 방
[ 장비 및 회선 후원 ]
HOME > 네트워크(network) > 메일 서버(mail) > 메일 필터링(스팸메일) / procmail 도움말
검색 : 사이트 WHOIS 웹서버 종류


  센드메일(Sendmail)서버의 스팸메일방지기능을 활용하는 방법 작성일 : 2003/08/05 00:45
 
  • 글쓴이 : 좋은진호
  • 조회수 : 9828
          [ 이전화면 / 수정 ]   비밀번호 :     인쇄용 화면
      출처 : 불법 스팸 대응 센터, http://www.spamcop.or.kr/

    <  센드메일(Sendmail)서버의 스팸메일방지기능을 활용하는 방법 >

    * Sendmail8.9.0부터는 디폴트로 메일 릴레이 기능을 제한하도록 되어 있으며 이러한 기능들을
    ㅋ제어하기 위한 많은 환경변수들을 제공하고 있습니다.

    * 환경변수들은 sendmail.cf파일에 저장되어 지는데, 많은 관리자들이 Sendmail 프로그램을 설치
    ㅋ하는데 있어 가장 애로를 겪는 부분입니다.

    * Sendmail이 anti-spam 기능이 있다고 해도, 이 파일을 적절히 만들어 적용하지 못하면 무용지물이 ㅋ되기 때문에 관리자들은 이 파일의 적용방법을 반드시 숙지하여 운영하여야 합니다.

    --------------------
    < 스팸메일 발송자차단 및 서버릴레이 차단방법 >

    1. access DB 활용

    Sendmail 8.9로 버전이 높아지면서 새롭게 추가된 기능이 바로 이 anti-spam과 관련된 기능이며 Access DB라는 새로운 데이터베이스를 도입해서 이것의 설정에 따라 특정 메일들을 받지 않도록
    할 수가 있습니다.

    그 내부 형식은 다음의 표와 같습니다.

    Sendmail이 anti-spam 기능이 있다고 해도, 이 파일을 적절히 만들어 적용하지 못하면 무용지물이 되기 때문에 관리자들은 이 파일의 적용방법을 반드시 숙지하여 운영하여야 합니다.
    spam@hacker.com    REJECT
    spammail.com    REJECT
    useful.org    OK
    211.252.150    RELAY
    211.252.151    RELAY


    spam@hacker.com, spammail.com 및 211.252.150과 같은 첫번째 필드는 e-mail주소,도메인
    네임,네트윅 넘버 등이 올 수 있으며,

    두번째 필드는 해당 주소로부터 오는 메일을 어떻게 처리할 것인가를 결정하는데에 사용됩니다.

    spam@hacker.com의 메일사용자 및 spammail.com 도메인으로부터 오는 모든 메일은 거부
    합니다.

    useful.org 도메인으로부터 메일 사용자 및 spammail.com 도메인으로부터 오는 모든 메일은
    거부합니다.

    마지막의 것은 C-Class의 네트워크가 211.252.150, 211.252.151의 IP를 사용하는 모든주소에
    대하여릴레이를 허가 한다는 의미입니다.

    위와 같은 형식의 asccess DB는 /etc/mail/acess란 이름으로 파일 사스템에 저장 합니다.

    access의 파일구조는 텍스트 파일이며, Sendmail이 가려낼 수(Lookup) 없기 때문에, makemap 이란 프로그램을 사용하여 Sendmail이 인식할 수 있는 DB형태로 만들어 주어야 합니다.

    다음의 명령어를 실행하여 가능 "/etc/mail/makemap dbm/ etc/mail/acess< /etc /mail/access

    다음의 표는 이러한 access파일을 통하여 sendmail이 가려낼 수 있는 Access DB 파일을 생성
    하는 방법및 과정을 보여주고 있습니다.


    [penguin:root]:/etc/mail> ls -al access*
    -rw-r--r-- 1  root other  71 5월 3일   17:25 access

    [penguin:root]:/etc/mail> cat access
    spam@hacker.com    REJECT
    spammail.com    REJECT
    useful.org    OK
    172.16    RELAY

    [penguin:root]:/etc/mail> makemap dbm /etc/mail/access < /etc/mail/access

    [penguin:root]:/etc/mail> ls -al access*
    -rw-r--r-- 1   root other   71 5월 3일    17:25   access
    -rw-r--r-- 1   root other     0 5월 3일   17:27   access.dir
    -rw-r--r-- 1   root other    024 5월 3일   17:27   access.pag

    이러한 환경변수들의 올바른 설정에 대한 보다 상세한 내용은 cf/README 파일의 Anti-Spam
    환경제어 부분을 참조하시면 됩니다.

    http://www.sendmail.org/tips/relaying.html

    http://www.sendmail.org/m4/anti-spam.html

    2. relay 영역지정 기능 활용

    대부분의 이러한 Anti-Spam Relay 기능들은 메일관리자가 허용되는 Relay 도메인의 리스트
    설정을 필요로 합니다. 이 리스트에는 모든 허가 인증된 도메인들을 포함하고 있는지 반드시 확인
    하여야 하며 주의하여야 할 점은 반드시 MX (Mail Exchanger)뿐만 아니라 자사 도메인에서 사용
    하고 있는 가상의 도메인들이 포함되도록 설정하여야 한다는 것입니다. 그렇지 않으면 자사 도메인
    에서 보낸 메일이 거부될 수도 있습니다.

    다음과 같이 다양하게 릴레이 허용범위를 지정할 수 있습니다.

    FEATURE(relay_hosts_only) : /etc/mail/relay-domains에 리스트되어 있는 도메인 내 호스트
    들은 모두 허용

    FEATURE(relay_entire_domain) : 자신의 도메인 내에 있는 모든 호스트들에 릴레이 허용

    FEATURE(access_db) : 개별 도메인들의 접근 여부를 /etc/mail/access라는 db를 통해 조절

    FEATURE(blacklist_recipients) : access db에 있는 송신자 뿐 아니라 수신자까지 필터링 가능

    * 보다 다양한 스팸메일 릴레이 차단방법에 대해서는 아래 홈페이지를 참조하시기 바랍니다.
    - http://www.certcc.or.kr/paper/tr2002_04/spam.pdf

    3. 동적 IP에 대해 relay 허용하는 방법
    (출처 : http://gnuhacker.com/board/?p=print&table=securitybug&no=17)

    sendmail 8.9 버젼대에 와서 Anti SPAM 운동의 일환으로 relay 허용이 default로 막히게 되었습
    니다. 하지만 smtp relay를 설정하는 것이 ip address 또는 domain name으로 이루어지게 되어
    있어서 동적 ip에 대해 relay를 어떻게 허용할지 논란이 되곤 했습니다. 이 문제를 해결하기 위하여 8.10 버젼에서 smtp auth 기능이 추가되었습니다.

    하지만 이 기능은 기본적으로 들어 있지는 않으며, 인증을 위해서는 cyrus- sasl library(libsasl
    이라는 이름으로 패키징 되어 있기도 합니다)가 필요하며 cyrus-sasl library는 또한 openssl package를 필요로 합니다.(Redhat 7.x부터 기본적으로 설치 되어 있습니다)

    sendmail 8.10.x 에 와서 기존의 파일들의 위치와 이름이 변경된 것이 있습니다.
    그중 특이한 몇개만 말한다면 일단 sendmail의 모든 설정 파일들은 /etc/mail 로 옮겨졌습니다.
    즉 /etc 에 위치하던 sendmail.cf 가 /etc/mail/sendmail.cf 로 이동을 했다는 것입니다.

    또한 /etc/sendmail.cw 가 /etc/mail/local-host-name 으로 변경 되었다는 것을 유의해야 합니다.

    1. Sendmail을 이용한 SMTP + AUTH 설정

    1.1 sasl에서 인증 방식 지정

    # cd /usr/lib/sasl
    # touch Sendmail.conf
    # vi Sendmail.conf

    ; 아래내용을 추가합니다. (passwd 방식이면 pwcheck_method: passwd )

    pwcheck_method: shadow

    1.2 sendmail 설치합니다. (http://sendmail.org)

    1) 압축 파일을 풉니다.
    # gzip d sendmail.8.11.6.tar.gz
    # tar -xvf sendmail.8.11.6.tar

    2) 센드메일 컴파일시 sasl library를 포함 하도록 합니다.
    # cd sendmail-8.11.6/devtools/Site
    # vi site.config.m4

    APPENDDEF(`confENVDEF', `-DSASL')
    APPENDDEF(`conf_sendmail_LIBS', `-lsasl')
    APPENDDEF(`confLIBDIRS', `-L/usr/lib')
    APPENDDEF(`confINCDIRS', `-I/usr/include')

    3) 센드메일을 컴파일 합니다.
    # cd sendmail-8.11.1
    # ./Build c

    4) 센드메일 데몬을 기존의 센드메일 데몬과 바꿉니다.
    주의 할 점은 만약에 컴파일한 데몬이 이상이 생겨 동작하지 않을 경우를 대비하여 기존 파일을
    백업해야 합니다.
    # cd obj.Linux.2.2.14-5.0.i586/sendmail
    # mv /usr/sbin/sendmail /usr/sbin/sendmail-org
    # cp sendmail /usr/sbin/sendmail

    5) sendmail.cf 파일을 만듭니다.
    # cd /usr/tmp/sendmail-8.11.1/cf/cf
    # vi generic-linux.mc

    divert(-1)
    divert(0)dnl
    VERSIONID(`@(#)inet-mx.mc (Inet, Inc. MX.) 8/18/98')dnl
    OSTYPE(linux)dnl
    DOMAIN(generic)dnl
    MAILER(local)dnl
    MAILER(smtp)dnl
    FEATURE(`access_db', `dbm -o /etc/mail/access')dnl
    FEATURE(`mailertable', `dbm /etc/mail/mailertable')dnl
    FEATURE(`virtusertable',`dbm -o /etc/mail/virtusertable')dnl
    TRUST_AUTH_MECH(`LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl
    define(`confAUTH_MECHANISMS', `LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl

    # m4 ../m4/cf.m4 generic-linux.mc > sendmail.cf

    6) sendmail.cf 파일을 기존파일과 바꿉니다.
    마찬가지로 기존 sendmail.cf 파일을 백업 시킵니다.
    # mv /etc/mail/sendmail.cf /etc/mail/sendmail.cf-org
    # cp sendmail.cf /etc/mail/sendmail.cf

    7) 센드메일 데몬을 구동시킵니다.
    # pkill sendmail
    # /usr/sbin/sendmail -bd -q30m

    1.3 Client PC 에서는 아래처럼 설정을 해 주어야 합니다.

    Netscpae mailer
    Edit>Preferences>Mail & Newsgroups Account Settings >Outgoing Server
    (SMTP)

    에서 Use name and password 에 체크 하고 User Name을 넣어 주면 됩니다.

    Outlook Express 6
    도구>계정>메일>계정등록정보>서버>보내는 메일서버

    에서 "인증 필요"에 체크를 하고 옆의 "설정"을 클릭한후 로그온 정보에 계정 이름과 암호를 넣습니다.

    1.4 참고 사이트

    http://www.sendmail.org/~ca/email/auth.html
      커피닉스 카페 최근 글
    [08/25] #gpt_question_subje
    [08/20] From what I've seen
    [08/14] сайт
    [06/16] [질문]SAN 스위치 브로드케이드 dcx8510-4 장비관련입니다.
    [04/22] Re: 영화속에 컴퓨터 이야기 ~스워드피쉬(2001)
    [10/20] Cross Compiler 깔
    [07/14] SSL АО
    [04/26] Re: 도스화면 원격조종 여부
    [04/25] 도스화면 원격조종 여부
    [10/30] Cshell에서 난수 설정
    [10/23] 공항철도주식회사 SE 구인 件
    [01/26] Re: wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/25] wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/11] 특정 안드로이드 WebView 버전에서 SSL 문제 (WebView 버그)
    [08/01] DNS forwarder (전달자) 서버를 통해서 쿼리하면 역방향을 받아오질 못합니다.
      New!   최근에 등록한 페이지
      KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
      오픈캐스케이드 캐드 (OpenCASCADE CAD)
      QCad for Windows --- GNU GPL (Free Software)
      The Hello World Collection
      IPMI를 활용한 리눅스 서버관리
      DNS 설정 검사
      nagiosgraph 설치 방법
      Slony-I 설치 방법 (postgresql replication tool)
      Qmail기반의 Anti spam 시스템 구축하기
      clusterssh

    [ 함께하는 사이트 ]




    운영진 : 좋은진호(truefeel), 야수(yasu), 범냉이, sCag
    2003년 8월 4일~