Operating System/Linux2007/06/20 10:53

6. Third Party Relay

6.1 Third Party Relay란?

Third Party Relay란 간단하게 말해서 SMTP Server의 사용자가 아닌 사람(보통 Spam을 뿌리기 위한 악의로)이 SMTP Server를 이용하는 것입니다. 따라서 A Computer의 SMTP Server를 C Computer에 있는 사용자가 B Computer로 Mail을 보내기 위해 이용하는 경우를 말합니다. 좀더 자세한 설명은 'What is Third-Party Mail Relay?'를 참고하시기 바랍니다.

아직까지 많은 Server들이 Third Party Relay를 허용하고 있으며, 이 때문에 자신이 관리하는 Host가 Spam Site로 인식되는 것도 모르고 있는 경우가 허다합니다. 우선 자신이 관리하는 Host의 SMTP Server가 Third Party Relay를 허용하는지를 Check하려면 'Is my mailer vulnerable?'에서 하실 수 있습니다. 꼭 해보시기 바랍니다.

6.2 설정방법

sendmail 8.7.x 이하

Third Party Relay를 막으려면 적어도 sendmail 8.8.x 가 되어야 합니다. 따라서 최신의 sendmail로 Upgrade를 하시기 바랍니다.

sendmail 8.8.x

sendmail.cf에 아래와 같은 Rule set을 넣고 sendmail.cR File에 relay를 허용하는 Host의 FQDN이나 IP address를 입력하면 됩니다. (여기에서는 IP address를 권하고 있습니다.)

FR-o /etc/sendmail.cR

Scheck_rcpt

# anything terminating locally is ok

R< $+ @ $=w > $@ OK
R< $+ @ $=R > $@ OK

# anything originating locally is ok

R$* $: $(dequote "" $&{client_name} $)
R$=w $@ OK
R$=R $@ OK
R$@ $@ OK

# anything else is bogus

R$* $#error $: "550 Relaying Denied"

그리고 /etc/sendmail.cR의 설정은 아래와 유사하게 하시면 됩니다.

/ $ cat /etc/sendmail.cR

155.230.28.117
155.230.28.118

sendmail 8.9.x

sendmail 8.9.x에서는 기본적으로 third party relay를 금지하고 있습니다. 만일 third party relay를 허용하려면 promiscuous_relay FEATURE를 mc File에 추가하고 sendmail.cf를 생성하면 됩니다. (하지만 이렇게 할 사람이 있나요? ^^)

따라서 sendmail 8.9.x에서는 sendmail.cf에 특별한 수정 없이 relay에 관한 File만 수정하면 됩니다. 아래에서는 사용하고 있는 Domain 이름이 company.co.kr 이고, Host 이름이 myhost, ip address가 203.123.45.67 인 경우라고 가정합니다.

/etc/mail/access : 누가 이 Mail Server를 Realy Server로 지정해서 사용할 수 있는가, 어떤 주소에서 오는 Mail은 거절할 것인가를 설정하는 File입니다.

mail $ cat access

203.123.45 RELAY
209.1.2.3 RELAY

cyberpromo.com REJECT

이렇게 설정한 경우 myhost와 같은 Subnet에 있는 Computer들와 209.1.2.3을 사용하는 Computer에서만 myhost.company.co.kr을 SMTP Server로 지정해서 Mail을 보낼 수 있습니다. 그리고 cyberpromo.com과 cyperpromo.com Domain에 속하는 모든 Host에서 오는 Mail은 거절합니다. 일단 이 File을 만드셨다면 이제는 DB File을 만드셔야 합니다.

/ $ cd /etc/mail

mail $ makemap hash access < access

그리고 /etc/mail/access File을 수정을 할 때마다 반드시 이 작업을 해 주셔야 합니다. 하지만 이 작업을 후에 sendmail을 죽이고 다시 띄울 필요는 없습니다.

그리고 access File을 사용할 경우에는 sendmail.cf를 생성할 때 mc File에 FEATURE(access_db)를 추가해야 합니다.

또한 makemap의 버전이 낮은 경우 작동을 하지 않는 경우가 있습니다. 이때는 sendmail Package와 함께 딸려 나오는 makemap을 Compile 한 후 시도해 보시기 바랍니다. makemap도 sendmail과 마찬가지로 -DNEWDB를 선택해 주셔야 합니다.

/etc/mail/relay-domains : 위의 /etc/mail/access에서 지정한 곳 외에서 Mail Server로 지정하는 경우에도, relay-domains 에 등록한 Domain의 Host에 대해서는 허용합니다. relay-domains와 access File의 큰 차이점의 하나는 access File의 경우 수정 후 sendmail을 다시 실행할 필요가 없지만 relay-domains File은 수정 후 sendmail을 다시 실행해야 바뀐 내용을 인식합니다. 편한 File을 하나 정해서 사용하시면 됩니다. 저의 경우 access File은 RELAY-FROM에 해당하는 Host에 relay-domains는 RELAY-TO에 해당하는 Host를 설정합니다.

mail $ cat relay-domains

company.co.kr

이 경우 company.co.kr Domain에서 오는 Mail은 모두 중계를 허용합니다. 만일 이 Mail Server로만 오는 Mail을 받고 싶다면 (대부분의 경우가 여기에 속합니다) access File과 relay-domains File을 0 byte짜리 File로 만들면 됩니다.

이렇게 설정한 후 SMTP Server가 third party relay를 허용하는지 Test해 보시기 바랍니다.

Creative Commons License

'Operating System > Linux' 카테고리의 다른 글

표준 Permission 설정  (0) 2007/06/20
기본 Daemon 설명  (0) 2007/06/20
Sendmail (문제해결)  (0) 2007/06/20
Sendmail (Virtual Host)  (0) 2007/06/20
Sendmail (난 Spam이 싫어요)  (0) 2007/06/20
Sendmail (Third Party Relay)  (0) 2007/06/20
Sendmail (sendmail.cf에 관한 얘기)  (0) 2007/06/20
Sendmail (한글지원)  (0) 2007/06/19
Sendmail (추가적인 작업들)  (0) 2007/06/19
Sendmail (Compile & Installation)  (0) 2007/06/19
Sendmail (Sendmail이란?)  (0) 2007/06/19
Posted by BLUEDAY™