feat: self-hosted postfix

This commit is contained in:
2026-01-24 08:43:50 +01:00
parent e46cb018fd
commit eeed88eba4
16 changed files with 2830 additions and 652 deletions

View File

@@ -0,0 +1,23 @@
-- CreateTable
CREATE TABLE "email_logs" (
"id" SERIAL NOT NULL,
"recipient" TEXT NOT NULL,
"subject" TEXT,
"message_id" TEXT,
"status" TEXT NOT NULL,
"sent_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"error_message" TEXT,
"bounce_type" TEXT,
"bounce_details" JSONB,
CONSTRAINT "email_logs_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE INDEX "email_logs_recipient_idx" ON "email_logs"("recipient");
-- CreateIndex
CREATE INDEX "email_logs_status_idx" ON "email_logs"("status");
-- CreateIndex
CREATE INDEX "email_logs_sent_at_idx" ON "email_logs"("sent_at");

View File

@@ -32,3 +32,20 @@ model News {
@@map(name: "news")
}
model EmailLog {
id Int @id @default(autoincrement())
recipient String
subject String?
messageId String? @map("message_id")
status String // 'sent', 'failed', 'bounced'
sentAt DateTime @default(now()) @map("sent_at")
errorMessage String? @map("error_message")
bounceType String? @map("bounce_type")
bounceDetails Json? @map("bounce_details")
@@index([recipient])
@@index([status])
@@index([sentAt])
@@map(name: "email_logs")
}