2008. 9. 18.

qmail 릴레이 허용 방법 소개

큐메일에서 특정 사용자에게 smtp relay를 열어주기 위한 방법은 많이 있습니다.
이 때문에 큐메일을 처음 접하시는 분들은 혼란을 초래하기도 하죠.
그러나 조금만 각도를 달리해서 생각해보면 그만큼 유연한 설정이 가능하다는 장점이 될 수 있습니다.

이번 강좌에서는 큐메일에서 smtp relay를 열어주기 위한 방법을 소개만 하겠습니다.
실제적인 적용법을 다 적기에는 너무 많군요.

1. qmail + smtp-auth 패치를 적용해서 사용하는 경우
qmail-smtpd를 패치하여 smtp 인증을 사용하는 방법 입니다.
패치된 qmail-smtpd는 다양한 인증 프로그램을 사용할 수 있으므로 유연한 설정이 가능하죠
대표적인 인증 프로그램으로는 다음과 같은 프로그램들이 있습니다.
1. vchkpw
  vchkpw는 vpopmail의 pop 인증 프로그램 입니다.
  vpopmail 가상 유저들에게 smtp 서비스를 해줄 수 있는 프로그램이죠.
2. cmd5checkpw
  계정과 암호를 별도의 파일(/etc/poppasswd)에서 관리를 합니다.
  많지 않은 사용자에게만 smtp 서비스를 해줄 때 사용 됩니다.
3. checkpassword
  sendmail처럼 시스템 계정(/etc/passwd)을 사용하여 smtp 서비스를 해줍니다.
4. checkpassword + mysql
  checkpassword에 mysql 패치를 적용해서 시스템 계정과 DB에 만든 가상 계정을
  동시에 사용하여 smtp 서비스를 해줄 수 있습니다.


2. vpopmail 을 사용할 경우
1. vpopmail의 로밍 서비스
  vpopmail의 로밍 서비스를 가능하도록 컴파일 했다면(--enable-roaming-users=y)
  vpopmail로 만들어준 가상 유저들은 pop에 로그인후 smtp 서비스를 사용할 수 있습니다.
  이것은 vpopmail이 해당 유저가 pop 인증에 성공했을 경우에 cdb 파일을 자동으로
  업데이트 해주기 때문 입니다.
  이렇게 업데이트 된 cdb 파일을 qmail-smtpd를 구동시키는 tcpserver가 참고하고
  그 뒤에 RELAYCLIENT 환경 변수를 만들어서 relay가 허용이 됩니다.
2. vpopmail + mysql
  vpopmail을 mysql과 함께 사용할 수 있도록 컴파일 했을 경우에는 pop 인증이 성공할 경우
  lastauth 라는 테이블이 업데이트 됩니다.
  또한 tcpserver + Matt Simerson의 mysql 패치를 사용하면 이 테이블에서 pop 접근에
  성공한 ip 주소를 읽어들여 smtp relay를 허용합니다.
  만약 매우 많은 pop 유저를 가지는 대형 서버의 경우 이 방법이 좋습니다.
  왜냐하면 매번 cdb 파일을 다시 읽어드리거나 업데이트 하지 않아도 되기 때문 입니다.
  qmail-smtpd 스크립트의 tcpserver에는 -x 옵션 자체를 사용하지 않게 됩니다.


3. qmail + vida 형식으로 운영하는 경우
이것은 한국에는 매우 드문 방식이지만, 주로 일본에서 많이 사용되는 방법 입니다.
필자가 일본에서 처음으로 외주를 맡았을때 vida 라는 형식을 사용하는것을 처음 알았습니다.
vida는 qmail Virtual Domain and Authentication package 라고 불리웁니다.
정말로 큰 대규모 메일서버라면 qmail+vpopmail 보다는 qmail+vida 시스템이 빠르다는것을
어떤 문서에서 본 기억이 나는군요.
저도 잠깐 다뤄본 것이기 때문에 깊게 설명을 해드릴 수는 없고, 간략한 특징만 알려드리겠습니다.
그저 그냥 이런게 있구나~ 정도로 알아두시면 될 듯 합니다.
- checkpassword의 인증 방식의 추가(CRAM-MD5, APOP 대응)
- checkpassword의 SMTP 인증 대응
- qmail-smtpup 프로그램의 추가
- 가상 메일 박스 대응
- IP주소 베이스 및 로그인 ID베이스의 버추얼 도메인 대응
- 패스워드 데이타베이스는 CDB 를 이용하기 때문에 유저수가 많아도 빠름
- D.J.Bernstein씨의 라이브러리를 적극적으로 이용

댓글 없음: