The maximum file size allowed for all media (photos, videos or voice messages) to be sent or forwarded through WhatsApp is 16 MB on all platforms
Quelle: I get a message that my video is too long and it won’t send
Dienstag, 17. November 2020
The maximum file size allowed for all media (photos, videos or voice messages) to be sent or forwarded through WhatsApp is 16 MB on all platforms
Quelle: I get a message that my video is too long and it won’t send
Tags: Dateigrösse, Gigabytes, Grösse, KB, Kilobytes, Limite, MB, Megabytes, WhatsApp
Labels: IT
Mittwoch, 30. September 2020
Für ein Projekt möchte ich ein Web-Formular als E-Mail versenden. Um die sensitiven Daten besonders gut zu schützen, möchte ich das E-Mail direkt vom Hosting Web-Server auf den Ziel-Mailserver senden und den lokalen SMTP des Hostinganbieters nicht mit den Daten in Berührung kommen lassen. Und die Übermittlung des E-Mails an den SMTP-Server müsste auch noch verschlüsselt erfolgen.
Leider verfügt der Ziel-SMTP-Server über ein (mittlerweile) schwaches Zertifikat, denn PHPMailer respektive OpenSSL weigert sich, verschlüsselt mit dem SMTP-Server zu kommunizieren:
... 2020-09-30 19:48:46 Connection failed. Error #2: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small [../PHPMailer-5.2.28/class.smtp.php line 374] ...
PHPMailer gibt diese Debug-Meldungen direkt an den Browser aus, wenn man bei der Initialisierung der Klasse folgende Option aktiviert:
... $mail = new PHPMailer(); ... $mail->SMTPDebug = SMTP::DEBUG_LOWLEVEL; ...
Andere, weniger geschwätzige Optionen sind: SMTP::DEBUG_CLIENT, SMTP::DEBUG_SERVER, SMTP::DEBUG_CONNECTION. SMTP::DEBUG_OFF unterdrückt jegliche Debug-Meldungen.
Das Problem ist, dass der vom Server verwendete Diffie Hellman-Key zu kurz ist; im vorliegenden Fall ist er nur 1024 bit lang. Dies erlaubt Logjam-Attacken.
Überprüfen kann man die Key-Länge mit folgendem Befehl:
$ openssl s_client -connect mailserver.tld:25 -starttls smtp ... Server Temp Key: DH, 1024 bits ...
Beim Debugging habe ich auch noch den Web-Service www.checktls.com entdeckt, der mir bestätigt hat, dass der Server grundsätzlich verschlüsselt spricht.
Nun, entweder überzeugt man den Betreiber des SMTP-Servers, die Verschlüsselungskonfiguration anzupassen respektive einen neuen Schlüssel zu generieren.
Falls dies keine Option ist, und man das Risiko in Kauf nehmen möchte, gibt es aber noch folgende Möglichkeit:
... $mail = new PHPMailer(); ... $mail->SMTPSecure = 'tls'; $mail->SMTPOptions = array( 'ssl' => array( 'security_level' => 0 ) ); ...
Die Option security_level gibt es seit PHP 7.2 und OpenSSL 1.1.0. Mögliche Werte sind in der offiziellen Dokumentation nachzuschlagen. 0 bedeutet sinnbildlich NULL Sicherheit.
DIESER WORKAROUND ERFOLGT AUF EIGENE GEFAHR! Ich würde das nur machen, wenn man sich wirklich bewusst ist, was man tut.
Tags: DH, Diffie-Hellman, Logjam, OpenSSL, PHPMailer, smtp
Labels: IT
Mittwoch, 16. September 2020
Heute verweigerte apt-get seinen Dienst:
# apt-get upgrade ... Reading package lists... Done E: Repository 'https://dl.ubnt.com/unifi/debian stable InRelease' changed its 'Codename' value from 'unifi-5.14' to 'unifi-6.0' N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
Das Problem löst man, in dem man vor apt-get upgrade folgenden Befehl ausführt:
# apt-get update --allow-releaseinfo-change
Quelle: APT codename change from unifi-5.5 to unifi-5.6 errors
Mittwoch, 16. September 2020
Kürzlich wurde auf meinem Pi24-Horchposten die neueste Version von fr24feed installiert: 1.0.26-4, Built on Sep 14 2020 08:32:40 (HEAD-bd20105.git/Linux/static_armel).
Umgehend reagierten meine monit Netzwerksensoren:
Connection failed Service pi24.domain.tld Date: Mon, 14 Sep 2020 19:03:03 Action: alert Host: HOST Description: failed protocol test [HTTP] at [10.1.2.3]:8754 [TCP/IP] -- HTTP error: Regular expression doesn't match: No match Your faithful employee, Monit
Als ich auf das Web-Interface zugreifen wollte erschien auch tatsächlich folgende Fehlermeldung:
For security reasons the web interface is only availble from private class networks or after you have manually specified the bind-interface setting in /etc/fr24feed.ini Please set it to bind-interface="0.0.0.0" to accept traffic from all interfaces or to the IP address of your preferred network interface! For further assistance please contact support@fr24.com
Komisch! Nun gut, ich fügte also bind-interface="0.0.0.0" ans Ende der Datei /etc/fr24feed.ini und bootete den Pi24 neu. Das schaffte keine Abhilfe.
Selbst wenn ich auf dem Pi24 selber ein wget localhost:8754 respektive wget 127.0.0.1:8754 machte, erschien die Fehlermeldung.
Ich tüftelte noch eine Weile lang herum, und entdeckte dabei folgendes: Die neuste Version von fr24feed bindet sich aus irgendeinem Grund nur an IPv6:
$ netstat -tulpn ... Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp6 0 :::8754 :::* LISTEN - ...
Ein Eintrag für denselben Port beginnend mit tcp fehlte.
Das CHANGELOG zeigt auf, dass die Kollegen aktuell an den Netzwerkfunktionalitäten von fr24feed rumbasteln und dabei bereits mehrere Male nachbessern mussten. Offenbar ist auch die neuste Version noch nicht ganz koscher.
Ein Blick in das Log von fr24feed zeigte folgende Einträge:
2020-09-14 20:10:02 | ______ _ _ _ _ _ _____ ___ 2020-09-14 20:10:02 | | ___|| |(_) | | | | | | / __ \ / | 2020-09-14 20:10:02 | | |_ | | _ __ _ | |__ | |_ _ __ __ _ __| | __ _ _ __`' / /' / /| | 2020-09-14 20:10:02 | | _| | || | / _` || '_ \ | __|| '__|/ _` | / _` | / _` || '__| / / / /_| | 2020-09-14 20:10:02 | | | | || || (_| || | | || |_ | | | (_| || (_| || (_| || | ./ /___\___ | 2020-09-14 20:10:02 | \_| |_||_| \__, ||_| |_| \__||_| \__,_| \__,_| \__,_||_| \_____/ |_/ 2020-09-14 20:10:02 | __/ | 2020-09-14 20:10:02 | |___/ 2020-09-14 20:10:02 | [main][i]FR24 Feeder/Decoder 2020-09-14 20:10:02 | [main][i]Version: 1.0.26-4/generic 2020-09-14 20:10:02 | [main][i]Built on Sep 14 2020 08:32:40 (HEAD-bd20105.git/Linux/static_armel) 2020-09-14 20:10:02 | [main][i]Running on: pi24-raspbian9 2020-09-14 20:10:02 | [main][i]Local IP(s): 2020-09-14 20:10:02 | [main][i]Copyright 2012-2020 Flightradar24 AB 2020-09-14 20:10:02 | [main][i]https://www.flightradar24.com 2020-09-14 20:10:02 | [main][i]DNS mode: PING 2020-09-14 20:10:03 | [main][i]Automatic updates are ENABLED 2020-09-14 20:10:04 | ERROR: rmmod: ERROR: Module dvb_usb_rtl28xxu is not currently loaded 2020-09-14 20:10:04 | info | [httpd]Server started, listening on ::2020-09-14 20:10:04 | [e]PacketSenderConfiguration::fetch_config(): Unable to fetch configuration for yoda receiver 2020-09-14 20:10:06 | [d]TLSConnection::ctor(): Enable verify_peer in production code! 2020-09-14 20:10:06 | [main][i]Reader thread started 2020-09-14 20:10:06 | [main][i]Socket server started 2020-09-14 20:10:06 | [main][i]MLAT data feed started 2020-09-14 20:10:06 | [reader][i]Initializing reader 2020-09-14 20:10:06 | [reader][i]Connecting to DVBT receiver via (exe:///usr/bin/dump1090-mutability --raw --mlat) 2020-09-14 20:10:06 | [bs][i]Initializing server 2020-09-14 20:10:06 | [bs][i]Starting server on 0.0.0.0:30003 2020-09-14 20:10:06 | [mlat][i]Waiting for MLAT configuration 2020-09-14 20:10:06 | [master][i]Starting processing thread 2020-09-14 20:10:06 | [reader][i]Connected to the receiver, configuring 2020-09-14 20:10:06 | [reader][i]Configured, processing messages 2020-09-14 20:10:07 | terminate called after throwing an instance of 'char const*'
Interessant sind folgende Zeilen:
... 2020-09-14 20:10:02 | [main][i]Local IP(s): ... 2020-09-14 20:10:04 | info | [httpd]Server started, listening on :: ... 2020-09-14 20:10:07 | terminate called after throwing an instance of 'char const*'
Komisch! Dem Problem konnte ich nicht auf den Grund gehen, wieso fr24feed die IP des Raspberry Pis nicht herausfinden konnte. strace könnte hier wohl weiterhelfen, doch das ging mir dann doch etwas zu weit. Schlussendlich hatte ich genug und entschied ich mich für ein Downgrade auf eine „last known good“ Version:
$ wget "https://repo.feed.flightradar24.com/rpi_binaries/fr24feed_1.0.25-3_armhf.deb" --no-check-certificate # dpkg -i fr24feed_1.0.25-3_armhf.deb
Damit die neueste Version am nächsten Tag nicht erneut installiert wird, habe ich auch noch /etc/cron.d/fr24feed_updater angepasst:
47 9 1 * * root /usr/lib/fr24/fr24feed_updater.sh >> /var/log/fr24feed_update.log 2>&1
Hoffen wir, dass es bis zum 1. Oktober eine neue Version gibt, die mein Problem behebt.
Tags: Flightradar24, fr24feed, IPv4, IPv6, monit, pi24, Raspberry Pi, Raspbian
Labels: IT
Samstag, 23. Mai 2020
Seit 2012 bin ich glücklicher Kunde von Cyon, eines schweizerischen Hosting-Anbieters. In den letzten drei Wochen hat sich das Erlebnis etwas getrübt.
Wichtig: Die unten beschriebene Problematik hatte ich in den letzten acht Jahren nie, und schon gar nicht innerhalb von drei Wochen zwei Mal. imapfilter hat bisher auch immer reibungslos funktioniert.
Am Morgen des Samstag, 9. Mai 2020 konnte ich plötzlich nicht mehr auf meine E-Mails in der INBOX von Konto A zugreifen. Weder in Apple Mail (meinem hauptsächlichen E-Mail-Client), noch über RainLoop (Webmail), noch mit imapfilter, welches ich verwende, um E-Mails automatisiert in Unterordner zu verschieben (oder im Falle von Spam: zu löschen).
Das alle 5 Minuten laufende imapfilter, gepaart mit Healthchecks, ist übrigens auch ein optimales „Frühwarnsystem“, welches mir meldet, wenn mit dem Mailserver etwas nicht stimmt.
Das Log von RainLoop (unter RAINLOOPROOT/data/_data_/_default_/logs) zeigte den Fehler schön auf:
... [08:55:36.698][1c50d1ff] IMAP[DATA]: > TAG3 SELECT "INBOX"\r\n [08:55:36.960][1c50d1ff] IMAP[ERROR]: Stream Meta: Array ... [08:55:36.961][1c50d1ff] IMAP[ERROR]: MailSo\Net\Exceptions\SocketReadException: MailSo-Net-Exceptions-SocketReadException (NetClient.php ~ 523) in %PATH%/rainloop/v/0.0.0/app/libraries/MailSo/Net/NetClient.php:523 Stack trace: ...
Und so sah das Symptom bei imapfilter aus:
... Sat May 9 10:41:38 2020: reading data through SSL; the connection has been closed cleanly ...
Diese Meldung wurde in einer Schleife ausgegeben, und zwar bei jedem Befehl, der E-Mails filtern und — falls vorhanden — verschieben sollte.
Als ich imapfilter im Debug-Modus laufen liess …
$ imapfilter -v -l log.txt -d debug.txt recipe.imapfilter
… tauchte folgende erhellende Nachricht im Debug Log (debug.txt) auf:
IMAP (5): 107C NO [UNAVAILABLE] Maximum number of connections from user+IP exceeded (mail_max_userip_connections=75)
Weil die IMAP-INBOX nicht abrufbar war, steckten meine Scripts in Endlosschleifen fest, welche die Zahl der Verbindungen pro E-Mail-Konto und IP voll ausschöpfte. Es waren also keine Verbindungen mehr möglich.
Als erstes schaltete ich deshalb den imapfilter-Cronjob ab, um dem IMAP-Server eine Verschnaufspause zu gönnen. Dann wurde rasch klar, dass die E-Mails in der INBOX aus irgendeinem Grund nicht aufgelistet werden konnten. Ich hatte in den zwei Tagen zuvor einige Anpassungen am imapfilter-Konfiguration vorgenommen; eine Möglichkeit war, dass die Verschiebeaktionen dabei zu einer korrupten INBOX-Datei geführt haben könnten.
Obwohl das Problem an einem Wochenende auftrat, schrieb ich dem Support — wohlwissentlich, dass ich erst am Montag eine Antwort erhalten würde. Vielleicht würde ja trotzdem eine gute Seele reinschauen … leider nein, The Computer Says No.
Ich kämpfte deshalb auf eigener Faust weiter: Nach viel Pröbeln wählte ich die Holzhammer-Methode: Nach einem lokalen Backup des kaputten Dovecot-Verzeichnisses löschte ich via SSH alle Dateien im INBOX-Verzeichnis (Pfad: siehe unten), ein frischer Start, sozusagen. Seither funktioniert die INBOX wieder.
Glück im Unglück: Da ich bei Konto A versuche, Inbox Zero anzuwenden, waren nur vier E-Mails von der Löschaktion betroffen, von denen ich die von Apple Mail lokal gespeicherten .emlx an einen sicheren Ort kopieren konnte.
Kurz nach Mitternacht in der Nacht von Donnerstag auf Freitag, 22. Mai 2020 traten gemäss imapfilter Probleme mit Konto B auf. Ich merkte dieses am späteren Freitag-Morgen, als ich mit meinen Mail-Clients nicht mehr auf meine E-Mails in der INBOX von Konto B zugreifen konnte. Dieses Mal gab es aber keine Überlastung der erlaubten Verbindungen. imapfilter meldete bei Abfragen auf die INBOX:
... Fri May 22 14:47:16 2020: IMAP (5): 127C NO [SERVERBUG] Internal error occurred. Refer to server log for more information. [2020-05-22 14:47:16] (0.040 + 0.000 + 0.039 secs). ...
Ohne Zugriff auf die Logs konnte ich „SERVERBUG“ nicht weiter eingrenzen. Erneut schrieb ich eine E-Mail an den Support (Versand um 15:19 Uhr), und erhielt um 16:57 Uhr eine Antwort. Leider in der Form „Have you tried turning it off and on again?“. Die Hoffnung war verloren, dass mir Cyon noch vor dem Wochenende beim Debugging helfen konnte — somit sah ich ca. 56 Stunden ohne E-Mail entgegen.
Hilfreich war in der ersten Antwort des Supporters einzig der Tipp, anstelle von RainLoop doch bitte das „offizielle“ Webmail von Cyon zu verwenden: webmail.cyon.ch, welches auf RoundCube basiert. Gesagt, getan. So konnte ich dem Supporter klipp und klar belegen, dass das Problem auf der Serverseite lag. Wenn ich die INBOX anwählte, erschien am unteren Bildschirmrand ganz in rot folgende Fehlermeldung:
Serverfehler: UID SORT: Internal error occurred. Refer to server log for more information. [2020-05-22 17:59:38] (0.041 + 0.000 + 0.040 secs)
Leider gab es seither keine Antwort mehr, weshalb ich mir erneut selber helfen musste (wieso passieren diese Fehler immer auf’s Wochnenende hin?!)
Das Problem war dieses Mal etwas anderer Natur — Apple Mail und imapfilter zeigten partout keine E-Mails mehr in der INBOX an; die Unterordner konnten hingegen abgerufen werden. RoundCube hingegen zeigte die INBOX etwas erratisch manchmal an, manchmal nicht.
Die schlussendliche Lösung:
$ ps ax | grep -i dovecot | grep -v grep | awk '{print $1}' | xargs kill
Ohne Zugriff auf die IMAP-Logs ist mir aber weiterhin nicht möglich herauszufinden, was denn nun wirklich genau das Problem war. Und so besteht zu befürchten, dass das Problem jede Minute erneut auftreten kann.
Und nein, ich gebe nicht Cyon die Schuld: Es könnte sein, dass mein spezielles Setup mit 5-minütigen imapfilter-Verbindungen die Ursache hinter den Problemen ist. Bspw. eine Anpassung, welche tausende E-Mails verschiebt und der Mailserver noch am kopieren ist, wenn der nächste imapfilter-Prozess bereits wieder startet und gerade in Kopie befindliche E-Mails irgendwohin kopiert. Oder ein Software-Update meiner Debian-Systeme in den letzten drei Wochen.
Es könnte aber auch sein, dass der Fehler bei Cyon zu suchen ist — d.h. ein kaputter RAM-Baustein, der beim Schreiben IMAP-Ordnerdateien korrumpiert, oder das Storage-System, welches zu schreibende Daten verfälscht, oder ein Update von Dovecot, nach welchem sich die Software nicht mehr wie gewohnt verhält. Oder eine Inkompatibilität zwischen der neuen Dovecot-Version mit dem bisherigen imapfilter; oder mit dem neuen imapfilter und der bisherigen Dovecot-Version.
Was ich bei diesen Problemen über Cyons E-Mail-Infrastruktur gelernt habe:
$ ps ax | grep -i dovecot 3662642 ? S 0:00 dovecot/imap 3662645 ? S 0:01 dovecot/imap 3662646 ? S 0:00 dovecot/imap 3662706 ? S 0:00 dovecot/imap 3663038 ? S 0:00 dovecot/imap 3664246 ? S 0:00 dovecot/imap 3674314 ? S 0:00 dovecot/imap 3674316 ? S 0:00 dovecot/imap 3674317 ? S 0:00 dovecot/imap 3674449 ? S 0:00 dovecot/imap
drwxr-x--x 2 user user 158 May 23 17:02 ./ drwxr-x--x 3 user user 32 May 23 16:43 ../ -rw-r----- 1 user user 15024 May 23 16:41 dovecot.index -rw-r----- 1 user user 15024 May 23 16:41 dovecot.index.backup -rw-r----- 1 user user 391208 May 23 17:34 dovecot.index.cache -rw-r----- 1 user user 2144 May 23 17:02 dovecot.index.log -rw-r----- 1 user user 32928 May 23 16:41 dovecot.index.log.2
Tags: Cyon, Dovecot, IMAP, imapfilter, mail_max_userip_connections, RainLoop, RoundCube, SERVERBUG
Labels: IT, Schweiz, Web
Montag, 20. April 2020
Ich habe vor einigen Jahren mit OpenVPN ein Site-to-Site VPN zu einem Bekannten in der Agglomeration Bern aufgebaut und betreibe dieses VPN bis heute.
Der Bekannte ist Kunde von upc cablecom (der schnellste und preiswerteste Anbieter in der Agglomerationsgemeinde) mit einem 300 MBit/s Download-Abo, ich als Städter bekanntermassen Kunde von Fiber7 mit (theoretisch) symmetrischen 1 GBit/s.
Letzte Woche (KW16 2020) waren SSH-Verbindungen zu einem Server beim Bekannten auf einmal sehr, sehr hakelig — die Latenz zwischen Tastatureingabe und erscheinen des Zeichens auf dem Bildschirm war sehr hoch. Bestätigt wurde diese durch meine Überwachung der Geschwindigkeit mit speedtest-cli und Aufzeichnung und Visualisierung der Werte mit Cacti:
Der Einbruch am Dienstag-Morgen war offensichtlich.
Eine fiebrige, verbissene Suche begann: War ein Angreifer in das Netzwerk eingedrungen und zog nun Gigabyte-weise an Daten ab? Oder war ein Rechner eines Mitbenutzers von Malware gekapert worden? Oder führte der Mitbenutzer einfach nur tonnenweise Bittorrent-Downloads durch? Oder war eine Netzwerkkomponente ausgetickt und flutete das Netzwerk und den Router mit Paketen? Oder hatte upc cablecom einfach etwas am Netzwerk geschraubt, worauf der Geschwindigkeitseinbruch manchmal nur mit einem Neustart des Modems behoben werden konnte?
Die Nachforschungen brachten nichts zu Tage, aber immerhin lernte ich folgende Netzwerkanalyse-Tools/Features meiner Infrastruktur kennen:
Am Dienstag-Abend ereilte mich ein Geistesblitz: speedtest-cli misst die Geschwindigkeit von einem Server am Agglomerations-Standort zum Ookla Speedtest-Server von Init7 (Server „Init 7 (Winterthur, Switzerland)“ mit ID 3026). Aus Interesse wählte ich einen anderen Server aus der Liste aus, und zwar den Speedtest-Server von Sunrise. Zuerst führte ich einen manuellen Speedtest zu Init7 durch, danach zu Sunrise. Und siehe da, hier lag die Antwort wie auf dem Präsentierteller:
$ ./speedtest-cli --server 28045 Retrieving speedtest.net configuration... Retrieving speedtest.net server list... Testing from UPC Schweiz (80.218.X.X)... Hosted by Sunrise Communication AG (Lausanne) [6X.XX km]: 30.667 ms Testing download speed........................................ Download: 302.88 Mbit/s Testing upload speed.................................................. Upload: 42.32 Mbit/s $ ./speedtest-cli --server 3026 Retrieving speedtest.net configuration... Retrieving speedtest.net server list... Testing from UPC Schweiz (80.218.X.X)... Hosted by Init 7 (Winterthur) [13X.XX km]: 165.956 ms Testing download speed........................................ Download: 25.82 Mbit/s Testing upload speed.................................................. Upload: 9.48 Mbit/s
Am selben Abend sendete ich eine Anfrage an Init7 raus, ob und wie sie sich diesen markanten Geschwindigkeits-Unterschied erklären können. Am Morgen hatte ich die Antwort, und wurde auf folgendes Schreiben verwiesen. Diese Meldung war bei mir im Corona-Trubel vollkommen untergegangen.
Fazit: upc cablecom, how dare you?
smokeping visualisiert die Latenz von DNS-Abfragen aus dem upc cablecom-Netz gegen den DNS-Server von Init7 ebenfalls sehr schön:
Auf Wunsch Thomas‘ (siehe Kommentar unten) noch dieselbe Grafik für Test-Abfragen an einen der DNS-Server der upc cablecom (ns10.cablecom.net) …
… zu Swisscom (dns2.bluewin.ch) …
… und zu Sunrise (cache02.sunrise.ch)
Tags: Cablecom, DNS, Fiber7, Hops, Init7, Kunde, Kundenunfreundlich, Kundenzufriedenheit, Latenz, Marktmissbrauch, Net Neutrality, Ookla, Peering, smokeping, Speedtest, speedtest-cli, upc, upc cablecom
Labels: IT, Schweiz
Montag, 13. April 2020
Gestern half ich einer Bekannten, ihr HP ProBook 6570b mit einer vom Software-Hersteller nicht mehr unterstützten Windows 7 Professional-Installation auf Windows 10 zu lüpfen.
Diese unsägliche Upgrade-Odyssee bestätigte mir wieder einmal, dass mein Entscheid 2004 richtig war, Windows den Rücken zu kehren und auf Mac OS X (heute: macOS) sowie Debian GNU/Linux zu setzen.
Frickelmässig hat sich im Umgang mit Windows kaum etwas geändert — mit Backup-Image, dateibasiertem rsync-Backup, Installationsdatenträger herunterladen und erstellen sowie drei (!) Installationsversuchen (Stichwort: 0x800f0955 - 0x20003 und „The installation failed in the SAFE_OS phase with and error during INSTALL_UPDATES operation.“) habe ich gut und gerne 12 Stunden verbraten.
Ein kleines Problem ganz zu Beginn: Der USB-Installationsdatenträger, ein 8GB USB-Stick, wurde vom HP BIOS anfänglich nicht als Bootquelle aufgeführt (beim Booten ESC drücken, dann F9). Nach viel Haare ausreissen dann die Erkenntnis auf Grund eines Tipps in einem Forum: Ich hatte den Datenträger an einem der zwei SS (SuperSpeed) USB-Anschlüsse auf der rechten Seite des Geräts angeschlossen. Das BIOS erkennt aber nur USB-Datenträger, die am linken USB/eSATA-Anschluss angeschlossen werden.
Wie bescheuert ist das denn?!
Tags: 6570b, Boot, bootable, booten, Hewlett Packard, HP, Microsoft, ProBook, SS, SuperSpeed, USB, USB2, USB3, Windows 10, Windows 7
Labels: IT
Montag, 13. April 2020
Ich habe hier bereits erwähnt, dass gebrauchte ThinkPads mit Debian die Linux-Server meiner Wahl sind.
Gestern habe ich meinen ELK Log-Server von einem Lenovo ThinkPad X201 auf ein Lenovo ThinkPad T440p migriert (und habe gleichzeitig von einem unsäglichen Docker-Gefrickel auf native Pakete gewechselt).
Eines der bis eben ungelösten Probleme war, dass sich der Bildschirm des ThinkPads nach einer Inaktivitäts-Zeitlimite nicht automatisch ausschaltete. Das habe ich nun folgendermassen gelöst:
... GRUB_CMDLINE_LINUX_DEFAULT="consoleblank=60" ...
Der Wert 60 drückt die Inaktivitätszeit in Sekunden aus.
Danach muss noch GRUB aktualisiert werden, und dann wird’s ab dem nächsten Neustart nach 60 Sekunden dunkel:
# update-grub
Tags: Bildschirm, Bildschirmschoner, consoleblank, Debian, grub, Konsole, Lenovo, Screensaver, Shell, Standby, Strom, Stromsparen, T440p, Terminal, Thinkpad, X201
Labels: IT, Linux
Donnerstag, 9. April 2020
Zoom is a security and privacy disaster, […] In the meantime, you should either lock Zoom down as best you can, or — better yet — abandon the platform altogether.
Tags: Sicherheit, Software, Videokonferenz, Vulnerability, Zoom
Labels: IT
Sonntag, 1. März 2020
Emails von der Kommandozeile versenden — was man bei Linux im Handumdrehen hinkriegt, erforderte bei mir unter macOS stundenlange Handstände.
Doch jetzt habe ich den Kniff raus: Die von macOS mitgelieferte postfix-Installation habe ich schlussendlich ignoriert und auf das MacPorts postfix-Paket gesetzt.
Der erste Fallstrick lauert schon hier: Um heutzutage über einen Hoster E-Mails zu versenden, benötigt man zwingend SASL und TLS. Diese Features müssen als sog. MacPorts Variants explizit mitinstalliert werden, sonst landen sie nicht auf dem Mac:
# port install postfix +sasl +tls
Ansonsten meldet postfix:
... Mar 01 14:16:11 imac postfix/smtp[70687]: warning: smtp_sasl_auth_enable is true, but SASL support is not compiled in Mar 01 14:16:11 imac postfix/smtp[70687]: warning: TLS has been selected, but TLS support is not compiled in ...
Eine funktionierende postfix-Konfiguration mitsamt Installationsscript habe ich von meinen Linux-Servern herüberkopiert (diese Anleitung alleine würde das Format dieses Blog-Artikels sprengen). Die Konfiguration habe ich aber mit den MacPorts-Einstellungen ergänzt. Denke daran: Bei Linux liegen die Konfiguration sowie die Arbeitsverzeichnisse allesamt am erwarteten Ort (bspw. /etc/postfix/main.cf). Da wir unter macOS auf MacPorts setzen, liegt dieselbe Datei hier unter /opt/local/etc/postfix/main.cf. Deshalb habe ich zur Sicherheit in main.cf folgende von MacPorts vorgeschlagene Ergänzungen (siehe /opt/local/etc/postfix/main.cf.sample) hinzugefügt:
$ cat /opt/local/etc/postfix/main.cf # Directories queue_directory = /opt/local/var/spool/postfix command_directory = /opt/local/sbin daemon_directory = /opt/local/libexec/postfix data_directory = /opt/local/var/lib/postfix meta_directory = /opt/local/etc/postfix manpage_directory = /opt/local/share/man sample_directory = /opt/local/share/postfix/sample readme_directory = /opt/local/share/postfix/readme shlib_directory = no html_directory = no # Paths sendmail_path = /opt/local/sbin/sendmail newaliases_path = /opt/local/bin/newaliases mailq_path = /opt/local/bin/mailq # Log maillog_file_prefixes = /var, /var/log/macports/postfix maillog_file = /var/log/macports/postfix/postfix.log # Other stuff ... mail_owner = _postfix setgid_group = _postdrop default_privs = nobody unknown_local_recipient_reject_code = 550 debug_peer_level = 2 ...
Weiter hatte ich während dem Debuggen so meine liebe Mühe, die Logging-Informationen zu finden, da diese an syslog gesendet werden und bei macOS dann in der Console.app landen. Deshalb habe ich im Gegensatz zu meinen Linux-Installationen auch noch die Konfigurationsdatei /opt/local/etc/postfix/master.cf anpassen müssen. Essentiell war es, die folgende Zeile einzufügen:
... postlog unix-dgram n - n - 1 postlogd ...
Quelle: Postfix logging to file or stdout
Damit mir die Parallelinstallation von Postfix nicht in die Quere kommt und ich mir sicher war, dass die MacPorts-Installation von postfix tatsächlich die Konfiguration unter /opt frisst, habe ich kurzerhand den macOS postfix-Ordner verschoben:
# mv /etc/postfix /etc/postfix.bkp
Ob das wirklich nötig gewesen wäre sei dahingestellt; Vorsicht, wer das auf seinem System macht: Ich garantiere für nichts.
Die Postfix-Installation lädt man folgendermassen:
# port load postfix # launchctl unload /Library/LaunchDaemons/org.macports.postfix.plist # launchctl load -w /Library/LaunchDaemons/org.macports.postfix.plist
Die plist-Datei zeigt als symbolischer Link nach /opt/local/etc/LaunchDaemons/org.macports.postfix/org.macports.postfix.plist. In dieser Datei habe ich folgendes angepasst/ergänzt — das ist nicht zwingend nötig, sollte aber dazu führen, dass Postfix bei jedem Neustart automatisch gestartet wird. Ausserdem sollten im Fall von Start-Problemen Fehlermeldungen in eine Log-Datei geschrieben werden:
... <string>--pid=none</string> </array> <key>Disabled</key> <false/> <key>KeepAlive</key> <true/> <key>StandardOutPath</key> <string>/var/log/launchd.macports.postfix.standard.log</string> <key>StandardErrorPath</key> <string>/var/log/launchd.macports.postfix.error.log</string> </dict> </plist>
Anschliessend musste noch eine Mail-Programm her, welches erlaubt, den Absender eines E-Mails selber zu setzen. MacPorts bietet hierzu s-nail an (Homepage des Entwicklers).
# port install s-nail
Als ich mit s-nail ein Test-Mail versenden wollte folgte eine weitere Hiobs-Botschaft:
$ echo "Test email" | mail user@domain.tld unknown: fatal: open /etc/postfix/main.cf: No such file or directory /Users/user/dead.letter 7/135 mail: ... message not sent
Ich übertreibe nicht, wenn ich sage, dass ich Stunden mit Debugging verbracht habe. Bis ich plötzlich realisierte, dass s-nail die offiziellen Mail-Executables mail, mailx und/oder sendmail unter /usr/bin verwendet. Der Lackmus-Test: Wenn ich diese Mail-Executables manuell aufrief, erschien ein- und dieselbe Fehlermeldung.
Dies obwohl meine Bash PATH-Variable /opt/local/bin und /opt/local/sbin vor /usr/bin und /usr/sbin nennt, verwendete s-nail aus irgendeinem Grund standardmässig die letztgenannten Pfade.
Wie sage ich s-nail aber, dass es stattdessen die MacPorts mail-Befehle verwenden soll? Folgende Anpassung in /opt/local/etc/mail.rc war nötig:
... set mta=/opt/local/sbin/sendmail
Anschliessend musste noch eine Mail-Programm her, welches erlaubt, den Absender eines E-Mails selber zu setzen. Ich verwende in Bash-Scripts sehr oft folgendes Konstrukt, und ich wollte sicherstellen, dass die Scripts sowohl unter Debian GNU/Linux als auch macOS laufen (Argument -a):
$ echo -e "Test" | $(which mail) -a "From: DNS Query Analyzer" -s 'Top 25 DNS Queries' user@domain.tld another.user@domain.tld
Ich habe leider eine schlechte, aber auch eine gute Nachricht. Die gute: Man kann auch unter macOS den Absender setzen. Leider aber nicht mit demselben Befehl wie unter Debian GNU/Linux.
Bei s-nail muss ich leider ein anderes Argument verwenden:
$ echo -e "Test" | $(which mail) -r "DNS Query Analyzer" -s 'Top 25 DNS Queries' user@domain.tld another.user@domain.tld
Doch nun trat bereits das nächste Problem auf, wie ein Blick in die leere INBOX und in /var/log/macports/postfix.log zeigte:
... Mar 01 15:43:59 imac postfix/smtp[81049]: 4D0E3FBBE221: to=<user@domain.tld>, relay=s000.cyon.net[149.126.4.000]:25, delay=20, delays=0.03/20/0.03/0.04, dsn=5.0.0, status=bounced (host s000.cyon.net[149.126.4.000] said: 550 SPF: 1.2.3.4 is not allowed to send mail from emeidi.com (in reply to RCPT TO command)) ...
Faszinierend. Unter Linux hatte ich eine solche Fehlermeldung noch nie gesehen. Ich verwende für den Versand „offizieller“ E-Mails jeweils emeidi.com als Absenderadresse.
Schlussendlich blieb nur die Holzhammer-Methode. Ich verschob alle Konfigurationsdateien, welche auf meinen Linux-Installationen nicht existierten, von /opt/local/etc/postfix in den Unterordner _old. Schlussendlich sah das Verzeichnis so aus:
$ find /opt/local/etc/postfix/opt/local/etc/postfix /opt/local/etc/postfix/_old /opt/local/etc/postfix/_old/access /opt/local/etc/postfix/_old/access.sample /opt/local/etc/postfix/_old/aliases /opt/local/etc/postfix/_old/aliases.sample /opt/local/etc/postfix/_old/bounce.cf.default /opt/local/etc/postfix/_old/canonical /opt/local/etc/postfix/_old/canonical.sample /opt/local/etc/postfix/_old/generic /opt/local/etc/postfix/_old/generic.sample /opt/local/etc/postfix/_old/header_checks.sample /opt/local/etc/postfix/_old/LICENSE /opt/local/etc/postfix/_old/main.cf.default /opt/local/etc/postfix/_old/main.cf.proto /opt/local/etc/postfix/_old/main.cf.sample /opt/local/etc/postfix/_old/master.cf.proto /opt/local/etc/postfix/_old/master.cf.sample /opt/local/etc/postfix/_old/relocated /opt/local/etc/postfix/_old/relocated.sample /opt/local/etc/postfix/_old/TLS_LICENSE /opt/local/etc/postfix/_old/transport /opt/local/etc/postfix/_old/transport.sample /opt/local/etc/postfix/_old/virtual /opt/local/etc/postfix/_old/virtual.sample /opt/local/etc/postfix/header_checks /opt/local/etc/postfix/main.cf /opt/local/etc/postfix/makedefs.out /opt/local/etc/postfix/master.cf /opt/local/etc/postfix/postfix-files /opt/local/etc/postfix/sasl /opt/local/etc/postfix/sasl/outgoing /opt/local/etc/postfix/sasl/outgoing.db
In sasl/outgoing entfernte ich zudem den TCP-Port nach der Server-Adresse, und master.cf ergänzte ich mit Zeilen, die bisher nur unter Linux existierten.
Und jetzt endlich kann ich mir von der Kommandozeile aus E-Mails senden. Hat nur geschlagene sechs Stunden gedauert.
Tags: From, High Sierra, macOS, macOS High Sierra, MacPorts, Mail, mail.rc, mailq, mailx, main.cf, master.cf, postfix, s-nail, SASL, sendmail, SPF, TLS
Labels: Apple, IT