<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cloning Gmail's Architecture on DevLogs</title><link>https://blog.param.sh/series/cloning-gmails-architecture/</link><description>Recent content in Cloning Gmail's Architecture on DevLogs</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 04 Apr 2026 09:36:46 +0530</lastBuildDate><atom:link href="https://blog.param.sh/series/cloning-gmails-architecture/index.xml" rel="self" type="application/rss+xml"/><item><title>Part 3.3: Connecting Thunderbird to your Mail Server</title><link>https://blog.param.sh/posts/setting-up-thunderbird-as-your-mail-client/</link><pubDate>Sat, 04 Apr 2026 09:36:46 +0530</pubDate><guid>https://blog.param.sh/posts/setting-up-thunderbird-as-your-mail-client/</guid><description>&lt;div class="notice note"&gt;
 &lt;div class="notice-title"&gt;
 &lt;i class="fa-solid fa-sticky-note" aria-hidden="true"&gt;&lt;/i&gt;Note
 &lt;/div&gt;
 &lt;div class="notice-content"&gt;This walkthrough is part of the &lt;a href="https://blog.param.sh/series/cloning-gmails-architecture" &gt;Cloning Gmail&amp;rsquo;s Architecture&lt;/a&gt; series. For better context, I suggest you to start from &lt;a href="https://blog.param.sh/posts/mail-server-communications-101/" &gt;Part 1&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In this tutorial, we will look how to install and configure a mail client (Thunderbird) on your local machine with your personal mail server, by setting up IMAP and SMTP connections.&lt;/p&gt;
&lt;h3 id="about-thunderbird"&gt;
 About Thunderbird
 &lt;a class="heading-link" href="#about-thunderbird"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.thunderbird.net/" class="external-link" target="_blank" rel="noopener"&gt;Mozilla Thunderbird&lt;/a&gt; (yep, the same organization owning Firefox) is a free, open-source desktop email client that lets users send, receive, and manage email from multiple accounts in one place. In this guide, it serves as the client used to connect to the self-hosted mail server configured earlier in the &lt;a href="https://blog.param.sh/series/cloning-gmails-architecture/" &gt;series&lt;/a&gt;. It is available to download for linux, macos, windows and android. They have also added an iOS version to their future roadmap and is currently in beta.&lt;/p&gt;</description></item><item><title>Part 3.2: Setup iRedMail Server on Linux in less than 20 minutes</title><link>https://blog.param.sh/posts/how-to-setup-iredmail-server-on-linux/</link><pubDate>Sun, 22 Mar 2026 14:24:59 +0530</pubDate><guid>https://blog.param.sh/posts/how-to-setup-iredmail-server-on-linux/</guid><description>&lt;div class="notice note"&gt;
 &lt;div class="notice-title"&gt;
 &lt;i class="fa-solid fa-sticky-note" aria-hidden="true"&gt;&lt;/i&gt;Note
 &lt;/div&gt;
 &lt;div class="notice-content"&gt;This walkthrough is part of the &lt;a href="https://blog.param.sh/series/cloning-gmails-architecture" &gt;Cloning Gmail&amp;rsquo;s Architecture&lt;/a&gt; series. For better context, I suggest you to start from &lt;a href="https://blog.param.sh/posts/mail-server-communications-101/" &gt;Part 1&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In this tutorial, we will look how to configure a mail server (iRedMail) on the EC2, assign an Elastic IP (static public IP), enable port access for SMTP / IMAP communications and more, to replicate an actual email flow from server to server.&lt;/p&gt;
&lt;h3 id="pre-requisites"&gt;
 Pre-Requisites
 &lt;a class="heading-link" href="#pre-requisites"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;You have access to a linux environment where you want to configure iRedMail.&lt;/li&gt;
&lt;li&gt;Network connection on that linux environment.&lt;/li&gt;
&lt;li&gt;Privileges to run the commands as a super user.&lt;/li&gt;
&lt;li&gt;A TLD domain to setup mail server&amp;rsquo;s hostname and configure settings.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="notice info"&gt;
 &lt;div class="notice-title"&gt;
 &lt;i class="fa-solid fa-exclamation-circle" aria-hidden="true"&gt;&lt;/i&gt;Info
 &lt;/div&gt;
 &lt;div class="notice-content"&gt;Make sure to replace &lt;code&gt;example.com&lt;/code&gt; with the domain that you have registered with your DNS provider. Use of &lt;code&gt;example.com&lt;/code&gt; is for merely demo purposes to showcase how DNS mapping is working.&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="prepare-the-linux-instance"&gt;
 Prepare the Linux Instance
 &lt;a class="heading-link" href="#prepare-the-linux-instance"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Login to the linux instance:&lt;/p&gt;</description></item><item><title>Part 3.1: Setting up AWS infra for hosting a mail server</title><link>https://blog.param.sh/posts/setting-up-your-own-mail-server/</link><pubDate>Sun, 15 Mar 2026 03:55:13 +0530</pubDate><guid>https://blog.param.sh/posts/setting-up-your-own-mail-server/</guid><description>&lt;div class="notice note"&gt;
 &lt;div class="notice-title"&gt;
 &lt;i class="fa-solid fa-sticky-note" aria-hidden="true"&gt;&lt;/i&gt;Note
 &lt;/div&gt;
 &lt;div class="notice-content"&gt;This walkthrough is part of the &lt;a href="https://blog.param.sh/series/cloning-gmails-architecture" &gt;Cloning Gmail&amp;rsquo;s Architecture&lt;/a&gt; series. For better context, I suggest you to start from &lt;a href="https://blog.param.sh/posts/mail-server-communications-101/" &gt;Part 1&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In this tutorial, we will look how we can deploy an EC2 instance, assign an Elastic IP (static public IP), enable port access for SMTP / IMAP communications and more, to configure the infrastructure for self-hosting a private email server.&lt;/p&gt;
