Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 연관관계
- 인텔리제이 한글 깨짐 해결법
- 인텔리제이 기초 설정
- 포함관계
- IntelliJ IDEA
- function
- break문
- 형 변환
- While
- JAVA객체지향
- Java데이터 타입
- JAVA기초
- 메서드
- Thread
- this예약어
- 메서드 오버로딩
- 컴파일
- java변수
- 접근제어지시자
- 자바 멀티스레딩
- 집합관계
- Java
- 시스템 환경 변수 편집
- 상수
- 생성자
- 반복문
- multi-threading
- for문
- OPP개념
- continue문
Archives
- Today
- Total
최원종의 개발 블로그
V15-1 회원가입시 이메일 인증 처리 본문
SMTP 개념
Simple Mail Transfer Protocol의 약자.
단어 그대로 해석하면 간이 우편 전송 규약을 말함.
인터넷 세상에서 "이메일을 보낼 때 지켜야 하는 약속(규칙)"이라고 정의할 수 있음
개념 이해를 위한 예시
현실의 우체국 시스템에 비유하면 가장 이해가 빠름.
- **편지**: 우리가 작성한 이메일 내용
- **보내는 사람(집)**: 우리의 Spring Boot 서버 (내 컴퓨터)
- **우체통/우체국**: SMTP 서버 (구글 메일 서버)
- **집배원**: SMTP 프로토콜 (편지를 배달하는 규칙)
우리가 편지를 써서 우체통에 넣으면, 우체국이 알아서 상대방 주소로 배달해줌.
마찬가지로, 스프링 부트가 메일을 써서 구글 SMTP 서버에게 "이것 좀 배달해줘!"
하고 던져주는 역할을 하는 것이 바로 SMTP.
SMTP의 핵심 특징
1. 보내는 전용
- SMTP는 오로지 메일을 발송(Push)할 때만 사용
- 반대로 메일을 확인(수신)할 때는 POP3나 IMAP이라는 다른 프로토콜을 사용
- ex) 우리는 지금 회원가입 인증번호를 보내기만 하면 되니까 SMTP만 있으면 됩니다!
[우리 집] [우체국/물류센터] [친구 집]
(Spring Boot) (Google/Naver) (User/Browser)
| | |
| (1) 편지 발송 | |
| -------------------------> | |
| SMTP (Port 587) | |
| "배달 부탁해요!" | (2) 메일함에 저장 |
| | -------------------------> |
| | |
| | |
| | (3) 편지 확인 |
우리는(Spring Boot) 우체국(Google)에 편지를 밀어넣기만(Push) 함. 이게 SMTP이다
2. 중계 역할을 함
- 내 컴퓨터가 직접 친구 컴퓨터로 메일을 꽂아주는 게 아닙니다
- 전송 경로: 내 컴퓨터 → 구글 SMTP 서버 → 수신자 메일 서버 → 수신자 메일함
- 이 과정에서 서로 통신하는 언어가 바로 SMTP입니다
포트 번호의 의미
- 포트 25: 원래 SMTP의 기본 포트이지만, 스팸 메일 방지를 위해 많은 ISP(인터넷 서비스 제공자)에서 차단함
- 포트 587: SMTP 제출 포트 (Submission Port) - 일반 사용자가 메일 서버로 메일을 보낼 때 사용하는 표준 포트
- 포트 465: SSL을 사용하는 SMTP 포트 (구형 방식, 현재는 587번 포트에 STARTTLS 사용을 권장)
- 우리 프로젝트에서는 587번 포트 + STARTTLS 방식을 사용함
팁💡
일반적인 평문(Plain text)으로 서버와 연결을 맺은 다음,
클라이언트(스프링 부트)가 서버(구글)에게 STARTTLS라는 명령어를 날린다
그러면 양측이 합의하여 그 순간부터 모든 통신을 TLS(Transport Layer Security, 전송 계층 보안)로
암호화해서 주고받게 된다.
STARTTLS는 회원가입 인증번호나 비밀번호 같은 민감한 정보가 담긴 메일을
누군가 중간에 가로채서(스니핑) 읽지 못하도록, 일반 연결을 안전한 암호화 연결로
'업그레이드'해 주는 최신 표준 기술이다.
현재 구글(Gmail)을 포함한 대부분의 메일 서버에서 이 방식을 강력하게 권장하고 있다.
구글(Google) SMTP 쓰는 이유
직접 메일 서버를 구축하는 것의 어려움
1. 복잡한 설정: DNS 설정(MX 레코드, SPF, DKIM, DMARC 등)이 필요함
2. 보안 문제: 잘못 설정하면 스팸 발송 경로로 악용될 수 있음
3. 신뢰도 문제: 새로운 IP에서 발송되는 메일은 스팸으로 분류될 확률이 높음
4. 유지보수: 서버 관리, 모니터링, 장애 대응이 필요함
5. 비용: 서버 운영 비용과 전문 인력이 필요함
구글 SMTP의 장점
1. 신뢰성: 구글은 이미 전 세계적으로 신뢰받는 메일 서비스 제공자임
2. 배달률: 구글에서 발송된 메일은 스팸 필터를 잘 통과함
3. 무료: 일반 Gmail 계정으로 하루 500통까지 무료로 발송 가능함
4. 편함: 앱 비밀번호만 발급받으면 바로 사용 가능함
5. 보안: Google의 강력한 보안 시스템을 그대로 활용할 수 있음
Gmail SMTP 사용 제한
- 일반 Gmail 계정: 하루 500통 제한
- Google Workspace 계정: 하루 2,000통 제한
- 실무에서 대량 발송이 필요한 경우: AWS SES, SendGrid, Mailgun 등의 전문 서비스 사용
'Spring boot 입문 > Spring boot 입문 -1' 카테고리의 다른 글
| V15-3 인증 이메일 발송 API 테스트 (0) | 2026.06.18 |
|---|---|
| V15-2 이메일 인증 기능 추가 사전준비 및 프로그램 흐름 (0) | 2026.06.18 |
| V14 소셜로그인(카카오) 리팩토링 (0) | 2026.06.09 |
| V13-6 회원 정보 수정 기능 수정 (0) | 2026.06.09 |
| V13-5 env 파일에 카카오 회원가입 비번 설정 (0) | 2026.06.08 |
