-
[SMTP] gmail을 이용해서 smtp로 email 보내기programing/etc 2018. 10. 2. 19:14
안녕하세요, Einere입니다.
(ADblock을 꺼주시면 감사하겠습니다.)
오늘은 telnet명령어를 사용해서 smtp protocl을 이용해 gmail server를 이용하여 email을 보내는 방법에 대해 포스팅하겠습니다.
참 길죠? ㅎㅎ
telnet명령어와 SMTP protocol과 gmail server를 사용해서 email 보내는 방법
mail server 확인하기
우선, smtp protocol을 사용해서 email을 보내려면 mail server를 확인해야 합니다.
확인하는 방법은 위와 같습니다.
네트워크 관련 명령어인 nslookup을 사용해서 알아보는 것이죠.
gmail.com으로 확인해보니 altN.gmail-smtp-in.l.google.com 이라는 서버들이 나오네요.
하지만, gmail의 경우 위의 서버 대신에 smtp.gmail.com을 사용해도 됩니다.
이제 메일서버를 확인 했으니, telnet명령어를 사용해서 보내기만 하면 되겠네요.
일반적인 smtp protocol은 25번 port를 사용하지만, gmail은 465번 port를 사용한다는 점, 기억해주세요!
하지만 실제로 해보면 위와 같이 연결이 자꾸 끊어지게 됩니다.
물론 정상적으로 메일 내용을 다 작성해도, 스팸메일을 방지하기 위해 인증이 필요하다고 나옵니다.
그럼 이제 인증을 해서 메일 보내는 법을 알아보겠습니다.
telnet 설치 및 시작하기
telnet이 설치되지 않은 분들은 "sudo apt-get install telnet-ssl"을 입력하여 telnet을 설치합니다.
"telnet -z ssl smtp.gmail.com 465"를 입력하여 gmail server에 ssl인증을 사용하여 접속을 시도합니다.
자신이 누구인지 밝히기
"helo xxx"를 입력하여 자신이 누구인지를 밝힙니다.
그러나 여기서 xxx는 아무렇게나 하셔도 됩니다.
"helo hi"나 "helo google"이렇게 아무렇게나 하셔도 됩니다.
gmail에 로그인하기
"auth login"을 입력하여 gmail에 로그인합니다.
반드시 gmail계정이 존재해야 합니다.
naver나 daum의 계정으로는 로그인이 안된다는 것을 명심하세요!
gmail의 계정으로 로그인 해야 하는데, 반드시 입력해야 하는 값은 BASE64로 encrypt된 아이디와 비밀번호(2차 인증 포함)를 입력해야 합니다.
아이디와 비밀번호, 2차인증까지 BASE64로 encrypt된 값을 확인하기 위해서는 "echo -n "암호화할 문자열" | base64"명령어를 사용하면 됩니다.
그러면 위와 같이 암호화된 문자열을 복사해서 사용하시면 됩니다.
그리고 만약 2차인증을 사용하시는 분이라면 터미널 창에 google 2차인증 관련 링크가 출력되므로, 해당 링크를 열어서 따라 하시면 됩니다.
저의 예시는 글의 맨 밑에 나와 있으니, 참고하시면 좋을 것 같습니다.
sender와 receiver 설정하기
만약 로그인이 되셨다면, "mail from: <example@example.com>"을 입력하여 sender의 email주소를 설정합니다.
gmail을 사용하여 보내니까 example@gmail.com을 입력하시면 됩니다.
sender의 email주소를 설정하였으면, "rcpt to: <example@example.com>"을 입력하여 receiver의 email주소를 설정합니다.
sender와는 달리 receiver는 반드시 gmail이여야 할 필요는 없습니다.
이메일 내용 작성하기
"data"를 입력하여 email의 내용을 작성합니다.
예를 들면,
data
from: Einere<einere@gmail.com>
to: you<example@example.com>
subject: it's test email
here is body area
say goodbye~
.과 같이 입력하시면 됩니다.
from: 다음에는 보내는 사람의 이름과 email주소를,
to: 다음에는 받는 사람의 이름과 email주소를,
subject: 다음에는 메일 제목을,
반드시 한줄을 더 띄우시고,
메일의 본문 내용을 입력하시고,
온점을 치고 엔터를 치시면 본문 작성이 완료됩니다.
텔넷 종료하기
모든 과정이 완료되었다면 "quit"를 입력해서 telnet을 종료합니다.
실제 사용 예시
우선, 처음 암호화된 id와 pw를 입력하면 다음과 같이 링크가 출력됩니다.
링크를 클릭하시면 위와 같은 화면이 뜨는데요,
"앱 비밀번호"를 눌러 링크를 따라갑니다.
"앱 비밀번호"를 눌러서 나온 화면에서, 적당히 앱 비밀번호를 생성하면 위와 같은 창이 뜹니다.
파란색으로 마킹한 곳에 16자리 앱 비밀번호가 생성되는데요, 필요할 때 마다 사용해야 하니 메모장 같은데 저장해놓으시면 좋습니다.
아니면 일일이 앱 비밀번호를 삭제했다가 다시 생성해야 합니다..ㅜ
새로 생성한 앱 비밀번호도 base64로 암호화해야 합니다.
그리고 telnet명령어를 사용하여 다시 로그인을 하는데, 기존의 비밀번호 대신 앱 비밀번호를 입력하시면 됩니다.
단, 암호화한 문자열의 끝에 "=="이 붙어있는데, 앱 비밀번호의 경우에는 문자열 끝의 "=="를 빼고 입력하셔야 합니다.
accepted라는 반응이 도착하면, sender와 receiver를 설정한 후, email정보를 설정하면 됩니다.
그럼 실제로 메일이 도착햇는지 확인해 볼까요?
짜잔! 정상적으로 메일이 도착했습니다.
참고
'programing > etc' 카테고리의 다른 글
[RegExp] 정규표현식 분석 및 테스트 사이트 (1) 2018.11.05 [Design Pattern] Command Pattern (0) 2018.10.29 [Ubuntu] 우분투 터미널 커서 스타일 변경하는 법 (0) 2018.07.21 [이산구조] 유리수의 집합에서 순서에 따른 값 구하기 (0) 2017.05.03 [디지털논리] 10진수를 2진수로 변환하는 방법 (0) 2017.03.08 댓글