ownCloud für Android hat Probleme mit Sonderzeichen

Ich betreibe seit langer Zeit ownCloud-Instanzen, um damit Daten zwischen diversen Geräten zu synchronisieren. Installation und Konfiguration sind sehr einfach und es gibt (neben WebDAV) native Clients für alle von mir genutzten Betriebssysteme.

Vor einiger Zeit habe ich ein Passwort geändert. Die Desktop-Clients unter Windows 7 und Debian funktionierten mit dem neuen Passwort anstandslos, ownCloud für Android hingegen nicht. Nach einigem Herumprobieren fand ich heraus, dass es eine hochgestellte 3 war (³), die das Problem verursachte. Ich änderte daraufhin das Passwort erneut (es enthielt weiterhin Sonderzeichen) und es funktionierte auf allen Geräten.

Seitdem ist einiges an Zeit vergangen und letztens erinnerte mich meine Passwort-Routine, das ownCloud-Passwort mal wieder zu ändern. Gesagt, getan und oh Wunder, ein Sonderzeichen funktionierte auf dem Android-Client nicht.

Dieses Mal war meine Neugier größer, ich deaktivierte die Zwangsumleitung auf HTTPS und schnitt den Netzwerkverkehr der App beim Einloggen über eine unverschlüsselte Verbindung mit. Die Login-Daten mit einigen Sonderzeichen sehen in der App so aus:

ownCloud-Login mit Sonderzeichen
ownCloud-Login mit Sonderzeichen

Im Mitschnitt sieht man schnell, wieso das Passwort nicht funktionieren kann (abgesehen davon, dass der Nutzer nicht existiert):

Netzwerk-Mitschnitt vom Login bei ownCloud mit Sonderzeichen
Netzwerk-Mitschnitt vom Login bei ownCloud mit Sonderzeichen

Halten wir also fest: Bestimmte Sonderzeichen werden von der „originalen“ ownCloud-Android-App zu Fragezeichen umgewandelt und so gesendet. Die „Standard-Sonderzeichen“ wie ?$% usw. scheinen zu funktionieren.

Da die App sowieso nicht unbedingt meine Definition einer guten Synchronisations-App erfüllt: Kann mir jemand eine gute WebDAV-App nennen, die unter Android die Verbindung mit ownCloud übernimmt und vielleicht auch mit den spezielleren Sonderzeichen klar kommt?

Outlook.com und Office365 – Update in der Spambehandlung?

Im März 2013 schrieb ich einen Artikel über die Behandlung eingehender Mails an Postfächer bei outlook.com und hotmail. Status damals war: Es gibt offensichtlich geblockte IP-Ranges, von denen Mails angenommen, aber nicht dem Empfänger zugestellt werden. Der Sender weiß so nicht, dass seine Mail nicht ankam, der Empfänger weiß nicht, dass er etwas hätte empfangen können. Eine gefährliche Situation also.

Im SSF wurde nun ein Erfahrungsbericht über Hosted Exchange bei OVH geschrieben (Hint: Nicht toll), von wo nach einigen Vorkommnissen ein Wechsel zu Microsoft selbst mit Office365 vollzogen wurde. Das weckte in mir die Erinnerung an die Erfahrungen mit Microsoft-Mailexperten damals, woraufhin ich gemeinsam mit dem Verfasser die heutige Konfiguration prüfte.

Kurz gesagt, das Verhalten von damals konnte ich nicht nachstellen.

Mein produktiver Mailserver wurde damals nach längerem Hin und Her mit dem Support entblockt und kann heute Mails an outlook.com senden, sie landen allerdings reproduzierbar im Spam.
Sende ich eine Mail an das Konto bei Office365, kommt diese ohne Beanstandung mit einem Spam-Level von 1 durch (als Spam werden Nachrichten zwischen 5 und 10 gewertet).

Sende ich eine Mail von einem meiner Server bei OVH stellt sich das Szenario anders, aber okay dar.
outlook.com bricht die Kommunikation nach dem mail from: ab mit folgender Fehlermeldung:
mail from: testmail@helium.fmaihost.de
550 SC-001 (BAY004-MC1F41) Unfortunately, messages from 37.59.60.14 weren't sent. Please contact your Internet service provider since part of their network is on our block list. You can also refer your provider to http://mail.live.com/mail/troubleshooting.aspx#errors.
Connection closed by foreign host.

