Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

126 Mail Cleanup

v1.0.0

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 delet...

0· 86· 1 versions· 0 current· 0 all-time· Updated 11h ago· MIT-0

Install

openclaw skills install 126mail-cleanup

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

CommandDescription
/126mail setupConfigure IMAP credentials and verify connection
/126mail backupDownload emails to local storage (supports resume)
/126mail classifyScan and classify all emails by sender domain
/126mail cleanupInteractively bulk-delete ads/subscriptions
/126mail stripDownload large attachments locally, then replace originals with lightweight stubs on server
/126mail statusShow 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

ItemValue
Serverimap.126.com
Port993 (SSL)
AuthLOGIN with authorization code (not password)
ID CommandREQUIRED — 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 NameIMAP Name
已发送 (Sent)&XfJT0ZAB-
草稿箱 (Drafts)&g0l6P3ux-
已删除 (Trash)&XfJSIJZk-
垃圾邮件 (Spam)&V4NXPpCuTvY-

Rate Limits

OperationLimit
FETCH (download)~4GB per session before throttling
SEARCH, SIZE queriesUnlimited
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

DecisionOptionsRecommendation
Which folders to back upAll / INBOX only / CustomStart with INBOX + Sent
Include attachmentsYes / Skip large onesYes (they're your data)
Batch size100-500 emails500 (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

DecisionOptionsRecommendation
Classification strictnessAggressive / ConservativeConservative — review before delete
Time cutoff for deletionAll time / Before 2025 / CustomBefore current year (keep recent)
Domain whitelistAuto / Manual reviewAlways 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

DecisionOptionsRecommendation
Deletion scopeBy domain / By category / By dateBy domain — most precise
Staging folderCreate new / Use existingCreate "广告邮件" for review
When to purge stagingImmediately / After 7 days / ManualManual — check in web client first
Verification sample size5 / 10 / 2010 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

BeforeAfterSaved
70 emails @ 50-200MB each70 emails @ 5-50KB each~3.4GB

Key Decisions for User

DecisionOptionsRecommendation
Size threshold10MB / 20MB / 50MB / 100MB50MB (best ROI)
Which foldersAll / INBOX onlyAll folders
Verify downloads before strippingYes / SkipAlways Yes — Phase B is destructive

Error Handling

ErrorCauseResolution
LOGIN failedWrong auth code or IMAP not enabledRe-generate authorization code at 126 settings
ID command rejectedMissing ID command after loginSkill sends ID automatically — report if this occurs
FETCH timeoutRate limit hit (~4GB)Save progress, wait 1-2 hours, resume
BAD commandFolder name encoding wrongSkill uses correct Modified UTF-7
Sequence number mismatchUsed sequence instead of UIDSkill 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

Version tags

latestvk970x8yt69nmadsaz3tjctxrpn84adpj

Runtime requirements

📧 Clawdis
Binspython3
EnvMAIL126_ADDRESS, MAIL126_AUTH_CODE
Config[object Object], [object Object], [object Object], [object Object]