'gmail smtp'에 해당되는 글 1건

  1. 2016.11.08 Gmail SMTP Server를 사용하여 발송전용 Postfix 메일 서비스 구축하기 by truerain

Gmail SMTP Server를 사용하여 발송전용 Postfix 메일 서비스 구축하기

 

들어가는 글

   웹서비스 전용, 또는 데이터베이스 서비스 전용 리눅스 서버를 구축할 때, 시스템의 상황을 자동으로 메일로 전달받고 싶은 상황이 생깁니다. 또는 팩스 서비스만을 설치한 디바이스에서 받은 팩스를 자동으로 메일로 전달받고 싶을때, 또는 보낸 메일의 성공 여부를 자동으로 메일로 받고 싶을 때도 있을 것입니다. 이런 서버나 디바이스 마다 Exim 이나 sendmail을 설치하고 imap서비스를 설치하여 제대로 메일서버를 구축한다는 것이 여간 번거로운 일이 아닙니다. 

   Postfix는 Exim, Sendmail과 같은 MTA (Mail Transfer Agent) 프로그램입니다. Postfix에는 relay 옵션이 있는데요. 이를 통해 외부 SMTP 사용 기능을 제공하여 Gmail 등이 허용하는 smtp 릴레이 기능을 활용해 번잡한 메일 서버 구축 없이 위에 언급한 메일 발송을 가능하게 합니다. 오늘은 데비안 리눅스에서 이를 설치하고 Gmail SMTP가 이를 relay하도록 설정하는 방법을 이야기해 봅니다.

 

Postfix의 설치

   Ubuntu에서는 mailutils 패키지를 설치하면 postfix를 비롯한 대부분의 필요한 파일들이 설치되지만, Debian의 기본 MTA는 Exim입니다. Exim은 매우 강력한 MTA임에는 틀림 없지만, 단지 필요한 메일만 발송할 간단한 서비스를 위해서는 사치스러운 앱입니다. Exim이 설치되지 않도록 mailutils에 앞서 postfix를 별도로 설치해 줄 필요가 있습니다.

1
$ sudo apt-get install postfix libsasl2-modules ca-certificates
cs

   Postfix를 설정하는 과정에서 아래 그림과 같은 대화창이 열리면서 두 가지 정도를 물어봅니다. 설치 중인 기기가 외부와 연결되는 인터넷 사이트라면, 아래 그림대로 설정된 기본 상태에서 Tab키만 눌러 <OK>로 건너가서 엔터로 넘어가 줍니다.

   그 다음 화면에서는 이 기기의 인터넷 풀네임 즉, Fully Qualified Domail Name (FQDN)을 넣어 줍니다. 입력된 주소 example.org는 하나의 예입니다.

   이제 mailutils를 설치해 줍니다.

1
$ sudo apt-get install mailutils 
cs
 

 

Postfix의 설정

   설치가 끝나면 아래와 같이 postfix의 메인 설정 파일을 편집기로 엽니다.

1
$ sudo nano -w /etc/postfix/main.cf 
cs

   Nano 편집기가 열리면 

myhostname =

   이 부분을 찾아 아래와 같이 바꾸어 줍니다.

myhostname = example.org

   위 'example.org'는 하나의 예이며, 실제 여러분의 기기 Domain Name을 적어 줍니다.

   다시, 동일한 설정파일에서 아래와 같은 부분을 찾습니다.

relayhost =

   이를 아래와 같이 gmail smtp 주소를 relay하도록 바꾸어 줍니다.

relayhost = [smtp.gmail.com]:587

   이제 이 설정파일의 맨 아래 부분에 커서를 이동시키고 아래의 내용을 복사하여 붙여 넣습니다.

### add Gmail SMTP configuration

# enable SASL authentication
smtp_sasl_auth_enable = yes
# disallow methods that allow anonymous authentication.
smtp_sasl_security_options = noanonymous
# where to find sasl_passwd
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# Enable STARTTLS encryption
smtp_use_tls = yes
# where to find CA certificates
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

   설정파일의 편집을 모두 마쳤으므로 Control+X키를 누른 후 y로 저장해 준 후 nano 편집기를 빠져 나옵니다.

 

Gmail 로그인 인증을 위한 Credential 파일 등록

   아래외 같이 새 파일을 편집기로 열어 줍니다.

1
$ sudo nano -w /etc/postfix/sasl_passwd 
cs

   새 파일이 열리면 아래 내용과 같이 작성해 줍니다.

[smtp.gmail.com]:587 USERNAME@gmail.com:PASSWORD

   USERNAME@gmail.com 부분에는 여러분이 relay에 사용할 실제 gmail 계정을 입력하고 PASSWORD부분에도 해당 계정의 실제 비밀번호를 입력합니다. 이때 비밀번호에 #, $과 같은 특수문자가 있어도 그냥 입력해 주면됩니다.

   이제 Control+X 를 누른 뒤 y키로 저장 후 종료해 준 뒤 아래와 같이 postmap 명령을 이용해 해시 db 파일을 생성해 줍니다.

1
$ sudo postmap /etc/postfix/sasl_passwd 
cs

   그리고 로그인 계정과 비밀번호가 저장된 파일은 보안을 위해 아래와 같이 권한설정을 바꾸어 줍니다.

1
$ sudo chmod 600 /etc/postfix/sasl_passwd 
cs

 

Postfix 서비스 재시작 및 테스트 메일 발송

   이제 모든 설치 및 설정이 끝났습니다.  재부팅 없이 새 설정이 반영되도록 아래와 같이 postfix 서비스를 재시작 해 줍니다.[각주:1]

1
$ sudo systemctl restart postfix.service 
cs

   특별히 에러 메시지 없이 재시작되면, 아래외 같이 테스트메일을 보내 봅시다.

1
$ sudo echo "body of your email" | sudo mail -s "This is a Subject" -a "From: you@example.org" your-real@email.org 
cs

   이때  맨 끝의 your-real@email.org 는 반드시 테스트용 메일을 받아 볼 실제 이메일 계정이어야 합니다. 위에서 릴레이용으로 지정한 Gmail계정도 좋습니다.

   우리가 발송한 이메일이 잘 도착했다면, 성공적으로 설정을 마친 것입니다.

 

나오는 글

   이상과 같이 데비안 리눅스에서 Exim이 아닌 postfix를 MTA로 설치하고 외부 서비스인 Gmail의 SMTP 서비스를 이용하여 간단하게 시스템 메일을 받아 볼 수 있도록 발신전용 서비스를 구축해 보았습니다. 데비안 계열 운영체제가 많이 이식된 arm 프로세서를 사용하는 라즈베리파이 등 여러 개발 보드에서도 활용하기에 괜찮은 팁이라고 생각됩니다. [끝.]

 

 

P.S. 이 글은 Santiago Ti님의 「Configure Postfix to Send Mail Using an External SMTP Server」를 참조하여 작성하였습니다. 원 글은 Debian 7버전에 대한 가이드 문서지만, Debian 8 (Jessie)에서 실전 적용을 하며 검증하였으므로 문제 없이 작동할 것입니다.

  1. 만약 Debian Jessie 이전 버전을 사용하고 있다면 sudo service postfix restart 의 명령어로 재시작하여야 합니다. [본문으로]
Posted by truerain
l