Sende ich vom gleichen Server eine Mail an das Konto bei Office365, kommt die Mail auch hier anstandslos durch.

Es ist zwar beides Outlook, die Spam-Filter unterscheiden sich aber offenbar stark, für die Kostenlosen Postfächer bei outlook.com werden offensichtlich IP-Bereiche gewisser Hoster komplett gesperrt. Ärgerlich für Kunden von OVH.

Ab sofort nur noch HTTPS

Wer das hier liest, tut dies über eine mit einem von Let’s Encrypt ausgestellten Zertifikat verschlüsselte Verbindung.

Komischer Satz, ist aber so, ich habe die Seite komplett auf HTTPS umgestellt, alle internen Links geändert und alle eingebundenen Medien aktualisiert, es sollte nun also alles verschlüsselt sein.

Danke an natenom für den dezenten Hinweis, sich mal wieder mit dem Thema SSL/TLS zu beschäftigen. Tatsächlich ist jetzt, wo Let’s Encrypt produktiv nutzbar ist, der Aufwand kein Grund mehr, Internetseiten nicht verschlüsselt zu übertragen. Schon StartSSL war ja eine deutliche Hilfe, nun muss man aber noch nicht einmal mehr lange warten, bis Zertifikate ausgestellt werden.

Hier habe ich aufgeschrieben, wie man das Hostingpanel ISPConfig so patcht, dass es automatisiert Zertifikate von Let’s Encrypt anfordert.

ISPConfig: Zertifikate von Let’s Encrypt automatisch erstellen

Let’s Encrypt ist eine neue CA (Zertifizierungsstelle), die seit kurzem im Produktivbetrieb kostenlose TLS-Zertifikate vergibt.

Das ganze läuft automatisiert, die CA stellt dafür ein Script zur Verfügung, welches sämtliche Kommunikation mit den Servern von Let’s Encrypt regelt. Das Anfordern und erneuern von Zertifikaten ist also sehr einfach und mit einem Befehl über die Kommandozeile zu erledigen.

Für Hosting-Anbieter (oder Selbsthoster) ist Let’s Encrypt natürlich eine tolle Möglichkeit, die Webseiten schnell und kostenlos mit einem validen Zertifikat zu versehen. Für Anbieter mit dem Control Panel ISPConfig gibt es inzwischen eine externe Lösung, um die Zertifikatanforderung nahtlos in die Weboberfläche zu integrieren. Die externe Erweiterung soll eventuell in den nächsten Versionen von ISPConfig fester Teil der Software werden, bisher ist das aber noch nicht der Fall, das Panel muss also gepatcht werden.

Die Erweiterung von alexalouit ist auf github zu finden und kann unter Debian leicht installiert werden. Vorher muss allerdings das Script von Let’s Encrypt installiert werden, ebenfalls von github:

cd /tmp
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto

Der Installer kann abgebrochen werden, bevor er beim Anfordern von Zertifikaten hilft, das wollen wir schließlich über ISPConfig erledigen.

Nun wird „ISPConfig-letsencrypt“ geklont:

cd /tmp
git clone https://github.com/alexalouit/ISPConfig-letsencrypt.git
cd ISPConfig-letsencrypt

Auch hier gibt es einen automatischen Installer, der die Erweiterung installiert und ISPConfig patcht (Dateien verschieben, Datenbank aktualisieren und Konfiguration anpassen):

root@helium:/tmp/ISPConfig-letsencrypt# php -q install.php
Create backup on /var/backup/ directory
/bin/tar: Entferne führende „/“ von Elementnamen
Backup finished
Copy Let's Encrypt configuration.
Start MySQL update..
Configure Apache and reload it.
Create backup cronjob on /var/backup/ directory
Add a cronjob for renewal certs
And finally, update ISPConfig.
Done my job. Enjoy!

Ist dies erledigt, erscheint in ISPConfig in den Einstellungen einer Website neben dem bisher vorhandenen Kontrollkästchen „SSL“ auch das Kontrollkästchen „Let’s Encrypt“:

ISPConfig: Website-Einstellungen mit Kontrollkästchen für Let's Encrypt
ISPConfig: Website-Einstellungen mit Kontrollkästchen für Let’s Encrypt

