이메일은 가장 효과적인 커뮤니케이션 방법중의 하나이기도 합니다. 그렇기 때문에 효율적인 이메일 시스템을 구축하는 것은 또한 중요한 요소이도 합니다.

여기에서는 직접 서버를 운영하고 있다면, 서버와 Gmail을 연동해 안정적으로, 신뢰성있는 메일을 보낼 수 있는 발신 전용 메일 서버 구축 방법에 대해서 살펴 봅니다.

[이메일 자동화] 가장 안정적인 Gmail을 이용한 발신 전용 메일 서버 구축 방법

쇼핑몰 구축기를 연재하는 이유

최근 지인이 워드프레스를 이용해 쇼핑몰 구축을 시도하면서 배웠던 배웠던 다양한 경험들을 해당 쇼핑몰 블로그에 연재해 왔는데요.

쇼핑몰이 상품만 파는 것이 아니라 쇼핑몰을 방문하는 고객들에게 열가지 유용한 정보를 제공하는 블로그의 효용성이 높다는 점을 십분 활용하고, 처음 시작하는 쇼핑몰의 신뢰성을 주기 위해 비록 삽질이지만 삽질기를 낱낱히 공개하기로 했다고 하네요.

그 쇼핑몰의 주소는  https://puripia.com로 아직도 공사중이기는 합니다.) 

쇼핑몰 구축 시 도와주었던 인연으로 그 쇼핑몰을 알리고 쇼핑몰 구축 경험담을 보다 널리 알리기 위해서 여기 happist.com에도 같이  공유합니다. 조금 사심이 있기는 합니다.

[이메일 자동화] 가장 안정적인 Gmail을 이용한 발신 전용 메일 서버 구축 방법

쇼핑몰을 운영하다보면 수많은 메일을 보내야 합니다.

수많은 메일을 신뢰성있는 메일 서버를 통해서 안정적으로 고객에게 전달할 수 있는 메일시스템이 절대적으로 필요합니다. 그렇지않으면 대부분의 메일은 스팸처리되어 고객들에게 제대로 전달되지 않습니다.

그렇기 때문에 많은 돈을 들여 메일 전용 서비스를 이용하기도 합니다. 그렇지만 사업 초기 단계에 메일 전용 서비스를 이용하기엔 다소 부담스럽습니다.

그렇기때문에 서버에서 발신 전용 서버를 만들고, 구글의 SMTP 릴레이 서비스를 이용한다면 많은 돈을 들이지 않고도 안정적인 메일시스템을 구축할 수 있습니다.

특히 월 5달러인 G Suite를 이용하면 하루 1만통의 메일을 구글 Gmail을 통해서 보낼 수 있기 때문에 아주 효율적이라고 할 수 있습니다.

1. 구글 G Suite의 SMTP 릴레이 서비스

오늘 아주 어렵게 우분투 서버와 구글 G Suite의 SMTP 릴레이 서비스를 연결했습니다.

SMTP 릴레이(Relay)서비스 이게 뭘까요?

릴레이(Relay)의 사전적 정의는 우리가 많이 들었던 릴레이 경기, 즉 이어 달리기와 닿아 있습니다.

이를 메일서버에 적용하면 외부 네트워크에서 해당 메일서버(smtp서버)를 경유해서 목적하는 곳으로 메일을 보내는 것을 말합니다.

구체적으로는 제가 운영하는 쇼핑몰인 puripia.com에서 바로 고객 이메일 주소로 메일을 보내는 것이 아니라 구글 G Suite로 보내서 구글 Gmail이 메일을 보냅니다.

그러면 구글 Gmail이 메일을 보내는 것처럼 보이고, 받는 메일은 Gmail에서 받아 관리를 하는 방식이라고 거칠게 설명할 수 있습니다.

