31 lines
1.3 KiB
SQL
31 lines
1.3 KiB
SQL
-- [Ariweb Suite 변경] 1.0.11+ariweb: 발송 대기열과 악용 의심 표(Dev-Order §17.2).
|
|||
|
|
-- outbound_queue: 발송 모듈(Resend/Haraka/SMTP 중계)에 넘기기 직전부터 끝날 때까지의 기록. 프로세스가 중간에 죽으면 'interrupted' 로 남아 관리자가 다시 보낼 수 있습니다(메일을 잃지 않음).
|
||
|
|
-- state: sending(발송 중) → sent(끝) | failed(발송 모듈 오류, 재시도 가능) | interrupted(재시작으로 끊김)
|
||
|
|
-- abuse_flags: 제출 속도 초과(초당 10건 이상) 등 운영자가 확인할 신호. 메일 내용은 넣지 않습니다.
|
||
|
|
CREATE TABLE outbound_queue (
|
||
|
|
id TEXT PRIMARY KEY,
|
||
|
|
domain TEXT NOT NULL,
|
||
|
|
mailbox TEXT NOT NULL DEFAULT '',
|
||
|
|
send_key TEXT,
|
||
|
|
payload_json TEXT NOT NULL,
|
||
|
|
state TEXT NOT NULL DEFAULT 'sending' CHECK(state IN ('sending','sent','failed','interrupted')),
|
||
|
|
attempts INTEGER NOT NULL DEFAULT 0,
|
||
|
|
provider_id TEXT,
|
||
|
|
error TEXT,
|
||
|
|
created_at TEXT NOT NULL,
|
||
|
|
updated_at TEXT NOT NULL,
|
||
|
|
sent_at TEXT
|
||
|
|
);
|
||
|
|
CREATE INDEX outbound_queue_state ON outbound_queue(state, created_at);
|
||
|
|
CREATE TABLE abuse_flags (
|
||
|
|
id TEXT PRIMARY KEY,
|
||
|
|
kind TEXT NOT NULL,
|
||
|
|
subject TEXT NOT NULL,
|
||
|
|
detail TEXT,
|
||
|
|
rate REAL,
|
||
|
|
created_at TEXT NOT NULL,
|
||
|
|
reviewed_at TEXT,
|
||
|
|
reviewed_by TEXT
|
||
|
|
);
|
||
|
|
CREATE INDEX abuse_flags_open ON abuse_flags(reviewed_at, created_at);
|