Skip to main content

126mail-cleanup

Use this skill when the user wants to clean up, back up, or optimize their 126.com (NetEase) email account. Covers local backup, spam/subscription bulk deletion, and large attachment stripping. Commands: /126mail backup, classify, cleanup, strip, status.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
RabbitAI-Lab/rabbit-plugins-upstream
آخر نشاط في المصدر
٢٦ يوليو ٢٠٢٦ في ٢٠:٥٠
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٠
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
6 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
126mail-cleanup
description
Use this skill when the user wants to clean up, back up, or optimize their 126.com (NetEase) email account. Covers local backup, spam/subscription bulk deletion, and large attachment stripping. Commands: /126mail backup, classify, cleanup, strip, status.
version
1.0.0
license
MIT
metadata
{"openclaw":{"emoji":"📧","requires":{"bins":"[Truncated]","env":"[Truncated]","config":"[Truncated]"}}}
allowed-tools
["Bash","Read","Write","Edit","Glob","Grep"]
# 126 Mail Cleanup A step-by-step assistant for cleaning up, backing up, and optimizing your NetEase 126.com email account via IMAP. Designed to help reclaim cloud storage, reduce clutter, and create a reliable local archive. ## Why Use This Skill - **Local backup**: Download all emails and attachments to your machine — you own your data, not the cloud - **Cloud storage savings**: 126 free accounts have limited space (typically 3-5GB); stripping large attachments can reclaim gigabytes, avoiding the need to pay for premium storage - **Inbox hygiene**: Bulk-delete years of accumulated ads, subscriptions, and platform notifications while preserving important personal emails - **Safety first**: Every destructive operation has a preview, confirmation, and backup step — nothing is permanently deleted without your approval ## Commands | Command | Description | |---------|-------------| | `/126mail setup` | Configure IMAP credentials and verify connection | | `/126mail backup` | Download emails to local storage (supports resume) | | `/126mail classify` | Scan and classify all emails by sender domain | | `/126mail cleanup` | Interactively bulk-delete ads/subscriptions | | `/126mail strip` | Download large attachments locally, then replace originals with lightweight stubs on server | | `/126mail status` | Show current mailbox stats and cleanup progress | ## Setup — Step by Step ### Step 1: Enable IMAP Access on 126.com 1. Log in to https://mail.126.com in a browser 2. Go to **Settings (设置)** > **POP3/SMTP/IMAP** 3. Enable **IMAP/SMTP Service** 4. Generate an **Authorization Code** (授权码) — this is NOT your login password 5. Save this code securely ### Step 2: Configure the Skill Provide your credentials when prompted: ``` MAIL126_ADDRESS=your_email@126.com MAIL126_AUTH_CODE=your_authorization_code ``` ### Step 3: Verify Connection Run `/126mail setup` to test the IMAP connection. The skill will: - Connect to `imap.126.com:993` (SSL) - Send the required ID command (126 rejects clients without it) - List all folders with email counts and total sizes ## IMAP API Reference 126.com IMAP has several quirks. This skill handles them automatically, but here is the reference for transparency: ### Connection Requirements | Item | Value | |------|-------| | Server | `imap.126.com` | | Port | `993` (SSL) | | Auth | LOGIN with authorization code (not password) | | **ID Command** | **REQUIRED** — must send `ID ("name" "IMAPClient" "version" "1.0.0" ...)` after login, or server rejects operations | ### Folder Name Encoding (Modified UTF-7) Chinese folder names are encoded. Common mappings: | Display Name | IMAP Name | |-------------|-----------| | 已发送 (Sent) | `&XfJT0ZAB-` | | 草稿箱 (Drafts) | `&g0l6P3ux-` | | 已删除 (Trash) | `&XfJSIJZk-` | | 垃圾邮件 (Spam) | `&V4NXPpCuTvY-` | ### Rate Limits | Operation | Limit | |-----------|-------| | FETCH (download) | ~4GB per session before throttling | | SEARCH, SIZE queries | Unlimited | | UID SEARCH ALL | ~3 seconds | | UID SEARCH FROM | ~35 seconds per query | | UID COPY | ~0.25 sec/email, optimal batch = 50 | ### Critical Rule: Always Use UID, Never Sequence Numbers **This is the most important lesson.** IMAP sequence numbers shift after any deletion. If you delete email #5, then email #6 becomes #5, #7 becomes #6, etc. Using sequence numbers after deletions WILL operate on wrong emails. Always use `UID FETCH`, `UID STORE`, `UID COPY`, `UID SEARCH`. ## Phase 1: Local Backup (`/126mail backup`) ### What It Does - Downloads all emails (including attachments) from all folders - Saves each email as `message.eml` with a `_meta.json` sidecar - Organized as: `backup_dir/folder_name/UID_subject/` - Supports **resume on interruption** — tracks progress in `_download_progress.json` ### Batch Strategy - Downloads in batches of **500 emails or 4GB** (whichever comes first) - Pauses between batches to avoid hitting 126's rate limit - Reconnects every 20 emails to prevent timeout - Socket timeout set to 300 seconds for large attachments ### Key Decisions for User | Decision | Options | Recommendation | |----------|---------|----------------| | Which folders to back up | All / INBOX only / Custom | Start with INBOX + Sent | | Include attachments | Yes / Skip large ones | Yes (they're your data) | | Batch size | 100-500 emails | 500 (maximize before rate limit) | ## Phase 2: Email Classification (`/126mail classify`) ### What It Does 1. Fetches metadata (subject, from, to, date, size) for ALL emails via IMAP — no content download needed 2. Groups emails by sender domain 3. Classifies into categories: - **Platform/Ads**: LinkedIn, Amazon, PayPal, JD, Taobao, etc. - **Financial Notifications**: Banks, brokers, payment services - **Services**: Cloud, SaaS, travel booking - **Personal**: Individual senders, known contacts 4. Outputs `all_emails_meta.json` (full index) and `email_classification.json` ### Metadata-First Approach - SEARCH and ENVELOPE operations are NOT rate-limited on 126 - Can index 40,000+ emails in minutes - UID is tagged on every record for later operations ### Key Decisions for User | Decision | Options | Recommendation | |----------|---------|----------------| | Classification strictness | Aggressive / Conservative | Conservative — review before delete | | Time cutoff for deletion | All time / Before 2025 / Custom | Before current year (keep recent) | | Domain whitelist | Auto / Manual review | Always manually review KEEP list | ## Phase 3: Bulk Cleanup (`/126mail cleanup`) ### What It Does 1. Shows classified email counts by category 2. User reviews and approves DELETE_DOMAINS list and KEEP_DOMAINS list 3. **Safety net**: Copies target emails to a staging folder (e.g., "广告邮件") BEFORE deleting from INBOX 4. Deletes from INBOX via `UID STORE +FLAGS \Deleted` + `EXPUNGE` 5. Random-sample verification (10 emails spot-checked) ### The Safe Deletion Flow ``` INBOX emails ──UID COPY──> 广告邮件夹 (staging copy) │ └── UID STORE \Deleted + EXPUNGE (remove from INBOX) User verifies in web client... 广告邮件夹 ──permanent delete──> Gone (only after user confirms) ``` ### Key Decisions for User | Decision | Options | Recommendation | |----------|---------|----------------| | Deletion scope | By domain / By category / By date | By domain — most precise | | Staging folder | Create new / Use existing | Create "广告邮件" for review | | When to purge staging | Immediately / After 7 days / Manual | Manual — check in web client first | | Verification sample size | 5 / 10 / 20 | 10 random emails | ### Common DELETE_DOMAINS Reference ``` linkedin.com, crunchbase.com, amazon.com, jd.com, service.taobao.com, airbnb.com, booking.com, uber.com, ctrip.com, trip.com, godaddy.com, coursera.org, service.netease.com, insideapple.apple.com, accounts.google.com, intl.paypal.com, citibank.com, mail.meituan.com, sf-express.com, ... ``` ### Common KEEP_DOMAINS Reference ``` svb.com, gusto.com, berkeley.edu, alibaba-inc.com, live.com, 139.com, pku.edu.cn, ... ``` Always let the user review and customize these lists based on their own email history. ## Phase 4: Large Attachment Stripping (`/126mail strip`) ### What It Does (Two-Phase Safety Process) **Phase A — Download Only (read-only, no server changes)** 1. Search all folders for emails > threshold (default 50MB) 2. Download each email's attachments to local backup 3. Save metadata (`_meta.json`) for each 4. Track progress in `_progress.json` 5. Reconnect every 5 emails to avoid timeout **Phase B — Strip and Replace (destructive, requires explicit confirmation)** 1. For each downloaded email: - Fetch the full message with FLAGS and INTERNALDATE - Remove attachment parts from the MIME structure - Append a notice: `[附件已移除 - 已备份到本地]` with file list and original size - Upload the lightweight replacement (preserving original flags and date) - Delete the original heavy email 2. Track progress — resumable if interrupted ### Storage Savings Example | Before | After | Saved | |--------|-------|-------| | 70 emails @ 50-200MB each | 70 emails @ 5-50KB each | ~3.4GB | ### Key Decisions for User | Decision | Options | Recommendation | |----------|---------|----------------| | Size threshold | 10MB / 20MB / 50MB / 100MB | 50MB (best ROI) | | Which folders | All / INBOX only | All folders | | Verify downloads before stripping | Yes / Skip | Always Yes — Phase B is destructive | ## Error Handling | Error | Cause | Resolution | |-------|-------|------------| | `LOGIN failed` | Wrong auth code or IMAP not enabled | Re-generate authorization code at 126 settings | | `ID command rejected` | Missing ID command after login | Skill sends ID automatically — report if this occurs | | `FETCH timeout` | Rate limit hit (~4GB) | Save progress, wait 1-2 hours, resume | | `BAD command` | Folder name encoding wrong | Skill uses correct Modified UTF-7 | | Sequence number mismatch | Used sequence instead of UID | Skill always uses UID operations | ## Progress Tracking All operations save progress to JSON files: - `_download_progress.json` — Full backup progress - `_progress.json` — Large email strip progress - `cleanup_progress.md` — Human-readable summary This means every operation is **resumable**. If your connection drops, rate limit hits, or you close your laptop — just run the command again and it picks up where it left off. ## Recommended Workflow 1. `/126mail setup` — Connect and verify 2. `/126mail status` — See current mailbox state 3. `/126mail backup` — Full local backup (run multiple times if rate-limited) 4. `/126mail classify` — Index and classify all emails 5. `/126mail cleanup` — Review and bulk-delete ads/subscriptions 6. `/126mail strip` — Reclaim space from large attachments 7. `/126mail status` — Verify results ## Technical Notes - Python 3.6+ with `imaplib` and `email` (standard library only, no pip dependencies) - All IMAP operations use SSL (port 993) - Modified UTF-7 encoding handled automatically for Chinese folder names - ID command sent on every connection to satisfy 126's requirement - All file names sanitized to remove illegal characters - Duplicate attachment filenames handled with suffix numbering
عرض على GitHub