1 00:00:00,171 --> 00:00:06,014 [SPEAKER_01] Right now, the server processing your email is likely a massive bloated piece of software. 2 00:00:06,094 --> 00:00:12,498 [SPEAKER_01] I mean, it probably requires gigabytes of memory, a dedicated IT team, and a server rack that sounds like a jet engine. 3 00:00:12,538 --> 00:00:15,039 [SPEAKER_00] Yeah, that's pretty much the industry standard at this point. 4 00:00:15,259 --> 00:00:26,805 [SPEAKER_01] But today, we are looking at a piece of software that runs that exact same global communication protocol on less memory than it takes to load a single high resolution photo on your phone. 5 00:00:27,037 --> 00:00:28,818 [SPEAKER_00] which is just wild to think about. 6 00:00:28,838 --> 00:00:29,498 [SPEAKER_01] It really is. 7 00:00:29,778 --> 00:00:30,978 [SPEAKER_01] So welcome to the Deep Dive. 8 00:00:31,499 --> 00:00:38,681 [SPEAKER_01] Our mission today is to explore a radically simple, highly unconventional way to take back control of your digital communications. 9 00:00:39,442 --> 00:00:42,983 [SPEAKER_01] We're looking at a fascinating open source project called Double Email. 10 00:00:43,291 --> 00:00:50,035 [SPEAKER_00] And it completely upends our standard assumptions about what it actually takes to build and maintain communication infrastructure. 11 00:00:50,435 --> 00:00:53,617 [SPEAKER_00] We are just so used to throwing massive compute power at problems. 12 00:00:54,278 --> 00:00:57,640 [SPEAKER_00] We've totally forgotten how lightweight the internet was actually designed to be in the first place. 13 00:00:57,918 --> 00:01:04,223 [SPEAKER_01] Which makes you wonder why we tolerate the bloat at all, you know, especially when you consider the cost and control issues. 14 00:01:04,243 --> 00:01:07,786 [SPEAKER_01] We are essentially just renting space on someone else's behemoth servers. 15 00:01:08,106 --> 00:01:08,686 [SPEAKER_00] Exactly. 16 00:01:09,087 --> 00:01:17,033 [SPEAKER_00] And this whole conversation about taking back control of our data is exactly why organizations are actively turning to open source alternatives. 17 00:01:17,193 --> 00:01:20,455 [SPEAKER_01] Yeah, and that's actually why we partnered with Safe Server for today's deep dive. 18 00:01:21,016 --> 00:01:27,100 [SPEAKER_01] When you look at the default choices today, you are usually looking at really expensive proprietary tools. 19 00:01:27,220 --> 00:01:27,901 [SPEAKER_00] Oh, absolutely. 20 00:01:28,041 --> 00:01:31,203 [SPEAKER_00] The giants like Microsoft 365 or Google Workspace. 21 00:01:31,463 --> 00:01:31,663 [SPEAKER_01] Right. 22 00:01:31,803 --> 00:01:35,586 [SPEAKER_01] You pay a massive premium and your data just lives in their black box. 23 00:01:35,910 --> 00:01:42,412 [SPEAKER_00] The contrast is honestly stark when you evaluate the actual cost difference of switching to open source. 24 00:01:42,953 --> 00:01:44,873 [SPEAKER_00] But it's not even just the financial aspect. 25 00:01:45,153 --> 00:01:46,774 [SPEAKER_00] Think about the regulatory side of things. 26 00:01:46,854 --> 00:01:47,854 [SPEAKER_01] Oh, right, like compliance. 27 00:01:47,914 --> 00:01:48,174 [SPEAKER_00] Yeah. 28 00:01:48,655 --> 00:01:58,118 [SPEAKER_00] If you're an organization dealing with email retention policies or strict data protection laws, financial records, critical audit trails, data sovereignty is absolutely paramount. 29 00:01:58,518 --> 00:02:01,120 [SPEAKER_01] You really cannot afford to guess where your data lives. 30 00:02:01,661 --> 00:02:03,923 [SPEAKER_01] Or who holds the ultimate decryption keys, for that matter. 31 00:02:03,983 --> 00:02:04,463 [SPEAKER_00] No, you can't. 32 00:02:04,583 --> 00:02:07,505 [SPEAKER_00] And that is precisely the gap that SafeServer fills. 33 00:02:08,066 --> 00:02:15,092 [SPEAKER_00] They help organizations find and implement the right open-source solutions to replace those expensive proprietary monoliths. 34 00:02:15,692 --> 00:02:17,554 [SPEAKER_01] And they handle the entire lifecycle, right? 35 00:02:18,094 --> 00:02:25,520 [SPEAKER_01] From the initial consulting to figure out your exact needs, all the way to operating the software on secure servers located strictly within the EU. 36 00:02:25,740 --> 00:02:26,461 [SPEAKER_00] Yeah, full service. 37 00:02:26,792 --> 00:02:35,623 [SPEAKER_01] So if you want to regain total control of your infrastructure and ensure your data sovereignty, you definitely need to check them out at safeserver.de. 38 00:02:35,783 --> 00:02:38,587 [SPEAKER_00] Because having those infrastructure options is critical. 39 00:02:39,028 --> 00:02:45,576 [SPEAKER_00] And the source material we're looking at today provides a very unique, almost rebellious option for handling email. 40 00:02:45,918 --> 00:02:47,860 [SPEAKER_01] Rebellious is honestly the perfect word for it. 41 00:02:47,880 --> 00:02:53,166 [SPEAKER_01] We've got a stack of READDAM files, Git repositories, and website excerpts detailing Double. 42 00:02:53,627 --> 00:02:56,090 [SPEAKER_00] And the premise here is just extreme minimalism. 43 00:02:56,250 --> 00:02:56,871 [SPEAKER_00] Extreme is right. 44 00:02:57,031 --> 00:03:04,740 [SPEAKER_01] The source is defined Double as an SMTP server that's designed to send and receive emails according to one simple JSON configuration file. 45 00:03:05,092 --> 00:03:14,278 [SPEAKER_00] And to really appreciate how rebellious that is, we kind of need to understand the fundamental protocol first, SMTP, or a simple mail transfer protocol. 46 00:03:14,438 --> 00:03:17,641 [SPEAKER_01] An absolute backbone of email for decades. 47 00:03:17,801 --> 00:03:18,021 [SPEAKER_00] Right. 48 00:03:18,381 --> 00:03:24,265 [SPEAKER_00] Fundamentally, SMTP is just a set of rules for passing text from one computer to another over the internet. 49 00:03:24,285 --> 00:03:25,226 [SPEAKER_00] That is literally it. 50 00:03:25,578 --> 00:03:30,683 [SPEAKER_01] OK, let's unpack this because reading through these specs, the footprint almost looks like a typo to me. 51 00:03:30,843 --> 00:03:31,443 [SPEAKER_00] It really does. 52 00:03:31,523 --> 00:03:34,966 [SPEAKER_01] It claims to use only a quote, few megabytes of RAM. 53 00:03:35,367 --> 00:03:42,373 [SPEAKER_01] To put this in perspective for you, modern enterprise email servers feel like massive automated Amazon fulfillment centers. 54 00:03:42,473 --> 00:03:42,834 [SPEAKER_00] Oh, yeah. 55 00:03:43,234 --> 00:03:44,355 [SPEAKER_00] Miles of conveyor belts. 56 00:03:44,535 --> 00:03:45,155 [SPEAKER_01] Exactly. 57 00:03:45,475 --> 00:03:52,579 [SPEAKER_01] Robotic arms, sorting packages, huge databases tracking every item, heavy anti-spam heuristic engines checking every single box. 58 00:03:53,059 --> 00:03:57,741 [SPEAKER_01] But Dovel is pitching itself as a single local mailman walking his route with a leather satchel. 59 00:03:57,881 --> 00:03:58,862 [SPEAKER_00] That's a great way to put it. 60 00:03:59,254 --> 00:04:00,235 [SPEAKER_01] But I have to push back here. 61 00:04:00,576 --> 00:04:07,984 [SPEAKER_01] Can that local mailman actually survive the chaotic, spam-filled waters of modern email without all that automated machinery? 62 00:04:08,304 --> 00:04:16,013 [SPEAKER_00] Well, what's fascinating here is that the reason modern servers feel like those massive fulfillment centers isn't because the core job of sending a message is hard. 63 00:04:16,153 --> 00:04:17,034 [SPEAKER_01] Okay, then why is it? 64 00:04:17,615 --> 00:04:20,638 [SPEAKER_00] It's because we've bolted on decades of extra features. 65 00:04:21,451 --> 00:04:29,398 [SPEAKER_00] complex graphical web interfaces, integrated calendars, massive relational databases to index every single word of every email. 66 00:04:29,898 --> 00:04:32,881 [SPEAKER_01] Ah, and incredibly heavy runtime environments to support all that. 67 00:04:33,201 --> 00:04:33,802 [SPEAKER_00] Precisely. 68 00:04:34,382 --> 00:04:39,246 [SPEAKER_00] Dovel survives the chaos by simply refusing to build the fulfillment center in the first place. 69 00:04:39,827 --> 00:04:43,290 [SPEAKER_00] It's written in a programming language called Go, which is a compiled language. 70 00:04:43,662 --> 00:04:51,528 [SPEAKER_01] meaning it translates directly into the computer's native machine code rather than needing some heavy translator program running in the background all the time. 71 00:04:51,668 --> 00:04:52,148 [SPEAKER_00] Exactly. 72 00:04:52,208 --> 00:04:55,751 [SPEAKER_00] That makes it blisteringly fast and incredibly memory efficient. 73 00:04:56,371 --> 00:05:00,134 [SPEAKER_00] Plus, the sources highlight that it operates under the BSD3 clause license. 74 00:05:00,334 --> 00:05:02,756 [SPEAKER_01] Which is a very permissive open source license, right? 75 00:05:02,956 --> 00:05:03,617 [SPEAKER_00] Very permissive. 76 00:05:04,157 --> 00:05:12,163 [SPEAKER_00] It essentially means anyone can take this code, use it, modify it, or distribute it with very few restrictions as long as they keep the original copyright notice. 77 00:05:12,656 --> 00:05:12,956 [SPEAKER_01] Nice. 78 00:05:13,677 --> 00:05:19,580 [SPEAKER_01] And instead of using a complex relational database to store its settings, it just uses JSON. 79 00:05:20,040 --> 00:05:20,240 [SPEAKER_00] Right. 80 00:05:20,580 --> 00:05:30,686 [SPEAKER_01] For those who aren't software developers, JSON is basically just a plain text file structured in a highly readable way, kind of like a digital notepad with simple lists and labels. 81 00:05:30,726 --> 00:05:32,327 [SPEAKER_00] Yeah, it's entirely human readable. 82 00:05:32,547 --> 00:05:35,569 [SPEAKER_00] You don't need a special database query language to read it. 83 00:05:35,949 --> 00:05:37,750 [SPEAKER_00] You just open it in a basic text editor. 84 00:05:38,452 --> 00:05:42,295 [SPEAKER_01] So Devil focuses purely on the essential SMTP transactions. 85 00:05:42,475 --> 00:05:44,096 [SPEAKER_01] It loads incredibly fast. 86 00:05:44,556 --> 00:05:49,900 [SPEAKER_01] But I did notice it doesn't sacrifice modern security standards to achieve that minimalist footprint. 87 00:05:50,040 --> 00:05:50,801 [SPEAKER_00] No, not at all. 88 00:05:50,961 --> 00:05:53,563 [SPEAKER_00] So even though it's the solitary mailman, it's definitely not a toy. 89 00:05:53,791 --> 00:05:59,033 [SPEAKER_01] Yeah, the sources note it supports PGP encryption using the WKD standard right out of the box. 90 00:05:59,213 --> 00:06:00,393 [SPEAKER_01] What is WKD again? 91 00:06:00,673 --> 00:06:02,414 [SPEAKER_00] WKD stands for Web Key Directory. 92 00:06:02,994 --> 00:06:08,716 [SPEAKER_00] It's a modern standard that allows email clients to automatically discover the public encryption keys of the person you are emailing. 93 00:06:09,056 --> 00:06:09,416 [SPEAKER_01] Oh, wow. 94 00:06:09,436 --> 00:06:10,857 [SPEAKER_01] So you don't have to do that manually. 95 00:06:10,917 --> 00:06:11,097 [SPEAKER_00] Right. 96 00:06:11,457 --> 00:06:19,560 [SPEAKER_00] By supporting this natively, Dovel allows users to send end-to-end encrypted messages seamlessly without manually trading complex cryptographic keys beforehand. 97 00:06:19,887 --> 00:06:23,910 [SPEAKER_01] All right, I understand the philosophy, but how do you actually pilot this thing? 98 00:06:24,390 --> 00:06:28,153 [SPEAKER_01] The sources outline what they call five easy steps to self-host. 99 00:06:28,413 --> 00:06:30,194 [SPEAKER_00] Yeah, they make it sound very simple. 100 00:06:30,514 --> 00:06:34,477 [SPEAKER_01] And looking at the installation, it genuinely seems frictionless. 101 00:06:34,877 --> 00:06:35,718 [SPEAKER_01] You have two routes. 102 00:06:36,098 --> 00:06:39,641 [SPEAKER_01] If you have that Go programming language installed, you just run a single command. 103 00:06:40,301 --> 00:06:43,383 [SPEAKER_01] Go install double dot email server at v0.13.1. 104 00:06:43,403 --> 00:06:44,184 [SPEAKER_01] Yep, that's one way. 105 00:06:46,483 --> 00:06:50,787 [SPEAKER_01] Or, if you prefer using isolated software containers, they have a Docker image. 106 00:06:51,327 --> 00:06:57,793 [SPEAKER_01] You literally just type, docker run bleemidevel, point it to your configuration folder, and the software is running. 107 00:06:57,833 --> 00:07:00,075 [SPEAKER_00] And is remarkably fast to get running locally. 108 00:07:00,343 --> 00:07:03,165 [SPEAKER_01] I'm looking at these instructions, and honestly, I'm a bit skeptical. 109 00:07:03,565 --> 00:07:08,588 [SPEAKER_01] Surely pulling down a single binary file doesn't instantly make you a verified sender to Google or Microsoft, right? 110 00:07:08,608 --> 00:07:08,768 [SPEAKER_01] No. 111 00:07:08,928 --> 00:07:10,689 [SPEAKER_00] Your skepticism is entirely warranted there. 112 00:07:10,709 --> 00:07:15,752 [SPEAKER_00] The software installation is easy, but setting up the server software is really only half the battle of self-hosting email. 113 00:07:15,793 --> 00:07:16,473 [SPEAKER_01] That's what I figured. 114 00:07:16,673 --> 00:07:18,894 [SPEAKER_00] Getting the software running on your machine is one thing. 115 00:07:19,295 --> 00:07:24,658 [SPEAKER_00] Getting the rest of the internet to actually trust your machine is a completely different, much steeper hill to climb. 116 00:07:24,798 --> 00:07:30,500 [SPEAKER_01] Because you still have to configure your domain registrar and navigate the total alphabet soup of DNS records. 117 00:07:31,820 --> 00:07:33,560 [SPEAKER_01] Let me see if I have the basics of this right. 118 00:07:33,740 --> 00:07:34,100 [SPEAKER_00] Go for it. 119 00:07:34,501 --> 00:07:38,282 [SPEAKER_01] First, you have to set up your MX records or mail exchanger records. 120 00:07:38,842 --> 00:07:46,384 [SPEAKER_01] That's essentially publishing your home address in the global phone book so the world knows where to route messages intended for your domain. 121 00:07:46,504 --> 00:07:47,244 [SPEAKER_00] That's exactly right. 122 00:07:47,624 --> 00:07:49,484 [SPEAKER_00] But that only handles the incoming mail. 123 00:07:49,885 --> 00:07:51,345 [SPEAKER_00] The real challenge is outbound. 124 00:07:51,649 --> 00:07:51,909 [SPEAKER_01] Right. 125 00:07:52,089 --> 00:07:53,489 [SPEAKER_01] Getting past the spam filters. 126 00:07:53,509 --> 00:07:53,729 [SPEAKER_00] Yeah. 127 00:07:54,110 --> 00:08:02,111 [SPEAKER_00] If you want your outgoing emails to actually land in someone's inbox and not vanish instantly into a spam folder, you have to prove your identity to the receiving servers. 128 00:08:02,611 --> 00:08:08,533 [SPEAKER_01] And that requires properly configuring your PTR, SBF, DKIM, and DMARC records. 129 00:08:09,233 --> 00:08:12,214 [SPEAKER_01] We definitely need to translate that alphabet soup for everyone. 130 00:08:12,714 --> 00:08:13,954 [SPEAKER_01] Let's start with SBF. 131 00:08:14,248 --> 00:08:19,116 [SPEAKER_00] Okay, so think of SPF, or sender policy framework, like a VIP guest list at a club. 132 00:08:19,236 --> 00:08:19,857 [SPEAKER_01] Okay, I like that. 133 00:08:20,078 --> 00:08:28,712 [SPEAKER_00] You publish a text record on your domain's DNS that lists the exact IP addresses of the servers that are authorized to send mail on your behalf. 134 00:08:28,983 --> 00:08:35,267 [SPEAKER_01] So when a Google server receives an email claiming to be from my domain, it checks that guest list. 135 00:08:35,327 --> 00:08:35,807 [SPEAKER_00] Exactly. 136 00:08:36,067 --> 00:08:39,129 [SPEAKER_00] And if your server's IP isn't on the list, the email bounces. 137 00:08:39,390 --> 00:08:40,330 [SPEAKER_01] That makes perfect sense. 138 00:08:40,690 --> 00:08:45,854 [SPEAKER_01] And then the sources place a pretty heavy emphasis on DKIM and how Devil supports it natively. 139 00:08:45,954 --> 00:08:46,154 [SPEAKER_00] Right. 140 00:08:46,334 --> 00:08:48,535 [SPEAKER_00] DKIM is Domain Keys Identified Mail. 141 00:08:48,755 --> 00:08:54,319 [SPEAKER_00] If SPF is the guest list, DKIM is a cryptographic wax seal stamped onto the envelope itself. 142 00:08:54,620 --> 00:08:56,302 [SPEAKER_01] How does that actually work under the hood, though? 143 00:08:56,642 --> 00:08:58,303 [SPEAKER_00] It uses public key cryptography. 144 00:08:59,004 --> 00:09:06,411 [SPEAKER_00] When Dovel sends an email, it uses a private secret key stored in your server to generate a unique digital signature for that specific message. 145 00:09:06,671 --> 00:09:09,713 [SPEAKER_01] And it attaches the signature to the email headers. 146 00:09:09,994 --> 00:09:10,594 [SPEAKER_00] Exactly. 147 00:09:10,995 --> 00:09:14,778 [SPEAKER_00] Meanwhile, you've published the matching public key on your domain's DNS records. 148 00:09:15,338 --> 00:09:19,162 [SPEAKER_00] The receiving server grabs that public key and uses it to verify the signature. 149 00:09:19,463 --> 00:09:21,945 [SPEAKER_01] So if it matches, it mathematically proves two things. 150 00:09:22,426 --> 00:09:25,188 [SPEAKER_01] First, the email definitely originated from your domain. 151 00:09:25,748 --> 00:09:28,811 [SPEAKER_01] And second, the contents of the email were not altered in transit. 152 00:09:29,372 --> 00:09:29,872 [SPEAKER_00] Spot on. 153 00:09:30,533 --> 00:09:31,754 [SPEAKER_00] Double handles the hard part. 154 00:09:32,414 --> 00:09:39,200 [SPEAKER_00] Doing the cryptographic math and stamping the outgoing mail by letting you just pass the key path in that simple JSON config file. 155 00:09:39,741 --> 00:09:42,923 [SPEAKER_00] But you still have to manually publish the public key to your domain. 156 00:09:43,204 --> 00:09:43,524 [SPEAKER_01] Got it. 157 00:09:43,884 --> 00:09:44,745 [SPEAKER_01] And what about DMRF? 158 00:09:45,273 --> 00:09:48,035 [SPEAKER_00] DMARC is simply the set of instructions you give the bouncer. 159 00:09:48,375 --> 00:09:55,140 [SPEAKER_00] It tells the receiving server exactly what to do if an email fails the SPF guest list check or the DKIM wax seal check. 160 00:09:55,680 --> 00:10:01,604 [SPEAKER_01] Ah, so you can tell them to reject the email outright, or quarantine it and spam, or let it through but send you a report. 161 00:10:01,924 --> 00:10:02,344 [SPEAKER_00] Exactly. 162 00:10:02,865 --> 00:10:06,047 [SPEAKER_00] And finally, PTR is a reverse DNS lookup. 163 00:10:06,587 --> 00:10:13,972 [SPEAKER_00] It just ensures your server's IP address actually resolves back to your domain name, which prevents spammers from hiding behind anonymous IP addresses. 164 00:10:14,290 --> 00:10:20,715 [SPEAKER_01] So Dovel gives you an incredibly sharp, lightweight tool, but it absolutely doesn't do the plumbing or negotiate with the bouncers for you. 165 00:10:20,995 --> 00:10:22,296 [SPEAKER_01] You still have to prove your identity. 166 00:10:22,456 --> 00:10:22,857 [SPEAKER_00] You do. 167 00:10:22,917 --> 00:10:24,258 [SPEAKER_00] It's a very hands-on process. 168 00:10:24,498 --> 00:10:28,261 [SPEAKER_01] But getting the internet to recognize your server is really only the border patrol. 169 00:10:29,101 --> 00:10:30,722 [SPEAKER_01] Here's where it gets really interesting. 170 00:10:31,423 --> 00:10:38,048 [SPEAKER_01] Once the email actually gets inside the server, Dovel completely uphands the traditional way of sorting it. 171 00:10:38,248 --> 00:10:38,969 [SPEAKER_00] It really does. 172 00:10:39,029 --> 00:10:41,871 [SPEAKER_01] This brings us to what the sources call the Hooks system. 173 00:10:42,215 --> 00:10:49,858 [SPEAKER_00] The hook system is arguably double's defining architectural feature, and it is a radical departure from how enterprise systems operate today. 174 00:10:50,110 --> 00:10:54,391 [SPEAKER_01] Traditional email servers use those massive relational databases we talked about. 175 00:10:54,731 --> 00:10:58,612 [SPEAKER_01] An email comes in, the server queries a SQL database to find the user ID. 176 00:10:58,732 --> 00:11:00,552 [SPEAKER_00] It checks a separate table for forwarding rules. 177 00:11:00,612 --> 00:11:00,792 [SPEAKER_01] Right. 178 00:11:00,932 --> 00:11:05,433 [SPEAKER_01] Looks up storage quotas and then reads the message into a complex database structure. 179 00:11:05,633 --> 00:11:06,774 [SPEAKER_01] Double doesn't do any of that. 180 00:11:06,974 --> 00:11:07,394 [SPEAKER_00] Not at all. 181 00:11:07,574 --> 00:11:11,955 [SPEAKER_01] You just go into your configuration folder, specifically the .config double hooks folder. 182 00:11:12,515 --> 00:11:17,936 [SPEAKER_01] Let's say your domain is double.email and someone sends a message to Joe at double.email. 183 00:11:18,216 --> 00:11:22,508 [SPEAKER_00] Double just looks in that hooks folder for a script file named receive-double.email. 184 00:11:22,878 --> 00:11:30,260 [SPEAKER_01] And if it finds that script, it runs it and passes the raw text of the email directly into the script as standard input. 185 00:11:30,980 --> 00:11:33,220 [SPEAKER_01] I want to make sure we understand standard input or STEM. 186 00:11:33,480 --> 00:11:36,641 [SPEAKER_01] This is a very old school programming concept. 187 00:11:36,801 --> 00:11:37,021 [SPEAKER_00] It is. 188 00:11:37,121 --> 00:11:40,842 [SPEAKER_00] It's the most foundational way programs talk to each other in Unix based systems. 189 00:11:41,362 --> 00:11:42,422 [SPEAKER_00] Imagine a physical pipe. 190 00:11:42,582 --> 00:11:42,802 [SPEAKER_00] Okay. 191 00:11:43,223 --> 00:11:45,803 [SPEAKER_00] Standard input is just the act of pouring data. 192 00:11:46,283 --> 00:11:49,764 [SPEAKER_00] In this case, the raw text of the incoming email into the top of the pipe. 193 00:11:50,157 --> 00:11:55,678 [SPEAKER_01] And the script you wrote sits at the bottom of the pipe, catching that data and doing whatever it is programmed to do with it. 194 00:11:55,758 --> 00:11:56,238 [SPEAKER_00] Exactly. 195 00:11:56,398 --> 00:12:01,119 [SPEAKER_01] So our local mailman doesn't open the mail or try to file it in a massive cabinet. 196 00:12:01,759 --> 00:12:10,161 [SPEAKER_01] He just looks at the domain on the envelope, says, ah, double dot email, walks over to a worker named receive dash double dot email and just hands him the letter. 197 00:12:10,501 --> 00:12:11,662 [SPEAKER_00] That is precisely what happens. 198 00:12:11,922 --> 00:12:13,762 [SPEAKER_00] And that worker script does whatever it wants. 199 00:12:14,160 --> 00:12:16,022 [SPEAKER_01] It is incredibly hacker-friendly. 200 00:12:16,462 --> 00:12:23,968 [SPEAKER_01] You could write a script in Python that catches the email text, reads the subject line, and if the subject says urgent, it sends a text message to your phone. 201 00:12:24,513 --> 00:12:28,674 [SPEAKER_00] or a script that just simply saves the raw text to a local folder. 202 00:12:29,014 --> 00:12:30,774 [SPEAKER_00] You have total programmatic control. 203 00:12:31,094 --> 00:12:31,854 [SPEAKER_01] It's brilliant. 204 00:12:32,114 --> 00:12:34,595 [SPEAKER_00] It embodies the classic Unix philosophy, really. 205 00:12:35,215 --> 00:12:39,076 [SPEAKER_00] Write small programs that do one thing and do it well, and write programs to work together. 206 00:12:39,296 --> 00:12:44,737 [SPEAKER_01] So, Devil just handles the complex SMTP transaction of receiving the mail over the internet. 207 00:12:45,137 --> 00:12:48,358 [SPEAKER_01] What happens to the email after that is entirely up to your scripts. 208 00:12:48,998 --> 00:12:50,598 [SPEAKER_01] I love the flexibility I really do. 209 00:12:51,238 --> 00:12:53,599 [SPEAKER_01] But I have to ask about the reality of scaling this. 210 00:12:53,999 --> 00:13:02,041 [SPEAKER_01] If I have a small business with 10 different users, am I forced to write a massive tangled Python script just to sort the mail into 10 different folders? 211 00:13:02,261 --> 00:13:08,422 [SPEAKER_00] Well, if we connect this to the bigger picture, that is the trade-off of the do-it-yourself modularity. 212 00:13:09,042 --> 00:13:14,844 [SPEAKER_00] However, looking at the project's roadmap in the source repository, they are highly aware of this limitation. 213 00:13:14,924 --> 00:13:15,364 [SPEAKER_01] Oh, good. 214 00:13:15,404 --> 00:13:16,164 [SPEAKER_01] So it's evolving. 215 00:13:16,304 --> 00:13:17,024 [SPEAKER_00] Very much so. 216 00:13:17,544 --> 00:13:18,945 [SPEAKER_00] Dovel is an active development. 217 00:13:19,025 --> 00:13:27,366 [SPEAKER_00] They're currently building out features for multiple inboxes and multiple users, as well as creating HTTP and SSH clients to make accessing that mail easier. 218 00:13:27,506 --> 00:13:28,247 [SPEAKER_01] OK, that makes sense. 219 00:13:28,527 --> 00:13:36,068 [SPEAKER_00] But the beauty of piping data to a script is that you aren't forced into a one-size-fits-all ecosystem while you wait for those features to drop. 220 00:13:36,528 --> 00:13:39,729 [SPEAKER_00] If you need a custom routing rule today, you can build it in five minutes. 221 00:13:40,095 --> 00:13:42,817 [SPEAKER_01] you build exactly your own level of complexity. 222 00:13:43,638 --> 00:13:51,023 [SPEAKER_01] And reading through the Git repository, you realize this script-based bare-bones architecture isn't just some random technical quirk. 223 00:13:51,183 --> 00:13:51,843 [SPEAKER_00] No, not at all. 224 00:13:52,043 --> 00:13:55,446 [SPEAKER_01] It is a direct reflection of a highly specific developer culture. 225 00:13:55,926 --> 00:13:58,368 [SPEAKER_01] The software really tells you exactly who built it. 226 00:13:58,640 --> 00:14:02,543 [SPEAKER_00] The development community behind Dovel absolutely practices what they preach. 227 00:14:02,863 --> 00:14:06,726 [SPEAKER_00] They don't just build this minimalist tool and then go use Gmail for their daily communications. 228 00:14:06,886 --> 00:14:08,928 [SPEAKER_01] No, they are heavily eating their own dog food. 229 00:14:09,308 --> 00:14:13,752 [SPEAKER_01] The sources show the Dovel team uses their own software to run the project's mailing lists. 230 00:14:14,012 --> 00:14:24,040 [SPEAKER_00] Yeah, there's actually a commit logged in the repository from March 5, 2025, by a developer named Murr showing active daily tweaking of the mail instruction scripts. 231 00:14:24,442 --> 00:14:26,943 [SPEAKER_01] They rely on this infrastructure to build the infrastructure. 232 00:14:27,303 --> 00:14:31,024 [SPEAKER_01] And how they handle contributions to the code base is honestly fascinating. 233 00:14:31,384 --> 00:14:35,665 [SPEAKER_00] It is a complete and utter rejection of modern software development norms. 234 00:14:35,885 --> 00:14:36,085 [SPEAKER_01] Right. 235 00:14:36,205 --> 00:14:42,567 [SPEAKER_01] If you want to contribute code to almost any major open source project today, you go to a flashy web portal like GitHub. 236 00:14:42,967 --> 00:14:43,748 [SPEAKER_01] You click a button. 237 00:14:44,068 --> 00:14:46,668 [SPEAKER_01] You use a graphical interface to submit a pull request. 238 00:14:46,708 --> 00:14:48,669 [SPEAKER_01] You leave comments in a web form. 239 00:14:48,809 --> 00:14:50,009 [SPEAKER_00] But not with double. 240 00:14:50,269 --> 00:14:52,250 [SPEAKER_00] You have to use the Git email workflow. 241 00:14:52,498 --> 00:14:59,224 [SPEAKER_01] Which, it's worth noting, is exactly how the Linux kernel itself, the largest open source project in the world, is developed. 242 00:14:59,284 --> 00:15:01,305 [SPEAKER_01] Send an email directly to the repository address. 243 00:15:01,746 --> 00:15:08,772 [SPEAKER_01] The sources instruct you to email server at double dot email and cc the maintainer at double at terminal dot pink. 244 00:15:09,152 --> 00:15:12,835 [SPEAKER_00] And you are explicitly warned to choose your subject line wisely. 245 00:15:13,107 --> 00:15:16,469 [SPEAKER_01] because that subject line literally dictates the conversation threads. 246 00:15:17,010 --> 00:15:23,494 [SPEAKER_01] If you use a sloppy or generic subject, your code patch will break the thread or get lost in someone else's conversation. 247 00:15:23,814 --> 00:15:27,136 [SPEAKER_00] It forces a level of friction that is actually highly intentional. 248 00:15:27,816 --> 00:15:33,280 [SPEAKER_00] Modern frictionless web interfaces encourage rapid, sometimes really thoughtless contributions. 249 00:15:33,580 --> 00:15:40,565 [SPEAKER_00] Having to format a patch, construct an email, properly CC the right maintainers, and manually thread the subject line 250 00:15:41,205 --> 00:15:45,173 [SPEAKER_00] It forces the developer to slow down and think deeply about what they are submitting. 251 00:15:45,462 --> 00:15:50,584 [SPEAKER_01] And speaking of that intentional friction, there is a strict mandate in these sources that I found incredible. 252 00:15:51,164 --> 00:15:54,125 [SPEAKER_01] The project will only accept plain text email. 253 00:15:54,225 --> 00:15:56,766 [SPEAKER_00] Yes, absolutely no HTML formatting. 254 00:15:56,966 --> 00:16:00,067 [SPEAKER_01] No embedded images, no custom fonts, no tracking pixels. 255 00:16:00,587 --> 00:16:12,211 [SPEAKER_01] They are so strict about this that they link out to external tutorials like useplaintext.email and get send-email.io just to teach people how to strip all the formatting out of their email clients. 256 00:16:12,682 --> 00:16:15,423 [SPEAKER_00] This raises an important question about massive digital bloat. 257 00:16:16,103 --> 00:16:21,446 [SPEAKER_00] When we send a standard HTML email today, it uses multi-part MIMB boundaries. 258 00:16:21,526 --> 00:16:22,446 [SPEAKER_01] Let's define that quickly. 259 00:16:22,626 --> 00:16:23,427 [SPEAKER_01] MIMB boundaries. 260 00:16:23,527 --> 00:16:25,287 [SPEAKER_00] Multipurpose internet mail extensions. 261 00:16:25,588 --> 00:16:32,771 [SPEAKER_00] It's the standard that allows an email to contain both a plain text version and a complex HTML version, plus attachments, all wrapped up in one package. 262 00:16:32,851 --> 00:16:33,491 [SPEAKER_01] OK, got it. 263 00:16:33,971 --> 00:16:40,474 [SPEAKER_00] When a marketing email arrives, the actual words, the core message, might only make up 5% of the data being transmitted. 264 00:16:40,792 --> 00:16:41,473 [SPEAKER_01] Wait, really? 265 00:16:41,493 --> 00:16:42,013 [SPEAKER_01] 5%? 266 00:16:42,493 --> 00:16:43,034 [SPEAKER_00] Oh, easily. 267 00:16:43,694 --> 00:16:53,721 [SPEAKER_00] The other 95% is custom styling, hidden tracking pixels to see when you open it, embedded logos, and complex table structures to make it look pretty on a smartphone. 268 00:16:54,102 --> 00:16:58,185 [SPEAKER_01] So the wrapping paper is exponentially heavier than the actual gift inside. 269 00:16:58,778 --> 00:17:00,198 [SPEAKER_00] That is the perfect analogy. 270 00:17:00,759 --> 00:17:05,780 [SPEAKER_00] By enforcing a plain text mandate, the double community violently strips away the wrapping paper. 271 00:17:06,020 --> 00:17:09,961 [SPEAKER_01] It forces a strict focus on the substance of the message rather than the style. 272 00:17:10,141 --> 00:17:10,361 [SPEAKER_00] Right. 273 00:17:10,681 --> 00:17:16,402 [SPEAKER_00] When a maintainer is reviewing a complex code patch, they don't care about the font face or the logo in your signature. 274 00:17:16,803 --> 00:17:18,443 [SPEAKER_00] They only care about the logic of the code. 275 00:17:18,683 --> 00:17:19,805 [SPEAKER_01] So what does this all mean? 276 00:17:19,825 --> 00:17:22,389 [SPEAKER_01] Are we just reverting back to 1990s internet? 277 00:17:22,449 --> 00:17:25,494 [SPEAKER_01] Honestly, it's like listening to a classic vinyl record. 278 00:17:25,534 --> 00:17:25,954 [SPEAKER_00] How so? 279 00:17:26,014 --> 00:17:32,204 [SPEAKER_01] It's uncompressed, pure and there is zero digital fluff getting between you and the actual music. 280 00:17:32,730 --> 00:17:36,592 [SPEAKER_01] This plain text rule perfectly aligns with Double's entire philosophy. 281 00:17:36,612 --> 00:17:37,293 [SPEAKER_00] It really does. 282 00:17:37,513 --> 00:17:44,117 [SPEAKER_01] It demands less bandwidth, less storage, and less processing power, both from the physical server and from the human brain trying to read it. 283 00:17:44,237 --> 00:17:45,878 [SPEAKER_01] It is just you and the words. 284 00:17:46,358 --> 00:17:52,722 [SPEAKER_00] It proves that complexity in our digital tools is often a choice we make, not a strict technical requirement. 285 00:17:53,203 --> 00:17:56,967 [SPEAKER_01] Looking back through everything we've unpacked today, it's an incredibly refreshing perspective. 286 00:17:57,547 --> 00:18:00,710 [SPEAKER_01] Dovel isn't trying to be the next enterprise behemoth. 287 00:18:01,051 --> 00:18:01,711 [SPEAKER_00] No, not at all. 288 00:18:01,831 --> 00:18:06,816 [SPEAKER_01] It is a stripped down, highly efficient gateway to self-hosting your communication. 289 00:18:07,377 --> 00:18:15,505 [SPEAKER_01] It uses a miniscule amount of memory, configures with one readable text file, and leverages standard Unix scripts to route your messages. 290 00:18:15,960 --> 00:18:23,824 [SPEAKER_00] It proves that powerful, secure communication tools don't actually need gigabytes of RAM or massive corporate backing to function beautifully. 291 00:18:24,104 --> 00:18:33,029 [SPEAKER_01] And that realization that you don't need the corporate behemoth to have robust infrastructure is powerful for organizations looking at their balance sheets and their compliance requirements. 292 00:18:33,069 --> 00:18:33,549 [SPEAKER_00] Absolutely. 293 00:18:33,669 --> 00:18:37,171 [SPEAKER_01] Which brings us back to Safe Server, the supporter of today's deep dive. 294 00:18:37,631 --> 00:18:44,655 [SPEAKER_01] We've spent this entire time exploring how lightweight, transparent, and empowering open source solutions like Dovel can be. 295 00:18:45,213 --> 00:18:55,164 [SPEAKER_00] And for businesses, associations, and other organizations, transitioning away from those massive proprietary tools from Microsoft or Google isn't just a fun technical experiment. 296 00:18:55,304 --> 00:18:55,545 [SPEAKER_01] Right. 297 00:18:55,625 --> 00:19:00,310 [SPEAKER_01] It is about realizing massive cost savings and legally securing your data. 298 00:19:00,617 --> 00:19:06,523 [SPEAKER_00] And you do not have to navigate the transition or the alphabet soup of DNS records alone. 299 00:19:06,563 --> 00:19:07,223 [SPEAKER_00] Thank goodness. 300 00:19:07,544 --> 00:19:07,724 [SPEAKER_00] Right. 301 00:19:08,264 --> 00:19:21,957 [SPEAKER_00] Safe Server can be commissioned for specialized consulting to help your organization determine whether a radically simple tool like Dovel or maybe a comparable enterprise-grade open source alternative is the perfect fit for your specific use case. 302 00:19:22,258 --> 00:19:25,219 [SPEAKER_01] And crucially, they operated on secure servers within the EU. 303 00:19:25,659 --> 00:19:30,240 [SPEAKER_01] You can take the first step toward reclaiming your infrastructure by visiting safeserver.de. 304 00:19:30,560 --> 00:19:31,681 [SPEAKER_00] It's definitely worth looking into. 305 00:19:32,021 --> 00:19:37,142 [SPEAKER_01] As we wrap up this exploration of Double, we want to leave you with a thought that builds on this idea of minimalism. 306 00:19:37,763 --> 00:19:46,365 [SPEAKER_01] We've seen how open source developer communities are actively moving back to plain text and minimalistic protocols to save memory, increase speed, and maintain their sanity. 307 00:19:46,745 --> 00:19:49,606 [SPEAKER_00] They are completely rejecting the bloat in their professional tools. 308 00:19:50,095 --> 00:19:55,698 [SPEAKER_01] So how long until we see this philosophy hit the mainstream consumer world? 309 00:19:56,478 --> 00:19:58,740 [SPEAKER_01] Think about your own daily digital life. 310 00:19:59,400 --> 00:20:03,162 [SPEAKER_01] What would a plain text version of our social media or consumer apps look like? 311 00:20:03,393 --> 00:20:04,636 [SPEAKER_00] That's a fascinating thought. 312 00:20:04,776 --> 00:20:17,164 [SPEAKER_01] If we stripped away the heavy algorithms, the endless auto-playing video interfaces and the tracking pixel and just got back to the pure substance of the communication, would our digital lives be poorer for it, or would we finally regain our focus? 313 00:20:17,785 --> 00:20:19,329 [SPEAKER_01] Something to ponder until next time. 314 00:20:19,369 --> 00:20:20,110 [SPEAKER_01] Thanks for joining us.