Setzt man diesen Haken (der Haken bei SSL setzt sich dann automatisch), wird bei der Aktion „Zertifikat Erstellen“ im Tab „SSL“ nicht mehr ein selbstsigniertes Zertifikat auf dem Server generiert, sondern es wird eines bei Let’s Encrypt angefordert. wird automatisch ein Zertifikat von Let’s Encrypt angefordert und die Seite damit ausgestattet. Im SSL-Tab muss und darf nichts weiter getan werden.

Mehr ist gar nicht notwendig, nach kurzer Zeit ist das Zertifikat im Ordner von Let’s Encrypt hinterlegt und wird in den SSL-Ordner der Seite gelinkt. Auch die Änderungen in den vhosts werden automatisch vorgenommen. Die Seite ist nun über https abrufbar und das Zertifikat wird von den meisten vernünftigen Browsern als vertrauenswürdig angezeigt:

Website mit dem über ISPConfig abgerufenen Let's Encrypt Zertifikat
Website mit dem über ISPConfig abgerufenen Let’s Encrypt Zertifikat

Raspberry Pi als „Cloud“ oder NAS?

Es geisterte ja heute durch das gesamte Internet und somit auch an mir vorbei: Western Digital plant, eine Vielzahl von Netzwerkspeichern auf Basis einer speziellen WD-Festplatte und einem Raspberry Pi auf den Markt zu schmeißen unter dem klangvollen Namen PiDrive. Das ganze ist derzeit in der Entwicklungsphase bei WDLabs (der aktuelle Stand lässt sich wohl aber in Amerika bereits kaufen) und soll mit OwnCloud ausgeliefert werden.

Ich bin ja ein großer Fan des Raspberry Pi und habe privat einen Raspberry Pi B, B+ und seit neuestem auch einen Raspberry Pi 2 B als Mediacenter. Die Dinger machen sich echt gut, sei es als 24/7 Monitor-Device, als Bastelgerät für SPS-Spielereien oder Modbus-Erweiterung derselben für Aufgaben, die ein Linuxrechner einfach besser hin bekommt.

Allerdings fingen schon beim Lesen der Überschriften bei mir die Warnlichter an zu leuchten: Der Netzwerkadapter (10/100 MBit/s) wird vom USB 2.0-Controller bereitgestellt. USB 2.0 hat eine theoretische Bandbreite von bis zu 480MBit/s, davon bleiben vielleicht so 400MBit/s tatsächlich übrig. Insgesamt können also über LAN und USB etwa 50MByte/s übertragen werden.
Der Ethernet-Port hat eine Übertragungsrate von 100MBit/s, was etwa 12MByte/s entspricht.

Das reicht natürlich. Für die Sachen, die man mit nem Raspberry Pi so macht: Webcamstream, Bastelcomputer, Mediacenter usw.
Wenn es aber darum geht, Daten im lokalen Netzwerk vorzuhalten, sind 100MBit/s nicht besonders schön. Erst recht nicht, wenn man beispielsweise das Netzlaufwerk auf einem anderen Rechner einbinden will. Da sind die Kapazitätsgrenzen schnell erreicht, vor allem, wenn eventuell zwei Rechner gleichzeitig Daten haben wollen. Wenn man Sachen aus dem Netz läd, ist sowas zu verschmerzen (da wären 100MBit/s ja fast das obere Ende), aber das will man ja eigentlich nicht auf Geräten haben, die im internen Gigabit-LAN Daten vorhalten sollen.

Klar, das Ding kostet auch nicht viel, da kann man nicht viel verlangen. Ich würde aber sagen, dass es einfach das falsche Gerät ist, um ein NAS oder eine Cloud wie OwnCloud bereitzustellen, auf der mehr als nur ein paar MP3 und Urlaubsfotos gespeichert werden (von der Datensicherheit mal abgesehen). Es gibt inzwischen viele andere Anbieter günstiger Mini-Computer, die dann auf andere Bereiche spezialisiert sind.

via: t3n, Heise

Bild: Owncloud

ISPConfig 3: Adaptec RAID-Status im Monitoring anzeigen

ISPConfig hat eine praktische Funktion im Backend: Es zeigt wichtige Informationen über den Systemstatus an, so unter anderem auch den Status des Software- oder Hardware-RAIDs. Leider wird bisher nur mdraid (Software), mpt-status (LSI), sowie tw_cli (3ware) unterstützt, ich besitze allerdings einen Server mit einem Adaptec-RAID, welches mit dem Tool arcconf überwacht werden kann.

Den Status Quo fand ich also nicht so toll und fand auch keine fertigen Lösungen, die auf eine aktuelle Version (derzeit 3.0.5.4p5) von ISPConfig passen. Also erweiterte ich die Abfrage und stelle sie nun hier zur Verfügung.

Voraussetzung: die Datei arcconf muss auf dem Server im Verzeichnis /sbin vorhanden sein.

ISPConfig ist modular aufgebaut, die Abfrage des Systemstatus wird über die Datei monitor_core_module.inc.php im Ordner /usr/local/ispconfig/server/mods-available realisiert, diese fragt allerdings nur Daten aus den monitor_tools ab, welche sich in der Datei monitor_tools.inc.php im Ordner /usr/local/ispconfig/server/lib/classes befindet.

Hier findet sich auch die Funktion monitorRaid(), welche hier benötigt wird. Hier suchen wir folgende Zeile (am Anfang der Funktion):

/*
* Check, if Software-RAID is enabled
*/

Davor fügen wir nun die Abfrage von arcconf ein:

/*
* Check, if arcconf is present
*/
if (file_exists('/sbin/arcconf')) {
	/*
	* Fetch the output
	*/
	$data['output'] = shell_exec('arcconf GETCONFIG 1 LD');
	$state = 'ok';
	if(is_array($data['output'])) {
		foreach ($data['output'] as $item) {
			/*
			* The output contains information for every RAID and every HDD.
			* We only need the state of the RAID
			*/
			if (strpos($item, 'Logical device name                      : RAID') !== false) {
				/*
				* We found a raid, process the state of it
				*/
				if (strpos($item, 'Optimal') !== false) {
					$this->_setState($state, 'ok');
				} else {
					/* we don't know the state. so we set the state to critical, that the
					* admin is warned, that something is wrong
					*/
					$this->_setState($state, 'critical');
				}
			}					
		}
	}
}

Ich habe versucht, mich an die in der Datei vorhandenen Strukturen zu halten. Der Code prüft, ob die Datei /sbin/arcconf existiert. Wenn ja, führt es die Datei mit den Parametern GETCONFIG 1 LD aus, was uns die Info über den RAID-Controller zurück gibt.

Adaptec RAID: Ausgabe von arcconf wird im ISPConfig-Monitoring angezeigt
Adaptec RAID: Ausgabe von arcconf wird im ISPConfig-Monitoring angezeigt

Nun wird geprüft, ob der Controller ein RAID enthält und dann, ob der Status „Optimal“ ist. Wenn ja, wird $state als „ok“ zurück gegeben, wenn nein, als „critical“. Meine Ausgabe kennt bisher nur diese beiden Stadien, da ich leider bisher die anderen Outputs von arcconf nicht kenne (falls sie mir jemand nennen kann: bitte einen Kommentar hinterlassen). Mir reicht das bisher so, wenn das RAID nicht optimal ist, bekomme ich so eine kritische Warnung.

Fragen und Anregungen nehme ich natürlich immer gerne in den Kommentaren entgegen.

Fritz!Box zurücksetzen ohne Netzwerkzugriff

Ich brauchte heute einen Switch, um mehrere Geräte mit statischen IPs zu verbinden. Da ich keinen solchen frei hatte, nahm ich eine alte Fritz!Box Fon WLAN 7390, die ich mal zu einem VDSL-Vertrag bekam. Leider nutzte ich diese Box zuletzt als Switch ohne DHCP an einer anderen Fritz!Box und aus irgendeinem Grund fand ich keinerlei Möglichkeit mehr, auf die Administrationsoberfläche zuzugreifen.

Ich durchstöberte also die AVM-Hilfeseiten und fand eine Möglichkeit, die Box (die übrigens keinen Hardware-Resettaster mehr hat) ohne Zugriff auf das Netzwerk zurückzusetzen. Das freute mich natürlich, weil ich so nicht weiter nach Möglichkeiten für ein Reset suchen musste, wunderte mich andererseits, weil es eine ziemlich offene Tür in ziemlich viele Fritz!Boxen sein dürfte.

Zuerst: Durch eine saubere Konfiguration lässt sich das ganze schnell aus der Welt schaffen. Aber wer macht denn sowas? Und: Die Möglichkeit besteht nur, wenn die DECT-Funktion der Box aktiviert ist.

