Qmail 메일 Relay 기능 설정하기

[ Sendmail Relay 기능 설정하기 ]

참조 : https://qmail.jms1.net/relay.shtml

Qmail도 릴레이는 기본적으로 안되게 되어있습니다. local과 virtual domains에 있는 도메인 네임들에 있는 완전 도메인네임들을 /var/qmail/control/rcpthosts파일에 적기 때문입니다.

참조1 : Qmail의 경우는 수신자의 도메인만 검사합니다… 발신자의 IP는 검사하지 않는것이죠..
이에 반해 Sendmail을 테스트 한결과 Sendmail은 발신자의 IP주소를 체크해 릴레이를 금지합니다.

rcpt는 받는 쪽을 의미하는 receipt 를 의미합니다.
참조2: 즉 내 메일서버가 받는 것을 의미하는데 이게 송신(send)과 무슨 상관이 있지 않습니다. 메일관련 명령어를 보시면 rcpt에 대한 설명이 나옵니다. 릴레이는 메일을 중계할 수 있는 권한을 주는 것입니다. 즉 메일서버가 없어도 메일서버가 있는 것처럼 클라이언트에서 접속해서 메일을 보낼 수 있는 권한을 주는 것으로서 스패머를 막기 위한 보안관련설정중 하나입니다.

릴레이가 필요시에는 릴레이 관련 설정을 확인한 후 테스트를 한 후 릴레이를 허용하여야 합니다. Qmail에서 릴레이를 두 개의 설정파일로 컨트롤합니다.

첫 번째 파일인 /etc/tcp.smtp에서 릴레이와 접근을 막는 설정을 할수 있고 두 번째 파일인 /var/qmail/control/rcpthosts 파일에서는 메일 릴레이를 열어줄 서버를 결정해 줍니다. 여기서 중요한 것은 rcpthosts파일은 tcp.smtp 설정의 RELAYCLIENT=”” 이 옵션이 없을 때에만 동작하며 우선순위를 가집니다. 그러므로 rcpthosts 파일에 릴레이가 필요한 IP를 기록하고 모두를 allow하면 먼저 rcpthosts를 확인한 후 릴레이를 허용할 IP를 확인한 다음 만약 해당 IP가 없다면 릴레이를 막을 것입니다.

아래의 tcp.smtp 설정은 172.16.5.xxx 및 로컬은 모두 허용하고 rcpthosts에 있는 IP를 제외한 모든 IP는 막는다는 뜻입니다.

tcp.smtp 를 수정한 후에는 tcpserver가 사용할 수 있는 cdb 형식으로 바꿔주기 위해 아래와 같이 db 파일로 바꾸어 주어야 하며 sendmail과 같이 qmail을 재시작 할 필요는 없습니다.

# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

특정 IP 대역의 메일 관련 접속을 완전히 막을려면 해당IP:deny 설정을 하여 smtp로의 접속을 완전히 막을 수 있습니다.

qmail 메일도 Sendmail과 같이 유동 IP 사용자들에게 릴레이를 열어 주어야 하는 메일 서버의 경우에는 qmail 소스를 패치하면 qmail-smtpd가 암호 인증 후에 릴레이를 열어주는 방법이 있습니다. 자세한 것은 아래의 사이트를 참조하시기 바랍니다.
http://kldp.org/~eunjea/qmail_relay.php#tcpserver

참조 : http://yis.yonsei.ac.kr/document/service_info/security/guide/document/mail/mail_qmail.html