강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

/etc/mail/access를 이용한 Spam 메일방지법

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

/etc/mail/access를 이용한 Spam 메일방지법

 

 

 

 

 

특정 IP주소 또는 도메인 또는 Email주소, 그리고 특정 네트워크에 대하여 sendmail에 접근하지 못하도록 설정할 수 있는 파일이다.

 

 

 

  정확히 표현하자면 sendmail Relay제한 대상은 Sendmail을 거쳐가는 메일들 즉, 메일을 보내는자(IP주소, 도메인, 메일주소등)와 다른 메일서버 즉, 다른 SMTP서버(목적지 SMTP)가 그 대상이 된다.

 

 

 

 따라서 이러한 설정을 하게되면  특정 IP주소로 부터 들어오는 메일이나 특정 도메인으로 부터 들어오는 메일에 대하여 sendmail이 거부할 수 있도록 설정할 수 있다.

 

 

 

 

 

즉 스팸메일로 사용되는 서버의 IP 주소를 등록하거나 스팸사용자의 Email주소를 등록하여 스팸메일을 relay하는 것을 막을 수 있다는 결론을 얻을 수 있다.

 

 

 

 

 

다음은 /etc/mail/access파일의 작성예이다.

 

 

 

 

 

[root@sulinux mail]#cat /etc/mail/access

# by default we allow relaying from localhost...

Connect:localhost.localdomain           RELAY

Connect:localhost                       RELAY

Connect:127.0.0.1                       RELAY

sulinux.net                             RELAY

linux.co.kr                             RELAY

spam.com                                REJECT

spamuser@spam.com                       DISCARD

211.223.191.123                         REJECT

192.168.2.                              REJECT

192.168.3.0/255.255.255.0               REJECT

[root@sulinux mail]#

 

 

 

 

위의 예와같이 /etc/mail/access파일의 내용은 크게 두부분으로 나누어진다.

 

 

 

 

 

왼쪽부분에는 제어대상을 설정한다.

 

 

 

 즉 도메인명(spam.com), 메일주소(spamuser@spam.com), IP주소(211.223.191.123), 네트워크(192.168.2. 또는 192.168.3.0/255.255.255.0)등이 올 수 있다.

 

 

 

 

오른쪽 부분에는 제어옵션(방법)이 온다.

 

 

 

 즉 왼쪽의 제어대상을 어떻게 할것인가를 결정하는 옵션이 온다.

 

 

 

 이 옵션에는 다음과 같은 것들이 올 수 있다.

 

 

 

 

 

[/etc/mail/access파일의 설정 제어옵션]

제어옵션

    

RELAY

메일 Relay를 허용하게 된다.

 

 

 

 즉 관련(host에서지정된)메일의 수신/발신을 허용한다.

 

 

 

 

REJECT

RELAY와는 반대로 메일 RELAY(수발신)를 허용하지 않는다.

 

 

 

 
즉 관련(host에서지정된)메일의 수신/발신을 거부한다.

 

 

 

 

 

DISCARD

메일을 받은후에 폐기한다.

 

 

 

 , 메일발신자에게 폐기통보를 전혀하지않는다.

 

 

 

 /etc/sendmail.cf에 지정된 $#discard mailer에 지정된곳으로 메일을 폐기함.(발신자는 메일이 발신된것으로 알게됨.)

OK

조건없이 허용한다.

 

 

 

 즉 관련(host에서지정된)메일의 모든것을 허용(relay)한다.

 

 

 

 


“501
메시지

메일주소가 일부분이상 일치할 경우에 지정된메시지로 거부하게된다.

 

 

 

 관련(host에서지정된)메일의 Email Address와 일치된 메일을 받지않음.

“502 메시지

발신메일주소에 host명이 없을경우에 메일을 받지않음.

“503 메시지

관련(host에서지정된)된 도메인과 관련된 메일을 받지않음

“550 메시지

특정한 도메인에 대해 지정된메시지로 거부하게 된다.

 

 

 

 

“571 메시지

주로 스팸메일의 경우에 사용하는 설정으로 지정된메시지로 경로메일을 보낸후에 거부하게 된다.

 

 

 

 

“572 메시지

위의 571 설정과 거의 유사한 설정임.

 

 

 

 

 

 

즉 위에서 확인한 /etc/mail/access파일의 설정예들을 한행씩 설명하면 다음과 같다.

 

 

 

 

 

sulinux.net                             RELAY

sulinux.net에서 발송되어 이 서버로 들어오는 메일은 모두 relay(메일라우팅)를 허용한다.

 

 

 

 예를들어 sspark@sulinux.net사용자가 발송한 메일은 메일라우팅을 허용하게 된다.

 

 

 

 물론 이 사용자가 사용한 PC IP주소가 허용되어있어야 한다.

 

 

 

 대부분 호스팅사용자들이 사용하는 도메인명은 반드시 이와같이 등록해 주어야만 호스팅사용자들이 자신의 도메인이름으로 메일을 사용할 수 있다.

 

 

 

 

 

linux.co.kr                             RELAY

linux.co.kr에서 발송되어 들어오는 메일도 모두 relay를 허용한다.

 

 

 

 이 부분은 위의 sulinux.net 과 동일하게 적용된다.

 

 

 

 

 