Es ist ganz einfach: Die Box kann als Basisstation für DECT-Telefone genutzt werden. Und das wird sie vermutlich auch recht häufig. Wieso ein Kabel zur Basisstation des Telefons legen, wenn man selbiges auch gleich an der Fritz!Box anmelden kann?
Ist diese Funktion aktiv, kann man sich irgendein DECT-Telefon nehmen und die Basis suchen. Hat das Telefon die Box gefunden, fragt es nach der PIN. Diese Pin ist in der Fritz!Box standardmäßig auf 0000 eingestellt. Man kann sie ändern. Man wird dazu allerdings nicht aufgefordert und wörtlich steht dort zur PIN:

Damit Sie mit Ihren Schnurlostelefonen über die FRITZ!Box telefonieren können, müssen diese an der FRITZ!Box angemeldet sein. Für die Anmeldung benötigen Sie eine PIN. Diese legen Sie hier fest und geben sie während der Anmeldung im Telefon ein.
Vorbelegt ist die PIN 0000. Sie können diese PIN beibehalten oder eine andere PIN eingeben.

Wenn Sie ein FRITZ!Fon mithilfe der „automatischen Anmeldung“ anmelden möchten, darf die vorbelegte PIN nicht verändert werden.

Soweit so gut. Ich würde vermuten, dass die PIN an fast allen Geräten auf 0000 steht. Man tippt also am DECT-Mobilteil die 0000 ein und kann sich mit der Fritz!Box verbinden. Nun kann man verschiedene Dinge tun:

Einerseits ist des angemeldete Telefon nun teil des Systems und man kann Anrufe entgegennehmen und ausgehende tätigen, andererseits kann man über die Tastencodes einige Dinge an der Box verstellen: WLAN ein-/ausschalten, die Box neu starten, den Anrufbeantworter anrufen, auf allen Geräten „Bier holen!“ anzeigen lassen, die Box neustarten oder eben auf Werkseinstellungen zurücksetzen.

Falls man beispielsweise das WLAN-Passwort kennt, die Funktion aber ausgeschaltet ist, kann man sie so einfach einschalten. Kennt man das WLAN-Passwort, welches werksseitig vergeben wurde, nicht aber das geänderte aktuelle, setzt man die Box zurück und kann sich mit dem alten Passwort mit dem Netzwerk verbinden.

ISPConfig 3: Jailkit nachträglich installieren

Mit ISPConfig 3 ist es möglich, den Hosting-Kunden bzw. Benutzern einen Zugriff auf den ihnen zugewiesenen Webspace per SSH zu gewähren, die Benutzer werden mittels Jailkit in ihren Ordner gechrootet.

Da ISPConfig bei der Einrichtung überprüft, welche Dienste verfügbar sind und diese dann konfiguriert, muss Jailkit eigentlich installiert werden, bevor ISPConfig installiert wird. Stellt man nun nachher fest, dass man Jailkit nun doch benötigt, ist das natürlich doof. Es gibt aber einen Weg, Jailkit bei einer bestehenden ISPConfig-Installation nachträglich zu konfigurieren und einzubinden, diesen möchte ich hier zeigen. Das nachfolgende Tutorial wurde mit Version 3.0.5.4p2 durchgeführt, es sollte aber auch mit älteren Versionen so funktionieren. Alles weitere geschieht natürlich auf eigene Gefahr.

Zuerst muss Jailkit natürlich heruntergeladen und installiert werden, wie es z.B. das Perfect Server Tutorial bei Howtoforge zeigt (die Version von Jailkit muss natürlich angepasst werden):

apt-get install build-essential autoconf automake1.9  libtool flex bison
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz
tar xvfz jailkit-2.17.tar.gz
cd jailkit-2.17
./configure
make
make install

Nun muss ISPConfig erneut heruntergeladen und entpackt werden:

cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xvfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install

Danach muss die Datei update.php geändert werden. Hierzu suchen wir die folgende Zeile in der Datei:

