Translate

2016/05/11

Sendmail + dovecot + saslauthd 구성의 문제점

메일서버 실습을 하고 있던 도중, 이상한 점을 발견했다.
sendmail과 dovecot, saslauthd를 사용하여 메일서버를 구성했고 smtp인증은 비밀번호를 이용한 방식을 사용했다.(블로그를 찾아보면 쉽게 따라할 수 있다.)

메일도 잘 보내지고 문제는 없었는데... SendEmail.exe라는 커맨드라인에서 메일을 보낼 수 있는 프로그램으로 메일을 보내는 도중 문제점을 발견했다.

이 프로그램을 사용하면 보내는 사용자를 인증하지 않고 메일을 보낼 수 있게 된다. 또한 telnet에서도 이게 하다. 이걸 이용하면 다른 사용자의 이름으로 스팸을 보낼 수 있게 된다는 건데...
문제를 해결하기 위해 찾아봤지만 결국 결론은 이런 식으로 메일 서버를 구성하면 문제를 피할 수 없다는 것이다. 구글이나 다음, 네이버는 ssl, tls 인증 방식을 사용해서 서버에서 메일을 보낼 때 인증을 하기 때문에 이런 문제가 없지만 내가 구성한 메일 서버는 이런 "인증" 절차가 없기 때문에 스팸을 보낼 수 있는 메일 서버가 된다.

SendEmail
혹시 activeperl을 설치해야 할 수도 있고 설치시에 문제가 발생할 경우
"C:\Users\x\AppData\Local\Temp" 폴더에 full contol을 주면 설치가 가능하다.
이 프로그램을 사용해서 gmail로 메일을 보낼 수 있다.

sendEmail -o tls=yes -f YourEmail@gmail.com -t SomeoneYoureEmailing@domain.com -s smtp.gmail.com:587 -xu YourEmail@gmail.com -xp YOURPASSWORD -u "Hello from sendEmail" -m "How are you? I'm testing sendEmail from the command line."


<telnet으로 인증 없이 메일 보내기>

$ telnet localhost 25

ehlo localhost
(인증을 하지 않고 바로 메일 보내기)
mail from: aaa@aaa.com (보내는 사람)
rcpt to: bbb@bbb.com (받는 사람)
data
(메일 내용 입력)
hello
.
quit

윈도우 메일 서버의 경우 "mail from:aaa@aaa.com"과 "rcpt to:bbb@bbb.com"으로 붙여서 써주고 "DATA"도 대문자로 써주어야 한다.



Source:
smtp 테스트 방법
SMTP Commands Reference
An Email Program for Sending SMTP Mail from a Command Line


댓글 없음:

댓글 쓰기

Template by Aliya H.