&lt;h3 id="pre-requisites"&gt;
 Pre-Requisites
 &lt;a class="heading-link" href="#pre-requisites"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Have an AWS Account and basic knowledge on how to setup an EC2 instance in AWS.&lt;/li&gt;
&lt;li&gt;Know about mail protocols and how mail communication works.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;If you have any other cloud provider as your preference feel free to jump to the &lt;a href="#setting-up-the-mail-server" &gt;Setting up the Mail Server&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Part 2: What do you need to self-host an email server?</title><link>https://blog.param.sh/posts/self-hosting-an-email-server-stack/</link><pubDate>Sun, 08 Mar 2026 22:21:21 +0530</pubDate><guid>https://blog.param.sh/posts/self-hosting-an-email-server-stack/</guid><description>&lt;h2 id="selecting-the-stack"&gt;
 Selecting the Stack
 &lt;a class="heading-link" href="#selecting-the-stack"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;This series begins with replacing Gmail using a fully self-hosted mail system on AWS. The goal is not just email independence — it is learning real infrastructure, security, and operational ownership.&lt;/p&gt;
&lt;p&gt;This post explains the selected stack, what alternatives were considered, and why these choices were made.&lt;/p&gt;
&lt;h1 id="tldr---final-stack-overview"&gt;
 TL;DR - Final Stack Overview
 &lt;a class="heading-link" href="#tldr---final-stack-overview"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hosting:&lt;/strong&gt; Amazon EC2 (1-year Reserved Instance)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mail Server:&lt;/strong&gt; iRedMail&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mail Client:&lt;/strong&gt; Mozilla Thunderbird&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Domain Registrar:&lt;/strong&gt; Namecheap&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DNS Provider:&lt;/strong&gt; Namecheap DNS&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Keep reading if you want to know about the comparisons made in order to reach to these final verdicts.&lt;/p&gt;</description></item><item><title>Part 1: Mail Server Communications 101</title><link>https://blog.param.sh/posts/mail-server-communications-101/</link><pubDate>Sun, 01 Mar 2026 23:21:21 +0530</pubDate><guid>https://blog.param.sh/posts/mail-server-communications-101/</guid><description>&lt;p&gt;This guide explains the core building blocks required to send and receive email via the internet. It focuses on a understanding how the email is sent across the real world and what protocols are used within this communication.&lt;/p&gt;
&lt;h1 id="the-components-of-a-mail-communication"&gt;
 The Components of a Mail Communication
 &lt;a class="heading-link" href="#the-components-of-a-mail-communication"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#1-dns-server" &gt;&lt;strong&gt;DNS Server&lt;/strong&gt;&lt;/a&gt;: Routes trusted servers, handles MX / SPF / DKIM records for mail delivery and authority verification.&lt;/li&gt;
&lt;li&gt;&lt;a href="#2-mail-servers" &gt;&lt;strong&gt;Mail Servers&lt;/strong&gt;&lt;/a&gt;: Receives outbound emails from clients and moves messages across each other using &lt;em&gt;SMTP&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="#3-mail-clients" &gt;&lt;strong&gt;Mail Client&lt;/strong&gt;&lt;/a&gt;: Applications used by people to send / receive emails (eg. Outlook, Thunderbird).&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="markdown-media"&gt;&lt;img
 src="https://blog.param.sh/posts/mail-server-communications-101/mail-communication-over-the-internet.svg"
 alt="Mail Server Communication Model"
 loading="lazy"
 decoding="async"
 &gt;
 &lt;figcaption&gt;Mail Server Communication Model&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4 id="mail-flow"&gt;
 Mail flow
 &lt;a class="heading-link" href="#mail-flow"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;You write an email on thunderbird and press Send.&lt;/li&gt;
&lt;li&gt;Your mail client submits it to your mail server using SMTP (port 587).&lt;/li&gt;
&lt;li&gt;Your mail server checks the recipient’s domain.&lt;/li&gt;
&lt;li&gt;It queries DNS to find the domain’s MX record.&lt;/li&gt;
&lt;li&gt;DNS tells your server which mail server handles that domain.&lt;/li&gt;
&lt;li&gt;Your server connects to the recipient’s server using SMTP (port 25).&lt;/li&gt;
&lt;li&gt;The recipient server verifies security (SPF/DKIM/TLS).&lt;/li&gt;
&lt;li&gt;If valid, it accepts and stores the email.&lt;/li&gt;
&lt;li&gt;The recipient’s mail client connects via IMAP (993) or POP3 (995).&lt;/li&gt;
&lt;li&gt;The email appears in their inbox.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="1-dns-server"&gt;
 1. DNS Server
 &lt;a class="heading-link" href="#1-dns-server"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Before email works, the internet must know which server handles mail for a particular domain, where that server is located and whether that server is trusted. This is handled through &lt;strong&gt;DNS (Domain Name System)&lt;/strong&gt;.&lt;/p&gt;</description></item></channel></rss>