$HELOHOSTCHECK

관련 자료
Post Reply
User avatar
bh
등록 사용자
등록 사용자
Posts: 124
Joined: 2004/02/26 01:38
Location: 경북 울진군 평해읍 오곡1리 735번지
Contact:

$HELOHOSTCHECK

Post by bh » 2004/04/01 23:01

Code: Select all

/* HELO 스트링과 원격 호스트네임 일치여부 체크 */
int helohostchecks()
{
  stralloc sa = {0};
  ipalloc ia = {0};
  unsigned int random;
  int j;
  int k;

  random = now() + (getpid() << 16);
    dns_init(0);
    stralloc_copys(&sa, helohost.s);
    if (!stralloc_0(&sa)) die_nomem();
    j = dns_mxip(&ia,&sa,random);
    if (remotehost != "unknown") {
        k = str_diff(helohost.s, remotehost);
        if (j < 0 || k != 0) return 1;
    }
    else {
        return k;
    }
  return 0;
}
RFC 2821 에 의하면,
EHLO/HELO 스트링은 SMTP 클라이언트가 SMTP 서버로 연결시 투명성을 보장하기 위한 인증 수단으로 활용된다고 기술되어 있습니다.
그 조건은 namespace 상에 존재하는 유일한 FQDN 이어야 한다고.. 이하 중략.. -_-;;

spamcontrol 의 $HELODNSCHECK 변수가 helo 스트링이 존재하느냐 안하느냐만 체크한다면,,
$HELOHOSTCHECK 변수는 접속하는 클라이언트의 IP주소와 일치하는지의 여부까지 체크합니다.

애초에 계획했었던..
PTR룩업이 이루어지지 않는 클라이언트들을 위한 배려까지 하려 했지만..
저의 집중력과 인내심의 한계(사실 머리가 안따라줘서.. 흐흑..)로 마무리를 못했습니다.

소스코드에서 보시다시피..
remotehost 값을 가져와서.. helo 스트링과 일치하는가를 비교합니다.
만약,
remotehost(PTR룩업후의 호스트네임) 값이 없다면 // if (remotehost == "unknown")
가차없이 reject 됩니다.. ㅡㅡ;
지금 왜 맹글었을까 하고.. 엄청 후회를 하고 있습니다.. -_-;;

테스트 방법은 패치하고나서..
/etc/tcp.smtp 에 $HELOHOSTCHECK 변수를 집어넣으면 됩니다.
ex)
127.0.0.1:allow,RELAYCLIENT=""
:allow,HELOHOSTCHECK=""


아래에 제가 테스트한 결과를 인용합니다.
// 클라이언트에서 텔넷으로 패치된 원격 SMTP 서버에 연결하는 모습..
...
220 izb.knu.ac.kr ESMTP
ehlo stoneport.math.uic.edu
250-izb.knu.ac.kr
250-PIPELINING
250 8BITMIME
mail from:<bh@ulsan.linux.or.kr>
250 ok
rcpt to:<bh@izb.knu.ac.kr>
560 sorry, Host name is not match with your ip (#5.7.1)
...

// 패치된 서버의 smtpd/current 로그..
@40000000406c1a0a0a181d34 qmail-smtpd: pid 81492 from 210.103.86.160 Bogus HELO/EHLO greeting! HELO: 'stoneport.math.uic.edu' FQDN hostname: 'ulsan.linux.or.kr' MAIL from: <bh@ulsan.linux.or.kr> RCPT to: <bh@izb.knu.ac.kr>
You do not have the required permissions to view the files attached to this post.

User avatar
bh
등록 사용자
등록 사용자
Posts: 124
Joined: 2004/02/26 01:38
Location: 경북 울진군 평해읍 오곡1리 735번지
Contact:

Post by bh » 2004/04/03 23:38

위의 소스를 qmail@list.cr.yp.to 에 포스팅한 후 반응을 물어봤습니다.
결국 허벌나게 깨졌습니다.. 흐흑..

PTR룩업이 이루어지지 않는 부분만 코드를 완성하면 쓸 수 있을건데..
아흑.. 그저 자신의 MTA 의 EHLO/HELO 스트링이 표준인지 아닌지를 테스트 할 때에만 쓰야 할 거 같아요..
언젠가 여력이 되면,, 나머지 부분을 완성할께요..
언제가 될지 모르지만..

임은재
사이트 관리자
사이트 관리자
Posts: 1192
Joined: 2000/01/01 00:00

ot

Post by 임은재 » 2004/04/04 02:53

bh wrote:위의 소스를 qmail@list.cr.yp.to 에 포스팅한 후 반응을 물어봤습니다.
결국 허벌나게 깨졌습니다.. 흐흑..
그 쓰레드 쭉 보고 있었습니다. 어쨌든 메일링 리스트에서 뵈니 반갑던데요 뭐. :wink:

User avatar
bh
등록 사용자
등록 사용자
Posts: 124
Joined: 2004/02/26 01:38
Location: 경북 울진군 평해읍 오곡1리 735번지
Contact:

......

Post by bh » 2008/10/05 21:20

위 정보들은..
qmail 의 spamcontrol 구버전에 포함되어있던것을.. 발췌한것입니다..

EHLO/HELO 체크는 더이상 스팸막는데 도움이 되지 않네요..;; 더 좋은
필터링 방법들이 이미 소개되어 있기때문이며..

더불어.. 이 쓰레드는 더이상 댓글을 달지 않을 예정입니다..
즐거운 qmail 닭질!

감사합니다..

Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests