CoolFace
Apppublic

antonkach/outlook-spam-cleaner

sourceHugging Faceupdated 4mo agoView on Hugging Face
1likes
App README

Outlook-Spam-Cleaner

Αυτό το repo αφαιρεί την εξάρτηση από composio και παρέχει εργαλεία για να διαβάζεις και να καθαρίζεις τον φάκελο JunkEmail σε Outlook/Exchange Online χρησιμοποιώντας Microsoft Graph.

Quick contents:

  • —main.py: script που καθαρίζει το JunkEmail για τον interactive χρήστη (device code flow). Υποστηρίζει --dry-run.
  • —webhook.py: Flask webhook για Microsoft Graph change notifications (app-only flow).
  • —create_subscription.py: παράδειγμα για δημιουργία subscription για έναν χρήστη.
  • —requirements.txt: msal, requests, Flask.

Απαιτήσεις

  • —Python 3.8+

1) Εγγραφή εφαρμογής στο Azure AD

  • —Azure Portal → Azure Active Directory → App registrations → New registration.
  • —Σημείωσε Application (client) ID και Directory (tenant) ID.
  • —Για interactive (τοπικό) χρήση: δεν απαιτείται secret, θα χρησιμοποιήσουμε device code flow.
  • —Για webhook + subscription (server-to-server): Add a Client secret (Certificates & secrets) και σημείωσε το value.

2) Δώσε Permissions

  • —API Permissions → Microsoft Graph → Delegated permissions: Mail.ReadWrite (για main.py).
  • —Για webhook/subscriptions που δουλεύουν χωρίς interactive sign-in απαιτούνται Application permissions: Mail.ReadWrite.All (admin consent required). Admin consent χρειάζεται από tenant admin.

3) Περιβάλλον & εγκατάσταση

bash
python -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt

4) Εκτέλεση main.py (device flow, single user)

bash
export AZURE_CLIENT_ID=<your-client-id>
export AZURE_TENANT_ID=<your-tenant-id>
python main.py --dry-run

Το script θα εμφανίσει οδηγίες για το device-code flow: άνοιξε το URL και εισήγαγε τον κωδικό για να δώσεις πρόσβαση. Χρησιμοποίησε --dry-run πρώτα για να δεις τι θα διαγραφόταν.

5) Webhook + subscription (πιο κοντά σε real-time)

  • —Δημιούργησε Client secret και όρισε env vars:
bash
export AZURE_CLIENT_ID=<app-id>
export AZURE_TENANT_ID=<tenant-id>
export AZURE_CLIENT_SECRET=<client-secret>
export NOTIFICATION_URL=https://<your-public-host>/webhook
export TARGET_USER_ID=<user-id-to-monitor>
  • —Τρέξε το webhook (π.χ. για development με ngrok):
bash
python webhook.py
# σε άλλο τερματικό, έκθεσε το τοπικό port 5000 με ngrok
  • —Δημιούργησε το subscription:
bash
python create_subscription.py

Το subscription θα στέλνει notifications στο NOTIFICATION_URL. Το webhook.py θα ανταποκρίνεται στην validation handshake και, για κάθε notification, θα προσπαθεί να διαγράψει το μήνυμα με app credentials.

Σημαντικές Σημειώσεις

  • —Subscriptions λήγουν (max ~72 ώρες). Αυτοματισμός για επαναδημιουργία είναι απαραίτητος.
  • —Για παραγωγή: τρέξε το webhook σε HTTPS δημόσιο endpoint, υιοθέτησε certificate, logging και retry/backoff.
  • —Χρησιμοποίησε --dry-run για να αποφύγεις ανεπιθύμητες διαγραφές κατά το testing.
  • —Αν δεν θες app-wide permissions, μπορείς να χρησιμοποιήσεις delegated subscriptions για έναν χρήστη μέσω device flow, αλλά αυτό δύσκολα παίζει για unattended server.

Αν θέλεις, προχωρώ και:

  • —α) Να προσθέσω auto-renew για subscription (background task)
  • —β) Να προσθέσω λεπτομερή scripts για deployment (gunicorn+systemd)
  • —γ) Να κάνω commit & να φτιάξω παράδειγμα ngrok εντολών