feed-image -=Kernel-Error=- BlogFeed

Wieder schönes Humble Book Bundle

Ha da gibt es ganz aktuell wieder etwas feines! Ganz feine Linux und BSD Bücher und alles für einen kleinen Euro (wenn man mag).

>>klick<<

Dominos´s Goldcard

Wenn man als Admin eine Goldcard von Dominos bekommt, ist es gut oder schlecht?

Dominos GOLDCARD

GhostBSD / FreeBSD und Bluetooth Audio

Bluetooth und BSD ist ja so ein Thema für sich... Der Code wird nicht mehr maintained. Code der nicht weiter gepflegt wird muss "raus". Das ist wie auch in OpenBSD passiert!

Dieses ist nun der eigentliche Grund aus welchem sich Bluetooth Audio und BSD nicht "verträgt". Es gibt dafür eine Art Workaround welchen ich im Moment selbst nutze. So schnell wird man keinen Bluetooth Dongel oder Karte davon überzeugt bekommen, sich mit einem Audiogerät zu verbinden um Musik zu spielen.

Es gibt von Creative eine USB Soundkarte (BT-W2). Dieses Gerät meldet sich im OS als normale USB-Soundkarte. Der Dongel selbst kümmert sich nun um die eigentliche Bluetooth Verbindung und das Pairing. Ich kann so zwar nicht über das OS mein gewünschtes Bluetooth Gerät auswählen, sondern muss halt den Knopf am USB Dongel drücken. Dafür tut es ohne weiteren Ärger und mit wirklich guter Qualität. Es reicht in Qualität und Latency sogar für Telefonie :-)

Unter meinem GhostBSD sowie FreeBSD Systemen kümmert sich dabei das Kernelmodul: snd_uaudio um die USB-Soundkarte. Ich lade es per kld_list="snd_uaudio" in der /etc/rc.conf beim Start. Dieses sorgt für die korrekte Erkennung und Einbindung:

uaudio0: <vendor 0x041e Creative Bluetooth Audio W2, class 0/0, rev 2.00/1.00, addr 5> on usbus0
uaudio0: Play: 48000 Hz, 2 ch, 16-bit S-LE PCM format, 2x8ms buffer.
uaudio0: Record: 48000 Hz, 1 ch, 16-bit S-LE PCM format, 2x8ms buffer.
uaudio0: No MIDI sequencer.
pcm5: <USB audio> on uaudio0
uaudio0: HID volume keys found.

Pairing läuft dann (wie man es von vielen Bluetooth Geräten gewohnt ist über einen kleinen Kopf am Dongel. Einfach kurz drücken, dann blinkt er schnell und schon verbindet er sich mit allen Bluetooth Audiogeräten die nicht bei drei auf den Bäumen sind.

Damit sind meine Bluetooth Kopfhörer sofort nutzbar, auch mein Headset oder meine Bluetooth Lautsprecher und selbstverständlich ebenfalls ein Mikrofon. Bei mir ist es /dev/dsp5

  • BT-W2-01
  • BT-W2-02
  • BT-W2-03

Vielleicht hilft der Tipp ja anderen genervten BSD Desktop Nutzern :)

Outlook autodiscover für imap und smtp

Vor einigen Jahren habe ich bereits etwas zu Microsoft Outlook und dessen Autodiscover geschrieben. Microsoft Office Outlook Autodiscover

Ich setze es noch immer in recht ähnlicher Form ein und möchte den aktuellen Stand kurz beschreiben.

Primär habe ich eine Autodiscoverdomain https://autodiscover.kernel-error.de hinter dieser steht ein nginx und er liefert unter diesem Pfad https://autodiscover.kernel-error.de/Autodiscover/Autodiscover.xml die Konfigurationsinformationen für verschiedene Maildomains für smtps und imaps aus.

Die Konfiguration vom nginx ist recht überschaubar. Klar, https und der spannende Teil der Konfiguration ist folgender:

        location ~ /(?:a|A)utodiscover/(?:a|A)utodiscover.xml {
        root /usr/local/www/autodiscover.kernel-error.de;
        try_files /autodiscover/autodiscover.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        include fastcgi_params;
        fastcgi_cache MYAPP;
        fastcgi_cache_valid 200 60m;
    }

Wie man gut sehen kann wird einfach jede Anfrage nach /autodiscover/autodiscover.xml (egal ob am Anfang groß oder klein geschrieben), im Hintergrund weitergeleitet an das php file autodisvocer.php:

<?php