이렇게 구글 G Suite를 통해서 메일을 보내게 되면 몇가지 이득이 있습니다.

  • 구글 Gmail이 보낸 것으로 인식되기 때문에 신뢰성있는 메일로 인정을 받아 스팸 처리되지 않습니다.
  • 따라서 고객에게 제대로 전달될 확율이 높아집니다.
  • 구글 Suite 메일에서 스팸 필터와 같은 구글의 앞선 메일 관리 기술이 적용되어 안전합니다.
  • 별도 쇼핑몰 자체 메일 서버 운영할 필요가 없어져 운영이 간편해집니다.

여기에서는 우분투(Ubuntu) 서버에서 Postfix를 설치해 G Suite SMTP 릴레이 서비스를 연결하는 방법을 간단히 설명드립니다.

2. Postfix란 무엇일까요?

PostfixIBM Public License에서 공개한 오픈소스 MTA(mail transfer agent)입니다.

이전에는 메일 서버로 QMail이나 sendmail을 많이 사용했는데요. 요즘에는 이것들 대신 Postfix를 많이 사용합니다.

Postfix는 SASL(Simple Authentication and Security Layer)를 이용한 SMTP 인증을 지원해 간단하게 스팸들을 걸러낼 수 있다고 합니다.
Postfix에서 SMTP 인증을 위해서 Postfix 설치 시 libsasl 라이브러리를 함께 설치합니다.

2.1. Postfix 설치

Postfix 설치 시작 전에 우분투(Ubuntu)를 최신 상태로 만들어 놓습니다. 그리고 서버 전체 백업도 받아 놓는 게 좋겠죠.

전 Vultr을 사용하기 때문에 서버 전체를 백업해 놓는 Snapshot을 돌려 놓았습니다.

다음으로는 postfix와 libsasl2-modules 패키지를 설치합니다. 여러가지를 한꺼번에 설치하기 위해서는 아래와 같은 명령어를 실행합니다.

  • apt-get install postfix mailutils libsasl2-2 ca-certificates libsasl2-modules

2.2. Postfix 세팅

Postfix 설정 파일은 /etc/postfix/main.cf입니다.

이 파일을 열어서 G Suite의 Gmail을 활용해서 SMTP 릴레이(Relay)서비스가 가능토록 설정을 변경합니다.
주요하게 변경해야 하는 항목은 다음과 같습니다.

  • myhostname은 도메인 이름을 적습니다.
    myhostname = puripia.com
  • mydomain도 도메인 이름을 적습니다.
    mydomain = puripia.com
  • G Suite를 이용하는 경우 mydestination엔 도메인이 들어가지 않토록 합니다. 도메인이 들어가면 서버 내로 메일을 전달하려고 시도합니다.
    mydestination = localhost
  • Gmail에서 제대로 인식하기 위해서는 ehlo 설정해 줍니다.
    smtp_always_send_ehlo = yes
    smtp_helo_name = puripia.com
  • ipv6를 지원하지 않으므로 프로토콜을 ipv4로 제한합니다.
    inet_interfaces = loopback-only
    inet_protocols = ipv4
  • Postfix 릴레이 포트로 587을 사용, 25 포트가 막혔다는 설명도 있는데 구글에서는 사용가능하다는 답변을 했습니다. 저의 경우 25포트가 제대로 작동하지는 않았습니다. 다시 확인하니 구글에서도 SMTP 인증 후 나가는 메일은 587포트 이상만 허용하고 있네요.
    G Suite를이용한다면 [smtp-relay.gmail.com]:587를 적용하고, 일반 Gmail을 이용한다면 [smtp.gmail.com]:587를 적용합니다.
    relayhost = [smtp-relay.gmail.com]:587
  • SMTP 인증이 가능토록 만듭니다.
    smtp_sasl_auth_enable = yes
    smtp_sasl_security_options = noanonymous
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
  • TLS parameters 설정
    smtp_use_tls = yes
    smtp_tls_CAfile=/etc/postfix/cacert.pem
    smtp_tls_key_file=/etc/letsencrypt/live/puripia.com/privkey.pem
    smtp_tls_cert_file=/etc/letsencrypt/live/puripia.com/cert.pem
    smtp_tls_security_level=encrypt

2.3. G Suite 또는 Gmail 계정 설정

