How We Built Tempy.email with Privacy-First Design
Most email services store your messages in databases, index them for search, keep backups, and retain them indefinitely.
We do the opposite: Everything lives in memory. When your timer expires, data is gone.
The Privacy Problem with Traditional Email
When you use Gmail, Outlook, or any traditional email service:
- Emails stored on disk → Can be subpoenaed, breached, or sold
- Indexed for search → Creates metadata about your communications
- Backed up → Multiple copies exist, increasing exposure
- Retained indefinitely → Your 10-year-old emails still exist
- Scanned for ads → Content analyzed to target advertising
- Logs kept → IP addresses, timestamps, access patterns tracked
You never truly delete anything.
Even if you hit "delete," the data might exist in:
- Backup tapes
- Search indexes
- Server logs
- Compliance archives
- Legal hold systems
Our Approach: Memory-Only Architecture
tempy.email is built on one principle: If it's not in RAM, it doesn't exist.
Traditional Email:
User → Web Server → Database → Disk → Backups → Archives
(Data lives forever)
tempy.email:
User → Web Server → Redis (RAM only) → Expires → Gone
(Data lives 10 minutes)
No Persistent Storage
What we DON'T have:
- ❌ No PostgreSQL, MySQL, or any disk-based database
- ❌ No file storage (S3, disk, NAS)
- ❌ No backups
- ❌ No archives
- ❌ No logs of email content
- ❌ No "soft deletes" (marking as deleted but keeping data)
What we DO have:
- ✅ Redis (in-memory key-value store)
- ✅ TTL (Time-To-Live) on every key
- ✅ Automatic expiration
How Email Storage Works
When an email arrives:
// Store email in Redis with TTL
await redis.set(
`mailbox:${address}:emails`,
JSON.stringify(email),
'EX', 600 // Expires in 600 seconds (10 min)
);
After 10 minutes:
- Redis automatically deletes the key
- Memory is freed
- Data is completely gone (not marked as deleted, actually gone)
There's no "recovery" process because there's nothing to recover from.
What About Server Logs?
We minimize logging:
Traditional server logs:
2026-02-12 10:15:23 User [email protected] logged in from 203.0.113.5
2026-02-12 10:15:45 [email protected] opened email "Password Reset"
2026-02-12 10:16:12 [email protected] deleted 3 emails
tempy.email logs:
2026-02-12 10:15:23 Mailbox created (no email address logged)
2026-02-12 10:15:45 Email received (no content logged)
2026-02-12 10:25:23 Mailbox expired
We log events, not identifiable data.
Privacy Features
1. No User Accounts
You can't create an account even if you wanted to:
- No sign-up form
- No passwords
- No "My Account" page
- No user database
Why: Accounts create identity. We don't want to know who you are.
2. No Tracking or Analytics
Many "privacy-first" services still use:
- Google Analytics
- Facebook Pixel
- Mixpanel
- Hotjar
We use: None of the above.
We track only:
- Total mailboxes created (counter)
- Total emails processed (counter)
We don't track:
- Who created them
- When they were created
- What IP they came from
- What browser was used
3. No Email Content Scanning
We never analyze email content for:
- Advertising
- Machine learning training
- Pattern detection
- Content classification
Emails pass through our system unread by humans or algorithms.
4. No IP Logging
We don't log:
- Your IP address
- Your geolocation
- Your ISP
- Your device fingerprint
Why: Even "anonymized" IP logs can often be de-anonymized through correlation attacks.
5. No Third-Party Services
We don't use:
- CDNs that track (Cloudflare in privacy mode only)
- Analytics platforms
- Ad networks
- Social media widgets
- Third-party fonts (Google Fonts served locally)
Why: Every third-party service is a potential data leak.
Technical Implementation
Redis Configuration
// All keys have TTL by default
const DEFAULT_TTL = 600; // 10 minutes
// Mailbox key
await redis.setex(
`mailbox:${address}`,
DEFAULT_TTL,
JSON.stringify({ created: Date.now() })
);
// Email key
await redis.rpush(`mailbox:${address}:emails`, emailJson);
await redis.expire(`mailbox:${address}:emails`, DEFAULT_TTL);
Automatic Cleanup
Redis handles expiration automatically:
T+0: Email arrives → Stored in Redis
T+600s: TTL expires → Redis deletes key → Memory freed
No cron jobs. No manual cleanup. No "soft deletes."
Email Sanitization
Before storing emails, we sanitize HTML to prevent:
- XSS attacks
- Tracking pixels
- Malicious scripts
- Privacy leaks
var sanitizer = new HtmlSanitizer();
sanitizer.AllowedTags = ["p", "a", "b", "i", "ul", "ol", "li"];
// No <img>, no <script>, no tracking
var cleanHtml = sanitizer.Sanitize(rawHtml);
What We Can't Access
Even if we wanted to (we don't), we physically cannot:
- Recover deleted emails → No backups exist
- See historical data → TTL deletes everything
- Track user behavior → No logs to analyze
- Identify users → No accounts, no IPs logged
- Comply with data requests → No data to hand over
This isn't a policy decision. It's architectural.
Trade-offs We Accept
Privacy-first design means accepting limitations:
We CAN'T offer:
- ❌ Email search (no indexing)
- ❌ Long-term storage (10 min default)
- ❌ Email recovery (once expired, it's gone)
- ❌ User accounts (can't "save" mailboxes)
- ❌ Email forwarding to your real inbox
We CAN offer:
- ✅ Complete privacy
- ✅ Zero tracking
- ✅ Instant deletion
- ✅ No data breach risk (there's no data to breach)
- ✅ Peace of mind
Comparison with "Privacy-Focused" Email
| Feature | ProtonMail | Tutanota | tempy.email |
|---|---|---|---|
| Encryption | ✅ E2E | ✅ E2E | ⚠️ In transit only |
| Permanent storage | ✅ Yes | ✅ Yes | ❌ No (10 min TTL) |
| User accounts | ✅ Yes | ✅ Yes | ❌ No accounts |
| Data subpoena risk | ⚠️ Encrypted data exists | ⚠️ Encrypted data exists | ✅ No data to subpoena |
| IP logging | ⚠️ Optional | ⚠️ Optional | ❌ Never |
| Use case | Permanent private email | Permanent private email | Throwaway/testing |
ProtonMail and Tutanota are excellent for permanent private email.
tempy.email is for disposable use where you don't want data to exist at all.
The Bottom Line
Most services say: "We won't look at your data"
We say: "We can't look at your data (it doesn't exist long enough)"
Most services say: "We'll delete it if you ask"
We say: "It auto-deletes in 10 minutes whether you ask or not"
Most services say: "We're privacy-focused"
We say: "Privacy is our architecture"
This is privacy by design, not privacy by policy.
Try it: Generate a temp address and see for yourself. In 10 minutes, that email will be gone forever. Not "archived." Not "deleted." Gone.