send.grinda.ai · mail.rinda.ai · *.rinda.ai 제거 시 답장(reply) 파이프라인 영향과 단계별 안전 제거 절차
답장 연결은 도메인 문자열이 아니라 message_id 기반 매칭(Tier T1→T2→T4)이다. 그러나
답장이 물리적으로 도착하는 것은 도메인 MX에 100% 의존한다 — 도메인/MX 제거는 발송 중단·답장 영구 소실·워크스페이스 귀속 실패를 동시에 일으킨다.
| 지표 (90일) | 값 | 의미 |
|---|---|---|
| SES 계정 inbound | 13,213 | 전체 답장의 93% — rinda 도메인 |
| SendGrid 계정 inbound | 657 | send.grinda.ai |
| Unipile(gmail) inbound | 338 | 개인계정·별도 webhook |
| inbound → email_replies 연결률 | 23.3% | 나머지는 bounce·자동응답·뉴스레터 |
| workspace 자체 등록 도메인 | 1 | sperone.co.kr(failed) — 사실상 0 |
→ 모든 워크스페이스가 Rinda 공용 도메인 풀에 의존. 답장 자산이 소수 rinda 도메인에 집중.
| 경로 | provider | inbound/90일 | 물리 수신 의존 | email_replies |
|---|---|---|---|---|
MX→SendGrid Inbound Parse → /api/webhook/inbound | ses (rinda 도메인) | 13,213 | 그 도메인 MX | ✅ |
| 동일 경로 | sendgrid | 657 | send.grinda.ai MX | ✅ |
| SES Receipt→S3→polling worker (백업채널) | 고객 자체 SES | ~0 | SES Receipt Rule | ✅ |
/api/v1/unipile/webhook | unipile (gmail) | 338 | Unipile 폴링 | ✅ |
/api/v1/nylas/webhooks | nylas (gmail OAuth) | 1 | Nylas 구독 | ❌ repliedAt만 |
@ap-northeast-2.amazonses.com(750,406건), SendGrid는 @send.grinda.ai(63,002), gmail은 @mail.gmail.com(57,101).
답장의 In-Reply-To가 이 값을 echo → 도메인 문자열을 비교하지 않으므로 from 도메인을 바꿔도 매칭 로직 자체는 안 깨진다.
깨지는 지점은 ① 물리 수신(MX) ② to_email → user_email_accounts 워크스페이스 귀속 두 곳뿐.
| 제거 대상 | 심각도 | 발송 영향 | 답장 영향 |
|---|---|---|---|
send.grinda.ai | 치명 | 56.4만건/90일 발신 즉시 중단 (SendGrid 19 + SES 4 계정) | 5,999건/90일 + 과거 발송분 답장 전면·영구 차단 |
mail.rinda.ai | 치명 | 45계정 발신 중단 | 1,695건/90일 차단 |
chat / ask / intro …rinda.ai | 높음 | 각 SES 계정 발신 중단 | 각 100~2,796건 차단 (chat 큼) |
| gmail/outlook (unipile 252계정) | 없음 | 영향 없음 | 영향 없음 — 자체 도메인·별도 webhook |
| 도메인 | 발송 | 답장수신 | 답장대기 | 보유 replies |
|---|---|---|---|---|
| send.grinda.ai | 564,118 | 5,999 | 534,990 | 1,594 |
| chat.rinda.ai | 51,017 | 2,796 | 37,546 | 331 |
| mail.rinda.ai | 44,611 | 1,695 | 36,512 | 479 |
| gmail.com (unipile) | 32,146 | 267 | 6,800 | 1,429 |
| intro / ask / hello … | 3.9k~20k | 100~512 | 다수 | 60~123 |
한쪽만 내리면 더 위험하다(아래 함정). 반드시 순서대로, 각 단계 검증 후 다음으로.
-- 활성 발신 계정 SELECT email_address, provider, status FROM user_email_accounts WHERE email_address ILIKE '%@chat.rinda.ai' AND status='active'; -- 최근 30일 발송 중 답장 대기(미해결) SELECT count(*) FROM emails WHERE direction='outbound' AND from_email ILIKE '%@chat.rinda.ai' AND status='delivered' AND replied_at IS NULL AND sent_at >= now()-interval '30 days';
status='inactive'로. 발송은 멈추되 to_email 매칭은 살아 있어 잔여 답장이 계속 귀속된다.
UPDATE user_email_accounts SET status='inactive', updated_at=now() WHERE email_address ILIKE '%@chat.rinda.ai' AND status='active';
user_email_accounts soft delete → ④ workspace_sending_domains가 있으면 deleted_at 세팅.
to_email → user_email_accounts 매칭 실패 → isReply=false로 조용히 폐기(로그만 남음).SENDGRID_INBOUND_WEBHOOK_SECRET가 빈 값인데 SENDGRID_INBOUND_WEBHOOK_ENFORCE=true로 켜면 fail-closed로 전 도메인 답장이 401 차단된다. secret 설정 확인 후에만 flip. (config.ts:197–205)