어쩌다 보니 이메일 보내는 기능을 구현하게 됐습니다. 요즘 서비스 하나 만들려고 보면 이메일 보내기 기능은 거의 기본적인 기능이라 필수적으로 알아야 하는 부분이라고 볼 수 있습니다. 

이 포스트는 두 부분으로 되어 있습니다.

1. SMTP 서버 설정하는 부분
2. Node.js 에서 이메일 보내는 부분



사실 2번은 무지 쉬웠습니다. nodemailer 라는 훌륭한 패키지가 존재하기 때문이지요. 1번은 너무나 쉽고도 오래된 이야기인지 오히려 관련 문구를 찾기가 어려웠습니다. 

개발환경은 역시나 서버 사이드 이기 때문에 Ubuntu 12.10 버젼에서 테스트 했습니다.

1. Sendmail 을 설치해줍니다.

 $ sudo apt-get install sendmail



Postfix 를 요즘 많이 쓴다고 하는데, 귀찮아서 걍 편한 sendmail 을 설치해줬습니다. 처음 설치된 sendmail 은 오로지 Localhost Only 입니다. 사실 이게 편하긴 합니다만, 제 주요 개발 환경은 OSX 이고, 원격에 서버가 설치되어 있는 관계로 sendmail 을 원격에서 접속해서 메일을 보낼 수 있게 설정해 줄 필요가 있습니다.

2. 원격에서 접속할 수 있게 sendmail.mc 를 바꾸어 줍니다.
/etc/mail/sendmail.mc 를 열고 다음줄을 찾아서 바꾸어줍니다.

DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl 


인 부분을

DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=smtp, Addr=0.0.0.0')dnl


로 바꾸어 줍니다.

아무데서나 접속가능하게 바꾸어 준것입니다. 자 이제 설정파일을 생성해줍니다.

$ sudo bash -c "cd /etc/bash && m4 sendmail.mc > sendmail.cf" 
$ sudo /etc/init.d/sendmail restart



3. 접속 테스트 시작 
원격에서 접속하는 것을 가정으로 하고 sendmail 이 설치된 서버는 편의상 'crazia.super.com' 이라고 하지요. 

$ telnet crazia.super.com 25 

Connected to crazia.super.com
Escape character is '^]'.
220 teemo ESMTP Sendmail 8.14.4/8.14.4/Debian-2ubuntu2; Mon, 18 Mar 2013 11:54:40 +0900; (No UCE/UBE) logging access from: [10.10.10.10](FAIL)-[10.10.10.10]
HELO teemo
250 teemo Hello [10.10.10.10], pleased to meet you
MAIL FROM: crazia@super.com
250 2.1.0 crazia@super.com... Sender ok
RCPT crazia@gmail.com
501 5.5.2 Syntax error in parameters scanning "crazia@gmail.com"
RCPT to: crazia@gmail.com
550 5.7.1 crazia@gmail.com... Relaying denied. IP name lookup failed [10.10.10.10]



붉은색 부분은 제가 실제로 입력해 주는 부분입니다. 

헛 이런 낭패할 때가 !! Relay 가 안된다는 것이군요. 

4. access 에 개발 머신의 아이피를 써주기
/etc/mail/access 파일을 열어서 적당한 곳에

Connect:10.10.10.10                        RELAY



라고 추가해 줍니다. 그리고 3번 테스트를 다시 진행하고  

$ telnet crazia.super.com 25 

Connected to crazia.super.com
Escape character is '^]'.
220 teemo ESMTP Sendmail 8.14.4/8.14.4/Debian-2ubuntu2; Mon, 18 Mar 2013 11:54:40 +0900; (No UCE/UBE) logging access from: [10.10.10.10](FAIL)-[10.10.10.10]
HELO teemo
250 teemo Hello [10.10.10.10], pleased to meet you
MAIL FROM: crazia@super.com
250 2.1.0 crazia@super.com... Sender ok
RCPT TO: crazia@gmail.com
250 2.1.5 crazia@gmail.com... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Subject: Main from me
It's me !!
.
250 2.0.0 r2I3MdYY028635 Message accepted for delivery
^C
quit

 
이제 정상적으로 메일이 보내지는 것 까지 테스트 되었습니다. 이제 node.js 로 이메일 보내는 방법에 대해서 알아보겠습니다. 

1. nodemailer package 설치하기 
먼저 테스트를 만들 디렉토리를 한개 만들어 주는 것이 좋겠습니다. 

$ mkdir mail-test
$ cd mail-test



그리고 npm 으로 가볍게 인스톨 해줍니다. 

$ npm install nodemailer



2. 실제로 보내는 테스트 코드 작성하기


위 내용을 자신의 상황에 맞게 변경하고 접속 host , 이메일 아이디 (제 아이디 쓰시면 아니되옵니다 ㅎㅎ) 저장합니다. 

3. 실행해보기

$ node mail-test.js



어떻습니까? 참 쉽죠? 

 

+ Recent posts