2017-07-12
리눅스에서 NodeJS로 메일을 보내보도록 하겠다.
메일을 보내기 위해서는 메일 서버가 필요한데, 구글의 smtp서버를 사용하는 방법도 있지만, 필자는 리눅스에 직접 메일서버를 구축하여 보내도록 하겠다.
필자는 centOS 7의 환경을 기준으로 해당 작업을 했다.

우선 메일서버를 구축하기 위해서 sendmail을 설치해야 한다.
# rpm -qa |grep sendmail # systemctl status
우선 rpm을 이용하여 sendmail이 설치되어 있는지 확인하거나, centOS 7일 경우에는 systemctl 명령어를 통해서 메일 서비스가 돌아가고 있진 않은지 확인한다.

설치가 안되어 있는게 확인된다면, 아래의 명령어를 실행하여 sendmail을 설치한다.
# yum -y install sendmail sendmail-cf mailx
sendmail-cf는 sendmail을 설정 가능하게 하며, mailx가 안깔려 있을 경우에는 mail 명령어를 사용할 수 없다.

전부 설치가 되었으면 아래 명령어로 설정 파일에 들어간다.
# vi /etc/mail/sendmail.mc
해당 파일에서 아래 표시된 부분들을 수정해 주어야 한다.
. . . dnl # TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl dnl # . . . dnl # DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl dnl # . . . dnl # FEATURE(`accept_unresolvable_domains')dnl dnl # . . . dnl # LOCAL_DOMAIN(`b1ix.net')dnl dnl # . . .
위의 부분들을 위 예시에 맞게 주석을 제거하거나, Addr을 0.0.0.0d으로 바꾸거나, LOCAL_DOMAIN을 자신이 사용할 도메인으로 변경한다.

# cd /etc/mail # m4 sendmail.mc > sendmail.cf # systemctl start sendmail.service
그후 위처럼 설정파일을 변경하고, sendmail서비스를 실행한다.

자 이제 아래와 같은 식으로 메일을 보내보자.
echo "내용" | mail -s "제목" 보낼메일주소@gmail.com
메일이 잘 도착했다면, 이제 node에서 메일을 보내보자.
보통 스팸 메일함으로 올 확율이 크다.

자 이제 그럼 sendmail 모듈로 메일을 보내보자.
# npm install sendmail --save

sendmail 모듈을 설치후에, test_sendmail.js 파일을 만들고 아래와 같이 소스를 작성하고 실행해보자.
var sendmail = require('sendmail')();
 
sendmail({
	from: '보내는사람@mail.com',
	to: '받는사람1@qq.com, 받는사람2@sohu.com, 받는사람3@163.com ',
	subject: '메일제목',
	html: '메일내용',
}, function(err, reply) {
	console.log(err && err.stack);
	console.dir(reply);
});
# node test_sendmail.js
메일이 잘 간것을 확인 할 수 있을 것이다.
물론 스펨편지함에