<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Uberspace on KevinHorst IT</title><link>https://www.kevinhorst.de/de/tags/uberspace/</link><description>Recent content in Uberspace on KevinHorst IT</description><generator>Hugo -- gohugo.io</generator><language>de</language><managingEditor>info@kevinhorst.de (Kevin)</managingEditor><webMaster>info@kevinhorst.de (Kevin)</webMaster><copyright>Dieses Werk ist unter einer Creative Commons Attribution-NonCommercial 4.0 International License lizenziert.</copyright><lastBuildDate>Mon, 01 Jan 0001 00:00:00 +0000</lastBuildDate><atom:link href="https://www.kevinhorst.de/de/tags/uberspace/index.xml" rel="self" type="application/rss+xml"/><item><title>Hinter den Kulissen: wie diese Seite deployed wird</title><link>https://www.kevinhorst.de/de/artikel/hinter-den-kulissen-deployment/</link><pubDate>Sat, 06 Dec 2025 00:00:00 +0000</pubDate><author>info@kevinhorst.de (Kevin)</author><guid>https://www.kevinhorst.de/de/artikel/hinter-den-kulissen-deployment/</guid><description>&lt;p&gt;Die Seite läuft auf &lt;a href="https://uberspace.de/" target="_blank" rel="noopener noreferrer"&gt;Uberspace&lt;/a&gt;
, einem Shared-Hoster ohne fertige PaaS-Pipeline. Statt Push-to-Deploy aus der Box ist das Deployment auf mehrere Komponenten verteilt: Codeberg als Git-Hosting, Woodpecker CI als Build-Runner und ein kleiner Webhook auf dem Uberspace, der das fertige Build-Artefakt entgegennimmt. Der Artikel beschreibt, wie diese Komponenten zusammenspielen.&lt;/p&gt;
&lt;p&gt;Den kompletten Source-Code dieser Seite findest du hier:&lt;/p&gt;
&lt;div class="codeberg-card-wrapper"&gt;
 &lt;a id="codeberg-09b5af9ded8c0f2ca441ade05063d55b" target="_blank" href="https://codeberg.org/head1328/kevinhorst.de" class="cursor-pointer"&gt;
 &lt;div
 class="w-full md:w-auto pt-3 p-5 border border-neutral-200 dark:border-neutral-700 border rounded-md shadow-2xl"&gt;
 &lt;div class="flex items-center"&gt;
 &lt;span class="text-2xl text-neutral-800 dark:text-neutral me-2"&gt;
 &lt;span class="relative block icon"&gt;&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;svg fill="currentColor" viewBox="0 0 24 24" role="img" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M11.955.49A12 12 0 0 0 0 12.49a12 12 0 0 0 1.832 6.373L11.838 5.928a.187.14 0 0 1 .324 0l10.006 12.935A12 12 0 0 0 24 12.49a12 12 0 0 0-12-12 12 12 0 0 0-.045 0zm.375 6.467 4.416 16.553a12 12 0 0 0 5.137-4.213z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
 &lt;/span&gt;
 &lt;div
 id="codeberg-09b5af9ded8c0f2ca441ade05063d55b-full_name"
 class="m-0 font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral"&gt;
 head1328/kevinhorst.de
 &lt;/div&gt;
 &lt;/div&gt;

 &lt;p id="codeberg-09b5af9ded8c0f2ca441ade05063d55b-description" class="m-0 mt-2 text-md text-neutral-800 dark:text-neutral"&gt;
 My personal homepage &lt;a href="https://kevinhorst.de" target="_blank" rel="noopener noreferrer"&gt;https://kevinhorst.de&lt;/a&gt;
 &lt;/p&gt;</description></item><item><title>Google Groups Spam mit Sieve filtern</title><link>https://www.kevinhorst.de/de/artikel/google-groups-spam-mit-sieve-filtern/</link><pubDate>Mon, 15 Sep 2025 00:00:00 +0000</pubDate><author>info@kevinhorst.de (Kevin)</author><guid>https://www.kevinhorst.de/de/artikel/google-groups-spam-mit-sieve-filtern/</guid><description>&lt;p&gt;In letzter Zeit landen vermehrt Spam-Mails im Postfach, die als seriöse Geschäftsanfrage getarnt sind (&amp;ldquo;Inquiry&amp;rdquo;, &amp;ldquo;Request for quote&amp;rdquo;, &amp;ldquo;Anfrage zu Ihrem Produkt&amp;rdquo;) und über eine Google Group verschickt werden. Technisch kommen sie über die Infrastruktur von &lt;code&gt;googlegroups.com&lt;/code&gt;, also mit gültigem SPF und DKIM von Google. Klassische Reputation-Filter greifen deshalb schlecht. Verräterisch sind die Header: &lt;code&gt;List-Id&lt;/code&gt; und &lt;code&gt;List-Unsubscribe&lt;/code&gt; zeigen auf &lt;code&gt;googlegroups.com&lt;/code&gt;, und es gibt einen &lt;code&gt;X-Google-Group-Id&lt;/code&gt;-Header. Eine echte Kundenanfrage an eine Firmenadresse hat diese Header nicht - genau darauf zielt der folgende Sieve-Filter.&lt;/p&gt;</description></item></channel></rss>