Amazon SES와 Sendmail을 이용한 메일 전달 시스템 구축하기 [2/2]
안녕하세요,
Amazon Simple Email Service(SES)와 AWS EC2를 이용하여
Gmail에서 메일을 주고 받을 수 있도록 시스템을 구축해보도록 하겠습니다.
지난번에는...
1. Amazon SES에서 도메인 인증하기
2. Amazon SES에서 이메일 인증하기
3. SMTP 계정 생성하기
이렇게 3가지를 진행했습니다.
Amazon SES와 Sendmail을 이용한 메일 전달 시스템 구축하기 [1/2]
안녕하세요, Amazon Simple Email Service(SES)와 AWS EC2를 이용하여 Gmail에서 메일을 주고 받을 수 있도록 시스템을 구축해보도록 하겠습니다. 제가 구축했었던 당시의 상황을 설명드리자면... AWS EC2를 통
wkcnlqkd202.tistory.com
오늘은 AWS EC2에서 sendmail을 이용해보고 Gmail과 연동을 해보겠습니다.
(AWS를 사용한지 별로 되지 않아 정보가 정확하지 않을 수 있습니다. 댓글로 지적해 주시면 참고하겠습니다!)
설정 & 구축하기
3. AWS EC2 - Sendmail
1) Sendmail 설치
$ sudo yum install sendmail sendmail-cf m4 |
콘솔에 위 명령어를 입력하여 sendmail과 관련 패키지까지 같이 설치합니다.
2) Sendmail 설정 변경
$ sudo su # vi /etc/mail/sendmail.mc |
Sendmail 설정파일은 root 사용자만 변경이 가능하기 때문에 root로 변경 후 설정파일을 open 합니다.
:set number |
sendmail.mc 파일을 open 했으면 line number를 표시하기 위해 위 명령어를 입력합니다.
(콜론 문자도 같이 입력해줘야 합니다.)
52 TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl 53 define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl ... 118 DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl |
52, 53번 line 앞에 있는 'dnl' 텍스트를 위와 같이 지워줍니다. (주석해제)
118번 line의 'Addr=127.0.0.1,' 텍스트를 위와 같이 지워줍니다.
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf |
수정이 완료 되었으면 설정파일을 변환해야합니다.
m4를 이용하여 설정파일을 변환해 줍니다.
# vi /etc/mail/access ... Connect:도메인 주소의 IP 입력 RELAY |
/etc/mail/access 파일을 open 하고, 맨 밑에 줄에
'Connect:도메인 주소의 IP RELAY'를 입력합니다.
당연히 저 노란색 구간에는 IP주소를 입력해야합니다.
# vi /etc/mail/local-host-names ... 도메인 입력 |
이번에는 /etc/mail/local-host-names 파일에 도메인을 입력해줍니다.
# vi /etc/mail/virtusertable ... USER_1@도메인 USER_1@gmail.com USER_2@도메인 USER_2@gmail.com |
/etc/mail/virtusertable 파일의 마지막에 자신의 도메인으로 받을 이메일 주소와 전달받을 gmail 주소를 입력해줍니다.
# makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable |
수정이 완료 되었으면 virtusertable 변경사항을 적용해야합니다.
위의 명령어를 마지막으로 모든 설정을 변경하였습니다.
# systemctl start sendmail.service (이미 작동 중이였다면 start 대신 restart) # systemctl enable sendmail.service |
이제 모든 설정을 변경하고 시스템을 (재)시작 해야합니다.
위의 명령어를 입력하여 sendmail 서비스를 시작합니다.
그리고 enable까지 하여 서버가 재부팅 되어도 자동으로 sendmail 서비스를 시작하도록 설정합니다.
4. Gmail 연동
AWS EC2에서 Sendmail 관련하여 모든 설정을 끝마쳤습니다.
다음으로는 Gmail과 연동할 차례입니다.
위 사진과 같이 Gmail의 설정 페이지로 접속합니다.
설정 → 계정 및 가져오기 → 다른 주소에서 메일 보내기 → 다른 이메일 주소 추가를 클릭합니다.
새로운 팝업 창이 뜨면 이름과 도메인 주소로 받을 이메일 주소를 입력합니다.
(Gmail 주소가 아닌 도메인의 이메일 주소입니다)
입력이 완료되면 '다음 단계'로 넘어갑니다.
이번에는 SMTP 정보를 입력해야합니다.
Amazon SES → Email Sending → SMTP Settings의 Server Name을 'SMTP 서버'에 입력
(Amazon SES 한국(서울) 지역을 쓰는 중이면 서버 이름은 'email-smtp.ap-northeast-2.amazonaws.com'입니다.)
IAM SMTP User의 SMTP 사용자 이름을 '사용자 이름'에 입력
IAM SMTP User의 SMTP 비밀번호를 '비밀번호'에 입력
포트는 587, 'TLS를 이용한 보안 연결(권장)'으로 설정되어 있는지 다시 한번 확인합니다.
완료 되었으면 계정 추가를 누릅니다.
그리고 Gmail로 인증 메일이 도착합니다.
인증번호 복사 붙여넣기 할 필요 없이 중간의 긴 링크를 클릭하여 인증을 완료합니다.
인증이 완료 되면 위와같이 계정이 추가됩니다.
그리고 밑에 '메일 답장 시'의 '메일을 받은 주소에서 답장하기'로 체크하면
받은 이메일 주소로 답장을 할 수 있습니다.
예를들어...
도메인 주소로 이메일을 받으면 답장할 때 보낸사람 주소가 도메인 이메일 주소로 되고,
Gmail 주소로 이메일을 받으면 답장할 때 보낸사람 주소가 Gmail로 됩니다.
'항상 기본 주소에서 답장'을 선택하면 어떤 이메일 주소로 받든지 Gmail 주소로 보내게 됩니다.
5. 테스트
Amazon SES, AWS EC2, Gmail 설정까지 모두 끝이 났습니다.
이제 정상적으로 이메일이 받아지는지 테스트를 한번 진행합니다.
1) 네이버 → 도메인 메일 주소
'테스트메일'이라는 제목으로 메일을 보내고 전송을 합니다.
Gmail 받은편지함을 보면 메일이 도착해있는 것을 확인하실 수 있습니다.
저 같은 경우에는 수신 주소가 도메인 메일 주소면 '1. 회사'로 자동 분류를 해놓았기 때문에
메일에 특정 태그가 붙어 있습니다.
2) Gmail 답장 → 네이버
이번에는 받은 메일에서 바로 답장을 해보겠습니다.
텍스트를 입력하고 '보내기'를 눌러 이메일을 전송합니다.
잠시 후, 네이버 수신함에 답장 메일이 수신된 것을 확인할 수 있습니다.
이렇게 테스트도 모두 끝이 났습니다.
Amazon SES와 Sendmail을 이용한 메일 전달 시스템 (Gmail 연동)이 끝났습니다.
Amazon SES를 이용하여 메일 전달 시스템을 구축하는 방법은 작성한 방법 이외에도 있습니다.
(Lambda와 S3를 이용하는 방식)
하지만 제가 따라서 했을때는 제한되는 부분도 많고, 명확하게 설명한 부분이 없어서
따로 글을 작성해 보았습니다.
다른 분들에게도 도움이 되기를 바라면서
다음에 다시 찾아오겠습니다.
긴 글 읽어 주셔서 감사합니다 :)
(AWS를 사용한지 별로 되지 않아 정보가 정확하지 않을 수 있습니다. 댓글로 지적해 주시면 참고하겠습니다!)