728x90
반응형

현재 운영중인 서비스 중 특정 프로세스에 접근 시 사용자 2차 인증 과정이 필요하다.

현 프로세스에서 2차 인증 시, 2가지 방식으로 인증이 가능하다.

1. FIDO 기반 2차 인증

2. 외부 메일을 통한 OTP 인증

위와 같이 2가지 방식으로 인증이 가능한데, 오늘은 2번 [외부 메일을 통한 OTP 인증] 시에 발생한 문제 사항에 대해 다루어 보려고 한다.

서론

현재는 OTP 인증 코드를 [일반 SMTP 발송]을 통해 처리하고 있었다.

평소에는 위와 같은 방식이 문제없이 처리 되었지만, 특정 시즌이 되면 사용자가 몰리는 특성을 가진 서비스이기에 사용자가 몰릴 경우 아래와 같은 크리티컬한 문제들이 발생했다.

1. 발신 서버 과부하

2. 수신자 서버에서 이메일을 거부하거나 스팸으로 분류

위 사항들을 개선하기 위하여 [SMTP 릴레이 발송]으로 프로세스를 변경하려고 한다.

변경하기 앞서 SMTP와 SMTP 릴레이 차이점과 장단점을 숙지해야한다고 판단하여 공부한 내용을 정리한다.

 

본론

그럼 일반 SMTP 발송과 SMTP 릴레이 발송에 대해서 알아보자

 

일반 SMTP 발송이란?

일반 SMTP(Simple Mail Transfer Protocol) 발송은 이메일을 발신자 서버에서 직접 수신자 서버로 전송하는 방식이다.

이 방법에서는 발신자와 수신자가 직접 통신하게 된다.

[장점]

1. 직접 전송: 이메일이 중간 서버를 거치지 않고 직접 전송되기 때문에 전송 경로가 단순
2. 간단한 설정: 설정이 비교적 간단하여 소규모 시스템이나 개인 사용자에게 적합

[단점]

1. 신뢰성 문제: 발신 서버 IP가 신뢰할 수 없는 경우 수신자 서버에서 이메일을 거부하거나 스팸으로 분류할 가능성이 큼
2. 대량 전송의 어려움: 대량의 이메일을 전송할 때 발신 서버가 과부하 가능성 높음
3. 스팸 방지 정책: 많은 수신자 서버가 스팸 방지를 위해 외부 서버로부터 직접 수신하는 이메일을 엄격하게 필터링함

 

SMTP 릴레이 발송이란?

SMTP 릴레이 발송은 이메일이 발신자 서버에서 중간 릴레이 서버를 거쳐 수신자 서버로 전달되는 방식이다.

릴레이 서버는 발신자와 수신자 간의 신뢰성과 전송 효율성을 높이는 중계 역할을 합니다.

[장점]

1. 신뢰성: 릴레이 서버는 종종 신뢰할 수 있는 인증을 거친 서버들이며, 이를 통해 이메일이 스팸으로 분류되지 않고 성공적으로 전달될 가능성이 높음
2. 대량 전송 처리: 릴레이 서버는 대량의 이메일을 처리할 수 있는 용량과 최적화된 전송 경로를 제공
3. 보안 강화: TLS와 같은 암호화 프로토콜을 지원하여 전송 중 이메일의 보안을 유지
4. 모니터링 및 로그: 이메일 전송 상태를 모니터링하고 로그를 통해 문제를 추적 가능
5. 부하 분산: 릴레이 서버는 여러 메일 전송 요청을 효율적으로 분산 처리하여 발신 서버의 부하를 줄임

[단점]

1. 복잡한 설정: 릴레이 서버 설정이 다소 복잡할 수 있으며, 별도의 서비스 계약이 필요할 수 있음
2. 비용: SMTP 릴레이 서비스를 사용하는 경우 추가 비용이 발생

 

SMTP 발송 vs SMTP 릴레이 발송: 어떤 것을 선택해야 할까?

일반 SMTP 발송

  • 적합한 경우: 소규모 환경, 개인 사용자, 간단한 이메일 전송이 필요한 경우.
  • 주요 고려 사항: 설정이 간단하지만, 신뢰성 및 대량 전송 처리에 제한이 있을 수 있다.

SMTP 릴레이 발송

  • 적합한 경우: 대규모 환경, 기업, 대량 이메일 전송, 이메일의 성공적 전달이 중요한 경우.
  • 주요 고려 사항: 설정이 복잡하고 비용이 발생할 수 있지만, 신뢰성, 보안, 대량 전송 처리에서 큰 장점을 제공한다.

 

결론

이메일 시스템의 필요에 따라 적절한 방식을 선택하는 것이 중요하다.

일반 SMTP 발송은 소규모 환경이나 개인 사용자에게 적합하지만, 대규모 환경이나 이메일의 성공적 전달이 중요한 경우에는 SMTP 릴레이 발송이 더 유리하다.

각 방식의 장점과 단점을 이해하고, 서비스 필요에 맞는 최적의 이메일 전송 방식을 선택해야겠다.


728x90
반응형

'Dev > CS' 카테고리의 다른 글

Apache-Tomcat server.xml 파일이란?  (0) 2024.05.16
[Library] 라이브러리 버전 업데이트  (0) 2024.04.25
[브라우저] 크로스 브라우징  (0) 2024.01.16
[WEB] HTTP 상태 코드  (0) 2023.10.19
Redirect vs Forward 차이점  (2) 2023.10.16