이 포스트는 두 부분으로 되어 있습니다.
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
붉은색 부분은 제가 실제로 입력해 주는 부분입니다.
헛 이런 낭패할 때가 !! Relay 가 안된다는 것이군요.
4. access 에 개발 머신의 아이피를 써주기
/etc/mail/access 파일을 열어서 적당한 곳에
Connect:10.10.10.10 RELAY
라고 추가해 줍니다. 그리고 3번 테스트를 다시 진행하고
$ telnet crazia.super.com 25
1. nodemailer package 설치하기
먼저 테스트를 만들 디렉토리를 한개 만들어 주는 것이 좋겠습니다.
$ mkdir mail-test
$ cd mail-test
그리고 npm 으로 가볍게 인스톨 해줍니다.
$ npm install nodemailer
2. 실제로 보내는 테스트 코드 작성하기
위 내용을 자신의 상황에 맞게 변경하고 접속 host , 이메일 아이디 (제 아이디 쓰시면 아니되옵니다 ㅎㅎ) 저장합니다.
3. 실행해보기
$ node mail-test.js
어떻습니까? 참 쉽죠?