Schlagwort: Apple

ActiveSync, z-push, autodiscover

So, jetzt habe ich das mal alles schön zusam­men­ge­klöp­pelt.

Ziel war: Auf den iDe­vices Push­mail zu haben. Nor­ma­ler­wei­se braucht man das nicht, wenn der Cli­ent IMAP IDLE kann — aber IOS kann das eben nicht. Man­che sagen, weil das ziem­lich viel Strom kos­tet; ich weiß es nicht.
Das hat zur Fol­ge, daß Mails erst dann abge­ru­fen wer­den, wenn man in die Mail-App geht. Funk­tio­niert zwar, ist aber nicht schön. Mit dem Exchan­ge von der Fir­ma funk­tio­niert Push­mail sehr schön, aber ich habe eben kein Exchan­ge und wer­de sicher­lich auch nie eins haben — das wal­te Hugo!
Der Mecha­nis­mus hin­ter dem Push­mail, wie es Exchan­ge macht, heißt Active­Sync, und da gibt es eine Open­So­ur­ce-Imple­men­tie­rung: z-push.

Auf gehts!
Einen neu­en vhost erzeugt, push.sokoll.com, mit SSL selbst­ver­ständ­lich. Wild­card-Zer­ti­fi­ka­te sind übri­gens eine tol­le Erfin­dung 🙂

 

<VirtualHost 195.110.60.28:443>
  RewriteEngine On
  RewriteRule ^/Microsoft-Server-ActiveSync$ /webroot/com/sokoll/push/index.php
  DocumentRoot /webroot/com/sokoll/push
  ServerName push.sokoll.com
  ServerAdmin rainer@sokoll.com
  LogFormat "%v %l %u %t \"%r\" %>s %b" combined
  CustomLog /var/log/apache2/push.sokoll.com-access_log combined
  ErrorLog /var/log/apache2/push.sokoll.com-error_log
  <IfModule headers_module>
    Header append MS-Server-ActiveSync: 14.0
    Header append MS-ASProtocolVersions: 1.0,2.0,2.1,2.5,12.0,12.1,14.0
    Header append MS-ASProtocolCommands: Sync,SendMail,SmartForward,SmartReply,GetAttachment,GetHierarchy,CreateCollection,DeleteCollection,MoveCollection,FolderSync,FolderCreate,FolderDelete,FolderUpdate,MoveItems,GetItemEstimate,MeetingResponse,ResolveRecipients,ValidateCert,Provision,Search,Ping,Notify,ItemOperations,Settings
  </IfModule>
  SSLEngine on
  SSLCertificateFile /etc/ssl/private/wildcard.sokoll.com.crt
  SSLCertificateKeyFile /etc/ssl/private/wildcard.sokoll.com.key
  SSLProtocol -ALL +TLSv1 +TLSv1.1 +TLSv1.2
  SSLHonorCipherOrder on
  SSLCipherSuite ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:DHE-RSA-CAMELLIA128-SHA:AES128-SHA:HIGH:!aNULL:!MD5:!ADH
  <Directory /webroot/com/sokoll/push>
    AllowOverride none
    Order allow,deny
    Allow from all
    php_flag magic_quotes_gpc off
    php_flag register_globals off
    php_flag magic_quotes_runtime off
    php_flag short_open_tag on
  </Directory>
</VirtualHost>

 

Wir wech­seln in die Docu­men­tRoot und holen uns das aktu­el­le z-push (heu­te: 2.1.3) und packen das aus.
Bei mir sieht das dann so aus:

allinclusive:/webroot/com/sokoll/push # ls -l
total 168
-rw-rw-r-- 1 wwwrun www 11571 Jun 11 18:03 INSTALL
-rw-rw-r-- 1 wwwrun www 36212 Jan 28 2013 LICENSE
drwxrwxr-x 8 wwwrun www 4096 Jun 25 18:52 backend
-rw-rw-r-- 1 wwwrun www 13611 Nov 28 18:45 config.php
drwxrwxr-x 2 wwwrun www 4096 Jun 25 18:52 include
-rw-rw-r-- 1 wwwrun www 13790 Sep 17 2013 index.php
drwxrwxr-x 11 wwwrun www 4096 Jun 25 18:52 lib
drwxrwxr-x 2 wwwrun www 4096 Jun 25 18:52 tools
-rw-rw-r-- 1 wwwrun www 2040 Jun 25 18:51 version.php
-rwxrwxr-x 1 wwwrun www 34476 Feb 28 2013 z-push-admin.php
-rwxrwxr-x 1 wwwrun www 29586 Jan 4 2013 z-push-top.php
allinclusive:/webroot/com/sokoll/push #