spam.com                        REJECT

spam.com에 관련된 메일은 모두 거부한다.

 

 

 

 예를들어 bible@spam.com사용자에게서 발송된 메일은 모두 거부하게 된다.

 

 

 

 따라서 특정 도메인에서 스팸메일이 대량으로 발송될 때에는 이와같이 도메인명을 등록해두면 된다.

 

 

 

 

 

spamuser@spam.com               DISCARD

메일주소로 등록하여 메일 발송을 거부하고 거부된 사실을 알져주지않고 그냥 패기해 버린다.

 

 

 

 따라서 메일을 보낸사람(spamuser@spam.com)은 메일이 발송된 것으로 인식하게 된다.

 

 

 

 스팸메일을 대량으로 발송하는 특정사용자가 있다면 그 사용자의 메일주소를 이와같이 등록하면 된다.

 

 

 

 

 

211.223.191.123                 REJECT

그리고 만약 특정IP주소에서 스팸메일이 발송될 경우에는 이와같이 등록하면 된다.

 

 

 

 211.223.191.123 IP주소에서 스팸메일이 발송되어 이를 거부하기 위한 설정이다.

 

 

 

 

 

192.168.2.                      REJECT

그리고 이 설정은 192.168.2.라는 네트워크로 설정한 경우이다.

 

 

 

 192.168.2.0부터 192.168.2.255까지의 모든 IP주소에서 발송되는 메일을 거부하게 된다.

 

 

 

 

 

192.168.3.0/255.255.255.0       REJECT

이번 설정은 192.168.3.0네트워크에 대한 설정이다.

 

 

 

 192.168.3.0부터 192.168.3.255까지의 모든 IP주소에서 발송되는 메일들을 모두 거부하게 된다.

 

 

 

 그리고 다음과 같은 방법으로도 설정할 수 있다.

 

 

 

 

do@hyung.co.kr    501 You send email to Spammer. Delete Email Address in your list.

즉 위의 설정은 do@hyung.co.kr에서 발송되는 메일을 거부하고 위의 501뒤에있는 메시지와 함께 거부메일을 보내주게 된다.

 

 

 

 즉 이와 같은 방법으로 거부되었거나 경고성 메시지를 스팸메일발송자나 특정 메일발송자에게 보낼 수 있다.

 

 

 

 

 

그리고 이와같이 /etc/mail/access파일을 작성 및 편집한 후에는 다음과 같이 makemap유틸리티를 이용하여 /etc/mail/access.db파일을 생성해주어야 한다.

 

 

 

 

 

[root@sulinux mail]#makemap hash /etc/mail/access.db < /etc/mail/access

[root@sulinux mail]#

[root@sulinux mail]#ls -l /etc/mail/access.db

-rw-r----- 1 root root 12288  5  7 03:05 /etc/mail/access.db

[root@sulinux mail]#

 

 

 

 

위의 makemap 실행예에서 다음과 같이 access.db에서 .db를 생략해도 상관없다.

 

 

 

 

 

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

[root@sulinux mail]#

 

 

 

 

또는 간편하게 /etc/mail/디렉토리에서 그냥 "make"를 실행만 하면 /etc/mail/access 파일뿐아니라 /etc/mail/virtusertable파일을 포함하여 변경된 사항들을 모두 적용해 준다.

 

 

 

 

 

실제로 sendmail /etc/mail/access파일을 사용하는 것이 아니라 DB파일인 /etc/mail/access.db파일을 사용하기 때문이다.

 

 

 

 따라서 위와같이 makemap유틸리티를 이용하여 /etc/mail/access파일을 입력으로 하여 /etc/mail/access.db파일을 생성해 낸다.

 

 

 

 

그리고 다음은 /etc/mail/access.db파일에 실제로 등록되었는가를 확인하기 위하여 strings라는 명령어를 사용하여 확인한 것이다.

 

 

 

 다음과 같이 하면 /etc/mail/access.db파일의 내용 전체를 확인할 수 있다.

 

 

 

 이 파일은 텍스트파일이 아니기 때문에 vi cat등으로 볼수는 없다.

 

 

 

 

 

[root@sulinux mail]#strings /etc/mail/access.db

REJECT

211.223.191.123

DISCARD

spamuser@spam.com

REJECT

spam.com

RELAY

connect:localhost.localdomain

REJECT

192.168.3.0/255.255.255.0

REJECT

192.168.2.

RELAY

linux.co.kr

RELAY

sulinux.net

RELAY

connect:127.0.0.1

RELAY

connect:localhost

[root@sulinux mail]#

 

 

 

 

다음은 위와같이 전체 내용을 한번에 확인하는 것이아니라 특정 사용자에 대한 설정이 실제로 /etc/mail/access.db파일에 들어가 있는가를 확인하는 방법이다.

 

 

 

 

 

[root@sulinux mail]#strings /etc/mail/access.db | grep spamuser

spamuser@spam.com

[root@sulinux mail]#

 

 

 

 

즉 위의 예는 spamuser라는 사용자의 설정이 /etc/mail/access.db파일에 적용되어 있는가를 확인한 것이다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,811 개
  • 현재 접속자 :  124 명