Skip to main content
Glama
comprehensive-spam-review.jsโ€ข14.4 kB
#!/usr/bin/env node import { FastMailClient } from './src/fastmail-client.js'; import dotenv from 'dotenv'; dotenv.config({ path: '../.env' }); async function comprehensiveSpamReview() { console.log('๐Ÿ” COMPREHENSIVE SPAM FOLDER REVIEW - DETAILED ANALYSIS\n'); const client = new FastMailClient( process.env.FASTMAIL_API_TOKEN, 'clark@clarkeverson.com', 'clark@clarkeverson.com', 'clarkeverson.com', 'https://api.fastmail.com/jmap/session' ); try { await client.authenticate(); const mailboxes = await client.getMailboxes(); const spamMailbox = mailboxes.find(mb => mb.name === 'Spam'); if (!spamMailbox) { console.log('โŒ Spam folder not found'); return; } console.log(`๐Ÿ“ง ANALYZING ALL ${spamMailbox.totalEmails} EMAILS IN SPAM FOLDER:`); console.log('='.repeat(80)); // Get target folders const infoParent = mailboxes.find(mb => mb.name === 'Information'); const financialParent = mailboxes.find(mb => mb.name === 'Financial'); const commerceParent = mailboxes.find(mb => mb.name === 'Commerce'); const professionalParent = mailboxes.find(mb => mb.name === 'Professional'); const personalParent = mailboxes.find(mb => mb.name === 'Personal'); const targets = { 'Information/Newsletters': mailboxes.find(mb => mb.parentId === infoParent?.id && mb.name === 'Newsletters'), 'Information/News': mailboxes.find(mb => mb.parentId === infoParent?.id && mb.name === 'News'), 'Financial/Receipts': mailboxes.find(mb => mb.parentId === financialParent?.id && mb.name === 'Receipts'), 'Financial/Banking': mailboxes.find(mb => mb.parentId === financialParent?.id && mb.name === 'Banking'), 'Commerce/Orders': mailboxes.find(mb => mb.parentId === commerceParent?.id && mb.name === 'Orders'), 'Commerce/Subscriptions': mailboxes.find(mb => mb.parentId === commerceParent?.id && mb.name === 'Subscriptions'), 'Professional/GitHub': mailboxes.find(mb => mb.parentId === professionalParent?.id && mb.name === 'GitHub'), 'Professional/Security': mailboxes.find(mb => mb.parentId === professionalParent?.id && mb.name === 'Security'), 'Personal/Travel': mailboxes.find(mb => mb.parentId === personalParent?.id && mb.name === 'Travel') }; let position = 0; let legitimateFound = []; let confirmedSpam = []; let processed = 0; while (position < spamMailbox.totalEmails) { const emailResult = await client.getEmails(spamMailbox.id, 50, position); if (!emailResult?.emails?.length) break; console.log(`\n๐Ÿ“ง Batch ${Math.floor(position/50) + 1}: Analyzing emails ${position + 1}-${position + emailResult.emails.length}`); for (const email of emailResult.emails) { const sender = email.from?.[0]?.email?.toLowerCase() || ''; const subject = email.subject || ''; const senderDomain = sender.split('@')[1]?.toLowerCase() || ''; processed++; // Comprehensive legitimate email detection const isLegitimate = // Major legitimate companies/services senderDomain.includes('amazon') || senderDomain.includes('apple') || senderDomain.includes('google') || senderDomain.includes('microsoft') || senderDomain.includes('paypal') || senderDomain.includes('stripe') || senderDomain.includes('github') || senderDomain.includes('salesforce') || senderDomain.includes('slack') || senderDomain.includes('zoom') || senderDomain.includes('adobe') || senderDomain.includes('dropbox') || senderDomain.includes('atlassian') || senderDomain.includes('jetbrains') || // Financial institutions senderDomain.includes('chase') || senderDomain.includes('schwab') || senderDomain.includes('fidelity') || senderDomain.includes('wellsfargo') || senderDomain.includes('bankofamerica') || senderDomain.includes('usbank') || senderDomain.includes('americanexpress') || senderDomain.includes('amex') || senderDomain.includes('discover') || senderDomain.includes('capitalone') || // Airlines/Travel (mentioned tickts) senderDomain.includes('united') || senderDomain.includes('delta') || senderDomain.includes('southwest') || senderDomain.includes('american') || senderDomain.includes('expedia') || senderDomain.includes('booking') || senderDomain.includes('priceline') || senderDomain.includes('kayak') || senderDomain.includes('hotels') || senderDomain.includes('airbnb') || senderDomain.includes('uber') || senderDomain.includes('lyft') || // Retail/Shopping senderDomain.includes('walmart') || senderDomain.includes('target') || senderDomain.includes('costco') || senderDomain.includes('homedepot') || senderDomain.includes('bestbuy') || senderDomain.includes('staples') || senderDomain.includes('wayfair') || senderDomain.includes('overstock') || senderDomain.includes('newegg') || senderDomain.includes('tigerdirect') || // Deal/Coupon sites (mentioned offers.com) senderDomain.includes('offers.com') || senderDomain.includes('groupon') || senderDomain.includes('livingsocial') || senderDomain.includes('woot') || senderDomain.includes('slickdeals') || senderDomain.includes('dealnews') || senderDomain.includes('retailmenot') || senderDomain.includes('honey') || // Streaming/Entertainment senderDomain.includes('netflix') || senderDomain.includes('hulu') || senderDomain.includes('spotify') || senderDomain.includes('youtube') || senderDomain.includes('twitch') || senderDomain.includes('steam') || // Professional/Career senderDomain.includes('linkedin') || senderDomain.includes('indeed') || senderDomain.includes('glassdoor') || senderDomain.includes('upwork') || senderDomain.includes('freelancer') || senderDomain.includes('fiverr') || // Health/Medical senderDomain.includes('mayoclinic') || senderDomain.includes('webmd') || senderDomain.includes('healthline') || senderDomain.includes('cvs') || senderDomain.includes('walgreens') || senderDomain.includes('rite-aid') || // Government/Official (.gov, .edu) senderDomain.includes('.gov') || senderDomain.includes('.edu') || senderDomain.includes('irs.gov') || senderDomain.includes('ssa.gov') || // Email marketing platforms (legitimate services) senderDomain.includes('mailchimp') || senderDomain.includes('constantcontact') || senderDomain.includes('sendgrid') || senderDomain.includes('mandrill') || senderDomain.includes('aweber') || senderDomain.includes('getresponse') || // Food delivery/restaurants senderDomain.includes('doordash') || senderDomain.includes('grubhub') || senderDomain.includes('ubereats') || senderDomain.includes('postmates') || // Utility companies senderDomain.includes('comcast') || senderDomain.includes('verizon') || senderDomain.includes('att.com') || senderDomain.includes('tmobile') || // Subscription boxes/services senderDomain.includes('birchbox') || senderDomain.includes('ipsy') || senderDomain.includes('lootcrate') || senderDomain.includes('dollar') || // Legitimate content that might be in spam (subject.toLowerCase().includes('receipt') || subject.toLowerCase().includes('order') || subject.toLowerCase().includes('confirmation') || subject.toLowerCase().includes('invoice') || subject.toLowerCase().includes('statement') || subject.toLowerCase().includes('ticket') || subject.toLowerCase().includes('reservation') || subject.toLowerCase().includes('booking') || subject.toLowerCase().includes('shipment') || subject.toLowerCase().includes('delivery')) && // BUT exclude obvious spam patterns !subject.toLowerCase().includes('tea trick') && !subject.toLowerCase().includes('weight loss') && !subject.toLowerCase().includes('blood sugar') && !subject.toLowerCase().includes('diabetes') && !subject.toLowerCase().includes('milf') && !subject.toLowerCase().includes('hookup') && !subject.toLowerCase().includes('wild night') && !subject.toLowerCase().includes('sexy') && !sender.includes('@students.') && !sender.includes('.edu.ng') && !sender.includes('.edu.gh') && !sender.includes('@unilorin.') && !senderDomain.includes('cube.dochltrowapp.com') && !senderDomain.includes('petsitedeal.com') && !senderDomain.includes('learnaboutquail.com') && !senderDomain.includes('makeupfridges.com'); if (isLegitimate) { legitimateFound.push({ id: email.id, from: sender, subject: subject, domain: senderDomain, preview: email.preview?.substring(0, 100) || '' }); } else { confirmedSpam.push({ from: sender, subject: subject.substring(0, 60) }); } } position += emailResult.emails.length; // Show progress if (processed % 100 === 0) { console.log(` ๐Ÿ“Š Progress: ${processed}/${spamMailbox.totalEmails} emails analyzed`); } } console.log('\n๐ŸŸข LEGITIMATE EMAILS FOUND IN SPAM:'); console.log('='.repeat(80)); if (legitimateFound.length === 0) { console.log('โœ… No additional legitimate emails found in spam folder'); } else { console.log(`๐Ÿ“ง Found ${legitimateFound.length} legitimate emails to rescue:`); console.log(''); let moved = 0; for (const email of legitimateFound) { console.log(`๐Ÿ“ง FROM: ${email.from}`); console.log(` SUBJECT: ${email.subject}`); console.log(` PREVIEW: ${email.preview}...`); // Categorize legitimate email let targetPath = null; // Financial/Banking if (email.domain.includes('schwab') || email.domain.includes('fidelity') || email.domain.includes('chase') || email.domain.includes('bank') || email.subject.toLowerCase().includes('statement') || email.subject.toLowerCase().includes('balance')) { targetPath = 'Financial/Banking'; } // Financial/Receipts else if (email.subject.toLowerCase().includes('receipt') || email.subject.toLowerCase().includes('payment') || email.subject.toLowerCase().includes('invoice') || email.domain.includes('paypal') || email.domain.includes('stripe')) { targetPath = 'Financial/Receipts'; } // Commerce/Orders else if (email.domain.includes('amazon') || email.domain.includes('walmart') || email.domain.includes('target') || email.domain.includes('bestbuy') || email.subject.toLowerCase().includes('order') || email.subject.toLowerCase().includes('shipped') || email.subject.toLowerCase().includes('delivery')) { targetPath = 'Commerce/Orders'; } // Travel else if (email.domain.includes('airline') || email.domain.includes('hotel') || email.domain.includes('expedia') || email.domain.includes('booking') || email.subject.toLowerCase().includes('flight') || email.subject.toLowerCase().includes('reservation')) { targetPath = 'Personal/Travel'; } // Professional/Security else if (email.subject.toLowerCase().includes('security') || email.subject.toLowerCase().includes('login') || email.subject.toLowerCase().includes('password') || email.subject.toLowerCase().includes('verification')) { targetPath = 'Professional/Security'; } // Professional/GitHub else if (email.domain.includes('github') || email.domain.includes('gitlab') || email.domain.includes('google') || email.domain.includes('microsoft') || email.domain.includes('adobe')) { targetPath = 'Professional/GitHub'; } // Default to Information/Newsletters else { targetPath = 'Information/Newsletters'; } if (targetPath && targets[targetPath]) { try { await client.moveEmailsToMailbox([email.id], targets[targetPath].id); console.log(` โœ… MOVED TO: ${targetPath}`); moved++; } catch (error) { console.log(` โŒ Error moving: ${error.message}`); } } console.log(''); } console.log(`๐Ÿ“Š RESCUED: Successfully moved ${moved} legitimate emails out of spam`); } console.log('\n๐Ÿ”ด CONFIRMED SPAM SAMPLES:'); console.log('='.repeat(60)); const sampleSpam = confirmedSpam.slice(0, 20); sampleSpam.forEach((email, index) => { console.log(`${index + 1}. ${email.subject} (${email.from.substring(0, 40)}...)`); }); if (confirmedSpam.length > 20) { console.log(`... and ${confirmedSpam.length - 20} more confirmed spam emails`); } console.log(`\n๐Ÿ“Š COMPREHENSIVE SPAM REVIEW COMPLETE:`); console.log('='.repeat(60)); console.log(`๐Ÿ“ง Total emails analyzed: ${processed}`); console.log(`โœ… Legitimate emails rescued: ${legitimateFound.length}`); console.log(`๐Ÿ—‘๏ธ Confirmed spam remaining: ${confirmedSpam.length}`); console.log(`๐Ÿ“ˆ Spam detection accuracy: ${((confirmedSpam.length / processed) * 100).toFixed(1)}%`); } catch (error) { console.log('โŒ Error:', error.message); } } comprehensiveSpamReview().catch(console.error);

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gr3enarr0w/fastmail-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server