{"id":157,"date":"2022-12-06T18:54:51","date_gmt":"2022-12-06T17:54:51","guid":{"rendered":"https:\/\/ifit.click\/?p=157"},"modified":"2022-12-20T10:43:22","modified_gmt":"2022-12-20T09:43:22","slug":"unmoeglicher-poestler-mit-ecken-und-kanten","status":"publish","type":"post","link":"https:\/\/ifit.click\/?p=157","title":{"rendered":"Unm\u00f6glicher P\u00f6stler mit Ecken und Kanten"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\" id=\"0-ein-alter-esel-aus-der-schatztruhe\">Ein alter Esel aus der Schatztruhe<\/h3>\n\n\n\n<p>Als ich im Jahr 2008 einen Asus EeePC 1000H f\u00fcr knapp 700 Franken gekauft habe, h\u00e4tte ich nicht gedacht, dass der Entscheid, den guten alten Esel alias Asinus (lat. der Esel) mit 2 GB Ram zu best\u00fccken, ein guter Schachzug gewesen ist. Dies hat jetzt n\u00e4mlich zur Folge, dass das Ding heute noch mit dem 32-Bit Debian 11.5 auf einem i386 Prozessor (Atom) noch wie geschmiert l\u00e4uft. Debian oder FreeBSD sei&#8217;s gedankt, da z.B. Ubuntu bei 32 Bit schon lange aufgegeben hat. Auf alle F\u00e4lle l\u00e4uft der Asinus noch super und das pa\u00dfte perfekt, als ich nach langer Suche eine neuere (2022) f\u00fcnfteilige <a rel=\"noreferrer noopener\" href=\"https:\/\/www.linuxbabe.com\/mail-server\/build-email-server-from-scratch-debian-postfix-smtp\" target=\"_blank\">Anleitung f\u00fcr einen Mailserver<\/a> fand, der auf der Basis von Debian 11 von Null an (engl. from scratch) aufgebaut werden konnte. Der Asinus hat seitlich auch noch einen Slot f\u00fcr eine SD Card, die interne HD und die Batterie habe ich rausgenommen, so dass das Eselchen ger\u00e4uschlos arbeitet. Es hat bei ihm einfach alles f\u00fcr dieses Projekt gepa\u00dft, da mein Mini Lab fast nur mit einer Flotte von Raspberry Pi ausgestattet ist (siehe Impressum). Klar hatte das Projekt von Anfang an Ecken und Kanten, aber mir ging es wie bei allen Projekten (Webserver, Nextcloud, Mailserver, NAS, Blockchain) ums Prinzip.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"1-debian-115-rauf-auf-den-asinus\">Debian 11.5 rauf auf den Asinus<\/h4>\n\n\n\n<p>Wenn eine Software von einer \u00f6ffentlichen Stelle wie <a rel=\"noreferrer noopener\" href=\"https:\/\/www.debian.org\/\" target=\"_blank\">Debian.org<\/a> heruntergeladen wird, muss hinterher immer eine Verifikation stattfinden. Das mache ich in der Regel mit dem Windows-Tool &#171;HashMyFiles&#187;. Und die SHA256Sum des Image &#171;debian-11.5.0-i386-netinst.iso&#187; findet man <a rel=\"noreferrer noopener\" href=\"https:\/\/cdimage.debian.org\/debian-cd\/current\/i386\/iso-cd\/SHA256SUMS\" target=\"_blank\">hier<\/a>. H\u00e4ufig gestellte Fragen \u00fcber Debian-Installations-Images siehe Debian CD <a href=\"https:\/\/www.debian.org\/CD\/faq\/\">FAQ<\/a>. Dies ist das Resultat der Verifikation:<\/p>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background\" style=\"font-size:0.7rem\"><code>700a775805262e16858f64eebe1a3317edef568fc44a5d55fa6f8ce48301acb2  debian-11.5.0-i386-netinst.iso\n700a775805262e16858f64eebe1a3317edef568fc44a5d55fa6f8ce48301acb2  HashMyFiles OK<\/code><\/pre>\n\n\n\n<p>Das Flashen des Images &#171;debian-11.5.0-i386-netinst.iso&#187; auf einen 4 GB USB-Stick erfolgte mit dem Tool &#171;<a rel=\"noreferrer noopener\" href=\"https:\/\/rufus.ie\/de\/\" target=\"_blank\">Rufus<\/a>&#187; (Ver. 3.20.1929):<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-5.png\" alt=\"\" class=\"wp-image-175\" width=\"648\" height=\"773\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-5.png 486w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-5-251x300.png 251w\" sizes=\"auto, (max-width: 648px) 100vw, 648px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"861\" height=\"402\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-1.png\" alt=\"\" class=\"wp-image-165\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-1.png 861w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-1-300x140.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-1-768x359.png 768w\" sizes=\"auto, (max-width: 861px) 100vw, 861px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"598\" height=\"265\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-2.png\" alt=\"\" class=\"wp-image-166\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-2.png 598w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-2-300x133.png 300w\" sizes=\"auto, (max-width: 598px) 100vw, 598px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"764\" height=\"911\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-3.png\" alt=\"\" class=\"wp-image-167\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-3.png 764w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-3-252x300.png 252w\" sizes=\"auto, (max-width: 764px) 100vw, 764px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"2-start-%E2%80%9Edebian-1150-i386-netinstiso%E2%80%9C-\"><a>Start \u201edebian-11.5.0-i386-netinst.iso\u201c<\/a><\/h4>\n\n\n\n<p>Beim Asinus muss man zum Starten des USB-Sticks im BIOS die Ger\u00e4tereihenfolge so \u00e4ndern, dass der Stick beim n\u00e4chsten Booten das Debian 11.5 i386 als Erstes startet. Dann habe ich die Optionen eingegeben:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Graphical Install<\/li>\n\n\n\n<li>German<\/li>\n\n\n\n<li>Schweiz<\/li>\n\n\n\n<li>Schweizerdeutsch<\/li>\n\n\n\n<li>Netzwerk-Hardware erkennen<\/li>\n<\/ul>\n\n\n\n<p>Dann kommt &#171;leider&#187; die folgende Meldung<\/p>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>Teile Ihrer Hardware ben\u00f6tigen nicht-freie Firmware-Dateien, um zu funktionieren. Die Firmware kann von einem Wechseldatentr\u00e4ger, wie einem USB-Stick oder einer Diskette, geladen werden. Die fehlenden Firmware-Dateien sind: rt2860.bin. Falls Sie ein solches Medium nun vorliegen haben, legen\/stecken Sie es ein und fahren Sie fort.\nNein\n<strong>Ja<\/strong><\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\">Bemerkung zum Ralink-Treiber<\/h5>\n\n\n\n<p>Die Datei \u201efirmware-ralink_0.43_all.deb\u201c wurde unter dem <a rel=\"noreferrer noopener\" href=\"https:\/\/packages.debian.org\/search?searchon=contents&amp;keywords=rt2860.bin\" target=\"_blank\">Link<\/a> gefunden und auf einen anderen USB-Stick geladen und in einem anderen USB-Steckplatz eingesteckt. Beim Einlegen des USB-Sticks und die Selektion von &#171;Ja&#187; (siehe oben) wurde die Datei gelesen. Das hat geklappt. Danach ging es weiter mit der Installation des Betriebssystems Debian 11.5.<\/p>\n<cite>https:\/\/packages.debian.org\/search?searchon=contents&amp;keywords=rt2860.bin<\/cite><\/blockquote>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prim\u00e4re Netzwerk-Schnittstelle<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code><strong>eth0: Qualcomm Atheros AR8121\/AR8113 Gigabit or Fast-Ethernet<\/strong>\nwlan0: Ralink Corp. RT2790 Wireless 802.11n IT\/2R PCIe<\/code><\/pre>\n\n\n\n<p>Es ist nat\u00fcrlich empfehlenswert, die Schnittstelle &#171;eth0&#187; zu w\u00e4hlen, die hier maximal 100 Mbps aufweist. Das gen\u00fcgt f\u00fcr unser Projekt &#171;Ein unm\u00f6glicher P\u00f6stler&#187;. Au\u00dferdem stehen die Partitionierungsdaten f\u00fcr die 32 GB microSDHC nicht zur Verf\u00fcgung, statt dessen sind im folgenden Beispiel die Daten f\u00fcr die 160 GB Originalfestplatte f\u00fcr Debian 8 aufgef\u00fchrt.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Rechnername: mail<\/li>\n\n\n\n<li>Domain-Name: ifit.at<\/li>\n\n\n\n<li>Root-Passwort: *** (stark)<\/li>\n\n\n\n<li>Vollst\u00e4ndiger Name des Benutzers: Louis A. Venetz<\/li>\n\n\n\n<li>Benutzername f\u00fcr Ihr Konto: louis<\/li>\n\n\n\n<li>Passwort f\u00fcr louis: *** (stark)<\/li>\n\n\n\n<li>Partitionierungsmethode: Gef\u00fchrt \u2013 vollst\u00e4ndige Festplatte verwenden<\/li>\n\n\n\n<li>Zu partitionierende Festplatte: SCSI1 (0,0,0) (sda) &#8211; <strong>160.0 GB<\/strong> (ST9160827AS)<\/li>\n\n\n\n<li>Partitionierungsschema: Alle Dateien auf eine Partition, f\u00fcr Anf\u00e4nger empfohlen<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background\" style=\"font-size:0.9rem\"><code>Gef\u00fchrte Partitionierung\nSoftware-RAID konfigurieren\nLogical Volume Manager konfigurieren\nVerschl\u00fcsselte Datentr\u00e4ger konfigurieren\niSCSI-Volumes konfigurieren\nSCSI1 (0,0,0) (sda) \u2013 160.0 GB ATA ST9160827AS\n\tNr. 1 prim\u00e4r\t155.8 GB\tf\text4\t\t\/\n\tNr. 5\tlogisch\t  4.3 GB\tf\tSwap\t\tSwap<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00c4nderungen auf die Festplatten schreiben? Ja<\/li>\n\n\n\n<li>Einen Netzwerkspiegel verwenden? Ja<\/li>\n\n\n\n<li>Schweiz<\/li>\n\n\n\n<li>debian.ethz.ch<\/li>\n\n\n\n<li>Keinen http-Proxy<\/li>\n\n\n\n<li>An der Paketverwendungserfassung teilnehmen? Ja<\/li>\n<\/ul>\n\n\n\n<p class=\"has-background-background-color has-background\">[ ] Debian desktop environment<br>[ ] \u2026 Gnome<br>[ ] \u2026 Xfce<br>[ ] \u2026 KDE<br>[ ] \u2026 Cinnamon<br>[ ] \u2026 MATE<br>[ ] \u2026 LXDE<br>[ ] Webserver<br>[ ] Druckerserver (gel\u00f6scht, da unn\u00f6tig vom Installer ausgew\u00e4hlt!)<br><strong>[*] SSH Server<\/strong> &nbsp;&nbsp;&nbsp;&nbsp; <br><strong>[*] Standard-Systemwerkzeuge<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\">Hinweis zur Paketverwendungserfassung<\/h5>\n\n\n\n<p>Nur die letzten beiden Optionen sind aktiviert. Den Rest braucht es f\u00fcr dieses Projekt nicht.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>Es scheint, als ob diese Installation von Debian das einzige Betriebssystem auf diesem Computer ist. Wenn dies der Fall ist, sollte es kein Problem sein, den Bootloader in den Master Boot Record Ihrer ersten Festplatte zu installieren.\nWarnung: Wenn der Installer eines anderen Betriebssystems auf Ihrem Computer nicht richtig erkennt, Sie aber den Master Boot Record ver\u00e4ndern, werden Sie dieses andere Betriebssystem vorl\u00e4ufig nicht mehr starten k\u00f6nnen. Allerdings kann GRUB im Nachhinein manuell konfiguriert werden, so dass das andere Betriebssystem wieder startet.\nDen GRUB-Bootloader in den Master Boot Record installieren? <strong>Ja<\/strong>\n\nDas neu installierte System muss boot-F\u00e4hig gemacht werden, indem der GRUB-Bootloader auf einem boot-f\u00e4higen Medium installiert wird. Gew\u00f6hnlich wird dazu GRUB im Master Boot Record Ihrer ersten Festplatte installiert. Wenn Sie m\u00f6chten, k\u00f6nnen Sie GRUB auch auf einer anderen Partition, einem anderen Laufwerk oder auf einer Diskette installieren.\n\nGer\u00e4t f\u00fcr die Bootloader-Installation:\n\t\tGer\u00e4t on Hand eingeben\n\t\t<strong>\/dev\/sda (ata-ST9160828AS_SRF188D0)<\/strong>\n\n<strong>Installation abgeschlossen<\/strong>\nDie Installation ist abgeschlossen und es ist an der Zeit, Ihr neues System zu starten. Achten Sie darauf, das Installationsmedium zu entfernen (CD, Disketten), so dass Sie das neue System starten statt einer erneuten Installation. <strong>&lt;Weiter&gt;<\/strong><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"4-build-email-server-from-scratch-on-debian-%E2%80%93-basic-postfix-setup\">Build Email Server From Scratch on Debian \u2013 Basic Postfix Setup<\/h3>\n\n\n\n<p>Der erste Teil der zugrunde liegenden Anleitung f\u00fcr diesen Mailserver stammt vom folgenden <a rel=\"noreferrer noopener\" href=\"https:\/\/www.linuxbabe.com\/mail-server\/build-email-server-from-scratch-debian-postfix-smtp\" target=\"_blank\">Link<\/a>. Der Asinus ist jedoch an einem Modem von UPC Cablecom (neu: <a rel=\"noreferrer noopener\" href=\"https:\/\/www.sunrise.ch\/de\/home\" target=\"_blank\">Sunrise<\/a>) angeschlossen, welches im Bridge Mode geschaltet ist. Der Bridge Mode vergibt dem Asinus via DHCP die IP-Adresse 84.74.0.14\/22 (1022 Hosts), welche leider in der <a rel=\"noreferrer noopener\" href=\"https:\/\/www.secure.sorbs.net\/scgi-bin\/login\" target=\"_blank\">SORBS-Datenbank<\/a> gelistet ist, obwohl noch gar keine Mails gesendet worden sind. Das ist nat\u00fcrlich ein Problem und es wird auch nicht das einzige sein. Ich komme aber sp\u00e4ter noch darauf zur\u00fcck. Zun\u00e4chst wollen wir Postfix so gut wie m\u00f6glich konfigurieren.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"5-internet-service-providers-isp\">Internet Service Providers (ISP)<\/h4>\n\n\n\n<p>Sobald die IP-Adresse des ISP bekannt ist, kann man via SSH (dieses Protokoll habe ich ja bei der Konfiguration aktiviert) auf den Server zugreifen. Aber die Domain &#171;ifit.at&#187; muss auch noch in der DNS-Zone von <a rel=\"noreferrer noopener\" href=\"https:\/\/swiss-dns.com\/site\/\" target=\"_blank\">Swiss-DNS<\/a> als A Record (und sp\u00e4ter noch als MX sowie verschiedenen TXT Records) eingetragen sein.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-15.png\" alt=\"\" class=\"wp-image-191\" width=\"666\" height=\"160\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-15.png 791w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-15-300x72.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-15-768x185.png 768w\" sizes=\"auto, (max-width: 666px) 100vw, 666px\" \/><\/figure>\n\n\n\n<p>Dann kann man im PuTTY oder via Terminal auf einen anderen Linux-Client oder -Server auf den Asinus schon zugreifen. Hinweis: Das Packet \u201esudo\u201c habe ich auf der Console installiert und den Benutzer &#171;louis&#187; nachher in &#171;visudo&#187; eingetragen, damit dieser Benutzer auch \u00fcber SSH sudo-Rechte bekommen kann.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-16.png\" alt=\"\" class=\"wp-image-192\" width=\"648\" height=\"634\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-16.png 452w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-16-300x293.png 300w\" sizes=\"auto, (max-width: 648px) 100vw, 648px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"868\" height=\"517\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-17.png\" alt=\"\" class=\"wp-image-193\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-17.png 868w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-17-300x179.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-17-768x457.png 768w\" sizes=\"auto, (max-width: 868px) 100vw, 868px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"6-firewall-ufw-f%C3%BCr-ssh-aktivieren-\">Firewall UFW f\u00fcr SSH aktivieren <\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ sudo apt install ufw\nlouis@mail:~$ sudo ufw default deny incoming\nlouis@mail:~$ sudo ufw default allow outgoing\nlouis@mail:~$ sudo ufw allow ssh\nlouis@mail:~$ sudo ufw enable\nlouis@mail:~$ ...\nlouis@mail:~$ sudo ufw status numbered\nStatus: active\n     To                         Action      From\n     --                         ------      ----\n&#91; 1] 22\/tcp                     ALLOW IN    Anywhere<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"7-hostname-des-mailserver-%C3%BCberpr%C3%BCfen\">Hostname des Mailserver \u00fcberpr\u00fcfen<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Hinweis: \u201esudo\u201c und \u201elouis\u201c sind bereits installiert! Der MX Record muss in der DNS Zone &#171;ifit.at&#187; auch definiert sein.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ hostname -f\nmail.ifit.at<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"8-mx-record-f%C3%BCr-den-mailserver\">MX Record f\u00fcr den Mailserver<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"792\" height=\"147\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-10.png\" alt=\"\" class=\"wp-image-180\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-10.png 792w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-10-300x56.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-10-768x143.png 768w\" sizes=\"auto, (max-width: 792px) 100vw, 792px\" \/><figcaption class=\"wp-element-caption\">F\u00fcr einen Mailserver braucht es zwingend einen MX Record. Aber wie bei der Ausgabe von &#171;dig&#187; und &#171;host&#187; zu sehen ist, werden diese Antworten fr\u00fcher oder sp\u00e4ter zu Problemen f\u00fchren. Der Reverse DNS Pointer sollte auf <strong>mail.ifit.at<\/strong> zeigen. Aber diese \u00c4nderung kann ich <strong>nicht selbst<\/strong> machen, warum auch immer, nur der ISP UPC Cablecom (neu: Sunrise) kann das machen. Aber die Mitarbeiter von UPC haben offiziell seit Jahren keine Ahnung, wissen es nicht oder wollen es nicht wissen. Ich hoffe, dass es bei <strong>Sunrise<\/strong> besser wird!<\/figcaption><\/figure>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-orange-background-color has-background\" style=\"font-size:0.9rem\"><code>louis@mail:~$ <strong>dig -x 84.74.0.14 +short<\/strong>\n84-74-0-14.dclient.hispeed.ch.\n\nlouis@mail:~$ <strong>host 84.74.0.14<\/strong>\n14.0.74.84.in-addr.arpa domain name pointer 84-74-0-14.dclient.hispeed.ch.<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"9-postfix-smtp-server-installieren\">Postfix SMTP Server installieren<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ sudo apt-get install postfix -y<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-11-1024x581.png\" alt=\"\" class=\"wp-image-183\" width=\"650\" height=\"368\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-11-1024x581.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-11-300x170.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-11-768x435.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-11.png 1067w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"581\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-12-1024x581.png\" alt=\"\" class=\"wp-image-184\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-12-1024x581.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-12-300x170.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-12-768x435.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-12.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"581\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-13-1024x581.png\" alt=\"\" class=\"wp-image-185\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-13-1024x581.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-13-300x170.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-13-768x435.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-13.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background\" style=\"font-size:0.7rem\"><code>louis@mail:~$ <strong>sudo postconf mail_version<\/strong>\nmail_version = 3.5.13\n\nlouis@mail:~$ <strong>sudo ss -lnpt | grep master<\/strong>\nLISTEN 0      100          0.0.0.0:25        0.0.0.0:*    users:((\"master\",pid=1857,fd=13))\nLISTEN 0      100             &#91;::]:25           &#91;::]:*    users:((\"master\",pid=1857,fd=14))\n\nlouis@mail:~$ <strong>dpkg -L postfix | grep \/usr\/sbin\/<\/strong>\n\/usr\/sbin\/postalias\n\/usr\/sbin\/postcat\n\/usr\/sbin\/postconf\n\/usr\/sbin\/postdrop\n\/usr\/sbin\/postfix\n\/usr\/sbin\/postfix-add-filter\n\/usr\/sbin\/postfix-add-policy\n\/usr\/sbin\/postkick\n\/usr\/sbin\/postlock\n\/usr\/sbin\/postlog\n\/usr\/sbin\/postmap\n\/usr\/sbin\/postmulti\n\/usr\/sbin\/postqueue\n\/usr\/sbin\/postsuper\n\/usr\/sbin\/posttls-finger\n\/usr\/sbin\/qmqp-sink\n\/usr\/sbin\/qmqp-source\n\/usr\/sbin\/qshape\n\/usr\/sbin\/rmail\n\/usr\/sbin\/sendmail\n\/usr\/sbin\/smtp-sink\n\/usr\/sbin\/smtp-source<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"10-firewall-mit-tcp-port-25-erg%C3%A4nzen\">Firewall mit TCP Port 25 erg\u00e4nzen<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo ufw allow 25\/tcp<\/strong>\nlouis@mail:~$ <strong>sudo ufw status<\/strong>\nStatus: active\nTo                         Action      From\n--                         ------      ----\n22\/tcp                     ALLOW       Anywhere\n25\/tcp                     ALLOW       Anywhere\n\n<strong>https:\/\/www.ipvoid.com\/port-scan\/<\/strong>\nPort Scanning Results\nPort\tType\tStatus\tService\n21\tTCP\t Filtered\tftp\n<strong>22\tTCP\t Open\t\tssh<\/strong>\n23\tTCP\t Filtered\ttelnet\n<strong>25\tTCP\t Open\t\tsmtp<\/strong>\n53\tTCP\t Filtered\tdomain\n80\tTCP\t Filtered\thttp\n110\tTCP\t Filtered\tpop3\n111\tTCP\t Filtered\trpcbind\n135\tTCP\t Filtered\tmsrpc\n139\tTCP\t Filtered\tnetbios-ssn\n...<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"11-auf-tcp-port-25-von-google-zugreifen\">Auf TCP Port 25 von Google zugreifen<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo apt install telnet<\/strong>\nlouis@mail:~$ <strong>telnet gmail-smtp-in.l.google.com 25<\/strong>\nTrying 108.177.119.26...\nConnected to gmail-smtp-in.l.google.com.\nEscape character is '^]'.\n220 mx.google.com ESMTP oq19-20020a170906cc9300b007c0d428795dsi6062953ejb.191 - gsmtp\nquit\n221 2.0.0 closing connection oq19-20020a170906cc9300b007c0d428795dsi6062953ejb.191 - gsmtp\nConnection closed by foreign host.<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"12-postfix-hostname-richtig-setzen\">Postfix Hostname richtig setzen<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background\" style=\"font-size:0.8rem\"><code>louis@mail:~$ <strong>sudo nano \/etc\/postfix\/main.cf<\/strong>\n...\nmyhostname = <strong>mail.ifit.at<\/strong>\nalias_maps = hash:\/etc\/aliases\nalias_database = hash:\/etc\/aliases\nmyorigin = \/etc\/mailname\nmydestination = $myhostname, ifit.at, mail.ifit.at, localhost.ifit.at, localhost\nrelayhost =\nmynetworks = 127.0.0.0\/8 &#91;::ffff:127.0.0.0]\/104 &#91;::1]\/128\nmailbox_size_limit = 0\nrecipient_delimiter = +\ninet_interfaces = all\ninet_protocols = all\n...\nlouis@mail:~$ <strong>sudo systemctl restart postfix<\/strong><\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\" id=\"13-hinweis-zu-myhostname\">Hinweis zu &#171;myhostname&#187;<\/h5>\n<cite>Sobald &#171;myhostname&#187; (siehe oben 3. Zeile) in Postfix gesetzt ist, spielt der Hostname des Betriebssystems keine Rolle mehr. Der Hostname des Betriebssystems kann in einen beliebigen Hostnamen ge\u00e4ndert werden.<\/cite><\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"14-email-alias-generieren\">Email Alias generieren<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo nano \/etc\/aliases<\/strong>\n# See man 5 aliases for format\npostmaster:    root\nroot:   louis\nlouis@mail:~$ <strong>sudo newaliases<\/strong><\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\" id=\"15-hinweis-zur-1-datensicherung\">Hinweis zur 1. Datensicherung<\/h5>\n<cite>Es werden in diesem Blog nicht alle Einzelheiten, die ich zwar von der Originalanleitung \u00fcbernommen habe, aufgezeichnet, da sie nicht unbedingt zwingend sind. Der Leser kann dies aber jederzeit selbst tun. Man kann zwar mit &#171;telnet&#187;, &#171;sendmail&#187; und &#171;mailutils&#187; (siehe Step 8: <strong>Email <\/strong>in der <a rel=\"noreferrer noopener\" href=\"https:\/\/www.linuxbabe.com\/mail-server\/build-email-server-from-scratch-debian-postfix-smtp\" target=\"_blank\">Originalanleitung<\/a>) schon Mails senden und lesen, aber das verwirrt eher als es zu einer vertieften Einsicht verhilft. Es gibt jedoch schon auch gewisse praktische Punkte, die auch in der Originalanleitung fehlen. Was z.B. zu empfehlen ist, ist nach jedem Part eine Datensicherung durchzuf\u00fchren, d.h. ein Image zu schreiben. Ich verwende hierzu das Tool <strong>Win32DiskImager.exe<\/strong> in Windows 10. Die erste Sicherungsdatei (Image) lautet bei mir: &#171;<strong>2022-11-25-Asinus-i386-on-Debian-11.5-Server-Linux-Kernel-5.10.0-19-686-pae+Postfix.img<\/strong>&#171;. Selbstverst\u00e4ndlich wurde auch eine Verifikation durchgef\u00fchrt.<\/cite><\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"499\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-18-1024x499.png\" alt=\"\" class=\"wp-image-195\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-18-1024x499.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-18-300x146.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-18-768x374.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-18.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"16-install-dovecot-imap-server-on-debian-amp-enable-tls-encryption\">Install Dovecot IMAP Server on Debian &amp; Enable TLS Encryption<\/h3>\n\n\n\n<p>Dies ist der zweite Teil der Originalanleitung und den findet man <a rel=\"noreferrer noopener\" href=\"https:\/\/www.linuxbabe.com\/mail-server\/install-dovecot-imap-server-debian\" target=\"_blank\">hier<\/a>. Als erste Ma\u00dfnahme richte ich das automatisch Login ein. Es wird jedoch vorausgesetzt, dass ein Schl\u00fcsselpaar von Private und Public Key vorhanden ist. Wenn nicht, dann g\u00e4be es unter dem Link <a rel=\"noreferrer noopener\" href=\"https:\/\/raspibolt.org\/guide\/raspberry-pi\/security.html#security\" target=\"_blank\">Security<\/a> von <a rel=\"noreferrer noopener\" href=\"https:\/\/raspibolt.org\/\" target=\"_blank\">RaspiBolt<\/a> eine ausf\u00fchrliche Anleitung. Unter Linux w\u00e4re der erste Befehl &#171;ssh-copy-id louis@mail.ifit.at&#187; hilfreich, danach ginge es mit dem Befehl &#171;ssh louis@mail.ifit.at&#187; weiter. Aber machen Sie das nicht auf dem Asinus, da Sie beim ersten Befehl das starke Passwort nicht wissen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"17-automatisches-login-keys-\"><a>Automatisches Login (Keys)<\/a><\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>pwd<\/strong>\n\/home\/louis\nlouis@mail:~$ <strong>mkdir .ssh<\/strong>\nlouis@mail:~$ <strong>nano .ssh\/authorized_keys<\/strong>\n       ### Public Key einf\u00fcgen ###\nlouis@mail:~$ <strong>chmod -R 700 .ssh\/<\/strong>\nlouis@mail:~$ <strong>chown -R louis:louis ~\/.ssh<\/strong>\nlouis@mail:~$ <strong>chmod 600 ~\/.ssh\/authorized_keys<\/strong>\nlouis@mail:~$ <strong>sudo nano \/etc\/ssh\/sshd_confi<\/strong>g\n       ### PasswordAuthentication yes =&gt; no ###\nlouis@mail:~$ <strong>sudo service ssh restart<\/strong><\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-16.png\" alt=\"\" class=\"wp-image-192\" width=\"648\" height=\"634\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-16.png 452w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-16-300x293.png 300w\" sizes=\"auto, (max-width: 648px) 100vw, 648px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-19.png\" alt=\"\" class=\"wp-image-196\" width=\"646\" height=\"632\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-19.png 452w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-19-300x293.png 300w\" sizes=\"auto, (max-width: 646px) 100vw, 646px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"868\" height=\"517\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-17.png\" alt=\"\" class=\"wp-image-193\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-17.png 868w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-17-300x179.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-17-768x457.png 768w\" sizes=\"auto, (max-width: 868px) 100vw, 868px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"18-ports-in-firewall-%C3%B6ffnen-nur-imap\">Ports in Firewall \u00f6ffnen (nur IMAP)<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo ufw allow 80,443,587,465,143,993\/tcp<\/strong>\nRule added\nRule added (v6)\nlouis@mail:~$ <strong>sudo ufw status numbered<\/strong>\nStatus: active\n     To                         Action      From\n     --                         ------      ----\n&#91; 1] 22\/tcp                     ALLOW IN    Anywhere\n&#91; 2] 80,143,443,465,587,993\/tcp ALLOW IN    Anywhere\n&#91; 3] 80,143,443,465,587,993\/tcp (v6) ALLOW IN    Anywhere (v6)\nlouis@mail:~$ <strong>sudo ufw delete 3<\/strong>\nDeleting:\n allow 80,143,443,465,587,993\/tcp\nProceed with operation (y|n)? <strong>y<\/strong>\nRule deleted (v6)\nlouis@mail:~$ <strong>sudo ufw status numbered<\/strong>\nStatus: active\n     To                         Action      From\n     --                         ------      ----\n&#91; 1] 22\/tcp                     ALLOW IN    Anywhere\n&#91; 2] 80,143,443,465,587,993\/tcp ALLOW IN    Anywhere<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"19-email-server-sichern-mit-tls-zertifikat\">Email Server sichern mit TLS Zertifikat<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo apt update &amp;&amp; sudo apt upgrade<\/strong>\nlouis@mail:~$ <strong>sudo apt install certbot<\/strong><\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\" id=\"20-hinweis-zum-port-80\">Hinweis zum Port 80<\/h5>\n\n\n\n<p id=\"tw-target-text\">Der folgende Befehl installiert den Apache-Webserver, falls er noch nicht auf dem System installiert ist. Ausserdem ist n\u00f6tig, den Port 80 (siehe oben) zumindest tempor\u00e4r offen zu halten. Sie k\u00f6nnen dann sp\u00e4ter (nach der Zertifizierung) den &#171;Tag der Offenen T\u00fcr&#187; wieder beenden!<\/p>\n<cite>Let&#8217;s Encrypt r\u00e4t jedoch den Port 80 auch nach der Zertifizierung offen zu behalten. Warum, ist mir nach vielen Jahren Verwendung immer noch nicht ganz klar!<\/cite><\/blockquote>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background\" style=\"font-size:0.9rem\"><code>louis@mail:~$ <strong>sudo apt install python3-certbot-apache<\/strong>\nlouis@mail:~$ <strong>sudo nano \/etc\/apache2\/sites-available\/mail.ifit.at.conf<\/strong>\n&lt;VirtualHost *:80&gt;\n        ServerName mail.ifit.at\n\n        DocumentRoot \/var\/www\/html\/\n&lt;\/VirtualHost&gt;\nlouis@mail:~$ <strong>sudo a2ensite mail.ifit.at.conf<\/strong>\nEnabling site mail.ifit.at.\nTo activate the new configuration, you need to run:\n  systemctl reload apache2\nlouis@mail:~$ <strong>sudo a2dissite 000-default<\/strong>\nSite 000-default disabled.\nTo activate the new configuration, you need to run:\n  systemctl reload apache2\nlouis@mail:~$ <strong>sudo systemctl reload apache2<\/strong>\nlouis@mail:~$ <strong>sudo certbot certonly -a apache --agree-tos --no-eff-email --staple-ocsp --email web@ifit.ch -d mail.ifit.at<\/strong>\nSaving debug log to \/var\/log\/letsencrypt\/letsencrypt.log\nPlugins selected: Authenticator apache, Installer None\nAccount registered.\nRequesting a certificate for mail.ifit.at\nPerforming the following challenges:\nhttp-01 challenge for mail.ifit.at\nEnabled Apache rewrite module\nWaiting for verification...\nCleaning up challenges\n\t\nIMPORTANT NOTES:\n - <strong>Congratulations<\/strong>! Your certificate and chain have been saved at:\n   \/etc\/letsencrypt\/live\/mail.ifit.at\/fullchain.pem\n   Your key file has been saved at:\n   \/etc\/letsencrypt\/live\/mail.ifit.at\/privkey.pem\n   Your certificate will expire on 2023-02-23. To obtain a new or\n   tweaked version of this certificate in the future, simply run\n   certbot again. To non-interactively renew *all* of your\n   certificates, run \"certbot renew\"\n - If you like Certbot, please consider supporting our work by:\n   Donating to ISRG \/ Let's Encrypt:   https:\/\/letsencrypt.org\/donate\n   Donating to EFF:                    https:\/\/eff.org\/donate-le<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\" id=\"21-hinweis-zum-gr%C3%BCnen-a\">Hinweis zum gr\u00fcnen A+<\/h5>\n\n\n\n<p>Nach der Zertifizierung schlie\u00dfe ich normalerweise Port 80 wieder und f\u00fchre den Befehl &#171;<strong>https:\/\/www.ssllabs.com\/ssltest\/analyze.html?d=mail.ifit.at<\/strong>&#187; im Browser aus. Wenn man kein gr\u00fcnes A+ bekommt, dann stimmt &#8218;was nicht. Das geht aber hier jetzt nicht mehr, weil es einen Konflikt mit der Subdomain &#171;postfixadmin.ifit.at&#187; gibt, die <a rel=\"noreferrer noopener\" href=\"https:\/\/www.linuxbabe.com\/mail-server\/postfixadmin-create-virtual-mailboxes-debian\" target=\"_blank\">im dritten Teil<\/a> der Originalanleitung behandelt wird. <\/p>\n<cite>https:\/\/www.ssllabs.com\/ssltest\/analyze.html?d=postfixadmin.ifit.at<\/cite><\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"880\" height=\"962\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-50.png\" alt=\"\" class=\"wp-image-357\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-50.png 880w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-50-274x300.png 274w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-50-768x840.png 768w\" sizes=\"auto, (max-width: 880px) 100vw, 880px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"22-submission-service-in-postfix-aktivieren\">Submission Service in Postfix aktivieren<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background\" style=\"font-size:0.7rem\"><code>louis@mail:~$ <strong>sudo nano \/etc\/postfix\/master.cf<\/strong>\n...\nsubmission     inet     n    -    y    -    -    smtpd\n  -o syslog_name=postfix\/submission\n  -o smtpd_tls_security_level=encrypt\n  -o smtpd_tls_wrappermode=no\n  -o smtpd_sasl_auth_enable=yes\n  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject\n  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject\n  -o smtpd_sasl_type=dovecot\n  -o smtpd_sasl_path=private\/auth\n...\nsmtps     inet  n       -       y       -       -       smtpd\n  -o syslog_name=postfix\/smtps\n  -o smtpd_tls_wrappermode=yes\n  -o smtpd_sasl_auth_enable=yes\n  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject\n  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject\n  -o smtpd_sasl_type=dovecot\n  -o smtpd_sasl_path=private\/auth\n...\nlouis@mail:~$ <strong>sudo nano \/etc\/postfix\/main.cf<\/strong>\n...\n# TLS parameters\n#smtpd_tls_cert_file=\/etc\/ssl\/certs\/ssl-cert-snakeoil.pem\n#smtpd_tls_key_file=\/etc\/ssl\/private\/ssl-cert-snakeoil.key\nsmtpd_tls_security_level=may\nsmtp_tls_CApath=\/etc\/ssl\/certs\nsmtp_tls_security_level=may\nsmtp_tls_session_cache_database = btree:${data_directory}\/smtp_scache\n\n#Enable TLS Encryption when Postfix receives incoming emails\nsmtpd_tls_cert_file=\/etc\/letsencrypt\/live\/mail.ifit.at\/fullchain.pem\nsmtpd_tls_key_file=\/etc\/letsencrypt\/live\/mail.ifit.at\/privkey.pem\nsmtpd_tls_security_level=may\nsmtpd_tls_loglevel = 1\nsmtpd_tls_session_cache_database = btree:${data_directory}\/smtpd_scache\n\n#Enable TLS Encryption when Postfix sends outgoing emails\nsmtp_tls_security_level = may\nsmtp_tls_loglevel = 1\nsmtp_tls_session_cache_database = btree:${data_directory}\/smtp_scache\n\n#Enforce TLSv1.3 or TLSv1.2\nsmtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1\nsmtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1\nsmtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1\nsmtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1\n...\nlouis@mail:~$ <strong>sudo systemctl restart postfix<\/strong>\nlouis@mail:~$ <strong>sudo ss -lnpt | grep master<\/strong>\nLISTEN 0      100          0.0.0.0:25        0.0.0.0:*    users:((\"master\",pid=3620,fd=13))                                                \nLISTEN 0      100          0.0.0.0:587       0.0.0.0:*    users:((\"master\",pid=3620,fd=17))                                                \nLISTEN 0      100          0.0.0.0:465       0.0.0.0:*    users:((\"master\",pid=3620,fd=20))\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"23-dovecot-imap-server-installieren\">Dovecot IMAP Server installieren<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo apt install dovecot-core dovecot-imapd<\/strong><\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"24-imap-protokoll-einschalten\">IMAP Protokoll einschalten<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo nano \/etc\/dovecot\/dovecot.conf<\/strong>\n...\n# Enable installed protocols\nprotocols = imap\n!include_try \/usr\/share\/dovecot\/protocols.d\/*.protocol<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"25-speicherort-der-mailbox-festlegen\">Speicherort der Mailbox festlegen<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo postconf mail_spool_directory<\/strong>\nmail_spool_directory = \/var\/mail\n...\nlouis@mail:~$ <strong>sudo nano \/etc\/dovecot\/conf.d\/10-mail.conf<\/strong>\n...\n#\n# See doc\/wiki\/Variables.txt for full list. Some examples:\n#\n#   mail_location = maildir:~\/Maildir\n#   mail_location = mbox:~\/mail:INBOX=\/var\/mail\/%u\n#   mail_location = mbox:\/var\/mail\/%d\/%1n\/%n:INDEX=\/var\/indexes\/%d\/%1n\/%n\n#\n# &lt;doc\/wiki\/MailLocation.txt&gt;\n#\n#mail_location = mbox:~\/mail:INBOX=\/var\/mail\/%u\n<strong>mail_location = maildir:~\/Maildir<\/strong>\n...\nlouis@mail:~$ <strong>sudo adduser dovecot mail<\/strong>\nF\u00fcge Benutzer \u00bbdovecot\u00ab der Gruppe \u00bbmail\u00ab hinzu ...\nBenutzer dovecot wird zur Gruppe mail hinzugef\u00fcgt.<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"26-dovecot-sendet-emails-an-message-store\">Dovecot sendet Emails an Message Store<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo apt install dovecot-lmtpd<\/strong>\nlouis@mail:~$ <strong>sudo nano \/etc\/dovecot\/dovecot.conf<\/strong>\n# Enable installed protocols\n# protocols = imap\nprotocols = imap lmtp\n!include_try \/usr\/share\/dovecot\/protocols.d\/*.protocol\n...\n<strong><em>Vorher\n<\/em><\/strong>\nservice lmtp {\n  unix_listener lmtp {\n    #mode = 0666\n  }\n\n  # Create inet listener only if you can't use the above UNIX socket\n  #inet_listener lmtp {\n    # Avoid making LMTP visible for the entire internet\n    #address =\n    #port =\n  #}\n}\n<strong><em>Nachher\n<\/em><\/strong>\nservice lmtp {\n unix_listener \/var\/spool\/postfix\/private\/dovecot-lmtp {\n   mode = 0600\n   user = postfix\n   group = postfix\n  }\n\n  # Create inet listener only if you can't use the above UNIX socket\n  #inet_listener lmtp {\n    # Avoid making LMTP visible for the entire internet\n    #address =\n    #port =\n  #}\n}\n...\nlouis@mail:~$ <strong>sudo nano \/etc\/postfix\/main.cf<\/strong>\n...\t\nsmtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination\nmyhostname = mail.ifit.at\nalias_maps = hash:\/etc\/aliases\nalias_database = hash:\/etc\/aliases\nmyorigin = \/etc\/mailname\nmydestination = $myhostname, ifit.at, mail.ifit.at, localhost.ifit.at, localhost\nrelayhost =\nmynetworks = 127.0.0.0\/8 &#91;::ffff:127.0.0.0]\/104 &#91;::1]\/128\nmailbox_size_limit = 0\nrecipient_delimiter = +\ninet_interfaces = all\ninet_protocols = ipv4\n<strong>mailbox_transport = lmtp:unix:private\/dovecot-lmtp\nsmtputf8_enable = no<\/strong><\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"27-user-authentication-mechanism\">User Authentication Mechanism<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo nano \/etc\/dovecot\/conf.d\/10-auth.conf<\/strong>\n...\n#disable_plaintext_auth = yes\ndisable_plaintext_auth = yes\n..\n#auth_username_format = %Lu\nauth_username_format = %n\n...\n#auth_mechanisms = plain\nauth_mechanisms = plain login<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"28-ssltls-encryption\">SSL\/TLS Encryption<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo nano \/etc\/dovecot\/conf.d\/10-ssl.conf<\/strong>\n...\n# ssl = yes\nssl = required\n...\n# ssl_cert = &lt;\/etc\/dovecot\/private\/dovecot.pem\nssl_cert = &lt;\/etc\/letsencrypt\/live\/mail.ifit.at\/fullchain.pem\n# ssl_key = &lt;\/etc\/dovecot\/private\/dovecot.key\nssl_key = &lt;\/etc\/letsencrypt\/live\/mail.ifit.at\/privkey.pem\n\u2026\n# Prefer the server's order of ciphers over client's.\n#ssl_prefer_server_ciphers = no\nssl_prefer_server_ciphers = yes\n\u2026\n# Minimum SSL protocol version to use. Potentially recognized values are SSLv3,\n# TLSv1, TLSv1.1, and TLSv1.2, depending on the OpenSSL version used.\n#ssl_min_protocol = TLSv1\nssl_min_protocol = TLSv1.2<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"29-sasl-authentication\">SASL Authentication<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background\" style=\"font-size:0.7rem\"><code>louis@mail:~$ <strong>sudo nano \/etc\/dovecot\/conf.d\/10-master.conf<\/strong>\n\u2026\n<strong><em>Vorher<\/em><\/strong>\nservice auth {\n  # auth_socket_path points to this userdb socket by default. It's typically\n  # used by dovecot-lda, doveadm, possibly imap process, etc. Users that have\n  # full permissions to this socket are able to get a list of all usernames and\n  # get the results of everyone's userdb lookups.\n  #\n  # The default 0666 mode allows anyone to connect to the socket, but the\n  # userdb lookups will succeed only if the userdb returns an \"uid\" field that\n  # matches the caller process's UID. Also if caller's uid or gid matches the\n  # socket's uid or gid the lookup succeeds. Anything else causes a failure.\n  #\n  # To give the caller full permissions to lookup all users, set the mode to\n  # something else than 0666 and Dovecot lets the kernel enforce the\n  # permissions (e.g. 0777 allows everyone full permissions).\n  unix_listener auth-userdb {\n    #mode = 0666\n    #user =\n    #group =\n  }\n\n  # Postfix smtp-auth\n  #unix_listener \/var\/spool\/postfix\/private\/auth {\n  #  mode = 0666\n  #}\n\n  # Auth process is run as this user.\n  #user = $default_internal_user\n}\n<strong><em>Nachher<\/em><\/strong>\nservice auth {\n  # auth_socket_path points to this userdb socket by default. It's typically\n  # used by dovecot-lda, doveadm, possibly imap process, etc. Users that have\n  # full permissions to this socket are able to get a list of all usernames and\n  # get the results of everyone's userdb lookups.\n  #\n  # The default 0666 mode allows anyone to connect to the socket, but the\n  # userdb lookups will succeed only if the userdb returns an \"uid\" field that\n  # matches the caller process's UID. Also if caller's uid or gid matches the\n  # socket's uid or gid the lookup succeeds. Anything else causes a failure.\n  #\n  # To give the caller full permissions to lookup all users, set the mode to\n  # something else than 0666 and Dovecot lets the kernel enforce the\n  # permissions (e.g. 0777 allows everyone full permissions).\n  #unix_listener auth-userdb {\n    #mode = 0666\n    #user =\n    #group =\n  #}\n\n  # Postfix smtp-auth\n  unix_listener \/var\/spool\/postfix\/private\/auth {\n    mode = 0660\n    user = postfix\n    group = postfix\n  }\n  # Auth process is run as this user.\n  #user = $default_internal_user\n}\nlouis@mail:~$ <strong>sudo systemctl restart postfix dovecot<\/strong>\nlouis@mail:~$ sudo ss -lnpt | grep dovecot\t\nLISTEN 0      100          0.0.0.0:993       0.0.0.0:*    users:((\"dovecot\",pid=7580,fd=37))                                     \nLISTEN 0      100          0.0.0.0:143       0.0.0.0:*    users:((\"dovecot\",pid=7580,fd=35))                                     \nLISTEN 0      100             &#91;::]:993          &#91;::]:*    users:((\"dovecot\",pid=7580,fd=38))                                     \nLISTEN 0      100             &#91;::]:143          &#91;::]:*    users:((\"dovecot\",pid=7580,fd=36))\nlouis@mail:~$ <strong>sudo systemctl status dovecot<\/strong>\n\u25cf dovecot.service - Dovecot IMAP\/POP3 email server\n     Loaded: loaded (\/lib\/systemd\/system\/dovecot.service; enabled; vendor preset: enabled)\n     Active: active (running) since Fri 2022-11-25 21:48:45 CET; 1min 31s ago\n       Docs: man:dovecot(1)\n             http:&#47;&#47;wiki2.dovecot.org\/\n   Main PID: 7580 (dovecot)\n      Tasks: 4 (limit: 4754)\n     Memory: 2.2M\n        CPU: 214ms\n     CGroup: \/system.slice\/dovecot.service\n             \u251c\u25007580 \/usr\/sbin\/dovecot -F\n             \u251c\u25007584 dovecot\/anvil\n             \u251c\u25007585 dovecot\/log\n             \u2514\u25007586 dovecot\/config\n\nNov 25 21:48:45 mail systemd&#91;1]: Starting Dovecot IMAP\/POP3 email server...\nNov 25 21:48:45 mail dovecot&#91;7580]: master: Dovecot v2.3.13 (89f716dc2) starting up for imap, lmtp, imap, lmtp (core dumps disab&gt;\nNov 25 21:48:45 mail systemd&#91;1]: Started Dovecot IMAP\/POP3 email server.<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"30-tls-zertifikate-automatisch-erneuern\">TLS Zertifikate automatisch erneuern<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\" id=\"31-hinweis-zur-zertifikatserneuerung\">Hinweis zur Zertifikatserneuerung<\/h5>\n\n\n\n<p>Das Zertifikat wird nicht t\u00e4glich (das finde ich echt etwas zu viel), sondern w\u00f6chentlich erneuert. Ausserdem empfiehlt Let&#8217;s Encrypt, den Port 80 offen zu lassen. Falls &#171;crontab&#187; Fehlermeldungen produziert oder das Zertifikat nicht automatisch erneuert werden sollte, dann w\u00e4re das ein Hinweis, dass Let&#8217;s Encrypt den Port 80 f\u00fcr diesen Zweck offen haben will. Dann k\u00f6nnte man sich \u00fcberlegen, die Erneuerung manuell alle drei Monate zu vollziehen und dabei den Port 80 kurzfristig zu \u00f6ffnen und nach dem positiven SSLLab-Test wieder zu schlie\u00dfen.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code has-light-green-cyan-background-color has-background\" style=\"font-size:0.9rem\"><code>louis@mail:~$ <strong>sudo crontab -e<\/strong>\nno crontab for root - using an empty one\nSelect an editor.  To change later, run 'select-editor'.\n  1. \/bin\/nano        &lt;---- easiest\n  2. \/usr\/bin\/vim.basic\n  3. \/usr\/bin\/vim.tiny\nChoose 1-3 &#91;1]: <strong>ENTER<\/strong>\n# Edit this file to introduce tasks to be run by cron.\n#\n# Each task to run has to be defined through a single line\n# indicating with different fields when the task will be run\n# and what command to run for the task\n#\n# To define the time you can provide concrete values for\n# minute (m), hour (h), day of month (dom), month (mon),\n# and day of week (dow) or use '*' in these fields (for 'any').\n#\n# Notice that tasks will be started based on the cron's system\n# daemon's notion of time and timezones.\n#\n# Output of the crontab jobs (including errors) is sent through\n# email to the user the crontab file belongs to (unless redirected).\n#\n# For example, you can run a backup of all your user accounts\n# at 5 a.m every week with:\n# 0 5 * * 1 tar -zcf \/var\/backups\/home.tgz \/home\/\n#\n# For more information see the manual pages of crontab(5) and cron(8)\n#\n# m h  dom mon dow   command\n<strong>@weekly certbot renew --quiet &amp;&amp; systemctl reload postfix dovecot apache2<\/strong>\ncrontab: installing new crontab<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"32-dovecot-automatisch-neu-starten\">Dovecot automatisch neu starten<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background\" style=\"font-size:0.9rem\"><code>louis@mail:~$ <strong>sudo systemctl restart dovecot<\/strong>\nlouis@mail:~$ <strong>sudo mkdir -p \/etc\/systemd\/system\/dovecot.service.d\/<\/strong>\nlouis@mail:~$ <strong>sudo nano \/etc\/systemd\/system\/dovecot.service.d\/restart.conf<\/strong>\n<strong>&#91;Service]\nRestart=always\nRestartSec=5s<\/strong>\nlouis@mail:~$ <strong>sudo systemctl daemon-reload<\/strong>\nlouis@mail:~$ <strong>sudo pkill dovecot<\/strong>\nlouis@mail:~$ <strong>systemctl status dovecot<\/strong>\n\u25cf dovecot.service - Dovecot IMAP\/POP3 email server\n     Loaded: loaded (\/lib\/systemd\/system\/dovecot.service; enabled; vendor preset: enabled)\n    Drop-In: \/etc\/systemd\/system\/dovecot.service.d\n             \u2514\u2500restart.conf\n     Active: <strong><em>active (running) <\/em><\/strong>since Sat 2022-11-26 18:29:45 CET; 49s ago\n       Docs: man:dovecot(1)\n             http:&#47;&#47;wiki2.dovecot.org\/\n   Main PID: 1385 (dovecot)\n      Tasks: 4 (limit: 4753)\n     Memory: 2.2M\n        CPU: 161ms\n     CGroup: \/system.slice\/dovecot.service\n             \u251c\u25001385 \/usr\/sbin\/dovecot -F\n             \u251c\u25001386 dovecot\/anvil\n             \u251c\u25001387 dovecot\/log\n             \u2514\u25001388 dovecot\/config<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"33-laptop-beim-zuklappen-laufen-lassen\">Laptop beim Zuklappen laufen lassen<\/h4>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/logbuch.dmaertens.de\/gnu-linux\/powermanagement\/laptop-beim-zuklappen-des-deckels-nicht-ausschalten\" target=\"_blank\" rel=\"noreferrer noopener\">Laptop beim Zuklappen laufen lassen klick IT-Logbuch<\/a><\/div>\n<\/div>\n\n\n\n<pre class=\"wp-block-code has-light-green-cyan-background-color has-background\" style=\"font-size:0.9rem\"><code>louis@mail:~$ <strong>sudo nano \/etc\/systemd\/logind.conf<\/strong>\n#  This file is part of systemd.\n#\n#  systemd is free software; you can redistribute it and\/or modify it\n#  under the terms of the GNU Lesser General Public License as published by\n#  the Free Software Foundation; either version 2.1 of the License, or\n#  (at your option) any later version.\n#\n# Entries in this file show the compile time defaults.\n# You can change settings by editing this file.\n# Defaults can be restored by simply deleting this file.\n#\n# See logind.conf(5) for details.\n...\n&#91;Login]\n#NAutoVTs=6\n#ReserveVT=6\n#KillUserProcesses=no\n#KillOnlyUsers=\n#KillExcludeUsers=root\n#InhibitDelayMaxSec=5\n#UserStopDelaySec=10\n#HandlePowerKey=poweroff\n#HandleSuspendKey=suspend\n#HandleHibernateKey=hibernate\n#HandleLidSwitch=suspend\n<strong><em>HandleLidSwitch=ignore<\/em><\/strong>\n#HandleLidSwitchExternalPower=suspend\n#HandleLidSwitchDocked=ignore\n#HandleRebootKey=reboot\nlouis@mail:~$ <strong>sudo service systemd-logind restart<\/strong><\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\" id=\"34-abschliessende-bemerkung-zur-2-datensicherung\"><a>Abschliessende Bemerkung<\/a> zur 2. Datensicherung<\/h5>\n\n\n\n<p>Nachdem ich die Konfiguration von Part 2 nochmals durchgegangen bin, habe ich die Benutzer &#171;louis&#187; und &#171;lavenetz&#187; in Thunderbird sowie &#171;colin&#187; auf einem Huawei und &#171;alisha&#187; auf einem iPhone7+ gestestet. Obwohl die Kommunikation zwischen den lokalen Benutzern des Asinus hervorragend funktionieren, haben sie keine l\u00e4ngerfristige Bedeutung, da im n\u00e4chsten <a rel=\"noreferrer noopener\" href=\"https:\/\/www.linuxbabe.com\/mail-server\/postfixadmin-create-virtual-mailboxes-debian\" target=\"_blank\">Teil 3 PostfixAdmin<\/a> virtuelle Accounts eingef\u00fchrt werden und die lokalen nicht mehr funktionieren. Nun kann ich die zweite Datensicherung durchf\u00fchren. Die Datei lautet: <strong>2022-11-26-Asinus-i386-on-Debian-11.5-Server-Linux-Kernel-5.10.0-19-686-pae+Postfix+Dovecot.img<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"519\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-22-1024x519.png\" alt=\"\" class=\"wp-image-204\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-22-1024x519.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-22-300x152.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-22-768x389.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-22.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"35-postfixadmin-%E2%80%93-create-virtual-mailboxes-on-debian-mail-server\">PostfixAdmin \u2013 Create Virtual Mailboxes on Debian Mail Server<\/h3>\n\n\n\n<p>Im dritten Teil der Originalanleitung wird das relativ heikle Thema <a rel=\"noreferrer noopener\" href=\"https:\/\/www.linuxbabe.com\/mail-server\/postfixadmin-create-virtual-mailboxes-debian\" target=\"_blank\">PostfixAdmin<\/a> behandelt. In den vorigen Teilen habe ich gezeigt, wie Postfix-SMTP-Server und Dovecot-IMAP-Server eingerichtet werden, aber bisher waren nur E-Mail-Adressen f\u00fcr Benutzer mit lokalem Unix-Konten m\u00f6glich. Dieser Teil erm\u00f6glicht, virtuelle Postf\u00e4cher auf dem Debian-Mailserver mit PostfixAdmin zu erstellen, einer webbasierten Open-Source-Schnittstelle zum Konfigurieren und Verwalten eines Postfix-basierten E-Mail-Servers f\u00fcr mehrere Domains und Benutzer. Als Erstes installiere ich den Datenbankserver MariaDB.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"36-datenbank-server-mariadb-installieren\">Datenbank Server MariaDB installieren<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-23.png\" alt=\"\" class=\"wp-image-234\" width=\"646\" height=\"632\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-23.png 452w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-23-300x293.png 300w\" sizes=\"auto, (max-width: 646px) 100vw, 646px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"868\" height=\"517\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-17.png\" alt=\"\" class=\"wp-image-193\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-17.png 868w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-17-300x179.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-17-768x457.png 768w\" sizes=\"auto, (max-width: 868px) 100vw, 868px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background\" style=\"font-size:0.9rem\"><code><strong>Using username \"louis\"<\/strong>.\nAuthenticating with public key\nLinux mail 5.10.0-19-686-pae #1 SMP Debian 5.10.149-2 (2022-10-21) i686\nThe programs included with the Debian GNU\/Linux system are free software;\n the exact distribution terms for each program are described in the\n individual files in \/usr\/share\/doc\/*\/copyright.\nDebian GNU\/Linux comes with ABSOLUTELY NO WARRANTY, to the extent\n permitted by applicable law.\nYou have mail.\nLast login: Sun Nov 27 12:30:57 2022\nlouis@mail:~$ <strong>date<\/strong>\nSo 27 Nov 2022 16:32:37 CET\nlouis@mail:~$ <strong>df -Th<\/strong>\nDateisystem    Typ      Gr\u00f6\u00dfe Benutzt Verf. Verw% Eingeh\u00e4ngt auf\nudev           devtmpfs  991M       0  991M    0% \/dev\ntmpfs          tmpfs     201M    792K  200M    1% \/run\n\/dev\/sda1      ext4       29G    1.5G   26G    6% \/\ntmpfs          tmpfs    1003M       0 1003M    0% \/dev\/shm\ntmpfs          tmpfs     5.0M       0  5.0M    0% \/run\/lock\ntmpfs          tmpfs     201M       0  201M    0% \/run\/user\/1000\ntmpfs          tmpfs     201M       0  201M    0% \/run\/user\/0\nlouis@mail:~$ <strong>sudo apt update<\/strong>\nOK:1 http:\/\/debian.ethz.ch\/debian bullseye InRelease\nHolen:2 http:\/\/debian.ethz.ch\/debian bullseye-updates InRelease &#91;44.1 kB]\nHolen:3 http:\/\/security.debian.org\/debian-security bullseye-security InRelease &#91;48.4 kB]\nEs wurden 92.4 kB in 2 s geholt (45.2 kB\/s).\nPaketlisten werden gelesen\u2026 Fertig\nAbh\u00e4ngigkeitsbaum wird aufgebaut\u2026 Fertig\nStatusinformationen werden eingelesen\u2026 Fertig\nAlle Pakete sind aktuell.\nlouis@mail:~$ <strong>sudo apt install mariadb-server mariadb-client<\/strong>\n...<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code has-vivid-green-cyan-background-color has-background\" style=\"font-size:0.5rem\"><code>louis@mail:~$ systemctl status mariadb\n\u25cf mariadb.service - MariaDB 10.5.15 database server\n     Loaded: loaded (\/lib\/systemd\/system\/mariadb.service; enabled; vendor preset: enabled)\n     Active: active (running) since Sun 2022-11-27 16:37:38 CET; 2min 8s ago\n       Docs: man:mariadbd(8)\n             https:&#47;&#47;mariadb.com\/kb\/en\/library\/systemd\/\n    Process: 7040 ExecStartPre=\/usr\/bin\/install -m 755 -o mysql -g root -d \/var\/run\/mysqld (code=exited, status=0\/SUCCESS)\n    Process: 7041 ExecStartPre=\/bin\/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0\/SUCCESS)\n    Process: 7043 ExecStartPre=\/bin\/sh -c &#91; ! -e \/usr\/bin\/galera_recovery ] &amp;&amp; VAR= ||   VAR=`cd \/usr\/bin\/..; \/usr\/bin\/galera_recovery`; &#91; $? -e&gt;\n    Process: 7105 ExecStartPost=\/bin\/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0\/SUCCESS)\n    Process: 7107 ExecStartPost=\/etc\/mysql\/debian-start (code=exited, status=0\/SUCCESS)\n   Main PID: 7090 (mariadbd)\n     Status: \"Taking your SQL requests now...\"\n      Tasks: 9 (limit: 4753)\n     Memory: 49.7M\n        CPU: 2.026s\n     CGroup: \/system.slice\/mariadb.service\n             \u2514\u25007090 \/usr\/sbin\/mariadbd<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"37-mariadb-post-installation-security\">MariaDB Post-Installation Security<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background\" style=\"font-size:0.9rem\"><code>louis@mail:~$ <strong>sudo mysql_secure_installation<\/strong>\nNOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB\n      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!\nIn order to log into MariaDB to secure it, we'll need the current\npassword for the root user. If you've just installed MariaDB, and\nhaven't set the root password yet, you should just press enter here.\nEnter current password for root (enter for none): ENTER\nOK, successfully used password, moving on...\nSetting the root password or using the unix_socket ensures that nobody\ncan log into the MariaDB root user without the proper authorisation.\nYou already have your root account protected, so you can safely answer 'n'.\nSwitch to unix_socket authentication &#91;Y\/n] n\n ... skipping.\nYou already have your root account protected, so you can safely answer 'n'.\nChange the root password? &#91;Y\/n] n\n ... skipping.\nBy default, a MariaDB installation has an anonymous user, allowing anyone\nto log into MariaDB without having to have a user account created for\nthem.  This is intended only for testing, and to make the installation\ngo a bit smoother.  You should remove them before moving into a\nproduction environment.\nRemove anonymous users? &#91;Y\/n] ENTER\n ... Success!\nNormally, root should only be allowed to connect from 'localhost'.  This\nensures that someone cannot guess at the root password from the network.\nDisallow root login remotely? &#91;Y\/n] ENTER\n ... Success!\nBy default, MariaDB comes with a database named 'test' that anyone can\naccess.  This is also intended only for testing, and should be removed\nbefore moving into a production environment.\nRemove test database and access to it? &#91;Y\/n] ENTER\n - Dropping test database...\n ... Success!\n - Removing privileges on test database...\n ... Success!\nReloading the privilege tables will ensure that all changes made so far\nwill take effect immediately.\nReload privilege tables now? &#91;Y\/n] ENTER\n ... Success!\nCleaning up...\nAll done!  If you've completed all of the above steps, your MariaDB\ninstallation should now be secure.\nThanks for using MariaDB<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"38-download-postfixadmin-auf-den-asinus\">Download PostfixAdmin auf den Asinus<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background\" style=\"font-size:0.9rem\"><code>louis@mail:~$ <strong>sudo apt install wget<\/strong>\t\nPaketlisten werden gelesen\u2026 Fertig\nAbh\u00e4ngigkeitsbaum wird aufgebaut\u2026 Fertig\nStatusinformationen werden eingelesen\u2026 Fertig\nwget ist schon die neueste Version (1.21-1+deb11u1).\n0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.\nlouis@mail:~$ <strong>wget https:\/\/github.com\/postfixadmin\/postfixadmin\/archive\/postfixadmin-3.3.11.tar.gz<\/strong>\n--2022-11-27 16:50:50--  https:\/\/github.com\/postfixadmin\/postfixadmin\/archive\/postfixadmin-3.3.11.tar.gz\nAufl\u00f6sen des Hostnamens github.com (github.com)\u2026 140.82.121.3\nVerbindungsaufbau zu github.com (github.com)|140.82.121.3|:443 \u2026 verbunden.\nHTTP-Anforderung gesendet, auf Antwort wird gewartet \u2026 302 Found\nPlatz: https:\/\/codeload.github.com\/postfixadmin\/postfixadmin\/tar.gz\/refs\/tags\/postfixadmin-3.3.11 &#91;folgend]\n--2022-11-27 16:50:50--  https:\/\/codeload.github.com\/postfixadmin\/postfixadmin\/tar.gz\/refs\/tags\/postfixadmin-3.3.11\nAufl\u00f6sen des Hostnamens codeload.github.com (codeload.github.com)\u2026 140.82.121.10\nVerbindungsaufbau zu codeload.github.com (codeload.github.com)|140.82.121.10|:443 \u2026 verbunden.\nHTTP-Anforderung gesendet, auf Antwort wird gewartet \u2026 200 OK\nL\u00e4nge: 1869783 (1.8M) &#91;application\/x-gzip]\nWird in \u00bbpostfixadmin-3.3.11.tar.gz\u00ab gespeichert.\npostfixadmin-3.3.11.tar.gz           100%&#91;===================================================================&gt;]   1.78M  6.02MB\/s    in 0.3s\n2022-11-27 16:50:51 (6.02 MB\/s) - \u00bbpostfixadmin-3.3.11.tar.gz\u00ab gespeichert &#91;1869783\/1869783]\nlouis@mail:~$ <strong>sudo mkdir -p \/var\/www\/<\/strong>\nlouis@mail:~$ <strong>sudo tar xvf postfixadmin-3.3.11.tar.gz -C \/var\/www\/<\/strong>\npostfixadmin-postfixadmin-3.3.11\/\n...\npostfixadmin-postfixadmin-3.3.11\/tests\/bootstrap.php\nlouis@mail:~$ <strong>sudo mv \/var\/www\/postfixadmin-postfixadmin-3.3.11 \/var\/www\/postfixadmin<\/strong>\nlouis@mail:~$ <strong>cd \/var\/www\/postfixadmin<\/strong>\nlouis@mail:\/var\/www\/postfixadmin$ <strong>ls -la<\/strong>\ninsgesamt 308\ndrwxrwxr-x 15 root root  4096  2. M\u00e4r 2022  .\ndrwxr-xr-x  4 root root  4096 27. Nov 16:55 ..\ndrwxrwxr-x  4 root root  4096  2. M\u00e4r 2022  ADDITIONS\n-rw-rw-r--  1 root root 60234  2. M\u00e4r 2022  CHANGELOG.TXT\n-rw-rw-r--  1 root root   719  2. M\u00e4r 2022  check_mailpass_expiration.sh\n-rw-rw-r--  1 root root  2832  2. M\u00e4r 2022  common.php\n-rw-rw-r--  1 root root  1648  2. M\u00e4r 2022  composer.json\n-rw-rw-r--  1 root root 29371  2. M\u00e4r 2022  config.inc.php\ndrwxrwxr-x  2 root root  4096  2. M\u00e4r 2022  configs\ndrwxrwxr-x  6 root root  4096  2. M\u00e4r 2022  debian\ndrwxrwxr-x  3 root root  4096  2. M\u00e4r 2022  DOCUMENTS\n-rw-rw-r--  1 root root 74896  2. M\u00e4r 2022  functions.inc.php\ndrwxrwxr-x  3 root root  4096  2. M\u00e4r 2022  .github\n-rw-rw-r--  1 root root   115  2. M\u00e4r 2022  .gitignore\n-rw-rw-r--  1 root root 15148  2. M\u00e4r 2022  GPL-LICENSE.TXT\n-rw-rw-r--  1 root root   248  2. M\u00e4r 2022  index.php\n-rw-rw-r--  1 root root  7102  2. M\u00e4r 2022  INSTALL.TXT\ndrwxrwxr-x  2 root root  4096  2. M\u00e4r 2022  languages\ndrwxrwxr-x  3 root root  4096  2. M\u00e4r 2022  lib\n-rw-rw-r--  1 root root  2189  2. M\u00e4r 2022  LICENSE.TXT\ndrwxrwxr-x  2 root root  4096  2. M\u00e4r 2022  model\n-rw-rw-r--  1 root root   204  2. M\u00e4r 2022  password_expiration.sql\n-rw-rw-r--  1 root root   739  2. M\u00e4r 2022  .php_cs.dist\n-rw-rw-r--  1 root root   797  2. M\u00e4r 2022  phpunit.xml\n-rw-rw-r--  1 root root    66  2. M\u00e4r 2022  postfixadmin.my.cnf\n-rw-rw-r--  1 root root  1187  2. M\u00e4r 2022  psalm.xml\ndrwxrwxr-x  5 root root  4096  2. M\u00e4r 2022  public\n-rw-rw-r--  1 root root  2010  2. M\u00e4r 2022  README.md\ndrwxrwxr-x  3 root root  4096  2. M\u00e4r 2022  scripts\n-rw-rw-r--  1 root root   661  2. M\u00e4r 2022  SECURITY.md\ndrwxrwxr-x  2 root root  4096  2. M\u00e4r 2022  templates\ndrwxrwxr-x  2 root root  4096  2. M\u00e4r 2022  tests\n-rw-rw-r--  1 root root   662  2. M\u00e4r 2022  .travis.yml\ndrwxrwxr-x  3 root root  4096  2. M\u00e4r 2022  VIRTUAL_VACATION\nlouis@mail:\/var\/www\/postfixadmin$ <strong>cd\n<\/strong>\n\n\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"39-setting-up-permissions\">Setting Up Permissions<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo mkdir \/var\/www\/postfixadmin\/templates_c<\/strong>\nlouis@mail:~$ <strong>sudo apt install acl<\/strong>\nPaketlisten werden gelesen\u2026 Fertig\nAbh\u00e4ngigkeitsbaum wird aufgebaut\u2026 Fertig\nStatusinformationen werden eingelesen\u2026 Fertig\nDie folgenden NEUEN Pakete werden installiert:\n  acl\n0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.\nEs m\u00fcssen 62.0 kB an Archiven heruntergeladen werden.\nNach dieser Operation werden 206 kB Plattenplatz zus\u00e4tzlich benutzt.\nHolen:1 http:\/\/debian.ethz.ch\/debian bullseye\/main i386 acl i386 2.2.53-10 &#91;62.0 kB]\nEs wurden 62.0 kB in 0 s geholt (308 kB\/s).\nVormals nicht ausgew\u00e4hltes Paket acl wird gew\u00e4hlt.\n(Lese Datenbank ... 42820 Dateien und Verzeichnisse sind derzeit installiert.)\nVorbereitung zum Entpacken von ...\/acl_2.2.53-10_i386.deb ...\nEntpacken von acl (2.2.53-10) ...\nacl (2.2.53-10) wird eingerichtet ...\nTrigger f\u00fcr man-db (2.9.4-2) werden verarbeitet ...\nlouis@mail:~$ <strong>sudo setfacl -R -m u:www-data:rwx \/var\/www\/postfixadmin\/templates_c\/<\/strong>\nlouis@mail:~$ <strong>sudo setfacl -R -m u:www-data:rx \/etc\/letsencrypt\/live\/ \/etc\/letsencrypt\/archive\/<\/strong>\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"40-database-und-user-f%C3%BCr-postfixadmin\">Database und User f\u00fcr PostfixAdmin<\/h4>\n\n\n\n<p>Die im Folgenden unter &#171;post&#8230;&#187; angedeuteten Angaben (Datenbank und User) sind sehr wichtig und sind vom Leser bzw. Anwender entsprechend zu erg\u00e4nzen.<\/p>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo mysql -u root<\/strong>\nWelcome to the MariaDB monitor.  Commands end with ; or \\g.\nYour MariaDB connection id is 36\nServer version: 10.5.15-MariaDB-0+deb11u1 Debian 11\nCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.\nType 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\nMariaDB &#91;(none)]&gt; <strong>create database post...;<\/strong>\nQuery OK, 1 row affected (0.002 sec)\nMariaDB &#91;(none)]&gt; <strong>grant all privileges on post....* to 'post...'@'localhost' identified by 'post...';<\/strong>\nQuery OK, 0 rows affected (0.006 sec)\nMariaDB &#91;(none)]&gt; <strong>flush privileges;<\/strong>\nQuery OK, 0 rows affected (0.003 sec)\nMariaDB &#91;(none)]&gt; <strong>exit;<\/strong>\nBye\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"41-postfixadmin-konfigurieren\">PostfixAdmin konfigurieren<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\" id=\"42-hinweis-beendigungszeichen-%E2%80%9Egt%E2%80%9C-\">Hinweis <strong>Beendigungszeichen \u201e?&gt;\u201c<\/strong><\/h5>\n\n\n\n<p>Die im Folgenden unter &#171;post&#8230;&#187; angedeuteten Angaben (Datenbank und User) sind wieder entsprechend zu erg\u00e4nzen. Gem\u00e4ss Kommentar von einem Leser namens \u201eFlemming\u201c in der Originalanleitung setze ich am Schluss der php-Datei das Beendigungszeichen \u201e?&gt;\u201c. Ohne dieses Beendigungszeichen gibt es auch eine Script-Fehlermeldung.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo nano \/var\/www\/postfixadmin\/config.local.php<\/strong>\n&lt;?php\n$CONF&#91;'configured'] = true;\n$CONF&#91;'database_type'] = 'mysqli';\n$CONF&#91;'database_host'] = 'localhost';\n$CONF&#91;'database_port'] = '3306';\n$CONF&#91;'database_user'] = 'post...';\n$CONF&#91;'database_password'] = 'post...';\n$CONF&#91;'database_name'] = 'post...';\n$CONF&#91;'encrypt'] = 'dovecot:ARGON2I';\n$CONF&#91;'dovecotpw'] = \"\/usr\/bin\/doveadm pw -r 5\";\nif(@file_exists('\/usr\/bin\/doveadm')) { \/\/ @ to silence openbase_dir stuff; see https:\/\/github.com\/postfixadmin\/postfixadmin\/issues\/171\n    $CONF&#91;'dovecotpw'] = \"\/usr\/bin\/doveadm pw -r 5\"; # debian\n}\n?&gt;\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"43-webzugriff-f%C3%BCr-den-postfixadmin\">Webzugriff f\u00fcr den PostfixAdmin<\/h4>\n\n\n\n<p>F\u00fcr die Domain &#171;ifit.at&#187; muss auch noch in der DNS-Zone von <a rel=\"noreferrer noopener\" href=\"https:\/\/swiss-dns.com\/site\/\" target=\"_blank\">Swiss-DNS<\/a> f\u00fcr die Subdomain &#171;postfixadmin.ifit.at&#187; ein A Record erg\u00e4nzt werden. Danach erzeuge ich f\u00fcr den Apache Webserver ein Virtual Host Config File f\u00fcr den PostfixAdmin. Falls jemand auf einer Windows 10 Umgebung ohne eigenen DNS Server arbeitet, muss man als Admin (run cmd as administrator) auch die &#171;hosts&#187;-Datei mit C:\\Windows\\System32\\drivers\\etc&gt;notepad hosts anpassen. Wenn man alles richtig macht, auch die notwendigen und empfohlenen PHP Module erfolgreich installiert, dann bekommt man die setup.php-Seite unter https:\/\/postfixadmin,ifit.at\/setup.php !!!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-24.png\" alt=\"\" class=\"wp-image-251\" width=\"671\" height=\"172\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-24.png 838w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-24-300x77.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-24-768x198.png 768w\" sizes=\"auto, (max-width: 671px) 100vw, 671px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-26-1024x640.png\" alt=\"\" class=\"wp-image-253\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-26-1024x640.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-26-300x188.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-26-768x480.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-26.png 1056w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo nano \/etc\/apache2\/sites-available\/postfixadmin.conf<\/strong>\n&lt;VirtualHost *:80&gt;\n  ServerName <strong>postfixadmin.ifit.at<\/strong>\n  DocumentRoot \/var\/www\/postfixadmin\/public\n  ErrorLog ${APACHE_LOG_DIR}\/postfixadmin_error.log\n  CustomLog ${APACHE_LOG_DIR}\/postfixadmin_access.log combined\n  &lt;Directory \/&gt;\n    Options FollowSymLinks\n    AllowOverride All\n  &lt;\/Directory&gt;\n  &lt;Directory \/var\/www\/postfixadmin\/&gt;\n    Options FollowSymLinks MultiViews\n    AllowOverride All\n    Order allow,deny\n    allow from all\n  &lt;\/Directory&gt;\n&lt;\/VirtualHost&gt;\nlouis@mail:~$ <strong>sudo a2ensite postfixadmin.conf<\/strong>\nEnabling site postfixadmin.\nTo activate the new configuration, you need to run:\n  systemctl reload apache2\nlouis@mail:~$ <strong>sudo systemctl reload apache2<\/strong><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo apt install php7.4-fpm php7.4-imap php7.4-mbstring php7.4-mysql php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-bz2 php7.4-intl php7.4-gmp<\/strong>\n...\nlouis@mail:~$ <strong>sudo systemctl restart apache2<\/strong>\nlouis@mail:~$ <strong>sudo apt install certbot<\/strong>\nPaketlisten werden gelesen\u2026 Fertig\nAbh\u00e4ngigkeitsbaum wird aufgebaut\u2026 Fertig\nStatusinformationen werden eingelesen\u2026 Fertig\ncertbot ist schon die neueste Version (1.12.0-2).\n0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.\nlouis@mail:~$ <strong>sudo apt install python3-certbot-apache<\/strong>\nPaketlisten werden gelesen\u2026 Fertig\nAbh\u00e4ngigkeitsbaum wird aufgebaut\u2026 Fertig\nStatusinformationen werden eingelesen\u2026 Fertig\npython3-certbot-apache ist schon die neueste Version (1.10.1-1).\n0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email web@ifit.ch -d postfixadmin.ifit.at<\/strong>\nSaving debug log to \/var\/log\/letsencrypt\/letsencrypt.log\nPlugins selected: Authenticator apache, Installer apache\nRequesting a certificate for postfixadmin.ifit.at\nPerforming the following challenges:\nhttp-01 challenge for postfixadmin.ifit.at\nEnabled Apache rewrite module\nWaiting for verification...\nCleaning up challenges\nCreated an SSL vhost at \/etc\/apache2\/sites-available\/postfixadmin-le-ssl.conf\nEnabled Apache socache_shmcb module\nEnabled Apache ssl module\nDeploying Certificate to VirtualHost \/etc\/apache2\/sites-available\/postfixadmin-le-ssl.conf\nEnabling available site: \/etc\/apache2\/sites-available\/postfixadmin-le-ssl.conf\nEnabled Apache headers module\nAdding Strict-Transport-Security header to ssl vhost in \/etc\/apache2\/sites-available\/postfixadmin-le-ssl.conf\nEnabled Apache rewrite module\nRedirecting vhost in \/etc\/apache2\/sites-enabled\/postfixadmin.conf to ssl vhost in \/etc\/apache2\/sites-available\/postfixadmin-le-ssl.conf\nOCSP Stapling was enabled on SSL Vhost: \/etc\/apache2\/sites-available\/postfixadmin-le-ssl.conf.\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nCongratulations! You have successfully enabled https:\/\/postfixadmin.ifit.at\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nIMPORTANT NOTES:\n - Congratulations! Your certificate and chain have been saved at:\n   \/etc\/letsencrypt\/live\/postfixadmin.ifit.at\/fullchain.pem\n   Your key file has been saved at:\n   \/etc\/letsencrypt\/live\/postfixadmin.ifit.at\/privkey.pem\n   Your certificate will expire on 2023-02-25. To obtain a new or\n   tweaked version of this certificate in the future, simply run\n   certbot again with the \"certonly\" option. To non-interactively\n   renew *all* of your certificates, run \"certbot renew\"\n - If you like Certbot, please consider supporting our work by:\n\n   Donating to ISRG \/ Let's Encrypt:   https:\/\/letsencrypt.org\/donate\n   Donating to EFF:                    https:\/\/eff.org\/donate-le<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"44-statistik-in-dovecot-aktivieren\">Statistik in Dovecot aktivieren<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>\nlouis@mail:~$ sudo nano \/etc\/dovecot\/conf.d\/10-master.conf\n...\nservice dict {\n  # If dict proxy is used, mail processes should have access to its socket.\n  # For example: mode=0660, group=vmail and global mail_access_groups=vmail\n  unix_listener dict {\n    #mode = 0600\n    #user =\n    #group =\n  }\n}\n\nservice stats {\n    unix_listener stats-reader {\n    user = www-data\n    group = www-data\n    mode = 0660\n}\n\nunix_listener stats-writer {\n    user = www-data\n    group = www-data\n    mode = 0660\n  }\n}\nlouis@mail:~$ <strong>sudo gpasswd -a www-data dovecot<\/strong>\nBenutzer www-data wird zur Gruppe dovecot hinzugef\u00fcgt.\nlouis@mail:~$ <strong>sudo systemctl restart dovecot<\/strong>\nlouis@mail:~$ <strong>sudo setfacl -R -m u:www-data:rwx \/var\/run\/dovecot\/stats-reader \/var\/run\/dovecot\/stats-writer<\/strong>\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"45-endlich-die-erste-setup-page-ist-da-\">Endlich: Die erste Setup-Page ist da !!!<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"684\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-27-1024x684.png\" alt=\"\" class=\"wp-image-254\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-27-1024x684.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-27-300x200.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-27-768x513.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-27.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"46-korrektur-von-fehlern-flemming\">Korrektur von Fehlern (Flemming)<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo nano \/etc\/apache2\/sites-available\/postfixadmin.conf<\/strong>\n\n&lt;VirtualHost *:80&gt;\n  ServerName postfixadmin.ifit.at\n  DocumentRoot \/var\/www\/postfixadmin\/public\n\n  ErrorLog ${APACHE_LOG_DIR}\/postfixadmin_error.log\n  CustomLog ${APACHE_LOG_DIR}\/postfixadmin_access.log combined\n\n  &lt;Directory \/&gt;\n    Options FollowSymLinks\n    AllowOverride All\n  &lt;\/Directory&gt;\n\n  &lt;Directory \/var\/www\/postfixadmin\/&gt;\n#    Options FollowSymLinks MultiViews\n    <strong>Options Indexes Includes FollowSymLinks ExecCGI MultiView<\/strong>s\n    AllowOverride All\n    Order allow,deny\n    allow from all\n  &lt;\/Directory&gt;\n\nRewriteEngine on\nRewriteCond %{SERVER_NAME} =postfixadmin.ifit.at\nRewriteRule ^ https:\/\/%{SERVER_NAME}%{REQUEST_URI} &#91;END,NE,R=permanent]\n&lt;\/VirtualHost&gt;\nlouis@mail:~$ <strong>sudo systemctl restart apache2<\/strong>\nlouis@mail:~$ <strong>sudo apt install libapache2-mod-php7.4 php7.4-cli<\/strong>\nPaketlisten werden gelesen\u2026 Fertig\nAbh\u00e4ngigkeitsbaum wird aufgebaut\u2026 Fertig\nStatusinformationen werden eingelesen\u2026 Fertig\nphp7.4-cli ist schon die neueste Version (7.4.33-1+deb11u1).\nphp7.4-cli wurde als manuell installiert festgelegt.\nVorgeschlagene Pakete:\n  php-pear\nDie folgenden NEUEN Pakete werden installiert:\n  libapache2-mod-php7.4\n0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.\nEs m\u00fcssen 1\u2019405 kB an Archiven heruntergeladen werden.\nNach dieser Operation werden 4\u2019270 kB Plattenplatz zus\u00e4tzlich benutzt.\nM\u00f6chten Sie fortfahren? &#91;J\/n]\nHolen:1 http:\/\/security.debian.org\/debian-security bullseye-security\/main i386 libapache2-mod-php7.4 i386 7.4.33-1+deb11u1 &#91;1\u2019405 kB]\nEs wurden 1\u2019405 kB in 0 s geholt (3\u2019166 kB\/s).\nVormals nicht ausgew\u00e4hltes Paket libapache2-mod-php7.4 wird gew\u00e4hlt.\n(Lese Datenbank ... 43136 Dateien und Verzeichnisse sind derzeit installiert.)\nVorbereitung zum Entpacken von ...\/libapache2-mod-php7.4_7.4.33-1+deb11u1_i386.deb ...\nEntpacken von libapache2-mod-php7.4 (7.4.33-1+deb11u1) ...\nlibapache2-mod-php7.4 (7.4.33-1+deb11u1) wird eingerichtet ...\n\nCreating config file \/etc\/php\/7.4\/apache2\/php.ini with new version\nModule mpm_event disabled.\nEnabling module mpm_prefork.\napache2_switch_mpm Switch to prefork\napache2_invoke: Enable module php7.4\nTrigger f\u00fcr libapache2-mod-php7.4 (7.4.33-1+deb11u1) werden verarbeitet ...\nlouis@mail:~$ <strong>sudo systemctl restart apache2<\/strong>\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"47-super-hat-geklappt\">Super, hat geklappt!<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"684\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-28-1024x684.png\" alt=\"\" class=\"wp-image-257\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-28-1024x684.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-28-300x200.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-28-768x513.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-28.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"48-postfixadmin-installation-im-browser\">PostfixAdmin-Installation im Browser<\/h4>\n\n\n\n<p>Wenn die Setup-Seite fehlerlos auftaucht, muss man sich mit einem selbst erfundenem oder generierten Setup Passwort anmelden. Diese Anmeldung erzeugt einen String der Art: $CONF[&#8217;setup_password&#8216;] = &#8218;$2y$10$58fIawuOb5y538RMBol\/DOoqv2bJ7zhPRzRO.4Xq7MLeQJHmaFwF2&#8216;; welches man in der Datei config.local.php eintr\u00e4gt.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\" id=\"49-hinweis-zum-string-nicht-echt\">Hinweis zum String (nicht echt)<\/h5>\n\n\n\n<p>Der hier gezeigte String ist von der Originalanleitung \u00fcbernommen worden und stimmt hier nat\u00fcrlich nicht.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ sudo nano \/var\/www\/postfixadmin\/config.local.php\n&lt;?php\n$CONF&#91;'configured'] = true;\n$CONF&#91;'database_type'] = 'mysqli';\n$CONF&#91;'database_host'] = 'localhost';\n$CONF&#91;'database_port'] = '3306';\n$CONF&#91;'database_user'] = 'post...';\n$CONF&#91;'database_password'] = 'post...';\n$CONF&#91;'database_name'] = 'post...';\n$CONF&#91;'encrypt'] = 'dovecot:ARGON2I';\n$CONF&#91;'dovecotpw'] = \"\/usr\/bin\/doveadm pw -r 5\";\nif(@file_exists('\/usr\/bin\/doveadm')) { \/\/ @ to silence openbase_dir stuff; see https:\/\/github.com\/postfixadmin\/postfixadmin\/issues\/171\n    $CONF&#91;'dovecotpw'] = \"\/usr\/bin\/doveadm pw -r 5\"; # debian\n}\n$CONF&#91;'setup_password'] = '$2y$10$58fIawuOb5y538RMBol\/DOoqv2bJ7zhPRzRO.4Xq7MLeQJHmaFwF2';\n?&gt;\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"654\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-29-1024x654.png\" alt=\"\" class=\"wp-image-258\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-29-1024x654.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-29-300x191.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-29-768x490.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-29.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"654\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-30-1024x654.png\" alt=\"\" class=\"wp-image-259\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-30-1024x654.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-30-300x191.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-30-768x490.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-30.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"654\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-32-1024x654.png\" alt=\"\" class=\"wp-image-261\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-32-1024x654.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-32-300x191.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-32-768x490.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-32.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"654\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-33-1024x654.png\" alt=\"\" class=\"wp-image-262\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-33-1024x654.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-33-300x191.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-33-768x490.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-33.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"50-postfix-braucht-jetzt-mariadb\">Postfix braucht jetzt MariaDB<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background\" style=\"font-size:0.9rem\"><code>louis@mail:~$ <strong>sudo apt install postfix-mysql<\/strong>\n...\nlouis@mail:~$ <strong>sudo nano \/etc\/postfix\/main.cf<\/strong>\n...\nmailbox_transport = lmtp:unix:private\/dovecot-lmtp\nsmtputf8_enable = no\nvirtual_mailbox_domains = proxy:mysql:\/etc\/postfix\/sql\/mysql_virtual_domains_maps.cf\nvirtual_mailbox_maps =\n   proxy:mysql:\/etc\/postfix\/sql\/mysql_virtual_mailbox_maps.cf,\n   proxy:mysql:\/etc\/postfix\/sql\/mysql_virtual_alias_domain_mailbox_maps.cf\nvirtual_alias_maps =\n   proxy:mysql:\/etc\/postfix\/sql\/mysql_virtual_alias_maps.cf,\n   proxy:mysql:\/etc\/postfix\/sql\/mysql_virtual_alias_domain_maps.cf,\n   proxy:mysql:\/etc\/postfix\/sql\/mysql_virtual_alias_domain_catchall_maps.cf\nvirtual_transport = lmtp:unix:private\/dovecot-lmtp\nlouis@mail:~$ <strong>sudo mkdir \/etc\/postfix\/sql\/<\/strong>\nlouis@mail:~$ <strong>sudo nano \/etc\/postfix\/sql\/mysql_virtual_domains_maps.cf<\/strong>\nuser = post...\npassword = post...\nhosts = localhost\ndbname = post...\nquery = SELECT domain FROM domain WHERE domain='%s' AND active = '1'\n#query = SELECT domain FROM domain WHERE domain='%s'\n#optional query to use when relaying for backup MX\n#query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'\n#expansion_limit = 100\nlouis@mail:~$ <strong>sudo nano \/etc\/postfix\/sql\/mysql_virtual_mailbox_maps.cf<\/strong>\nuser = post...\npassword = post...\nhosts = localhost\ndbname = post...\nquery = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'\n#expansion_limit = 100\nlouis@mail:~$ <strong>sudo nano \/etc\/postfix\/sql\/mysql_virtual_alias_domain_mailbox_maps.cf<\/strong>\nuser = post...\npassword = post...\nhosts = localhost\ndbname = post...\nquery = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domai&gt;\nlouis@mail:~$ <strong>sudo nano \/etc\/postfix\/sql\/mysql_virtual_alias_maps.cf<\/strong>\nuser = post...\npassword = post...\nhosts = localhost\ndbname = post...\nquery = SELECT goto FROM alias WHERE address='%s' AND active = '1'\n#expansion_limit = 100\nlouis@mail:~$ <strong>sudo nano \/etc\/postfix\/sql\/mysql_virtual_alias_domain_maps.cf<\/strong>\nuser = post...\npassword = post...\nhosts = localhost\ndbname = post...\nquery = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'\nlouis@mail:~$ <strong>sudo nano \/etc\/postfix\/sql\/mysql_virtual_alias_domain_catchall_maps.cf<\/strong>\n# handles catch-all settings of target-domain\nuser = post...\npassword = post...\nhosts = localhost\ndbname = post...\nquery = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain                   ) AND alias.active = 1 AND alias_domain.active='1'\nlouis@mail:~$ <strong>sudo chmod 0640 \/etc\/postfix\/sql\/*<\/strong>\nlouis@mail:~$ <strong>sudo setfacl -R -m u:postfix:rx \/etc\/postfix\/sql\/<\/strong>\nlouis@mail:~$ <strong>sudo postconf mydestination<\/strong>\nmydestination = $myhostname, ifit.at, mail.ifit.at, localhost.ifit.at, localhost\nlouis@mail:~$ <strong>sudo postconf -e \"mydestination = \\$myhostname, localhost.\\$mydomain, localhost\"<\/strong>\nlouis@mail:~$ <strong>sudo postconf mydestination<\/strong>\nmydestination = $myhostname, localhost.$mydomain, localhost\nlouis@mail:~$ sudo nano \/etc\/postfix\/main.cf\n\u2026\nmailbox_transport = lmtp:unix:private\/dovecot-lmtp\nsmtputf8_enable = no\n\nvirtual_mailbox_domains = proxy:mysql:\/etc\/postfix\/sql\/mysql_virtual_domains_maps.cf\nvirtual_mailbox_maps =\n   proxy:mysql:\/etc\/postfix\/sql\/mysql_virtual_mailbox_maps.cf,\n   proxy:mysql:\/etc\/postfix\/sql\/mysql_virtual_alias_domain_mailbox_maps.cf\nvirtual_alias_maps =\n   proxy:mysql:\/etc\/postfix\/sql\/mysql_virtual_alias_maps.cf,\n   proxy:mysql:\/etc\/postfix\/sql\/mysql_virtual_alias_domain_maps.cf,\n   proxy:mysql:\/etc\/postfix\/sql\/mysql_virtual_alias_domain_catchall_maps.cf\n\nvirtual_transport = lmtp:unix:private\/dovecot-lmtp\n\nvirtual_mailbox_base = \/var\/vmail\nvirtual_minimum_uid = 2000\nvirtual_uid_maps = static:2000\nvirtual_gid_maps = static:2000\nlouis@mail:~$ <strong>sudo systemctl restart postfix<\/strong>\nlouis@mail:~$ <strong>sudo adduser vmail --system --group --uid 2000 --disabled-login --no-create-home<\/strong>\nLege Systembenutzer \u00bbvmail\u00ab (UID 2000) an ...\nLege neue Gruppe \u00bbvmail\u00ab (GID 2000) an ...\nLege neuen Benutzer \u00bbvmail\u00ab (UID 2000) mit Gruppe \u00bbvmail\u00ab an ...\nErstelle Home-Verzeichnis \u00bb\/home\/vmail\u00ab nicht.\nlouis@mail:~$ <strong>sudo mkdir \/var\/vmail\/<\/strong>\nlouis@mail:~$ <strong>sudo chown vmail:vmail \/var\/vmail\/ -R<\/strong><\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"51-dovecot-braucht-jetzt-auch-mariadb\">Dovecot braucht jetzt auch MariaDB<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background\" style=\"font-size:0.9rem\"><code>louis@mail:~$ <strong>sudo apt install dovecot-mysql<\/strong>\n...\nlouis@mail:~$ <strong>sudo nano \/etc\/dovecot\/conf.d\/10-mail.conf<\/strong>\n...\n#\n# &lt;doc\/wiki\/MailLocation.txt&gt;\n#\n#mail_location = mbox:~\/mail:INBOX=\/var\/mail\/%u\nmail_location = maildir:~\/Maildir\n<strong>mail_home = \/var\/vmail\/%d\/%n\/<\/strong>\nlouis@mail:~$ <strong>sudo nano \/etc\/dovecot\/conf.d\/10-auth.conf<\/strong>\n# Username formatting before it's looked up from databases. You can use\n# the standard variables here, eg. %Lu would lowercase the username, %n would\n# drop away the domain if it was given, or \"%n-AT-%d\" would change the '@' into\n# \"-AT-\". This translation is done after auth_username_translation changes.\n#auth_username_format = %Lu\n#auth_username_format = %n\n<strong>auth_username_format = %u<\/strong>\n...\n# Default realm\/domain to use if none was specified. This is used for both\n# SASL realms and appending @domain to username in plaintext logins.\n#auth_default_realm =\n<strong>auth_default_realm = ifit.at<\/strong>\n\u2026\n#!include auth-system.conf.ext\n<strong>!include auth-sql.conf.ext<\/strong>\n#!include auth-ldap.conf.ext\n#!include auth-passwdfile.conf.ext\n#!include auth-checkpassword.conf.ext\n#!include auth-static.conf.ext\n<strong>auth_debug = yes\nauth_debug_passwords = yes<\/strong>\nlouis@mail:~$ <strong>sudo nano \/etc\/dovecot\/dovecot-sql.conf.ext<\/strong>\n...\n# Query to get a list of all usernames.\n#iterate_query = SELECT username AS user FROM users\ndriver = mysql\nconnect = host=localhost dbname=post... user=post... password=post...\ndefault_pass_scheme = ARGON2I\npassword_query = SELECT username AS user,password FROM mailbox WHERE username = '%u' AND active='1'\nuser_query = SELECT maildir, 2000 AS uid, 2000 AS gid FROM mailbox WHERE username = '%u' AND active='1'\niterate_query = SELECT username AS user FROM mailbox<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"52-domain-und-mailboxes-in-postfixadmin\">Domain und Mailboxes in PostfixAdmin<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"654\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-34-1024x654.png\" alt=\"\" class=\"wp-image-265\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-34-1024x654.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-34-300x191.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-34-768x490.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-34.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"53-abschliessende-bemerkung-zur-3-datensicherung\"><a>Abschliessende Bemerkung<\/a> zur 3. Datensicherung<\/h5>\n\n\n\n<p>Nachdem ich die Konfiguration von Part 3 durchgegangen bin, habe ich die Benutzer &#171;louis&#187; und &#171;lavenetz&#187; in Thunderbird sowie &#171;colin&#187; auf einem Huawei und &#171;alisha&#187; auf einem iPhone7+ nochmals in PostfixAdmin eingegeben und gestestet. F\u00fcr eine perfekte Kommunikation fehlen noch SPF, DKIM und DMARC, die im n\u00e4chsten <a rel=\"noreferrer noopener\" href=\"https:\/\/www.linuxbabe.com\/mail-server\/spf-dkim-postfix-debian-server\" target=\"_blank\">Teil 4<\/a> eingef\u00fchrt werden. Nun kann ich die zweite Datensicherung durchf\u00fchren. Die Datei lautet: <strong>2022-11-27-Asinus-i386-on-Debian-11.5-Server-Linux-Kernel-5.10.0-19-686-pae+Postfix+Dovecot+PostfixAdmin.img<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"445\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-35-1024x445.png\" alt=\"\" class=\"wp-image-266\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-35-1024x445.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-35-300x130.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-35-768x334.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-35.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"54-setup-spf-amp-dkim-with-postfix-on-debian-server\">Setup SPF &amp; DKIM with Postfix<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"55-spf-record-in-der-dns-zone-eintragen\">SPF Record in der DNS Zone eintragen<\/h4>\n\n\n\n<p id=\"tw-target-text\">Obwohl ich bereits jetzt schon Mails mit einem Mail-Client senden und empfangen kann, muss die Mail-Zustellung an den Posteingang eines Empf\u00e4ngers verbessert werden, indem ich SPF und DKIM auf dem Debian-Server einrichte. Der SPF-Eintrag (<a rel=\"noreferrer noopener\" href=\"https:\/\/de.wikipedia.org\/wiki\/Sender_Policy_Framework\" target=\"_blank\">Sender Policy Framework<\/a>) gibt an, welche Hosts oder IP-Adressen eMails im Namen einer Domain senden d\u00fcrfen. Ich muss also dem Asinus erlauben, eMails f\u00fcr ifit.at zu senden. F\u00fcr SPF muss in der DNS Zone &#171;ifit.at&#187; ein TXT Record eingetragen werden.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"793\" height=\"312\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-36.png\" alt=\"\" class=\"wp-image-294\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-36.png 793w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-36-300x118.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-36-768x302.png 768w\" sizes=\"auto, (max-width: 793px) 100vw, 793px\" \/><\/figure>\n\n\n\n<p>Nachdem der Eintrag erfolgt ist, sollte normalerweise Minuten sp\u00e4ter der Eintrag im <a href=\"https:\/\/dnschecker.org\/#TXT\/ifit.at\" target=\"_blank\" rel=\"noreferrer noopener\">DNSChecker<\/a> ersichtlich sein.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"696\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-37-1024x696.png\" alt=\"\" class=\"wp-image-295\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-37-1024x696.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-37-300x204.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-37-768x522.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-37.png 1275w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo su -<\/strong>\n&#91;sudo] Passwort f\u00fcr louis:\nroot@mail:~# <strong>dig ifit.at txt<\/strong>\n; &lt;&lt;&gt;&gt; DiG 9.16.33-Debian &lt;&lt;&gt;&gt; ifit.at txt\n;; global options: +cmd\n;; Got answer:\n;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 57272\n;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1\n\n;; OPT PSEUDOSECTION:\n; EDNS: version: 0, flags:; udp: 512\n;; QUESTION SECTION:\n;ifit.at.                       IN      TXT\n;; ANSWER SECTION:\nifit.at.                10800   IN      TXT     \"v=spf1 mx ~all\"\n;; Query time: 40 msec\n;; SERVER: 62.2.24.162#53(62.2.24.162)\n;; WHEN: Mon Nov 28 12:32:02 CET 2022\n;; MSG SIZE  rcvd: 63\n<\/code><\/pre>\n\n\n\n<p>Unter dem Link <a>https:\/\/dmarcian.com\/spf-survey\/<\/a> kann man den TXT Eintrag auch testen:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"659\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-38-1024x659.png\" alt=\"\" class=\"wp-image-296\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-38-1024x659.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-38-300x193.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-38-768x494.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-38.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"56-spf-policy-agent-auf-debian-aktivieren\">SPF Policy Agent auf Debian aktivieren<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background\" style=\"font-size:0.8rem\"><code>root@mail:~# <strong>sudo apt install postfix-policyd-spf-python<\/strong>\n...\nroot@mail:~# <strong>sudo nano \/etc\/postfix\/master.cf<\/strong>\n#\n# Other external delivery methods.\n#\nifmail    unix  -       n       n       -       -       pipe\n  flags=F user=ftn argv=\/usr\/lib\/ifmail\/ifmail -r $nexthop ($recipient)\nbsmtp     unix  -       n       n       -       -       pipe\n  flags=Fq. user=bsmtp argv=\/usr\/lib\/bsmtp\/bsmtp -t$nexthop -f$sender $recipient\nscalemail-backend unix -       n       n       -       2       pipe\n  flags=R user=scalemail argv=\/usr\/lib\/scalemail\/bin\/scalemail-store ${nexthop} ${user} ${extension}\nmailman   unix  -       n       n       -       -       pipe\n  flags=FRX user=list argv=\/usr\/lib\/mailman\/bin\/postfix-to-mailman.py ${nexthop} ${user}\npolicyd-spf  unix  -       n       n       -       0       spawn\n    user=policyd-spf argv=\/usr\/bin\/policyd-spf\nroot@mail:~# <strong>sudo nano \/etc\/postfix\/main.cf<\/strong>\n\u2026\nmailbox_transport = lmtp:unix:private\/dovecot-lmtp\nsmtputf8_enable = no\n\nvirtual_mailbox_domains = proxy:mysql:\/etc\/postfix\/sql\/mysql_virtual_domains_maps.cf\nvirtual_mailbox_maps =\n   proxy:mysql:\/etc\/postfix\/sql\/mysql_virtual_mailbox_maps.cf,\n   proxy:mysql:\/etc\/postfix\/sql\/mysql_virtual_alias_domain_mailbox_maps.cf\nvirtual_alias_maps =\n   proxy:mysql:\/etc\/postfix\/sql\/mysql_virtual_alias_maps.cf,\n   proxy:mysql:\/etc\/postfix\/sql\/mysql_virtual_alias_domain_maps.cf,\n   proxy:mysql:\/etc\/postfix\/sql\/mysql_virtual_alias_domain_catchall_maps.cf\n\nvirtual_transport = lmtp:unix:private\/dovecot-lmtp\n\nvirtual_mailbox_base = \/var\/vmail\nvirtual_minimum_uid = 2000\nvirtual_uid_maps = static:2000\nvirtual_gid_maps = static:2000\n\nauthorized_submit_users = root,www-data,vmail\n\npolicyd-spf_time_limit = 3600\nsmtpd_recipient_restrictions =\n   permit_mynetworks,\n   permit_sasl_authenticated,\n   reject_unauth_destination,\n   check_policy_service unix:private\/policyd-spf\n\nroot@mail:~# <strong>exit\n<\/strong>\nAbgemeldet\nroot@mail:~# <strong>sudo systemctl restart postfix<\/strong>\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"57-dkim-auf-debian-aktivieren\">DKIM auf Debian aktivieren<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ sudo apt install opendkim opendkim-tools\n...\nlouis@mail:~$ <strong>sudo gpasswd -a postfix opendkim<\/strong>\nBenutzer postfix wird zur Gruppe opendkim hinzugef\u00fcgt.\nlouis@mail:~$ <strong>sudo nano \/etc\/opendkim.conf<\/strong>\n...\n<strong><em>Vorher\n<\/em><\/strong>\n# Common signing and verification parameters. In Debian, the \"From\" header is\n# oversigned, because it is often the identity key used by reputation systems\n# and thus somewhat security sensitive.\nCanonicalization        relaxed\/simple\n#Mode                   sv\n#SubDomains             no\nOversignHeaders         From\n<strong><em>Nachher\n<\/em><\/strong>\nCanonicalization        relaxed\/simple\nMode                    sv\nSubDomains              no\nOversignHeaders         From\n...\n# The trust anchor enables DNSSEC. In Debian, the trust anchor file is provided\n# by the package dns-root-data.\nTrustAnchorFile         \/usr\/share\/dns\/root.key\n#Nameservers            127.0.0.1\nNameservers             8.8.8.8,1.1.1.1\n# Map domains in From addresses to keys used to sign messages\nKeyTable           refile:\/etc\/opendkim\/key.table\nSigningTable       refile:\/etc\/opendkim\/signing.table\n# Hosts to ignore when verifying signatures\nExternalIgnoreList  \/etc\/opendkim\/trusted.hosts\n# A set of internal hosts whose mail should be signed\nInternalHosts       \/etc\/opendkim\/trusted.hosts\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"58-signing-table-key-table-und-trusted-hosts-file\">Signing Table, Key Table und Trusted Hosts File<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo mkdir -p \/etc\/opendkim\/keys<\/strong>\nlouis@mail:~$ <strong>sudo chown -R opendkim:opendkim \/etc\/opendkim<\/strong>\nlouis@mail:~$ <strong>sudo chmod go-rw \/etc\/opendkim\/keys<\/strong>\nlouis@mail:~$ <strong>sudo nano \/etc\/opendkim\/signing.table<\/strong>\n*@ifit.at      default._domainkey.ifit.at\n*@*.ifit.at    default._domainkey.ifit.at\nlouis@mail:~$ <strong>sudo nano \/etc\/opendkim\/key.table<\/strong>\ndefault._domainkey.ifit.at     ifit.at:default:\/etc\/opendkim\/keys\/ifit.at\/default.private\nlouis@mail:~$ <strong>sudo nano \/etc\/opendkim\/trusted.hosts<\/strong>\n127.0.0.1\nlocalhost\n\n.ifit.at\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"59-privatepublic-keypair-generieren\">Private\/Public Keypair generieren<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo mkdir \/etc\/opendkim\/keys\/ifit.at<\/strong>\nlouis@mail:~$ <strong>sudo opendkim-genkey -b 2048 -d ifit.at -D \/etc\/opendkim\/keys\/ifit.at -s default -v<\/strong>\nopendkim-genkey: generating private key\nopendkim-genkey: private key written to default.private\nopendkim-genkey: extracting public key\nopendkim-genkey: DNS TXT record written to default.txt\nlouis@mail:~$ <strong>sudo chown opendkim:opendkim \/etc\/opendkim\/keys\/ifit.at\/default.private<\/strong>\nlouis@mail:~$ <strong>sudo chmod 600 \/etc\/opendkim\/keys\/ifit.at\/default.private<\/strong>\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"60-public-key-im-dns-ver%C3%B6ffentlichen\">Public Key im DNS ver\u00f6ffentlichen<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ sudo cat \/etc\/opendkim\/keys\/ifit.at\/default.txt\ndefault._domainkey      IN      TXT     ( \"v=DKIM1; h=sha256; k=rsa; \"\n          \"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzjnnPuxHL8UN6f8hj5RRRdITThnUfmIimYDCMyi2XjS9SB51Lcb2jL2UcWW7e8DvhqCHX5Fkv4pXeLPU9mWZ8sMjp\/qcy9AxVFfc+n\/qzMYw6LlSJsGdzY8EO9NbNLOcvHNCGEWo+MHcTl3IOMxdHUJtlTaRazdx9k3bjy76PX7E9iAZs57z\/pn4QJ3I04FN9OXSGtkD3aKcPn\"\n          \"DjDczaLZU5HPDzOvR\/qouXaxXtWUGEwFNGXBzNFZb0KqtwdhWWf394YTrqOxL7QAkFH4Zn\/ScxjU6Iq2H8uTXtDVSTqVvjeb8oBx0s\/npDaJuYbVR83EJPoA8JL42sMOGSZoqjgwIDAQAB\" )  ; ----- DKIM key default for ifit.at\nlouis@mail:~$ <strong>sudo opendkim-testkey -d ifit.at -s default -vvv<\/strong>\n\nopendkim-testkey: using default configfile \/etc\/opendkim.conf\nopendkim-testkey: checking key 'default._domainkey.ifit.at'\nopendkim-testkey: <strong>key not secure<\/strong>\nopendkim-testkey: key OK\n\n<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\" id=\"61-hinweis-zu-dkim\">Hinweis zu DKIM<\/h5>\n\n\n\n<p>Beim <strong>DomainKeys Identified Mail<\/strong> (<a rel=\"noreferrer noopener\" href=\"https:\/\/de.wikipedia.org\/wiki\/DomainKeys\" target=\"_blank\">DKIM<\/a>) handelt es sich um einen \u00f6ffentlichen Schl\u00fcssel (Public Key). Der Empf\u00e4nger eines meiner eMails, welches ich mit meinem Private Key verschl\u00fcsselt habe, kann es mit dem Public Key, den ich im TXT Record DKIM zur Verf\u00fcgung stelle, entschl\u00fcsseln. Die obige Meldung &#171;<strong>key not secure<\/strong>&#187; kommt daher, dass DNSSEC beim Registrar (<a rel=\"noreferrer noopener\" href=\"https:\/\/www.swizzonic.ch\/\" target=\"_blank\">swizzonic.ch<\/a>) f\u00fcr diese Domain (noch) nicht gesetzt ist, wie dies bei meinen anderen Mailservern &#171;ifit.ch&#187; (<a rel=\"noreferrer noopener\" href=\"https:\/\/www.swizzonic.ch\/\" target=\"_blank\">swizzonic.ch<\/a>) und &#171;ifit.news&#187; (<a rel=\"noreferrer noopener\" href=\"https:\/\/www.whois.com\/\" target=\"_blank\">whois.com<\/a>) der Fall ist. Es hat relativ lange gedauert, bis ich u.a. diese Sache auch in den Griff bekommen habe. Ich hoffe nur, dass der Leser dieses Blogs langsam versteht, warum ich dieses Projekt \u00abUnm\u00f6glicher P\u00f6stler mit Ecken und Kanten\u00bb genannt habe! Es gibt auch Hilfsmittel (Tools), mit deren Hilfe man DKIM testen kann:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.dmarcanalyzer.com\/dkim\/dkim-checker\/\" target=\"_blank\">DKIM Record Check<\/a> (Resultat, siehe folgendes Screenshot vom Mimecast DMARC Analyzer)<\/li>\n\n\n\n<li><a href=\"https:\/\/mxtoolbox.com\/SuperTool.aspx?action=mx%3amail.ifit.at&amp;run=toolpage\" target=\"_blank\" rel=\"noreferrer noopener\">MXToolbox SuperTool&nbsp;<sup><sub>Beta7<\/sub><\/sup><\/a><\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"62-httpswwwdmarcanalyzercomdkimdkim-check-\"><a>https:\/\/www.dmarcanalyzer.com\/dkim\/dkim-check\/<\/a><\/h5>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-39-1024x768.png\" alt=\"\" class=\"wp-image-301\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-39-1024x768.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-39-300x225.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-39-768x576.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-39.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Kein Hinweis von &#171;query timed out!&#187; ist ein gutes Zeichen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"63-postfix-mit-opendkim-verkn%C3%BCpfen\">Postfix mit OpenDKIM verkn\u00fcpfen<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo mkdir \/var\/spool\/postfix\/opendkim<\/strong>\n\nlouis@mail:~$ <strong>sudo chown opendkim:postfix \/var\/spool\/postfix\/opendkim<\/strong>\nlouis@mail:~$ <strong>sudo nano \/etc\/opendkim.conf<\/strong>\n\nSocket               local:\/var\/spool\/postfix\/opendkim\/opendkim.sock\n\nlouis@mail:~$ <strong>sudo nano \/etc\/default\/opendkim<\/strong>\n\n\nSOCKET=\"local:\/var\/spool\/postfix\/opendkim\/opendkim.sock\"\n\nlouis@mail:~$ <strong>sudo nano \/etc\/default\/opendkim<\/strong>\nRUNDIR=\/run\/opendkim\nUSER=opendkim\nGROUP=opendkim\nPIDFILE=$RUNDIR\/$NAME.pid\nEXTRAAFTER=\n\nlouis@mail:~$ <strong>sudo nano \/etc\/postfix\/main.cf<\/strong>\n...\nvirtual_transport = lmtp:unix:private\/dovecot-lmtp\n\nvirtual_mailbox_base = \/var\/vmail\nvirtual_minimum_uid = 2000\nvirtual_uid_maps = static:2000\nvirtual_gid_maps = static:2000\n\nauthorized_submit_users = root,www-data,vmail\n\npolicyd-spf_time_limit = 3600\nsmtpd_recipient_restrictions =\n   permit_mynetworks,\n   permit_sasl_authenticated,\n   reject_unauth_destination,\n   check_policy_service unix:private\/policyd-spf\n\n# Milter configuration\nmilter_default_action = accept\nmilter_protocol = 6\nsmtpd_milters = local:opendkim\/opendkim.sock\nnon_smtpd_milters = $smtpd_milters\n\nlouis@mail:~$ <strong>sudo systemctl restart opendkim postfix<\/strong>\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"64-spf-and-dkim-check-in-google-mail\">SPF and DKIM Check in Google Mail<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-40-1024x560.png\" alt=\"\" class=\"wp-image-302\" width=\"650\" height=\"355\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-40-1024x560.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-40-300x164.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-40-768x420.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-40.png 1067w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"65-testing-email-score-and-placement\">Testing Email Score and Placement<\/h4>\n\n\n\n<p>Der Score unter www.mail-tester.com ist <strong>9.3<\/strong> und ist blacklisted.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"696\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-42-1024x696.png\" alt=\"\" class=\"wp-image-311\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-42-1024x696.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-42-300x204.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-42-768x522.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-42.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"66-creating-dmarc-record-to-protect-your-domain-name-from-email-spoofing\">DMARC Record to Protect Your Domain Name From Email Spoofing<\/h3>\n\n\n\n<p>Zur Erinnerung: Im vorigen Kapitel (<a rel=\"noreferrer noopener\" href=\"https:\/\/www.linuxbabe.com\/mail-server\/spf-dkim-postfix-debian-server\" target=\"_blank\">Teil 4<\/a> der Originalanleitung) habe ich die heiklen Themen <a rel=\"noreferrer noopener\" href=\"https:\/\/de.wikipedia.org\/wiki\/Sender_Policy_Framework\" target=\"_blank\">Sender Policy Framework<\/a> (SPF) und <a rel=\"noreferrer noopener\" href=\"https:\/\/de.wikipedia.org\/wiki\/DomainKeys\" target=\"_blank\">DomainKeys Identified Mail<\/a> (DKIM) behandelt. In <a rel=\"noreferrer noopener\" href=\"https:\/\/www.linuxbabe.com\/mail-server\/create-dmarc-record\" target=\"_blank\">Teil 5 der Originalanleitung<\/a> kommt nun noch ein wichtiges Thema hinzu: <strong><a rel=\"noreferrer noopener\" href=\"https:\/\/de.wikipedia.org\/wiki\/DMARC\" target=\"_blank\">Domain-based Message Authentication, Reporting and Conformance<\/a><\/strong> (DMARC). Im folgenden sieht man ein Screenshot der SPF-, DKIM- und DMARC-Eintr\u00e4ge in der TXT Record Tabelle meiner DNS-Zone &#171;ifit.at&#187;. Auf den Eintrag &#171;_token._dnswl.ifit.at&#187; (DNS Whitelist) komme ich sp\u00e4ter noch zur\u00fcck.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"67-spf-dkim-und-dmarc-eintr%C3%A4ge\">SPF-, DKIM- und DMARC Eintr\u00e4ge<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"764\" height=\"219\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-43.png\" alt=\"\" class=\"wp-image-316\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-43.png 764w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-43-300x86.png 300w\" sizes=\"auto, (max-width: 764px) 100vw, 764px\" \/><\/figure>\n\n\n\n<p>Diese drei Eintr\u00e4ge werden mit Hilfe des Tools &#171;www.mail-tester.com&#187; dargestellt (siehe 3fach gr\u00fcne Checksymbole im folgenden Screenshot).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"696\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-44-1024x696.png\" alt=\"\" class=\"wp-image-319\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-44-1024x696.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-44-300x204.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-44-768x522.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-44.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\" id=\"68-abschliessende-bemerkung-zur-4-datensicherung\">Abschliessende Bemerkung zur 4. Datensicherung<\/h5>\n\n\n\n<p>Bei der 4. Datensicherung wurden Teile 4 und 5 zusammengefasst. Die Datei heisst: 2022-11-28-Asinus-i386-on-Debian-11.5-Server-Linux-Kernel-5.10.0-19-686-pae+Postfix+Dovecot+PostfixAdmin+SPF+DKIM+DMARC.img. Auch hier wurde wieder eine Verifikation durchgef\u00fchrt.<\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"392\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-45-1024x392.png\" alt=\"\" class=\"wp-image-335\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-45-1024x392.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-45-300x115.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-45-768x294.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-45.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"69-installation-von-opendmarc\">Installation von OpenDMARC<\/h4>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ sudo apt install opendmarc\n...<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"253\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-46-1024x253.png\" alt=\"\" class=\"wp-image-336\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-46-1024x253.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-46-300x74.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-46-768x190.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-46.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"531\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-47-1024x531.png\" alt=\"\" class=\"wp-image-337\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-47-1024x531.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-47-300x155.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-47-768x398.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-47.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"531\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-48-1024x531.png\" alt=\"\" class=\"wp-image-338\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-48-1024x531.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-48-300x155.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-48-768x398.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-48.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>louis@mail:~$ <strong>sudo opendmarc-check ifit.at<\/strong>\nDMARC record for ifit.at:\n        Sample percentage: 100\n        DKIM alignment: relaxed\n        SPF alignment: relaxed\n        Domain policy: none\n        Subdomain policy: unspecified\n        Aggregate report URIs:\n                mailto:lavenetz@ifit.at\n        Failure report URIs:\n                (none)\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"70-oh-schreck-ip-8474014-ist-im-sorbs-\">Oh Schreck! IP 84.74.0.14 ist im SORBS !<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"571\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-49-1024x571.png\" alt=\"\" class=\"wp-image-339\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-49-1024x571.png 1024w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-49-300x167.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-49-768x428.png 768w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-49.png 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\" id=\"71-hinweis-zur-sorbs-datenbank\">Hinweis zur SORBS Datenbank<\/h5>\n\n\n\n<p>Ich habe stundenlang mit dem Support von UPC Cablecom (neu: Sunrise) telefoniert mit der Bitte, sie m\u00f6gen mich doch bitte aus der SORBS Datenbank entfernen und Reverse DNS setzen, so dass der PTR Record auf mail.ifit.at zeigt. Aber die hatten kein Geh\u00f6r und haben mich auf die Sunrise Community verwiesen. Toll, nicht? In der Zwischenzeit habe ich erfahren, dass ich ein Business Abo mit einer fixen IP brauche, damit ich den Reverse DNS PTR (Pointer) selbst setzen oder vom ISP setzen lassen kann. Es zeigt sich, dass im Zusammenhang mit Reverse DNS ziemlich Schindluderei getrieben wird. Warum gibt es so viele Blacklisten? Was ist da in der Informatik &#8211; vor allem in den letzten Jahren &#8211; aus dem Ruder gelaufen? (Hinweis: Ich kann doch diese Bemerkung machen, da ich schon seit 1977 dabei bin und 1980 den Bachelor in Computer Science abgeschlossen habe, oder nicht?) Aber schauen wir doch mal, ob es nicht noch andere M\u00f6glichkeiten gibt? Das w\u00e4re z.B. FCrDNS.<\/p>\n<cite>https:\/\/ipadmin.junkemailfilter.com\/rdns.php<\/cite><\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"72-fortsetzung-folgt\">Forward Confirmed Reverse DNS Lookup<\/h4>\n\n\n\n<p>Warum Forward Confirmed rDNS wichtig ist \u2013 <a rel=\"noreferrer noopener\" href=\"https:\/\/ipadmin.junkemailfilter.com\/rdns.php\" target=\"_blank\">FCrDNS<\/a> verhindert, dass andere mein Host f\u00e4lschen. Wenn ich der B\u00f6sewicht bin und den Reverse-Lookup f\u00fcr meine IP-Adressen kontrolliere, kann ich dort alles eingeben. Ich k\u00f6nnte mich als eine Bank ausgeben und versuchen, einen dazu zu bringen, seine Kontodaten preiszugeben. Was ich jedoch nicht f\u00e4lschen kann, ist, wenn einer nach dem falschen Namen suchen w\u00fcrde, den ich zur\u00fcckgebe, und er entweder nicht aufgel\u00f6st wird oder in eine andere IP-Adresse aufgel\u00f6st wird, dann w\u00fcsste man, dass er nicht echt ist. Wenn es auf dieselbe IP-Adresse aufgel\u00f6st wird, weiss man, dass es gut ist. Dies liegt daran, dass nur der Domaininhaber daf\u00fcr sorgen kann, dass FCrDNS ordnungsgem\u00e4\u00df funktioniert. Dies ist ein sehr wichtiges Tool zur Erkennung von E-Mail-Phishing-Betrug.<\/p>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>Here's how it's suppsed to work. Suppose your IP is 1.2.3.4:\n\n1.2.3.4 --- PTR Record ---&gt; hostname.example.com\nhostname.example.com --- A Record ---&gt; 1.2.3.4\n\nThe name that is returned by the rDNS lookup needs to point back to the same IP address.<\/code><\/pre>\n\n\n\n<p>Angewendet auf meine IP w\u00fcrde lauten:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"504\" height=\"84\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-51.png\" alt=\"\" class=\"wp-image-388\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-51.png 504w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-51-300x50.png 300w\" sizes=\"auto, (max-width: 504px) 100vw, 504px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-background-color has-background has-small-font-size\"><code>Looking up Reverse DNS for IP Address: &#91;84.74.0.14]\n\nRDNS for 84.74.0.14 is: &#91;84-74-0-14.dclient.hispeed.ch] - (PTR record - 14.0.74.84.in-addr.arpa)\nIP Address for 84-74-0-14.dclient.hispeed.ch is: &#91;84.74.0.14]\nSUCCESS! - Forward Confirmed Reverse DNS is CORRECT!\nThe IP address for the reverse lookup name matches the original IP<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Hostkarma blacklist Removal Form<\/h4>\n\n\n\n<p>Hinweis: Dies ist ein Entfernungsformular aus H\u00f6flichkeit f\u00fcr diejenigen, die entweder f\u00e4lschlicherweise aufgelistet wurden oder das Problem behoben haben und nun bereit sind, entfernt zu werden. Diese Entfernung ist kurzfristig und wenn mehr Spam erkannt wird, wird man erneut gelistet. Wenn sie meinen Server irrt\u00fcmlich aufgelistet haben, m\u00f6chte ich auf die Whitelist gesetzt werden, oder wenn ich Kommentare habe, k\u00f6nnte ich denen eine E-Mail an remove@junkemailfilter.com senden. Der Junk-E-Mail-Filter ist eines der fortschrittlichsten Spam-Filtersysteme der Welt. Es fungiert als Frontend-Spamfilter f\u00fcr Domains. MX-Eintr\u00e4ge werden auf ihre Server verwiesen. Sie erhalten die E-Mail, verarbeiten sie und senden sie an meinen bestehenden E-Mail-Server.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"883\" height=\"295\" src=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-53.png\" alt=\"\" class=\"wp-image-392\" srcset=\"https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-53.png 883w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-53-300x100.png 300w, https:\/\/ifit.click\/wp-content\/uploads\/2022\/12\/image-53-768x257.png 768w\" sizes=\"auto, (max-width: 883px) 100vw, 883px\" \/><figcaption class=\"wp-element-caption\">https:\/\/ipadmin.junkemailfilter.com\/remove.php<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Ein alter Esel aus der Schatztruhe Als ich im Jahr 2008 einen Asus EeePC 1000H f\u00fcr knapp 700 Franken gekauft habe, h\u00e4tte ich nicht gedacht, dass der Entscheid, den guten alten Esel alias Asinus (lat. der Esel) mit 2 GB Ram zu best\u00fccken, ein guter Schachzug gewesen ist. Dies hat jetzt n\u00e4mlich zur Folge, dass [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":187,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,16],"tags":[],"class_list":["post-157","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allgemein","category-mailserver"],"_links":{"self":[{"href":"https:\/\/ifit.click\/index.php?rest_route=\/wp\/v2\/posts\/157","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ifit.click\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ifit.click\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ifit.click\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ifit.click\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=157"}],"version-history":[{"count":116,"href":"https:\/\/ifit.click\/index.php?rest_route=\/wp\/v2\/posts\/157\/revisions"}],"predecessor-version":[{"id":403,"href":"https:\/\/ifit.click\/index.php?rest_route=\/wp\/v2\/posts\/157\/revisions\/403"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ifit.click\/index.php?rest_route=\/wp\/v2\/media\/187"}],"wp:attachment":[{"href":"https:\/\/ifit.click\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ifit.click\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=157"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ifit.click\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}