이메일 기반 AI 어시스턴트 구축: FastAPI, Gemini, Postmark 활용 사례
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 대상: 웹 개발자, AI 프로젝트 개발자, 이메일 인프라 설계자
- 난이도: 중급 (FastAPI와 Gemini API 연동 경험 필요)
핵심 요약
- 핵심 기술 스택:
FastAPI
,Gemini
,Postmark
활용한 이메일 기반 AI 어시스턴트 구축 - 핵심 로직:
Postmark
를 통해 수신된 이메일 →FastAPI
웹훅 처리 →Gemini
로 응답 생성 →Postmark
로 재전송 - 주요 이슈 대응:
self-email
감지 로직(if sender == "assistant@codewithpravesh.tech":
)으로 무한 루프 방지
섹션별 세부 요약
1. 프로젝트 개요 및 워크플로우
- 이메일 수신 → Postmark 처리 → FastAPI 웹훅 트리거 → Gemini 응답 생성 → Postmark 재전송
- 사용 예시:
assistant@codewithpravesh.tech
로 이메일 보내면 30~60초 내 AI 응답 수신
2. 코드 구조 및 핵심 기능
main.py
: FastAPI 서버 설정 및 webhook 엔드포인트 정의
@app.post("/inbound-email")
async def receive_email(payload: PostmarkInbound):
sender = payload.From
if sender == "assistant@codewithpravesh.tech":
return {"message": "Self-email detected, skipping."}
utils.py
: Gemini API 연동 및 Postmark 이메일 전송 로직genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
model = genai.GenerativeModel("models/gemini-2.5-flash-preview-04-17-thinking")
3. 구현 과정 및 이슈
- Postmark 계정 설정: 공개 도메인 사용 불가 → Dev.to 팀의 DEV++ 멤버십으로 도메인(
codewithpravesh.tech
) 제공 - 무한 루프 문제:
self-email
감지 로직 추가로 해결 - 프로덕션 배포: AWS EC2(
t2.small
, 16GB 스토리지) 사용, Nginx + systemd 서비스 구성
4. 배포 및 운영
- EC2 설정:
- 인스턴스 타입: t2.small
- 보안 그룹: HTTP/HTTPS(0.0.0.0/0), SSH(사용자 IP)
- Nginx 구성:
```nginx
server {
listen 80;
server_name app.codewithpravesh.tech;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
}
}
```
- systemd 서비스:
email-assistant
서비스 생성 및 자동 시작 설정
결론
- 실무 팁:
- 테스트 환경: ngrok을 통해 웹훅 URL 노출
- DNS 설정: MX 레코드(inbound.postmarkapp.com
) 추가 및 A 레코드(app.codewithpravesh.tech
→ EC2 IP) 구성
- 서비스 관리: systemd 서비스 파일 생성으로 재시작 시 자동 실행 가능
- 프로젝트 핵심: AI 기반 이메일 어시스턴트 구현 시 Postmark + FastAPI + Gemini의 연동이 핵심이며, 자동화된 배포와 이슈 대응 로직이 필수적입니다.