Uncategorized

Reinventing the email sync bicycle: Fetchmail + GoIMAPNotify Franken Docker-image 🧟‍♂️

Reinventing Email Sync: How I Created a Custom Solution with Fetchmail and GoIMAPNotify

I recently found myself in a bit of a pickle with my self-hosted mail server. As someone who values reliability and instant notifications, I was frustrated with the limitations of my current setup. That’s when I decided to take matters into my own hands and create a custom solution using Fetchmail and GoIMAPNotify.

The Problem: Unreliable Email Sync

I’ve been running a self-hosted mail server, Stalwart, on my home server for a while now. However, with the unpredictability of my home internet connection and the need to move my server frequently, I realized that I needed a more robust solution for receiving emails. I started using MXroute for both sending and receiving emails, but I soon discovered that Stalwart didn’t support pulling emails from external inboxes.

This is where Fetchmail came in – a popular tool for fetching emails from external mail services. However, I quickly realized that Fetchmail had a major limitation: it didn’t support IMAP IDLE, which meant that it would only poll for new emails every few minutes. For someone like me who needs instant notifications, this just wasn’t good enough.

The Solution: GoIMAPNotify and Fetchmail

That’s when I stumbled upon GoIMAPNotify, a tool that supports IMAP IDLE and can trigger commands when new emails arrive. I realized that if I could combine GoIMAPNotify with Fetchmail, I could create a custom solution that would give me the instant email sync I needed.

So, I set out to create a Docker image that would glue GoIMAPNotify and Fetchmail together. The result was a tiny Alpine-based Docker image that I’ve dubbed “ADHD IMAP Sync.” With this image, I can now instantly sync my emails across all my devices, without having to worry about polling delays or internet outages.

How it Works

So, how does this custom solution work? Here’s a step-by-step breakdown:

  • GoIMAPNotify listens for new emails via IMAP IDLE, which allows it to receive instant notifications when a new email arrives.
  • When a new email lands in my inbox, GoIMAPNotify wakes up Fetchmail, which then pulls the email from the external mail service.
  • Fetchmail drops the email into my local mail delivery agent (MDA), which then delivers it to my inbox.

This process happens instantly, without any polling delays or interruptions. It’s been a game-changer for me, and I’m excited to share it with others who may be struggling with similar email sync issues.

Features and Benefits

So, what are the key features and benefits of this custom solution? Here are a few highlights:

  • Instant triggers: With GoIMAPNotify and Fetchmail working together, I get instant notifications when a new email arrives.
  • Multiple account support: The Docker image supports multiple email accounts, with suffix-based config for easy setup.
  • Secrets and env-vars: The image uses secrets and env-vars for a clean and secure setup.
  • Flexible delivery: The image supports flexible delivery options, including LMTP, SMTP, and custom MDA.

Overall, I’m thrilled with how this custom solution has turned out. It’s been a fun project to work on, and I’m excited to share it with others who may find it useful.

Odtwarzając synchronizację poczty: Jak stworzyłem niestandardowe rozwiązanie z Fetchmail i GoIMAPNotify

Niedawno znalazłem się w dość niezręcznej sytuacji z moim serwerem pocztowym. Jako osoba, która ceni sobie niezawodność i instantaneuszne powiadomienia, byłam sfrustrowana ograniczeniami mojej obecnej konfiguracji. Postanowiłem więc wziąć sprawy w swoje ręce i stworzyć niestandardowe rozwiązanie wykorzystując Fetchmail i GoIMAPNotify.

Problem: Nienieliwienna synchronizacja poczty

Od jakiegoś czasu uruchamiam serwer pocztowy Stalwart na moim serwerze domowym. Niemniej jednak, ze względu na nieprzewidywalność mojego połączenia internetowego i potrzebę częstego przenoszenia serwera, zorientowałem się, że potrzebuję bardziej niezawodnego rozwiązania do odbierania poczty. Zacząłem używać MXroute zarówno do wysyłania, jak i odbierania poczty, lecz szybko odkryłem, że Stalwart nie obsługuje ściągania poczty z zewnętrznych skrzynek.

To właśnie wtedy Fetchmail wkroczył na scenę – popularne narzędzie do ściągania poczty z zewnętrznych usług pocztowych. Niemniej jednak szybko zorientowałem się, że Fetchmail ma poważne ograniczenie: nie obsługuje IMAP IDLE, co oznacza, że będzie on tylko co jakiś czas sprawdzał nową pocztę. Dla kogoś takiego jak ja, kto potrzebuje instantaneusznych powiadomień, to po prostu nie było wystarczająco dobre.

Rozwiązanie: GoIMAPNotify i Fetchmail

To właśnie wtedy natrafiłem na GoIMAPNotify, narzędzie, które obsługuje IMAP IDLE i może wyzwalać polecenia, gdy nowa poczta przychodzi. Zorientowałem się, że jeśli mogę połączyć GoIMAPNotify z Fetchmail, mogę stworzyć niestandardowe rozwiązanie, które da mi instantaneuszną synchronizację poczty.

Postanowiłem więc stworzyć obraz Docker, który połączy GoIMAPNotify i Fetchmail. Rezultatem jest mały obraz Docker oparty na Alpine, którego nazwałem “ADHD IMAP Sync”. Z tym obrazem mogę teraz instantaneously synchronizować moją pocztę na wszystkich urządzeniach, bez martwienia się o opóźnienia spowodowane sondowaniem lub przerwami w połączeniu internetowym.

Jak to działa

Jak więc działa to niestandardowe rozwiązanie? Oto krok po kroku:

  • GoIMAPNotify nasłuchuje nowej poczty za pomocą IMAP IDLE, co pozwala mu otrzymywać instantaneuszne powiadomienia, gdy nowa poczta przychodzi.
  • Gdy nowa poczta trafia do mojej skrzynki, GoIMAPNotify budzi Fetchmail, który następnie ściąga pocztę z zewnętrznej usługi pocztowej.
  • Fetchmail wkłada pocztę do mojego lokalnego agenta dostarczania poczty (MDA), który następnie dostarcza ją do mojej skrzynki.

Cały ten proces odbywa się instantaneously, bez żadnych opóźnień spowodowanych sondowaniem lub przerwami. To była dla mnie przełomowa zmiana, i cieszę się, że mogę ją podzielić z innymi, którzy mogą mieć podobne problemy z synchronizacją poczty.

Funkcje i korzyści

Co więc są kluczowe funkcje i korzyści tego niestandardowego rozwiązania? Oto kilka najważniejszych:

  • Instantaneuszne wyzwalacze: dzięki GoIMAPNotify i Fetchmail pracującym razem, otrzymuję instantaneuszne powiadomienia, gdy nowa poczta przychodzi.
  • Współpraca z wieloma kontami: obraz Docker obsługuje wiele kont pocztowych, z konfiguracją opartą na sufiksach dla łatwego ustawienia.
  • Sekrety i zmienne środowiskowe: obraz używa sekretów i zmiennych środowiskowych dla czystej i bezpiecznej konfiguracji.
  • Elastyczna dostawa: obraz obsługuje elastyczną dostawę, w tym LMTP, SMTP i niestandardowy MDA.

Podsumowując, jestem zachwycony tym, jak to niestandardowe rozwiązanie wyszło. Był to fajny projekt, nad którym mógłem pracować, i cieszę się, że mogę go podzielić z innymi, którzy mogą go znaleźć użytecznym.

Leave a Reply

Your email address will not be published. Required fields are marked *

WordPress Appliance - Powered by TurnKey Linux