<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Demian&#39;s Blog</title>
    <link>https://pyte.dev/</link>
    <description>Recent content on Demian&#39;s Blog</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 04 Jan 2026 20:33:45 +0100</lastBuildDate>
    <atom:link href="https://pyte.dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Spaceship Distrobox</title>
      <link>https://pyte.dev/posts/spaceship-distrobox/</link>
      <pubDate>Sun, 04 Jan 2026 20:33:45 +0100</pubDate>
      <guid>https://pyte.dev/posts/spaceship-distrobox/</guid>
      <description>&lt;h1 id=&#34;how-i-solved-the-distrobox-confusion-in-my-terminal&#34;&gt;How I Solved the Distrobox Confusion in My Terminal&lt;/h1&gt;&#xA;&lt;p&gt;Recently, I found myself struggling with something that seemed like a simple problem: when I was working with multiple terminal windows, I could never remember which one was inside a Distrobox and which one was on my local system. If you&amp;rsquo;ve ever juggled between different environments, you know exactly how annoying this can get.&lt;/p&gt;&#xA;&lt;p&gt;So, I decided to create a quick plugin for my favorite terminal prompt, &lt;strong&gt;Spaceship&lt;/strong&gt;, that would clearly indicate when I&amp;rsquo;m inside a Distrobox container. The result is a simple, customizable section that appears right in your prompt, showing the name of the active container. This way, I never have to guess or dig deeper to figure out where I&amp;rsquo;m working.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google Groups Spam</title>
      <link>https://pyte.dev/posts/google-groups-spam/</link>
      <pubDate>Fri, 10 Oct 2025 09:26:56 +0200</pubDate>
      <guid>https://pyte.dev/posts/google-groups-spam/</guid>
      <description>&lt;h1 id=&#34;understanding-the-google-groups-spam-problem&#34;&gt;Understanding the Google Groups Spam Problem&lt;/h1&gt;&#xA;&lt;p&gt;Over the past year, I&amp;rsquo;ve noticed a significant increase in spam messages originating from Google Groups. This issue stems from the way Google Groups is designed: It gives spammers an easy way to distribute large volumes of unwanted mail using legitimate Google mail servers, which makes filtering much harder.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-it-happens&#34;&gt;Why it Happens&lt;/h2&gt;&#xA;&lt;p&gt;There are a few fundamental problems with how Google Groups works that make it particularly attractive to spammers:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Blocking Invalid Recipients Before They Reach Your Exchange Server</title>
      <link>https://pyte.dev/posts/blocking-invalid-rcpt-postfix/</link>
      <pubDate>Fri, 01 Aug 2025 10:03:15 +0200</pubDate>
      <guid>https://pyte.dev/posts/blocking-invalid-rcpt-postfix/</guid>
      <description>&lt;p&gt;Recently, I had to deal with a serious problem: &lt;strong&gt;backscatter&lt;/strong&gt;.&lt;br&gt;&#xA;One of our mail gateways ended up listed on the &lt;strong&gt;backscatter.org&lt;/strong&gt; blacklist for sending bounce messages to forged senders.&lt;/p&gt;&#xA;&lt;p&gt;After checking the logs, I quickly realized that our system wasn&amp;rsquo;t actually protected against backscatter attacks, so I had to do something about it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-even-is-backscatter&#34;&gt;What Even Is Backscatter?&lt;/h2&gt;&#xA;&lt;p&gt;Backscatter is unwanted email that your mail server sends &lt;strong&gt;after&lt;/strong&gt; receiving a message, usually in the form of a &lt;strong&gt;non-delivery report (NDR)&lt;/strong&gt; or &lt;strong&gt;bounce&lt;/strong&gt; to a &lt;strong&gt;forged sender address&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dovecot Index Cache Issues</title>
      <link>https://pyte.dev/posts/dovecot-index-cache-issues/</link>
      <pubDate>Sun, 18 May 2025 11:34:09 +0200</pubDate>
      <guid>https://pyte.dev/posts/dovecot-index-cache-issues/</guid>
      <description>&lt;h1 id=&#34;understanding-dovecotindexcache&#34;&gt;Understanding &lt;code&gt;dovecot.index.cache&lt;/code&gt;&lt;/h1&gt;&#xA;&lt;p&gt;I recently migrated an old mail server system into its new home. After the migration, I checked the logs and noticed some warnings that looked like this:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;May 17 11:23:13 server1 dovecot: dsync-local(user@domain.tld)&amp;lt;cRjZCwGnKWiIvicA2dm5Tw&amp;gt;: Error: Mailbox INBOX: mmap(size=511310568) failed with file /var/vmail/domain.tld/user/Maildir/dovecot.index.cache: Cannot allocate memory&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The error indicates that the &lt;code&gt;dovecot.index.cache&lt;/code&gt; file is too big to process, and Dovecot cannot allocate enough memory to handle it.&lt;/p&gt;&#xA;&lt;h1 id=&#34;what-are-dovecotindexcache-files&#34;&gt;What Are &lt;code&gt;dovecot.index.cache&lt;/code&gt; Files?&lt;/h1&gt;&#xA;&lt;p&gt;Dovecot, the most popular IMAP server, uses a set of index files (&lt;code&gt;dovecot.index&lt;/code&gt;, &lt;code&gt;dovecot.index.cache&lt;/code&gt;, &lt;code&gt;dovecot.index.log&lt;/code&gt;, etc.) to speed up mailbox access. The file I had to deal with stores cached message metadata (headers, flags, and preview text) so Dovecot does not have to read each message file in the mailbox every time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Introduction</title>
      <link>https://pyte.dev/posts/my-first-post/</link>
      <pubDate>Sun, 11 May 2025 20:13:49 +0200</pubDate>
      <guid>https://pyte.dev/posts/my-first-post/</guid>
      <description>&lt;h1 id=&#34;welcome-to-my-blog&#34;&gt;Welcome to My Blog!&lt;/h1&gt;&#xA;&lt;p&gt;I’m &lt;strong&gt;Demian&lt;/strong&gt;, a &lt;strong&gt;Sysadmin&lt;/strong&gt;, &lt;strong&gt;Email Infrastructure enthusiast&lt;/strong&gt;, and a passionate &lt;strong&gt;Open Source contributor&lt;/strong&gt;. This is where I’ll be sharing what I know about system administration, managing email infrastructure, and contributing to open source projects.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-to-expect&#34;&gt;What to Expect&lt;/h2&gt;&#xA;&lt;p&gt;On this blog, I’ll be writing about:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Sysadmin tips and tools&lt;/strong&gt;: Everything I’ve learned managing servers, networks, and infrastructure.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Email Infrastructure&lt;/strong&gt;: Best practices for setting up, securing, and managing email systems.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Open Source&lt;/strong&gt;: How I contribute to open source projects, and tips for getting started if you want to do the same.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This blog is a space to share knowledge, troubleshoot common issues, and explore new tools and techniques. Whether you’re just getting into system administration, looking for email setup guides, or interested in contributing to open source, you’ll find something useful here.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Search</title>
      <link>https://pyte.dev/search/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://pyte.dev/search/</guid>
      <description>&lt;link href=&#34;https://pyte.dev/pagefind/pagefind-ui.css&#34; rel=&#34;stylesheet&#34;&gt;&#xA;&lt;script src=&#34;https://pyte.dev/pagefind/pagefind-ui.js&#34;&gt;&lt;/script&gt;&#xA;&lt;div id=&#34;search&#34;&gt;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;&#x9;window.addEventListener(&#39;DOMContentLoaded&#39;, (event) =&gt; {&#xA;&#x9;    new PagefindUI({ element: &#34;#search&#34;, showSubResults: true });&#xA;&#x9;});&#xA;&lt;/script&gt;</description>
    </item>
  </channel>
</rss>
