요즘 갑자기 발생하는 스팸메일 유형에 대처하는 방법

관련된 문서, 자유 강좌, 관련 정보와 새소식
Post Reply
ironiris
expert
expert
Posts: 728
Joined: 2004/04/08 08:58

요즘 갑자기 발생하는 스팸메일 유형에 대처하는 방법

Post by ironiris » 2009/10/14 10:20

안녕하세요~
요즘 메일서버가 응답이 없는 경우가 종종 있지 않나요?
그런 일 없다구요? ^^; 메일서버 설치 잘하신 겁니다. :)

제가 관리하는 메일서버의 경우는 maxrcpt patch 가 되어있지 않아서(http://qmail.kldp.net/phpbb/viewtopic.php?t=7505)
스팸메일을 발송하는 특정 ip 에서 smtpd 프로세스에 계속 붙어서
rcpt to 만 바꿔가면서 계속 보내는 형태의 스팸메일에 매우 취약했습니다.
(주로 베트남쪽 IP 입니다.)

그래서 시간이 지나면 남는 smtpd 프로세스가 없어
메일서버가 정상작동하지 않는 문제가 발생했죠.

일단 해결책은 stone92 님께서 올리신 방법으로 처리하면 됩니다.

그럼 이것만 적자고 정보/팁에 글을 올리냐.. 그건 아니구요. :)
하나 팁을 적고자 합니다.

위 링크에서 maxrcpt path 소스를 보시면 아시겠지만
qmail-smtpd.c 소스의 void smtp_rcpt(arg) char *arg; 함수를 수정한 것을 알수 있습니다.

제 경우는 위의 함수에서 메일서버에 등록되지 않은 이메일 주소에서 rctp값에 넣는 횟수를 셉니다.
한번 접속후에 5번이상 등록되지 않는 이메일주소로 메일을 보내려고 하는 IP를 기냥! 차단해버리는 것이죠.

이것이 이번 팁의 핵심입니다.

솔직히 카운트해보시면 알겠지만 그렇게 대단한 메일서버가 아님에도 불구하고
저런식으로 없는 이메일주소로 메일이 발송되는 건수가 하루에 5만건이 넘습니다.
물론 상당수의 스팸메일 발송 IP를 차단하고 있는데도 그렇습니다.
반영한 소스는 너무 부끄러워 차마 첨부는 못하고 그냥.. 이렇게 말로만 적습니다. 죄송합니다.

직접 소스를 수정하실때 사용할 팁을 알려드린다면...
해당 함수에 arg 인자로 들어오는 것은 TO:<test@test.com> 이렇게 들어오는 문자열이구요.(rcpt to 에 입력된 값)
전역변수 remoteip 는 접속한 곳의 ip 입니다.
그러니 저 이메일주소에 해당하는 유저가 우리 메일서버에 없으면 횟수를 센후 처리하면 됩니다.

참. 이 경우는 smtp auth 를 이용할 경우도 확인해야 합니다. 당연히 이 경우는 처리하면 안되겠죠?

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest