메뉴 닫기

SMTP Relay 정리

SMTP Relay란

메일 서버 외부에서 메일서버를 경유하여 다른메일서버로 메일을 보내는것을 의미한다. 이 때 경유한 서버를 메일 릴레이 서버라고 한다.

모든 전자메일 메시지를 릴레이하는것을 오픈 릴레이라고 한다. 오픈 릴레이서버는 스팸메일 발신자의 메일 서버로 사용될수가 있는데, 이는 서버가 여러 RBL에 스팸메일 서버로 등록되는 결과를 초래한다.

[출처 : https://m.blog.naver.com/PostView.nhn?blogId=markj7&logNo=220527972099]

예를들어 abc.com(1.1.1.1) 이라는 메일서버가 있고 해당 메일서버를 사용하는 john@abc.com 이라는 계정이 있다고하자, john은 xxx.com(2.2.2.2) 메일서버를 사용하는 alice에게 메일을 보내고자 한다.

1) john이 MUA 프로그램을 사용하여 SMTP 메일 전송요청을 하면 해당 도메인의 보내는메일서버의 25 Port로 메일송신요청이 도착하고

2) MTA가 도메인을 확인하여 수신자주소가 자신의 도메인이 아닐경우 /var/spool/mqueue에 저장해두었다가

3) MDA에게 발송요청을한다.

4) MDA는 SMTP를 통해 인터넷을 통해 메일을 전송하고

5) 받는메일서버의 MTA 25 Port로 해당 메일이 도착한다.

6) MTA가 수신한 메일이 자신의 도메인이 아닐경우 MDA를 통해 최종목적지로 Relay할것인지 Discard 할것인지 결정하고

7) 만약 자신의 도메인경우 MDA를 통해 메일박스에 저장한다(/var/spool/mail/사용자명)

8) 수신자 MUA에서 수신된 메일이 있는지 받는메일서버에 LIST등의 명령어를 통해 요청하고

9) 수신자 메일박스의 수신계정에 신규 수신된 메일이 있는지 확인하여 있을경우

10) POP3, IMAP 등을 사용하여 최종 수신자의 MUA로 전달해준다.

보내는메일서버의 Relay가 로컬네트워크 혹은 로컬도메인으로 설정되어 있을경우 shy@abc.com or 1.1.1.0/24 네트워크에서 보낸 메일만 인터넷상(받는메일서버) 측으로 릴레이하고 Relay가 전체로 설정되어 있을경우 출발지 주소가 abc.com or 1.1.1.0/24 가 아니더라도 모든 수신되는 메일을 허용한다.

이러한 경우 외부의 Spammer가 보내는메일서버를 무단으로 사용하여 스팸메일을 보낼수 있다. 외부의 사용자가 해당메일서버로 SMTP 전송요청을 하면 보내는메일서버의 MTA가 해당 메일을 수신하여 수신자의 메일서버로 송신을 시도한다.

단 스팸메일의 경우 실제 존재하지 않는 메일계정을 mail from으로 설정하고 보내는 경우가 많으며 오류로 인해(수신자의 메일계정이 존재하지 않거나 RBL에 의해 차단된 경우 등등) 메일이 반송되는 경우 보내는 메일서버에 설정된 재전송주기에 의해 deferred 상태의 메일을 /var/spool/mqueue에 저장해두었다가 받는메일서버 측으로 재전송을 시도한다. 일정시도에도 전송되지 않을경우 최초출발지 송신자계정으로 메일을 발송할수 없다는 안내메일을 회신하는데 최초출발지 송신자의 메일서버가 존재하지 않기때문에 지속적으로 외부로 메일발송이 이루어진다.

이러한 문제때문에 스팸을 방지하는 기능이 발명되었으며, 해당 기능은 RBL, 화이트리스트, SPF, PTR Record 등이 있다. 한국인터넷진흥원에서 제공하는 RBLDNSD 혹은 간편이용을 통해 RBL 참조가 가능하다.

[KISA 불법스팸대응센터 RBL 서비스] https://spam.kisa.or.kr/rbl/sub3.do

국내에서는 스팸메일서버 필터링에 SPF를 주로 사용하고 해외에서는 PTR Record를 주로 사용한다.

SPF는 호스팅중인 도메인서버에 TXT 레코드만 추가하면 되지만 PTR 레코드의 경우는 ISP에 등록요청을 해야한다.

– postfix 모든 릴레이 허용

다른 모든 서버에서 자신의 서버로 메일을 포워딩할 수 있게 함

방화벽 없이, postfix 모든 IP LISTEN하기와 함께 적용하면 치명적인 보안 홀이 발생할 수 있다.

vi /etc/postfix/main.cf

#mynetworks = 168.100.189.0/28, 127.0.0.0/8

#mynetworks = $config_directory/mynetworks

#mynetworks = hash:/etc/postfix/network_table

mynetworks = 0.0.0.0/0

– sendmail 모든 릴레이 허용

직접 테스트결과 sendmail.cf 파일의 C{Accept}OK RELAY 항목은 릴레이 설정과 관련이 없다…

Sendmail 8.9버전(1998-05-19 릴리즈) 이후 부터는 기본적으로 릴레이 거부상태이고 access 파일에 명시되어 있지 않으며 이전의 기본 허용상태로 돌리려면 FEATURE (` promiscuous_relay ‘)를 사용해야한다.

sendmail.cf에 FEATURE(`promiscuous_relay’) 를 입력하고 m4 sendmail.mc > sendmail.cf 를 입력한다

친절하게 경고창도 띄워준다.

/etc/mail/access 적용

makemap hash /etc/mail/access.db < /etc/mail/access

[TEST] access파일에는 Connect:192.168.56.103 REJECT 상태

– 192.168.56.103(REJECT된 IP)에서 접속하여 릴레이 시도 시

– 192.168.56.1(access파일에 명시안된IP)에서 접속하여 릴레이 시도 시

0 0 votes
Article Rating
구독
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x