if($reconfigure_services_answer == 'yes') {

die darauf folgenden Zeilen löschen wir bis zu den Zeilen

//** Configure Jailkit
swriteln('Configuring Jailkit');
$inst->configure_jailkit();

Diese lassen wir stehen und löschen darunter wieder alle weiteren Zeilen bis zur schließenden Klammer. Der Abschnitt sieht nun so aus:

//** Shall the services be reconfigured during update
$reconfigure_services_answer = $inst->simple_query('Reconfigure Services?', array('yes', 'no'), 'yes','reconfigure_services');

if($reconfigure_services_answer == 'yes') {

                //** Configure Jailkit
                swriteln('Configuring Jailkit');
                $inst->configure_jailkit();

}

//** Configure ISPConfig

Die Datei wird gespeichert. Nun müssen wir das Update starten, indem wir folgenden Befehl eingeben:

php -q update.php

Der automatische Updater startet und fragt uns einige Fragen, die wir wie folgt beantworten:

Shall the script create a ISPConfig backup in /var/backup/ now? (yes,no) [yes]: yes
Reconfigure Permissions in master database? (yes,no) [no]: no
Reconfigure Services? (yes,no) [yes]: yes

Nun werden die Services rekonfiguriert. Da wir eben in der update.php sämtliche Services außer Jailkit gelöscht haben, wird nur Jailkit konfiguriert, der Rest bleibt unangetastet. Als nächstes kommt die Ausgabe „Updating ISPConfig“. Das wollen wir ja nicht, deshalb brechen wir das Script an dieser Stelle mit Strg + C ab.

Das wars eigentlich. Nun sollten noch die Dateien in /tmp gelöscht werden und Jailkit sollte verfügbar sein und funktionieren.

Dienste rekonfigurieren für und mit ISPConfig

Der eine oder andere weiß vielleicht, dass ich seit längerem auf ISPConfig als Hosting-Panel setze und damit sehr zufrieden bin. Es frisst meine Ressourcen nicht unnötig auf (bei meinen Servern ist jedenfalls kaum zu spüren, dass da was läuft) und fällt im Grunde genommen überhaupt nicht auf, wenn man (wie ich die meiste Zeit) mit der Konsole arbeitet.

Da der eine oder andere eben vielleicht weiß, dass ich ISPConfig einsetze, werden mir hin und wieder auch Fragen diesbezüglich gestellt. Die meisten Antworten liegen auf der Hand bzw. sind in 1-3 Minuten dank Google zu finden, manche aber auch nicht. So wurde ich letztens gefragt, was man denn tun kann, wenn man, beispielsweise durch ein Dist-Upgrade aus versehen sämtliche Konfigurationsdateien geändert oder zusammengeführt hat und nun irgendwie nichts mehr so richtig läuft.

ISPConfig bietet nämlich verdammt viele Einstellungsmöglichkeiten, man kann so ziemlich alles resyncen, Systemeinstellungen in der Weboberfläche vornehmen und so weiter. Nur eine Option zum rekonfigurieren der Dienste habe ich bislang nicht gefunden. Bei der Installation werden die Konfigurationen so angepasst, dass die einzelnen Dienste möglichst problemlos mit ISPConfig zusammenarbeiten. Werden diese Konfigurationsdateien falsch geändert oder überschrieben, funktioniert plötzlich z.B. der Mailserver nicht mehr so, wie es vorgesehen ist. Natürlich sollte man die Konfigurationsdateien regelmäßig und insbesondere vor größeren Änderungen am System sichern, aber im Zweifelsfall hat das benötigte Backup einen Fehler und/oder das Backupsystem ist ganz ausgefallen. Oder man hat einfach keins.

Obwohl es anscheinend keine offizielle Möglichkeit gibt, die Services für ISPConfig zu rekonfigurieren, hat man in einem solchen Fall Glück und kann ein manuelles Update durchführen (was natürlich mit Vorsicht zu genießen ist). Das mitgelieferte Shellscript für das Update funktioniert nicht, wenn schon die aktuellste Version installiert ist, ISPConfig muss also tatsächlich heruntergeladen und über die update.php aktualisiert werden:

cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xvfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install
php -q update.php

Das Script fragt, ob ein Backup gemacht werden soll, was wir natürlich bejahen, danach ob die Berechtigungen in der master database neu gesetzt werden sollen, was wir verneinen (wir wollen das bestehende System ja nicht ändern). Dann kommt schon der Punkt, den wir brauchen: Der Updater fragt uns, ob wir die Dienste rekonfigurieren wollen, was wir natürlich wollen:

Reconfigure Services? (yes,no) [yes]:

Configuring Postfix
Configuring Mailman
Configuring Jailkit
Configuring SASL
Configuring PAM
Configuring Courier
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring Pureftpd
Configuring Apache
Configuring vlogger
Configuring Apps vhost
Configuring Database
Configuring Bastille Firewall
Updating ISPConfig

Den Port belassen wir wie vorgefunden, ebenso das Zertifikat, Crontab können wir rekonfigurieren. Danach startet ISPConfig die Services neu und alles sollte wieder laufen, wie es soll.

Outlook/Hotmail und die Spambekämpfung

Microsoft hat mit Outlook.com einen tollen neuen Maildienst (seines Zeichens Nachfolger von Hotmail) auf den Markt gebracht. Ich habe ihn in der Werbung gesehen und fand das Konzept eigentlich ganz ansprechend.

Als Betreiber eines Mailservers habe ich natürlich gleich mal ein Konto dort angelegt und versucht, Mails hin und her zu schicken (sollte man tun, um eventuelle Fehler oder Blacklisteinträge festzustellen) und war ein wenig verwundert über das Ergebnis. Die Mail ging bei meinem Server raus und wurde kommentarlos vom Outlook-Server angenommen. Nur bei meinem Postfach kam sie nie an. Okay, dachte ich, ich hab das Postfach ja gerade erst erstellt, probierste es morgen noch mal.

Also heute nach Rücksprache mit ein paar Leuten aus dem IRC das gleiche Spiel mit gleichem Ergebnis: Mail versendet, Mail angenommen, Mail nicht ans Postfach zugestellt. Keine Fehlermeldung an den Server, kein Bounce, nichts. Von Senderseite ist nicht ersichtlich, dass die Mail nicht korrekt zugestellt wurde:

root@s3:~# telnet mx3.hotmail.com 25
Trying 65.54.188.126...
Trying 65.55.37.72...
Connected to mx3.hotmail.com.
Escape character is '^]'.
220 COL0-MC1-F24.Col0.hotmail.com Sending unsolicited commercial or bulk e-mail to Microsoft's computer network is prohibited. Other restrictions are found at http://privacy.microsoft.com/en-us/anti-spam.mspx. Sun, 10 Mar 2013 05:38:46 -0700
helo s3.wemaflo.de
250 COL0-MC1-F24.Col0.hotmail.com (3.17.0.78) Hello [84.200.83.55]
mail from:wemaflo@wemaflo.net
250 wemaflo@wemaflo.net....Sender OK
rcpt to:florian_mai@outlook.com
250 florian_mai@outlook.com
data
354 Start mail input; end with <CRLF>.<CRLF>
Subject: Testmail an Outlook
Hier ein wenig random Text
.
250 <COL0-MC1-F247v6iuRf002585a0@COL0-MC1-F24.Col0.hotmail.com> Queued mail for delivery
quit
221 COL0-MC1-F24.Col0.hotmail.com Service closing transmission channel
Connection closed by foreign host.

Tolle Sache.

Wer ein Postfach bei Outlook.com anlegt

  • hat eine schöne Oberfläche mit tollen Features
  • weiß nicht, ob die Mails, die er in seinem Posteingang sieht auch alle Mails sind, die erfolgreich an ihn versendet wurden

Wer eine Mail an ein Postfach bei Outlook.com sendet

  • sieht, dass die Mail vom Server angenommen und in die Warteschlange für die Zustellung ins Postfach geleitet wurde
  • geht, da er keine Fehlermeldung vom Outlook-Server bekam, davon aus, dass die Mail korrekt zugestellt wurde
  • bekommt keinerlei Rückmeldung, wenn das nicht der Fall ist

Zusammenfassend sage ich da: Ein Mailsystem, das Mails annimmt und dem Sender suggeriert, dass die Zustellung erfolgreich war, die Mail aber nicht zustellt, sondern einfach verschwinden lässt, ist irgendwie verdammt nutzlos.

Ich kenne keinen einzigen weiteren Dienst, der das so handhabt. Ist eine IP auf einer Blacklist, oder kann die Mail aus sonst einem Grund nicht zugestellt werden, hat der empfangende Server das mitzuteilen. Entweder durch eine Bounce-Mail oder eben durch eine direkte Antwort an den sendenden Server. Hier ein Beispiel von AOL:
mailin-02.mx.aol.com[11.22.33.44] refused to talk to me: 554- (RTR:BL)
http://postmaster.info.aol.com/errors/554rtrbl.html 554 Connecting IP:
55.66.77.88

Das ganze erinnert mich an etwas, was ich bei 1337core las: iCloud filtert Mails recht intransparent und entfernt sie ebenfalls einfach ohne Nachricht an Sender oder Empfänger.