config.php bear­bei­ten:

allinclusive:/webroot/com/sokoll/push # diff -u config.php.org config.php
--- config.php.org 2014-12-03 17:52:57.425843135 +0100
+++ config.php 2014-11-28 18:45:02.302475244 +0100
@@ -45,7 +45,7 @@
 * Default settings
 */
 // Defines the default time zone, change e.g. to "Europe/London" if necessary
- define('TIMEZONE', '');
+ define('TIMEZONE', 'Europe/Berlin');
// Defines the base path on the server
 define('BASE_PATH', dirname($_SERVER['SCRIPT_FILENAME']). '/');
@@ -196,7 +196,7 @@
 * Backend settings
 */
 // the backend data provider
- define('BACKEND_PROVIDER', '');
+ define('BACKEND_PROVIDER', 'BackendIMAP');
/**********************************************************************************
 * Search provider settings
@@ -266,4 +266,4 @@
 */
 );
-?>
\ No newline at end of file
+?>
allinclusive:/webroot/com/sokoll/push #

INSTALL lesen und even­tu­ell php-Pake­te nach­in­stal­lie­ren. backend/imap/config.php habe ich in Ruhe gelas­sen, dort steht drin, man möge sich per IMAP auf local­host ver­bin­den. Das ist zwar kei­ne ver­schlüs­sel­te Ver­bin­dung, aber da es local­host ist, inter­es­siert uns das nicht.

Mein IMAP-Ser­ver (dovecot) horch­te nicht auf local­host, also müs­sen wir das ändern:

