이메일 시스템 구축 (2026-03-02)

목표

contact@daebakcode.com 이메일 수신 + 관리자 페이지에서 답장 보내기

완료된 작업

1. 이메일 수신 시스템 (Cloudflare Email Routing + Worker)

  • Cloudflare Email Routing 활성화 (MX, SPF, DKIM 자동 설정)
  • 수신 주소: contact@daebakcode.com
  • Gmail 백업: ***************.com으로도 전달
  • Cloudflare Email Worker 생성 (daebakcode-email)
  • 수신 이메일 파싱 (multipart MIME, base64 UTF-8 디코딩)
  • WordPress 웹훅으로 전송 → 관리자 “받은 메시지”에 저장
  • Worker 배포: npx wrangler deploy (Workers & Pages에서 관리)
  • WordPress 웹훅 엔드포인트 추가 (includes/messages.php)
  • POST /wp-json/daebakcode/v1/email-webhook
  • 시크릿 키 인증 → daebakcode_message 포스트로 저장

2. 이메일 발송 시스템 (Brevo API)

  • Vultr VPS 포트 25 차단 → 직접 메일 발송 불가
  • Brevo (무료 300통/일) 가입 및 API 키 발급
  • 도메인 인증 (Cloudflare DNS에 4개 레코드 추가)
  • TXT: brevo-code (소유권 확인)
  • CNAME: brevo1._domainkey, brevo2._domainkey (DKIM)
  • TXT: _dmarc (DMARC)
  • daebakcode.com 도메인 인증 성공 (Authenticated)

3. 관리자 답장 기능 (admin/messages.php)

  • 답장 버튼 + 텍스트 입력 + 보내기 UI
  • Brevo API를 통한 이메일 발송 (contact@daebakcode.com 발신)
  • API 키 저장 설정 UI (받은 메시지 페이지 하단)
  • 발송 성공 시 읽음/답장완료 자동 처리

수정된 파일

  • includes/messages.php — 웹훅 엔드포인트 + 시크릿 키 초기화
  • admin/messages.php — 답장 AJAX + UI + CSS + Brevo API 키 설정

외부 설정

  • Cloudflare: Email Routing + Email Worker + DNS 레코드 (Brevo 인증)
  • Brevo: 계정 가입, API 키, 도메인 인증
  • Worker 파일: /tmp/daebakcode-email-worker/index.js

이메일 흐름

[수신]
누군가 → contact@daebakcode.com
  → Cloudflare Email Routing
  → Email Worker (MIME 파싱)
  → WordPress 웹훅 → DB 저장 (받은 메시지)
  → Gmail 백업 전달

[발신]
관리자 → 답장 버튼 → 내용 작성 → 보내기
  → WordPress AJAX → Brevo API
  → contact@daebakcode.com 이름으로 발송

서버 배포 완료

  • 테마 파일 scp + tar로 배포
  • Brevo API 키 wp option에 저장
  • 이메일 수신/발신 테스트 성공