/********************************
 * Autodiscover responder
 ********************************
 * This PHP script is intended to respond to any request to http(s)://mydomain.com/autodiscover/autodiscover.xml.
 * If configured properly, it will send a spec-complient autodiscover XML response, pointing mail clients to the
 * appropriate mail services.
 * If you use MAPI or ActiveSync, stick with the Autodiscover service your mail server provides for you. But if 
 * you use POP/IMAP servers, this will provide autoconfiguration to Outlook, Apple Mail and mobile devices.
 *
 * To work properly, you'll need to set the service (sub)domains below in the settings section to the correct 
 * domain names, adjust ports and SSL.
 */

//get raw POST data so we can extract the email address
$request = file_get_contents("php://input");

// optional debug log
# file_put_contents( 'request.log', $request, FILE_APPEND );

// retrieve email address from client request
preg_match( "/\<EMailAddress\>(.*?)\<\/EMailAddress\>/", $request, $email );

// check for invalid mail, to prevent XSS
if (filter_var($email[1], FILTER_VALIDATE_EMAIL) === false) {
	throw new Exception('Invalid E-Mail provided');
}

/**************************************
 *   Port and server settings below   *
 **************************************/

// IMAP settings
$imapServer = 'imap.kernel-error.de'; // imap.example.com
$imapPort   = 993;
$imapSSL    = true;

// SMTP settings
$smtpServer = 'smtp.kernel-error.de'; // smtp.example.com
$smtpPort   = 465;
$smtpSSL    = true;

//set Content-Type
header( 'Content-Type: application/xml' );
?>
<?php echo '<?xml version="1.0" encoding="utf-8" ?>'; ?>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
	<Response xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
		<Account>
			<AccountType>email</AccountType>
			<Action>settings</Action>
			<Protocol>
				<Type>IMAP</Type>
				<Server><?php echo $imapServer; ?></Server>
				<Port><?php echo $imapPort; ?></Port>
				<DomainRequired>off</DomainRequired>
				<LoginName><?php echo $email[1]; ?></LoginName>
				<SPA>off</SPA>
				<SSL><?php echo $imapSSL ? 'on' : 'off'; ?></SSL>
				<AuthRequired>on</AuthRequired>
			</Protocol>
			<Protocol>
				<Type>SMTP</Type>
				<Server><?php echo $smtpServer; ?></Server>
				<Port><?php echo $smtpPort; ?></Port>
				<DomainRequired>off</DomainRequired>
				<AuthRequired>on</AuthRequired>
				<LoginName><?php echo $email[1]; ?></LoginName>
				<SPA>off</SPA>
				<SSL><?php echo $imapSSL ? 'on' : 'off'; ?></SSL>
				<AuthRequired>on</AuthRequired>
				<SMTPLast>off</SMTPLast>
				<UsePOPAuth>off</UsePOPAuth>
			</Protocol>
		</Account>
	</Response>
</Autodiscover>

Das kleine php script macht auch nicht viel mehr als die im Post übermittelte E-Mail Adresse in eine Variable zu schieben, zu prüfen ob es wirklich eine E-Mail Adresse ist und dann am Ende einfach das fertige xml zurück zu liefern.

Besonders wichtig dabei ist:

<AuthRequired>on</AuthRequired>
<SMTPLast>off</SMTPLast>
<UsePOPAuth>off</UsePOPAuth>

Sonst darf man für den Postausgangsserver nämlich immer manuell den Haken setzen bei: "Gleiche Einstellungen wie für den Posteingangsserver verwenden" Welches sicher einige Anwender vor einer nur schwer zu überwindenden Hürde stell.

Damit dieses nicht nur für E-Mail Adresse der Domain kernel-error.de funktioniert gibt es in den anderen DNS Zonen SRV RRs welche auf diese Autodiscoverdomain verweisen:

➜  ~ dig _autodiscover._tcp.kernel-error.com IN SRV +short
0 0 443 autodiscover.kernel-error.de.

Nun sorgt dieses bei Outlook für eine kleine Warnmeldung bei der Konfiguration, ob man diesem Verweis wirklich folgen möchte.

Outlook autodiscover

Dieses kommt nur einmalig und man könnte es zudem mit deinem Registierungsschlüssel unterbinden aber naja das sollte für jeden klickbar sein, oder?!?! Im Anschluss ist die Konfiguration vom E-Mail Client schon abgeschlossen.

Outlook autodiscover

Wie man sieht ist es sehr simpel und sollte von nahezu jedem erledigt werden können, der es schafft seine E-Mail Adresse und sein Kennwort nach dem Outlookstart einzugeben.