allinclusive:/etc/dovecot/conf.d # diff -u 10-master.conf.org 10-master.conf
--- 10-master.conf.org 2014-11-28 12:39:50.850711901 +0100
+++ 10-master.conf 2014-11-28 13:07:19.034694100 +0100
@@ -16,7 +16,8 @@
service imap-login {
 inet_listener imap {
- port = 0
+ address = localhost
+ port = 143
 }
 inet_listener imaps {
 port = 993
allinclusive:/etc/dovecot/conf.d #

Im Prin­zip war es das. Wir wol­len es aber noch schi­cker haben: Auto­dis­co­ver. Ein Mecha­nis­mus von Micro­soft, mit dem man dem Mail­cli­ent nur noch die Email-Adres­se und das Paß­wort über­ge­ben muß, den Rest (Ser­ver, Ports, Ver­schlüs­se­lung) fin­det der Cli­ent sel­ber. Es gibt zwar auch auto­mx — aber da hät­te ich einen klei­nen Medi­en­bruch, da ich eine Web­site ansur­fen muß.

Also einen neu­en vhost ein­rich­ten 🙂

<VirtualHost 195.110.60.28:443>
  DocumentRoot /webroot/com/sokoll/autodiscover
  ServerName autodiscover.sokoll.com
  ServerAdmin rainer@sokoll.com
  CustomLog /var/log/apache2/autodiscover.sokoll.com-access_log combined
  ErrorLog /var/log/apache2/autodiscover.sokoll.com-error_log
  SSLEngine on
  SSLCertificateFile /etc/ssl/private/wildcard.sokoll.com.crt
  SSLCertificateKeyFile /etc/ssl/private/wildcard.sokoll.com.key
  SSLProtocol -ALL +TLSv1 +TLSv1.1 +TLSv1.2
  SSLHonorCipherOrder on
  SSLCipherSuite ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:DHE-RSA-CAMELLIA128-SHA:AES128-SHA:HIGH:!aNULL:!MD5:!ADH
  Alias /Autodiscover/Autodiscover.xml "/webroot/com/sokoll/autodiscover/autodiscover.php"
  Alias /AutoDiscover/AutoDiscover.xml "/webroot/com/sokoll/autodiscover/autodiscover.php"
  <Directory /webroot/com/sokoll/autodiscover>
    AllowOverride none
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

Die autodiscover.php hat mir dann eini­ge Kopf­schmer­zen gemacht, bis ich doch eine gefun­den habe, die funk­tio­niert, und zwar beim Apfel­schwein — herz­li­chen Dank! Zu Doku­men­ta­ti­ons­zwe­cken liegt mei­ne hier. nach autodiscover.php umbe­nen­nen, ins rich­ti­ge Ver­zeich­nis wer­fen, Varia­blen anpas­sen, fer­tig.

Apa­chen und Dovecot rel­oa­den, das wars.

 

Und so sieht es dann aus:

Einen neu­en Exchan­ge-Account anle­gen:

IMG_1258

Email-Adres­se und Paß­wort ein­ge­ben, die Beschrei­bung ist frei wähl­baar:

IMG_1259

Für kur­ze Zeit taucht ein Bild­schirm auf, der sagt: “Alles OK

IMG_1260

Da z-sync nur Mail macht, wäh­len wir auch nur Mail aus (Für den Rest haben wir ja own­cloud mit Card/CalDAV :-))

IMG_1261

Alles schick!

Mit­ge­lie­fert wer­den zwei klei­ne php-Skrip­te für die Kom­man­do­zei­le: z-push-top.php zeigt die ver­bun­de­nen User, Gerä­te, IP-Adres­sen und den aktu­el­len Sta­tus an, z-push-admin.php gibt ver­schie­de­ne Infor­ma­tio­nen und über die regis­trier­ten Gerä­te, das ist ganz wit­zig.

Synchronized by user: rainer@sokoll.com
-----------------------------------------------------
DeviceId:               applc39jhx51f39c
Device type:            iPhone
UserAgent:              Apple-iPhone5C2/1202.435
Device Model:           iPhone5C2
Device friendly name:   iPhone 5
Device OS:              iOS 8.1.1 12B435
Device OS Language:     de
ActiveSync version:     14.0
First sync:             2014-11-28 18:52
Last sync:              2014-12-03 19:57
Total folders:          62
Synchronized folders:   2
Synchronized data:      Emails(2)
Status:                 OK
WipeRequest on:         not set
WipeRequest by:         not set
Wiped on:               not set
Attention needed:       No errors known

Geht aber auch mit Andro­id:

Synchronized by user: rainer@sokoll.com
-----------------------------------------------------
DeviceId:               sec03d95a650e199
Device type:            SAMSUNGSMT
UserAgent:              SAMSUNG-SM-T110/101.40202
ActiveSync version:     14.0
First sync:             2014-11-28 19:45
Last sync:              2014-11-28 19:51
Total folders:          60
Synchronized folders:   1
Synchronized data:      Emails
Status:                 OK
WipeRequest on:         not set
WipeRequest by:         not set
Wiped on:               not set
Attention needed:       No errors known
2+

Der X.509-Nichtversteher-Preis geht heute an

Tataa! Apple und Aka­mai!

Ange­regt durch einen Hin­weis auf G+ habe ich heu­te mal in der Zone sokoll.com zwei neue SRV-RRs ein­ge­fügt:

_imaps._tcp.sokoll.com. 86400 IN SRV 0 1 993 mail.sokoll.com.
_submission._tcp.sokoll.com. 86400 IN SRV 0 1 587 mail.sokoll.com.

Und woll­te mal sehen, ob ein aktu­el­les IOS die Mail­ser­ver für sokoll.com von sel­ber fin­det. Vor­ne­weg: Nein, fin­det es nicht. Jetzt woll­te ich doch mal sehen, was das IOS da tut, wenn man ihm einen neu­en Mail-Account ver­kli­ckern möch­te: Es macht einen Look­up auf den Ser­ver iphone-services.ls-apple.com.akadns.net — wahr­schein­lich liegt da eine Daten­bank von Mail­pro­vi­dern mit deren Ein­stel­lun­gen. Da dach­te ich mir, ich sehe mal mit einem Bow­ser nach. http geht nicht (fein), https geht. Oder auch nicht. Klick­s­tu hier. Jeden­falls Chro­me und Fire­fox leh­nen es schlicht­weg ab, die Sei­te anzu­zei­gen. Die Erklä­rung lie­fert opens­sl:

~$ openssl s_client -showcerts -connect iphone-services.ls-apple.com.akadns.net:443
[...]
Certificate chain
 0 s:/C=US/ST=California/L=Cupertino/O=Apple Inc./CN=*.ls.apple.com

Es wird ein Wild­card-Zer­ti­fi­kat für .ls.apple.com ange­bo­ten, ich hat­te aber einen Rech­ner bei Aka­mai gewollt.

X.509 ist sicher­lich kaputt, aber muß man es auch noch dazu falsch ver­wen­den?

Hät­ten sie bes­ser mich das mal machen las­sen, es wäre garan­tiert auch bil­li­ger gewor­den 🙂

0

OSX: Keine versteckten Dateien/Verzeichnisse anzeigen

Es gibt im Inter­net Tau­sen­de Anlei­tun­gen, wie man sich im Fin­der die ver­steck­ten Dateien/Verzeichnisse anzei­gen las­sen kann. Der Weg ist immer der­sel­be — ein default set­zen und den Fin­der neu star­ten:

defaults write com.apple.Finder AppleShowAllFiles YES

und danach

killall Finder

Das hat auch irgend­wann geklappt — jetzt woll­te ich es rück­gän­gig machen; doch was ist das?

~$ defaults write com.apple.Finder AppleShowAllFiles NO
~$ killall Finder
~$ defaults read com.apple.Finder AppleShowAllFiles
NO
~$ defaults read com.apple.Finder AppleShowAllFiles
YES
~$

Der Fin­der setzt das eigen­mäch­tig zurück?
Ich kann machen, was ich will — das Ver­hal­ten bleibt. Hört sich nach einem Reboot an 🙁

Reboot hat auch nicht gehol­fen — kil­l­all cfprefsd vor dem defaults wri­te war das Zau­ber­kom­man­do.

0

NTP wegkonfiguriert

Beim tcp­dum­pen auf mei­nem Rou­ter flo­gen mir sol­che Pake­te ent­ge­gen:

10:34:52.652314 IP wrdlbrmpfd.sokoll.65528 > time.xxx.de.ntp: NTPv3, Client, length 48
10:34:52.676409 IP time.xxx.de > wrdlbrmpfd.sokoll: ICMP time.xxx.de udp port ntp unreachable, length 36

wrdlbrmpfd.sokoll ist mei­ne Time Cap­su­le, und da hat­te ich wohl vor län­ge­rem einen Zeit­ser­ver kon­fi­gu­riert, der noch nie erreich­bar war 😉 — jeden­falls nicht ohne VPN in die Fir­ma, denn dort steht er.
Nun, wenn man das mal kon­fi­gu­rie­ren konn­te (default ist wohl time.apple.com), dann soll­te man ja auch den Zeit­ser­ver ändern kön­nen. Ich will mei­nen eige­nen haben. Das aktu­el­le Air­port-Dienst­pro­gramm (Time Cap­su­le kann man nur damit kon­fi­gu­rie­ren) hat die­se Mög­lich­keit nicht (mehr) — aber es gibt ja noch das alte 5.6, das das kann. Jeden­falls theo­re­tisch.

Ohne Titel

Mei­ne Güte! Da hat man mal eine Kon­fi­gu­ra­ti­on erstellt, die offen­sicht­lich auch gül­tig ist und ver­wen­det wird, und die kann man nicht mehr ändern? Hal­lo McFlyApple — jemand zu Hau­se? Immer­hin hier der hei­ße Tipp: Man kann die aktu­el­le Kon­fi­gu­ra­ti­on expor­tie­ren, da ent­steht dann eine XML-Datei mit der Endung .base­con­fig. Die wie­der­um läßt sich bear­bei­ten, man suche nach der Zei­chen­fol­ge <key>ntSV</key>. Das sieht jetzt bei mir so aus:

        <key>ntSV</key>
        <string>192.168.1.15</string>

Damit hab ihr auch gleich einen funk­tio­nie­ren­den Zeit­ser­ver 😀 Dann noch die geän­der­te Kon­fi­gu­ra­ti­on impor­tie­ren und die Time Cap­su­le neu star­ten, fer­tig.
Damit wir uns nicht falsch ver­ste­hen: Mit der Time Cap­su­le und Time Machi­ne hat Apple eine fan­tas­ti­sche Back­up-Lösung im Ange­bot. Idio­ten­si­cher und ver­läß­lich. Nur: Wenn sie schon die Mög­lich­keit bie­ten, bestimm­te Fea­tures über eine GUI zu kon­fi­gu­rie­ren, dann soll­ten sie die­se Mög­lich­keit auch bei­be­hal­ten und nicht ein­fach abschal­ten.

 

//edit: Das­sel­be gilt auch für sys­log. Eine Beschrei­bung der .base­con­fig ist nur schwer zu fin­den, ich habe das hier gefun­den. Gleich mal eine Sicher­heits­ko­pie ange­legt.

 

0

macports und Mavericks — irgendwann geht es hoffentlich

Nach Upgrade auf Mave­ricks grins­te mich port list out­da­ted mit einer Unmen­ge an ver­al­te­ten ports an. Gut, dach­te ich, ein port upgrade out­da­ted wür­de es ja tun. Irr­tum. Jede Men­ge Feh­ler.
Ein neu­es Xcode muß­te her. Immer­noch Feh­ler. Irgend­wann stell­te ich fest, daß ich auch die com­mand line uti­li­ties von Xcode upgra­den muß. Neu­er Ver­such, neue Feh­ler.
Man­che ports lie­ßen sich upgra­den, vie­le aber nicht. Letz­te­re waren alle(?) wel­che, die graphite2 brau­chen, und das ließ sich ums Ver­re­cken nicht upgra­den. Irgend­wann kam ich dann dar­auf, daß das neue cmake nicht mehr uni­ver­sal bau­en kann. port -f unin­stall graphite2 && port install graphite2 -uni­ver­sal tat es dann.
Dach­te ich. Doch nun muß ich alle ports erst­mal mit port clean out­da­ted sau­ber machen, dann ein beherz­tes port -v upgrade –enforce-vari­ants out­da­ted -uni­ver­sal hin­ter­her — und mor­gen wer­den wir dann sehen, obs geklappt hat.
Das waren dann bestimmt 2 Wochen, die ein Upgrade von mac­ports gebraucht hat :-/

Zwi­schen­zeit­lich dach­te ich, ich kön­ne ja mal brew eine Chan­ce geben.

brew

Nee, laß’ mal gut sein — von Sys­tem­ver­zeich­nis­sen möch­te ich nicht, daß sie geän­dert wer­den.

0

Das Schlüsselbund von OSX treibt mich in den Wahnsinn

Ich habe mir von Como­do ein S/MI­ME-Zer­ti­fi­kat besorgt und möch­te das natür­lich ver­wen­den — sowohl in Apple Mail als auch in mutt. In Apple Mail funk­tio­niert es, in mutt muß das Zer­ti­fi­kat erst­mal mit smime_keys add_p12 impor­tiert wer­den. Und das bricht ab mit der Feh­ler­mel­dung

Couldn’t iden­ti­fy root cer­ti­fi­ca­te!
No root and no inter­me­dia­te cer­ti­fi­ca­tes. Can’t con­ti­nue. at /usr/bin/smime_keys line 708.

Nach eini­gem Suchen stellt sich her­aus, daß die Feh­ler­mel­dung kor­rekt ist. Denn beim Export aus dem OSX-Schlüs­sel­bund wird nicht die Ket­te expor­tiert, son­dern nur das Zer­ti­fi­kat.
Es gibt zwar auch eine Kom­man­do­zei­len-Ver­si­on security(1) — die scheint das aber auch nicht zu beherr­schen.

Das pran­ge­re ich an!

0
© Rainer Sokoll Frontier Theme