# فعال‌سازی امن یادآور ایمیلی گرین‌روت

**وضعیت فعلی:** Worker و ذخیره خصوصیِ جداگانه منتشر شده‌اند؛ فرستنده، حساب Resend و کلید ارسال تنظیم نشده‌اند. هیچ ایمیل واقعی یا درخواست همکاری ارسال نشده است. موعدهای محلیِ دفتر کار، صف ارسال ایمیل نیستند.

سرویس: https://greenroot-followups.elasa2next.workers.dev/api/status
دفتر کار: https://greenroot-af0.pages.dev/outreach?lang=fa#email

## ۱. یک حساب ارسال بسازید — خودتان

برای اتصال آماده فعلی، حساب خودتان را در https://resend.com بسازید و کلید API مناسب ارسال ایجاد کنید. کلید را در چت، فایل HTML، فرم دفتر کار یا گیت نگذارید. هیچ حساب، هویت یا کلیدی برای شما ساخته نشده است.

## ۲. ابتدا آزمون فقط برای صاحب حساب

دامنه آزمایشی `resend.dev` فقط می‌تواند به ایمیل همان حساب Resend پیام بفرستد؛ برای دیگر کاربران باید دامنه خودتان تأیید شود. [1](https://resend.com/docs/knowledge-base/403-error-resend-dev-domain)

در Cloudflare Dashboard → Workers & Pages → `greenroot-followups` → Settings → Variables and Secrets، این سه مقدار را **به‌صورت Secret** تنظیم کنید:

| نام متغیر | مقدار موردنیاز |
|---|---|
| `RESEND_API_KEY` | کلید واقعی حساب ارسال؛ محرمانه |
| `EMAIL_FROM` | برای آزمون مالک: `onboarding@resend.dev` |
| `TEST_RECIPIENT` | آدرس ایمیل همان صاحب حساب Resend |

`RATE_SALT` قبلاً به‌صورت محرمانه و تصادفی ایجاد شده؛ آن را دست‌کاری نکنید. تغییر آن دسترسی دفترهای متصل و رمزگشایی لینک‌های لغو را مختل می‌کند.

اگر از ابزار خط فرمان استفاده می‌کنید، فرمان `wrangler secret put NAME` را از پوشه backend اجرا و مقدار را فقط در ورودی محرمانه فرمان وارد کنید؛ کلید در متن فرمان یا فایل عمومی نوشته نشود.

## ۳. آدرس خودتان را تأیید کنید

1. صفحه زنده دفتر کار را باز و «بررسی تأیید / سرویس» را بزنید.
2. آدرس ایمیل **خودتان** را وارد و رضایت ارسال حداقل داده کاری را علامت بزنید.
3. «درخواست ایمیل تأیید» را بزنید. «پذیرش درخواست توسط سرویس» به‌معنی تحویل یا خواندن نیست.
4. ایمیل دریافتی را باز و دکمه تأیید را بزنید. لینک ۳۰ دقیقه اعتبار دارد و صرفاً بازشدن لینک توسط اسکنر ایمیل کافی نیست؛ تأیید دکمه لازم است.
5. به دفتر کار برگردید، تأیید را تازه و کارهای واقعی در انتظار را همگام کنید.

بدون تأیید آدرس، یادآور کار به صف ارسال معتبر وارد نمی‌شود. اگر کلید یا فرستنده نادرست باشد، عملیات خطا می‌دهد و تحویل ادعا نمی‌شود.

## ۴. یک آزمون واقعی و کم‌حجم انجام دهید

- ابتدا یک مخاطب را به حالت پیش‌نویس ذخیره کنید؛ انتخاب مخاطب یا کلیک ایمیل، ارسال نیست.
- فقط اگر واقعاً پیام فرستاده‌اید، ارسال را ثبت کنید. به‌صورت پیش‌فرض بررسی پاسخ دو **روز تقویمی** بعد ساخته می‌شود؛ موعد قابل تغییر است.
- برای آزمون یادآور، موعد یک کار داخلی را خودتان به زمان نزدیک تغییر دهید و صف را همگام کنید؛ اقدامی بیرونی را به‌دروغ «انجام‌شده» ثبت نکنید.
- زمان‌بندی با **Alarm پایدار داخل ذخیره Worker** است، نه بازبودن مرورگر یا این گفتگو. تا زمانی که مشترک/داده پیگیری وجود دارد، حداکثر در فاصله‌های معمول ۳۰ دقیقه‌ای بررسی می‌شود؛ محدودیت سرویس، خطا و سهمیه ممکن است تأخیر ایجاد کند.
- این سامانه پیام را به خود شما می‌فرستد، نه دانشگاه، خیریه یا شرکت. صندوق پیام شما را نمی‌خواند، فرم نمی‌فرستد و شرکت ثبت نمی‌کند.

## ۵. پیش از فعال‌سازی عمومی

برای ارسال به کاربران دیگر، این‌ها لازم‌اند:

1. دامنه فرستنده واقعی خودتان را در Resend تأیید و `EMAIL_FROM` را به آدرس همان دامنه تغییر دهید. `pages.dev` یا آدرس نمونه `greenroot.example` فرستنده معتبر شما نیست.
2. یک Turnstile برای دامنه‌های سایت تنظیم کنید؛ `TURNSTILE_SITE_KEY` و `TURNSTILE_SECRET` را در Secrets بگذارید. دامنه‌های مجاز سرویس، سایت اصلی و آینه فعلی هستند.
3. `PRIVACY_CONTACT` را به ایمیل واقعی مسئول پاسخ‌گویی و `PRIVACY_NOTICE_URL` را به اطلاعیه واقعی HTTPS تنظیم کنید؛ مسئول، هدف پردازش، خدمات ثالث، نگهداری، حذف و حقوق کاربر روشن باشد. قالب سایت جای بررسی حقوقی و قراردادی را نمی‌گیرد.
4. هزینه، سهمیه، امنیت، قرارداد پردازش داده و مقررات محل کاربران را بررسی کنید.
5. فقط پس از این بررسی‌ها `TEST_RECIPIENT` را حذف کنید. تا نبود فرستنده، ضدسوءاستفاده و اطلاعات واقعی حریم خصوصی، حالت عمومی آماده تلقی نمی‌شود.

در این پیاده‌سازی از ذخیره SQLite جداگانه Durable Object استفاده شده و دیتابیس‌ها یا زمان‌بندی‌های پروژه‌های دیگر حذف یا تغییر نکرده‌اند. حساب برای افزایش سهمیه ارتقا نیافته است. هزینه/محدودیت بستگی به حساب و مصرف دارد؛ تضمین رایگان‌بودن نامحدود نیست. [2](https://developers.cloudflare.com/workers/platform/pricing/)

## حریم خصوصی و توقف

- آدرس صاحب دفتر، نام عمومی مجموعه، نوع کار و موعد به سرور می‌رود؛ **یادداشت، پیش‌نویس پیام، رزومه، مدرک هویتی، کلید یا پرونده سلامت نمی‌رود**.
- داده خصوصی در داده‌های عمومی سایت یا مخزن گیت ذخیره نمی‌شود. کلید دسترسی تصادفی مرورگر در پشتیبان قابل اشتراک صادر نمی‌شود.
- هر ایمیل لینک توقف دارد و دکمه «توقف و حذف یادآورهای سرور» در سایت هم موجود است. پیام قبلاً پذیرفته‌شده یا در حال ارسال را نمی‌توان پس گرفت.
- بازگرداندن پشتیبان در دستگاه جدید، دسترسی سرور را خودکار منتقل نمی‌کند؛ آدرس را دوباره تأیید کنید. آخرین دفتر تأییدشده برای آن آدرس فعال می‌شود تا یادآور تکراری ایجاد نشود.
- داده‌های کاربردیِ بدون فعالیت پس از حدود ۱۸۰ روز و گزارش پذیرش سرویس پس از حدود ۳۰ روز پاک‌سازی می‌شوند؛ نسخه‌های بازیابی و گزارش سرویس‌های ثالث تابع سیاست همان خدمات‌اند.
- ثبت صف، پذیرش API، تحویل و خواندن ایمیل متفاوت‌اند. دریافت واقعی در صندوق کاربر باید جدا آزموده شود.

**از هیچ کلید یا رمز واقعی در چت استفاده نکنید.** توکن‌های قبلاً افشاشده را تعویض و در تنظیمات محرمانه استقرار نیز به‌روز کنید.
