FastAPI, Gemini, Postmark를 활용한 이메일 기반 AI 어시스턴트 구축 및 배포 가이드
🤖 AI 추천
이 콘텐츠는 FastAPI를 활용한 백엔드 개발, Gemini LLM 연동, Postmark를 사용한 이메일 처리 및 AWS EC2를 이용한 서비스 배포 경험을 쌓고 싶은 백엔드 개발자 및 풀스택 개발자에게 매우 유용합니다. 특히, 실제 개발 과정에서 겪는 문제점(무한 루프 방지, 이메일 도메인 문제 등)과 해결 방안을 상세히 다루고 있어 실질적인 도움이 될 것입니다.
🔖 주요 키워드

이메일 기반 AI 어시스턴트 구축 및 배포 심층 분석
핵심 기술
이 글은 FastAPI 프레임워크, Google Gemini LLM, Postmark 이메일 서비스를 연동하여 사용자의 이메일을 받아 AI가 응답을 생성하고 다시 이메일로 회신하는 자동화 시스템을 구축하는 전 과정을 상세히 설명합니다. 특히, 실제 개발 및 배포 과정에서 발생하는 여러 기술적 난관과 해결 과정을 현실적으로 공유합니다.
기술적 세부사항
- 아키텍처:
- 사용자 이메일 전송 (Postmark 수신) ➝ FastAPI 웹훅 트리거
- FastAPI 백엔드에서 이메일 내용 추출 및 처리
- Gemini LLM을 이용한 AI 응답 생성
- Postmark을 통해 사용자에게 이메일 회신
- 주요 프레임워크 및 서비스:
- FastAPI: 웹훅 엔드포인트(
main.py
) 및 기본 서버 설정 - Gemini (Google Generative AI): 이메일 내용 분석 및 응답 생성 (
utils.py
) - Postmark: 이메일 송수신 및 관리에 사용 (
utils.py
)
- FastAPI: 웹훅 엔드포인트(
- 코드 구조:
main.py
: FastAPI 앱 설정, Postmark 인바운드 페이로드 모델 정의, 웹훅 엔드포인트 구현 (/inbound-email
)utils.py
: Gemini API 연동 함수 (get_response
), Postmark 이메일 발송 함수 (send_email_postmark
)
- 개발 및 배포 과정:
- 로컬 개발 환경: ngrok을 사용한 FastAPI 웹훅 노출 및 테스트
- Postmark 설정:
- MX 레코드 설정 및 도메인 연동 (
user@codewithpravesh.tech
사용) - 인바운드 도메인 포워딩 설정
- MX 레코드 설정 및 도메인 연동 (
- 이메일 루프 방지: 발신자가 자신인 경우(
sender == "assistant@codewithpravesh.tech"
) 응답하지 않도록 처리 - 배포 (AWS EC2):
t2.small
인스턴스 사용, 16GB 스토리지, Elastic IP 할당- 보안 그룹 설정 (HTTP, HTTPS, SSH)
- Nginx: 리버스 프록시 설정 (
app.codewithpravesh.tech
➝ EC2 IP) - Systemd 서비스: FastAPI 애플리케이션을 백그라운드에서 실행하고 재부팅 시 자동 시작되도록 설정 (
uvicorn
사용)
- DNS 설정:
app.codewithpravesh.tech
도메인을 EC2 Elastic IP로 연결
- 주요 문제 해결:
- Postmark에서 Public 이메일 도메인 미지원 문제 해결 (DEV++ 멤버십 혜택으로 Private 도메인 획득)
- 이메일 무한 루프 발생 및 해결
- Postmark 계정 승인 대기 중 422 에러 처리
개발 임팩트
이 프로젝트는 LLM을 실제 서비스에 통합하는 방법을 배우고, 이메일 기반의 자동화 워크플로우를 구축하는 실질적인 경험을 제공합니다. 또한, 웹 서비스의 로컬 테스트부터 클라우드 배포까지의 전반적인 MLOps 및 DevOps 파이프라인 경험을 쌓을 수 있습니다.
커뮤니티 반응
- 프로젝트는 오픈 소스로 GitHub에 공개되어 있으며, 코드 리뷰 및 기여가 가능합니다.
- 글쓴이는 Dev.to 챌린지를 통해 이 프로젝트를 진행했으며, Postmark와 Dev.to 팀에게 감사를 표하고 있습니다.
톤앤매너
전문적이고 실용적인 개발 블로그 톤으로, 기술적 도전 과제와 해결 과정을 솔직하게 공유하며 독자에게 유용한 정보를 제공합니다.
📚 관련 자료
FastAPI
이 프로젝트의 핵심 백엔드 프레임워크로 사용되었습니다. API 엔드포인트 정의, 웹훅 처리 등 모든 서버 로직이 FastAPI를 기반으로 구현되었습니다.
관련도: 95%
google-generative-ai
Google Gemini API를 Python으로 연동하는 데 사용된 라이브러리입니다. 이메일 내용을 처리하고 AI 응답을 생성하는 핵심 기능을 제공합니다.
관련도: 90%
Postmark
Postmark 서비스를 Python으로 연동하여 이메일을 발송하고 수신하는 기능을 구현하는 데 사용될 수 있는 공식 라이브러리입니다. (글에서는 requests 라이브러리를 직접 사용했으나, 연관성이 높음)
관련도: 85%