다음으로는 smtp_sasl_password_mapsd에서 지정한 파일에 G Suite 또는 Gmail 계정에 접속 가능토록 사용자 및 비밀번호를 설정합니다.

위에서 설정한 /etc/postfix/sasl_passwd을 열어 지정합니다.

여기에는 G Suite를 이용하는 경우와 일반 Gmail을 이용하는 경우가 조금 다릅니다.

  • G Suite를 이용하는 경우
    사용자는 G Suite 계정 메일의 앞부분을 말합니다. 즉 sample@Gsuite.com이라면 사용자는 sample입니다.
    [smtp-relay.gmail.com]:587 사용자:G Suite 비밀번호
  • 일반 Gmail 이용하는 경우
    [smtp.gmail.com]:587 Gmail계정@gmail.com:Gmail비밀번호

2.4. 권한 부여

이렇게 만들어진 sasl_passwd와 sasl_passwd.db에는 SMTP에 대한 매우 중요한 정보가 들어 있기 때문에 권한을 강화해 줍니다.

오직 root 사용자만 읽고 쓸 수 있도록 합니다. 아래 명령을 사용합니다.

  • chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
  • chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

3. G Suite에서 설정

G Suite SMTP 릴레이 서비스를 이용하려면 G Suite에서 설정을 변경할 필요가 있습니다.
이는 구글 설명 ‘SMTP 릴레이: Google을 통해 Gmail이 아닌 발신 메일 라우팅’을 참조하세요

  • 먼저 G Suite 구글 관리 콘솔로 로그인합니다.
  • 관리 콘솔 홈페이지에서 앱 > G Suite > Gmail > 고급 설정으로 이동합니다.
  • 왼쪽 최상위조직을 선택해 Gmail 고급설정에서 SMTP 릴레이 서비스 설정으로 이동합니다.
  • 설정으로 마우스를 가져가 구성을 클릭합니다. 설정이 이미 구성된 경우에는 설정 위로 마우스를 가져가 수정 또는 다른 항목 추가를 클릭합니다.
  • 허용된 발신자 섹션에서 사용자로 ‘내 도메인의 등록된 Apps 사용자만’ 또는 ‘내 도메인의 주소만’을 선택합니다.
  • 인증섹션에서는 ‘지정된 IP 주소의 메일만 허용’하거나 ‘SMTP 인증 필요’에 체크합니다.
  • TLS 암호화 필요 체크박스를 선택
  • 저장
구글 G Suite에서 SMTP 릴레이 서비스 설정

4. 보안 단계 조정

여기까지하면 별 문제없이 작용하지만 때에 따라서는 모든 것이 정상인데도 사용자와 비밀번호를 받아드릴 수 없다는 메세지가 나오는 경우가 있습니다.

이 경우 구글에 문의하니 보안에서 ‘보안 수준이 낮은 앱 액세스 가능’토록 옵션 변경하거나 2단계 인증을 통해서 보안을 강화하라고 합니다.

전 우선 ‘보안 수준이 낮은 앱 액세스 가능’으로 우선 설정해 문제를 해결했습니다. 추후 상황을 보아서 불편하드라도 2단계 인증으로 변경할까 생각중입니다.

## 4. 보안 단계 조정

여기까지하면 별 문제없이 작용하지만 때에 따라서는 모든 것이 정상인데도 사용자와 비밀번호를 받아드릴 수 없다는 메세지가 나오는 경우가 있습니다.

이 경우 구글에 문의하니 보안에서 '보안 수준이 낮은 앱 액세스 가능'토록 옵션 변경하거나 2단계 인증을 통해서 보안을 강화하라고 합니다. 

전 우선 '보안 수준이 낮은 앱 액세스 가능'으로 우선 설정해 문제를 해경햇습니다. 추후 상황을 보아서 불편하드라도 2단계 인증으로 변경할까 생각중입니다.

참고로 구글 G Suite와 연결하는 SMTP 릴레이 오류 메세지는 “SMTP 오류 참조” 글을 참조하면 도움이 됩니다.

LEAVE A REPLY

Please enter your comment!
Please enter your name here