메일 서버 준비하기 (AWS로 시작하는 인프라 구축의 정석)
본 포스트는 AWS로 시작하는 인프라 구축의 정석 책을 활용한 스터디 기록입니다.
(CHAPTER 11 메일 서버 준비하기)
📩 메일을 전송하고 싶다면?
메일 전송 시스템
메일 전송 시스템을 크게 보면 메일을 보내는 송신자, 메일을 받는 수신자가 있고 그 사이에서는 해당 메일을 전달해주는 메일 서버가 있습니다!
- 송신자는 작성한 메일을 자신이 사용하는(그림에서는 네이버 메일 서버) 메일 서버에게 보내며 메일 송신 요청을 합니다.
- 송신자의 메일 서버에서 인터넷을 통해 수신자 메일 서버로 메일을 전달합니다.
- 수신자의 메일함에 메일이 저장됩니다.
- 수신자가 메일을 확인합니다.
☁️ 메일 프로토콜
메일은 송신과 수신 두가지 작업이 있기 때문에 각각 전용 프로토콜이 따로 존재합니다!
송신 프로토콜 SMTP
송신 프로토콜은 SMTP를 사용합니다. SMTP는 Simple Mail Transfer Protocol로 메일 전송에 사용하는 프로토콜입니다. 위의 메일 전송 시스템 그림에서 1,2,3번에 해당하는 동작은 모두 SMTP 프로토콜을 사용해서 이루어집니다.
수신 프로토콜 POP3/IMAP4
수신 프로토콜은 POP3 혹은 IMAP4를 사용합니다.
- POP3: Post Office Protocol Version 3)
- IMAP4: Internet Message Access Protocol Version 4)
위의 메일 전송 시스템 그림에서 4번에 해당하는 동작은 POP3 혹은 IMAP4를 사용해서 이루어집니다.
POP3 VS IMAP4
수신 프로토콜은 POP3 혹은 IMAP4를 사용한다고 했는데.. 그럼 둘의 차이는 무엇일까요? 두 프로토콜의 가장 큰 차이는 ‘최종적으로 도착한 메일이 저장되는 위치’입니다.
POP3는 메일함의 메일을 로컬 컴퓨터에 내려받아 확인하는 형태입니다. 그렇기에 네트워크가 연결되지 않은 상태에서도 메일을 읽을 수 있지만, 로컬 컴퓨터에 각각 저장되기 떄문에 다른 컴퓨터에서는 메일을 읽을 수 없습니다.
반면 IMAP4는 브라우저 등을 이용해 직접 메일함의 메일을 읽는 형태입니다. 인터넷이 연결되어 있으면 어디서든 메일을 확인할 수 있습니다.
Amazon SES
Amazon SES는 메일 송수신 기능을 제공하는 AWS의 관리형 서비스입니다. (일반적으로 사람과 사람이 주고 받는 이메일이 아닌 애플리케이션에서 메일을 송수신하는 용도로 사용하기 좋은 서비스입니다!!)
메일 송신
SES를 사용해서 메일을 송신할 때에는 특정 사용자가 메일을 송신하는 것이 아니기 때문에 송신자를 나타낼 IAM 사용자가 필요합니다! IAM 사용자에게 SES 송신이 가능한 권한을 부여하고 SES에게 요청을 하면 됩니다!
메일 수신
SES를 통해 보낸 메일은 일반적인 메일 수신과 동일하게 각 메일 서버를 통해 읽을 수 있습니다.
SES가 자체적으로 POP3 혹은 IMAP4와 같은 프로토콜을 제공하지는 않으며(관리자가 수동으로 대응할 수 없다는 뜻), 대신 메일을 수신했을 때 액션이라 불리는 처리를 실행할 수 있습니다! 액션을 사용해 애플리케이션에서 제공하는 커스텀 API를 실행할 수 있으며 다른 AWS 서비스와의 연동도 가능합니다!
- S3 액션: 도착한 메일을 S3에 저장
- SNS 액션: 도착한 메일을 SNS 토픽에 공개 (이렇게 하면 메일에 대해 관리자에게 알림을 보내는 등의 동작을 처리할 수 있다)
- Lambda 액션: Lambda 함수 실행
- Bounce 액션: 송신자에게 바운스 응답(유효하지 않은 메일 등)을 반환
- Stop 액션: 도착한 메일 무시
샌드박스
샌드박스란 외부에 영향을 주지 않도록 격리된 환경을 뜻합니다. Amazon SES는 악용을 방지하기 위해 샌드박스 내부에 위치시키는데요!
샌드박스 내부에서는 규칙이 있습니다.
- 메일 송신 대상지는 검증된 주소로만 한정된다.
- 메일 송신지는 검증된 주소 또는 등록된 도메인으로만 한정된다.
- 송수신할 수 있는 메일 건수는 200건/24시간 또는 1건/1초로 제한된다.
샌드박스 외부로 이동하기 위해서는 AWS 지원 센터로 직접 요청을 해야합니다..!
참고
https://www.cloudflare.com/ko-kr/learning/email-security/what-is-smtp/
Comments