준호씨의 블로그
linux shell 에서 telnet SMTP 로 메일 발송하기 본문
아래는 telnet 에서 smtp 포트인 25번 포트로 메일을 바로 발송 하는 과정입니다.
결과
메일을 발송하는 과정은 일단 메일 주소의 도메인의 MX 레코드를 찾는 것부터 시작 됩니다.
메일주소에서 도메인이 daum.net 이라면 dig 명령어나 nslookup 등의 명령어로 MX 레코드가 어떻게 되는지 확인 해 볼 수 있습니다. daum.net 의 경우 mx1~4.daum.net 으로 되어 있음을 알 수 있습니다. (이 정보는 종종 바뀌기도 합니다.)
자 telnet 으로 mx1.hanmail.net 에 접속해 보겠습니다. SMTP 는 기본적으로 25번 프로토콜을 이용합니다.
junho85@junho85:~$ telnet mx1.hanmail.net 25
Trying 211.110.65.13...
Connected to mx1.hanmail.net.
Escape character is '^]'.
220 rmail-vm11.mail.daum.net ESMTP welcome to HanMail.Net(tm) ready
접속이 잘 되어서 환영 (welcome) 메시지를 받았습니다. 그럼 우리도 서버에 인사를 할 차례 입니다.
HELO 를 써도 되는데 이는 구 방식이고 좀 더 최신 방식은 EHLO 입니다. EHLO 다음에 보통 도메인명을 적습니다.
EHLO labs.junho85.pe.kr
250-rmail-vm11.mail.daum.net Hello [115.71.237.125], pleased to meet you
250-SIZE 71680000
250 ENHANCEDSTATUSCODES
2?? 로 시작되는 메시지를 받는데 이는 성공이라는 의미입니다. 4나 5로 시작 되면 실패 입니다.
보내는 사람이 누구인지 (MAIL FROM) 받는 사람이 누구인지 (RCPT TO) 를 입력합니다. SMTP 문서에 보면 envelope 정보라고 합니다. (수신자 메일 정보는 일단 *** 로 가립니다. 크롤링 당해서 누가 스팸 보낼까봐요 ^^;)
MAIL FROM: test@labs.junho85.pe.kr
250 2.1.0 test@labs.junho85.pe.kr... Sender ok
RCPT TO: ******@daum.net
250 2.1.5 ******@daum.net... Recipient ok
이제 본격적으로 메일데이터를 입력 할 차례 입니다. DATA 커맨드를 이용합니다. 이후에 제목, 보낸이, 받는이, 빈줄하나, 본문, 마무리로 "." 으로 끝냅니다.
DATA
354 Enter mail, end with "." on a line by itself
Subject: this is test mail
from: test@labs.junho85.pe.kr
to: ******@daum.netthis is test mail
.
250 2.0.0 i2SFVmnFd160096080 Message accepted for delivery
메일을 정상적으로 받았다고 (accepted) 메시지를 받았으면 성공입니다. 끝나고 그냥 두었더니 아래와 같은 메시지를 출력하고 접속이 끊어 집니다.
421 4.5.0 XTOUT 115.71.237.125: Closing connection by timeout
접속을 오래 하고 있으면서 아무 요청도 보내지 않으면 서버에서 알아서 접속을 끊어 버립니다. 참고로 아무 PC 에서나 보내면 스팸으로 인식 되어서 보내지지 않는 경우가 많습니다. 제 개인PC에서 보내면 아래 처럼 나옵니다.
454 5.7.1 DXNS3 192.168.1.217: Message refused. Your host name dosen't match with your IP address: labs.junho85.pe.kr If you need, please contact stamp@daumcorp.com.
IP랑 도메인이랑 매치가 안 되어서 거부 당했습니다. 이렇게 안 해두면 사칭스팸메일을 엄청나게 많이 받겠죠?
다음엔 프로그래밍 언어를 이용해서 메일 발송하는 방법을 좀 더 알아 볼까 합니다.
'개발이야기 > 이메일시스템' 카테고리의 다른 글
sendmail - build with TLS support (0) | 2018.01.19 |
---|---|
sendmail 로그 항목 풀이 (0) | 2016.04.18 |
javamail 로 메일 발송 시 SSLv2Hello 이용해서 SSLv3 사용하기. ssl/tls 버전 지정하기. (0) | 2016.03.17 |
이메일발송 서비스 사이트들. Amazon SES, mandrill, mailgun, sendgrid 등 (0) | 2016.03.03 |
java imap folder name utf7 decode (0) | 2015.01.14 |