Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Unsubscriber

Bulk-unsubscribe from newsletters in Apple Mail — carefully, and without losing mail you need.

English · Русский

All releases · macOS 13+ · Apple Silicon and Intel · ~3 MB

macOS 13+ Apple Silicon & Intel No dependencies License GPL-3.0

Results screen: senders with verdicts and checkboxes

The app finds newsletters across your mailboxes, shows you the list, and waits for your decision. It never sends or deletes anything on its own. Unsubscribing goes strictly through the official List-Unsubscribe header, and "delete" means moving to Trash, which is reversible.

  • Works with every mailbox configured in Apple Mail, all at once
  • No IMAP, no passwords: it drives Apple Mail via AppleScript
  • Remembers your decisions — each run asks you less
  • Tells you when a newer version is out — you install it yourself
  • English and Russian interface
  • macOS 13+, Apple Silicon and Intel

Why not just "unsubscribe from everything"

A List-Unsubscribe header does not mean the message is a newsletter. Mail.ru and Yandex attach it to personal correspondence too. Unsubscribing from everything carrying that header would cut you off from mail you actually want.

So the order here is fixed: scan → report → your confirmation → action. The app groups messages by sender, explains for each one why it looks like a newsletter (or doesn't), and waits. Until you press the button, nothing happens.

How it unsubscribes

Only the two safe methods from the List-Unsubscribe header:

  • one-click POST (RFC 8058) — a plain HTTP request; your mailbox isn't involved;
  • mailto — an email from your address. These are spaced out (4 seconds per mailbox, persisted across runs), because providers like Yandex and Mail.ru will lock an account that suddenly starts sending in bursts.

Links inside the message body are never clicked automatically — they can do anything, including confirming to a spammer that your address is alive. Those senders go into a separate "unsubscribe manually" list, where one click opens the relevant message in Mail.

Manual-unsubscribe block below the automatic list

Some services (Yandex and Kinopoisk, for example) return 404 on their own unsubscribe link — for those the app goes straight to the manual route, where the in-body button does work.

How it flows

Five steps: pick mailboxes → scan → report → unsubscribe → done. The bar at the top takes you back to any step.

Start Pick mailboxes and a period
Welcome screen Mailbox picker

Addresses in the second screenshot are covered — those are the author's real mailboxes.

Install

Download the ready build

Download Unsubscriber.zip → unzip → move Unsubscriber.app to Applications.

Then remove the quarantine flag, otherwise macOS won't let it open:

xattr -dr com.apple.quarantine /Applications/Unsubscriber.app

Alternatively: launch it, then go to System Settings → Privacy & Security → Open Anyway.

This step exists because the build isn't signed with an Apple Developer ID (that costs $99/year) and isn't notarized. Gatekeeper treats any such app the same way, regardless of what it does. You can check what you're running: the whole source is in this repository, and you can always build it yourself instead — see below.

On the first scan macOS will ask permission to control Apple Mail — it can't work without it.

Or build it yourself

git clone https://github.com/markov12/unsubscriber.git
cd unsubscriber/macos
./build.sh
open Unsubscriber.app

Requires Xcode Command Line Tools (xcode-select --install); full Xcode is not needed. No third-party dependencies — system frameworks only. A build made on your own machine isn't quarantined, so it opens without the step above.

Privacy

Your mail never leaves your Mac. No analytics, no telemetry, no account, no identifiers.

  • action log: ~/Library/Logs/Unsubscriber/session.log — local only;
  • your decisions and reports: ~/Library/Application Support/MailUnsubscriber/;
  • outgoing traffic is only: the unsubscribe requests themselves, and one request to api.github.com at launch asking for the latest release number. That request carries nothing about you — no address, no identifier, no usage data.

If you file a bug report from inside the app, your mailbox addresses are masked in the log, and you see the whole text before anything is submitted.

Limitations

  • Apple Mail only; your accounts must already be set up there.
  • Classification is rule-based, no ML. Ambiguous senders are honestly marked as ambiguous.
  • Subject keywords cover Russian and English. Other languages fall back to the language-independent signals (bulk headers, sender address, read ratio).
  • The build isn't notarized, hence the quarantine step on first launch.

Roadmap

  • A Windows version (Outlook) is planned. It won't share code with the macOS app — different mail client, different automation. What it will share: the classification rules, the List-Unsubscribe parsing, and the overall flow.
  • Signing and notarization, so the app opens with a normal double-click.

Hence the repo layout: macos/ holds the macOS app; folders for other platforms will appear next to it. Shared docs and the license live at the root.

Contributing

The easiest way to report a bug is from inside the app: the 💬 icon in the header. Details, and the project's hard constraints for code contributions, are in CONTRIBUTING.md.

License

GPL-3.0. Fork and improve it freely; if you distribute your version, its source must stay open too.

About

Bulk-unsubscribe from newsletters in Apple Mail, safely — macOS app. Массовая безопасная отписка от рассылок в Apple Mail.

Topics

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages