<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Shutbox</title>
    <description>The latest articles on DEV Community by Shutbox (@shutbox).</description>
    <link>https://dev.to/shutbox</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3834359%2Fda8499b4-1db1-4597-8e17-0c902962859d.png</url>
      <title>DEV Community: Shutbox</title>
      <link>https://dev.to/shutbox</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shutbox"/>
    <language>en</language>
    <item>
      <title>Monthly Updates Report for my website</title>
      <dc:creator>Shutbox</dc:creator>
      <pubDate>Tue, 01 Sep 2026 19:05:08 +0000</pubDate>
      <link>https://dev.to/shutbox/monthly-updates-report-for-my-website-im2</link>
      <guid>https://dev.to/shutbox/monthly-updates-report-for-my-website-im2</guid>
      <description>&lt;p&gt;A few weeks ago, I created a &lt;a href="https://dev.to/shutbox/a-minimalist-privacy-email-service-website-340f"&gt;post&lt;/a&gt; that offered a glimpse of my personal privacy-first email platform. &lt;/p&gt;

&lt;p&gt;Since then, I have actively worked on a few things over the past 2 weeks.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. UI Overhaul
&lt;/h2&gt;

&lt;p&gt;The primary goal is to have a minimal and clean UI for emails, which made me reconsider my current design, as it looked like something from 2010.&lt;/p&gt;

&lt;p&gt;I thought about it for a while, and then it clicked for me. Skiff Mail is my inspiration for the project, so I created the UI in a twisted Skiff style.&lt;/p&gt;

&lt;p&gt;Old UI:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcskkztn4d796pveykk4d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcskkztn4d796pveykk4d.png" alt="Old UI" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;New UI:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fah7jowcby36z44o8rwi9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fah7jowcby36z44o8rwi9.png" alt="New UI Dark" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwfcwtziim8yghh404m0x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwfcwtziim8yghh404m0x.png" alt="New UI Light" width="799" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Super satisfied, and it took a while for me to come up with this!&lt;/p&gt;

&lt;h2&gt;
  
  
  2. DMARC &amp;amp; DKIM Verification
&lt;/h2&gt;

&lt;p&gt;Initially, inbound emails were not being verified for legitimacy, and I wanted to implement BIMI SVGs for official accounts to display their profile picture. But it looked off-putting in the actual UI, so I removed it. But now DMARC and DKIM verification for inbound emails works; it adds a few more seconds before the email appears in the inbox, though.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Passkey and 2FA implementation
&lt;/h2&gt;

&lt;p&gt;These features are super important for security, so I have added these too. Passkey implementation is currently wonky, not that it does not work. It authenticates you to the session, but it cannot be used to decrypt your mail; it needs a password. This is by design, due to how OPAQUE works.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Avatar Generation
&lt;/h2&gt;

&lt;p&gt;In my old UI, avatars were simply the first two letters of the email/name supplied. However, in the new UI, I have implemented Pixel Art from DiceBear, which has reportedly 1.13 × 10¹⁶ unique combinations- quadrillions in combination- which makes the email appear more lively.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. On-device mail indexing
&lt;/h2&gt;

&lt;p&gt;Previously, this was not implemented properly, resulting in broken client-side searching. &lt;strong&gt;Shutbox never sees your email and therefore cannot do server-side searching.&lt;/strong&gt; For this reason, a summary is constructed every time you log in and stored in an encrypted format in the browser's IndexedDB. Whenever an email is opened, further hydration is provided to this encrypted storage (emails don't load until you actually open them; opening decrypts the email in the client). This also helped in adding simple filters such as &lt;code&gt;from&lt;/code&gt;, &lt;code&gt;to&lt;/code&gt;, &lt;code&gt;is: starred&lt;/code&gt;/&lt;code&gt;unread&lt;/code&gt;, etc.&lt;/p&gt;

&lt;p&gt;These are all the changes I have implemented so far. Is there something else that the email needs? Would love to know your opinions!&lt;/p&gt;

&lt;p&gt;Website: &lt;a href="https://shutbox.im" rel="noopener noreferrer"&gt;https://shutbox.im&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>security</category>
      <category>showdev</category>
      <category>saas</category>
    </item>
    <item>
      <title>A Minimalist Privacy-Email Service Website</title>
      <dc:creator>Shutbox</dc:creator>
      <pubDate>Wed, 19 Aug 2026 14:31:54 +0000</pubDate>
      <link>https://dev.to/shutbox/a-minimalist-privacy-email-service-website-340f</link>
      <guid>https://dev.to/shutbox/a-minimalist-privacy-email-service-website-340f</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;I used to be a paying customer of &lt;a href="https://skiff.com" rel="noopener noreferrer"&gt;Skiff&lt;/a&gt; Mail, and part of what made me use it was not only that it was a privacy-focused email service, but also its beautiful UI.&lt;/p&gt;

&lt;p&gt;However, on February 9, 2024, Notion acquired it, and the company pulled the plug on the Skiff projects entirely. A few years passed, and I had yet to find a service that offered the same balance between privacy and Aesthetic UI/UX. &lt;/p&gt;

&lt;p&gt;That is not to say that privacy-focused email services themself weren't available; but that the UI of existing services was not to my taste.&lt;/p&gt;

&lt;p&gt;Some examples of such services are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Proton Mail&lt;/strong&gt;: The most famous privacy-first email service provider. The UI itself is simple but is not to my taste.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tuta Mail&lt;/strong&gt;: The UI feels clunky for me personally&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not to say that these services have bad UI; it's just that my comparison standard for them is Skiff.&lt;/p&gt;

&lt;p&gt;During 2024, I was still in my 2nd year of college. Ever since Skiff pulled its plug, I really wanted to create my own privacy-first email service. Now, I am a graduate with a job, which gives me money to work with. So, I finally decided to create my service.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://shutbox.im" rel="noopener noreferrer"&gt;https://shutbox.im&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F89v9mq9wg191d280pl9g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F89v9mq9wg191d280pl9g.png" alt="Shutbox Banner Image" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, I know it's not the greatest UI out there, and it could feel worse than Proton Mail or Tuta Mail in terms of appearance, but this is just my base UI as I try to perfect it more and more until I reach a desirable UI that truly makes me feel the same way that Skiff's UI made me feel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Internals
&lt;/h2&gt;

&lt;p&gt;For my architecture, I chose the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SMTP Backend: Elixir (gen_smtp and Phoenix)&lt;/li&gt;
&lt;li&gt;Website Backend: Golang&lt;/li&gt;
&lt;li&gt;Website Frontend: Next.js (SEO Friendly)&lt;/li&gt;
&lt;li&gt;Job Queuing: OBan&lt;/li&gt;
&lt;li&gt;Database: PostgreSQL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I chose Elixir due to my limitation with my server's memory limitations and how efficient the BEAM VM is when it comes to multiple processes.&lt;/p&gt;

&lt;p&gt;For password authentication, I chose to use OPAQUE (Strong Asymmetric/Augmented PAKE). It's a bit difficult to explain, but if you are curious, you can read more about it &lt;a href="https://datatracker.ietf.org/doc/rfc9807/" rel="noopener noreferrer"&gt;here&lt;/a&gt;. Basically, it allows a client and server to authenticate a password without ever exchanging the password (in either Cleartext or Encrypted) directly.&lt;/p&gt;

&lt;p&gt;This service was not designed for regular email use, but for a permanent throwaway account of sorts. Where you can just use the email when you don't want to use your real email, but also keep the throwaway email just in case you ever need something from those signed-up accounts in the future.&lt;/p&gt;

&lt;p&gt;By default, I provide 5GB of storage; however, for normal use, you will never find yourself using that much amount of storage.&lt;/p&gt;

&lt;p&gt;While the website features a "Payments" page to upgrade plans, it's non-functional. Crypto payments are set up but largely untested.&lt;/p&gt;

&lt;h2&gt;
  
  
  Issues
&lt;/h2&gt;

&lt;p&gt;It goes without saying that if a service can be abused, then it will be. Not scanning anything also creates issues. It makes it harder to segregate bad actors from regular users. Yes, behavioral anomalies can be looked out for, but it is not a sure-fire method of dealing with bad actors.&lt;/p&gt;

&lt;p&gt;Emails depend on two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IP Reputation&lt;/li&gt;
&lt;li&gt;Domain Reputation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each time a bad actor sends an email that someone else flags as spam, a scoring system slowly determines a Domain/IP to be spam, effectively causing emails to land in Trash instead of Inboxes.&lt;/p&gt;

&lt;p&gt;Currently, my approach is to moderate manually. I have around 13 legitimate users who are using the service, with a total of 40 accounts registered (4 are mine), without ever advertising.&lt;/p&gt;

&lt;p&gt;In the past few days, I suspended 6 accounts manually due to their names imitating famous brands.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing words
&lt;/h2&gt;

&lt;p&gt;All in all, I had a lot of fun working on this project. I will continue making progress on the website. Until then, you are free to try out the website!&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>nextjs</category>
      <category>webdev</category>
      <category>security</category>
    </item>
  </channel>
</rss>
