From c872e6a9f01f2947387d06fdd659cc91d797cd73 Mon Sep 17 00:00:00 2001 From: Norman Date: Wed, 5 Nov 2014 17:17:38 +0100 Subject: [PATCH 1/4] iOS Configuration Profile change name removed .vagrant fix guide layout --- .gitignore | 1 + management/templates/mail-guide.html | 17 ++++ setup/mobileconfig.sh | 135 +++++++++++++++++++++++++++ setup/start.sh | 2 +- 4 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 setup/mobileconfig.sh diff --git a/.gitignore b/.gitignore index e22c1d9f..f3cdb1bc 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ management/__pycache__/ tools/__pycache__/ externals/ .env +.vagrant diff --git a/management/templates/mail-guide.html b/management/templates/mail-guide.html index 3d0cec92..05b123c8 100644 --- a/management/templates/mail-guide.html +++ b/management/templates/mail-guide.html @@ -59,6 +59,23 @@

Your device should also provide a contacts list and calendar that syncs to this box when you use this method.

+ +
+

iOS Mobileconfig

+ +

Open the following configuration on your iOS device.

+ +

https://{{hostname}}/mailinabox.mobileconfig

+ +

Use these settings when prompted:

+ + + + +
Username: Your whole email address.
Password: Your mail password.
+ +

Your device should also provide a contacts list and calendar that syncs to this box when you use this method.

+
diff --git a/setup/mobileconfig.sh b/setup/mobileconfig.sh new file mode 100644 index 00000000..b8bcdd3e --- /dev/null +++ b/setup/mobileconfig.sh @@ -0,0 +1,135 @@ +#!/bin/bash +# +# iOS Configuration Profile +# ---------------------------------------------- +# +# Mobileconfig for iOS users to setup IMAP, Contacts & Calendars +# +# https://developer.apple.com/library/ios/featuredarticles/iPhoneConfigurationProfileRef/Introduction/Introduction.html + +source setup/functions.sh # load our functions +source /etc/mailinabox.conf # load global vars + +echo "Generate iOS Configuration Profile" + +echo " + + + + PayloadContent + + + CalDAVAccountDescription + Mail-in-a-box Calendar + CalDAVHostName + $PRIMARY_HOSTNAME + CalDAVPort + 443 + CalDAVPrincipalURL + /cloud/remote.php/caldav/calendars/ + CalDAVUseSSL + + PayloadDescription + CalDAV-Account + PayloadDisplayName + CalDAV (Mail-in-a-box Calendar) + PayloadIdentifier + com.mailinabox.setup.CalDAV + PayloadOrganization + + PayloadType + com.apple.caldav.account + PayloadUUID + $(cat /proc/sys/kernel/random/uuid) + PayloadVersion + 1 + + + EmailAccountDescription + Mail-in-a-box Mail + EmailAccountType + EmailTypeIMAP + IncomingMailServerAuthentication + EmailAuthPassword + IncomingMailServerHostName + $PRIMARY_HOSTNAME + IncomingMailServerPortNumber + 993 + IncomingMailServerUseSSL + + OutgoingMailServerAuthentication + EmailAuthPassword + OutgoingMailServerHostName + $PRIMARY_HOSTNAME + OutgoingMailServerPortNumber + 587 + OutgoingMailServerUseSSL + + OutgoingPasswordSameAsIncomingPassword + + PayloadDescription + E-Mail-Account + PayloadDisplayName + IMAP-Account + PayloadIdentifier + com.mailinabox.setup.E-Mail + PayloadOrganization + + PayloadType + com.apple.mail.managed + PayloadUUID + $(cat /proc/sys/kernel/random/uuid) + PayloadVersion + 1 + PreventAppSheet + + PreventMove + + SMIMEEnabled + + + + CardDAVAccountDescription + Mail-in-a-box Contacts + CardDAVHostName + $PRIMARY_HOSTNAME + CardDAVPort + 443 + CardDAVPrincipalURL + /cloud/remote.php/carddav/addressbooks/ + CardDAVUseSSL + + PayloadDescription + CardDAV-Accounts + PayloadDisplayName + CardDAV + PayloadIdentifier + com.mailinabox.setup.carddav + PayloadOrganization + + PayloadType + com.apple.carddav.account + PayloadUUID + $(cat /proc/sys/kernel/random/uuid) + PayloadVersion + 1 + + + PayloadDescription + Mail, Contacts & Calendar + PayloadDisplayName + Mail-in-a-box + PayloadIdentifier + com.mailinabox.setup + PayloadOrganization + + PayloadRemovalDisallowed + + PayloadType + Configuration + PayloadUUID + $(cat /proc/sys/kernel/random/uuid) + PayloadVersion + 1 + +" > "$STORAGE_ROOT/www/default/mailinabox.mobileconfig"; diff --git a/setup/start.sh b/setup/start.sh index d84669b3..c47aaee2 100755 --- a/setup/start.sh +++ b/setup/start.sh @@ -125,6 +125,7 @@ source setup/webmail.sh source setup/owncloud.sh source setup/zpush.sh source setup/management.sh +source setup/mobileconfig.sh # Write the DNS and nginx configuration files. sleep 5 # wait for the daemon to start @@ -160,4 +161,3 @@ openssl x509 -in $STORAGE_ROOT/ssl/ssl_certificate.pem -noout -fingerprint \ echo echo Then you can confirm the security exception and continue. echo - From 5775cab17544f39dab119780a72e7bcd74cea61a Mon Sep 17 00:00:00 2001 From: Norman Date: Thu, 6 Nov 2014 15:33:08 +0100 Subject: [PATCH 2/4] various fixes --- conf/nginx.conf | 5 ++++- setup/mobileconfig.sh | 32 ++++++++++++++++---------------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index b8751bd5..241bcebe 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -34,6 +34,10 @@ server { access_log off; } + location = /mailinabox.mobileconfig { + alias /var/lib/mailinabox/mobileconfig.xml; + } + # Roundcube Webmail configuration. rewrite ^/mail$ /mail/ redirect; rewrite ^/mail/$ /mail/index.php; @@ -80,4 +84,3 @@ server { # ADDITIONAL DIRECTIVES HERE } - diff --git a/setup/mobileconfig.sh b/setup/mobileconfig.sh index b8bcdd3e..489a93d9 100644 --- a/setup/mobileconfig.sh +++ b/setup/mobileconfig.sh @@ -20,7 +20,7 @@ echo " CalDAVAccountDescription - Mail-in-a-box Calendar + Mail-in-a-Box Calendar CalDAVHostName $PRIMARY_HOSTNAME CalDAVPort @@ -30,11 +30,11 @@ echo " CalDAVUseSSL PayloadDescription - CalDAV-Account + $PRIMARY_HOSTNAME (Mail-in-a-Box) PayloadDisplayName - CalDAV (Mail-in-a-box Calendar) + $PRIMARY_HOSTNAME calendar PayloadIdentifier - com.mailinabox.setup.CalDAV + email.mailinabox.mobileconfig.$PRIMARY_HOSTNAME.CalDAV PayloadOrganization PayloadType @@ -46,7 +46,7 @@ echo " EmailAccountDescription - Mail-in-a-box Mail + Mail-in-a-Box Mail EmailAccountType EmailTypeIMAP IncomingMailServerAuthentication @@ -68,11 +68,11 @@ echo " OutgoingPasswordSameAsIncomingPassword PayloadDescription - E-Mail-Account + $PRIMARY_HOSTNAME (Mail-in-a-Box) PayloadDisplayName - IMAP-Account + $PRIMARY_HOSTNAME mail PayloadIdentifier - com.mailinabox.setup.E-Mail + email.mailinabox.mobileconfig.$PRIMARY_HOSTNAME.E-Mail PayloadOrganization PayloadType @@ -90,7 +90,7 @@ echo " CardDAVAccountDescription - Mail-in-a-box Contacts + Mail-in-a-Box Contacts CardDAVHostName $PRIMARY_HOSTNAME CardDAVPort @@ -100,11 +100,11 @@ echo " CardDAVUseSSL PayloadDescription - CardDAV-Accounts + $PRIMARY_HOSTNAME (Mail-in-a-Box) PayloadDisplayName - CardDAV + $PRIMARY_HOSTNAME contacts PayloadIdentifier - com.mailinabox.setup.carddav + email.mailinabox.mobileconfig.$PRIMARY_HOSTNAME.carddav PayloadOrganization PayloadType @@ -116,11 +116,11 @@ echo " PayloadDescription - Mail, Contacts & Calendar + $PRIMARY_HOSTNAME (Mail-in-a-Box) PayloadDisplayName - Mail-in-a-box + $PRIMARY_HOSTNAME PayloadIdentifier - com.mailinabox.setup + email.mailinabox.mobileconfig.$PRIMARY_HOSTNAME PayloadOrganization PayloadRemovalDisallowed @@ -132,4 +132,4 @@ echo " PayloadVersion 1 -" > "$STORAGE_ROOT/www/default/mailinabox.mobileconfig"; +" > "/var/lib/mailinabox/mobileconfig.xml"; From 7db80458ddd7ce8d464dec2b55513c31cba07fd7 Mon Sep 17 00:00:00 2001 From: Norman Date: Thu, 6 Nov 2014 15:42:22 +0100 Subject: [PATCH 3/4] fix description --- setup/mobileconfig.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/setup/mobileconfig.sh b/setup/mobileconfig.sh index 489a93d9..d2462093 100644 --- a/setup/mobileconfig.sh +++ b/setup/mobileconfig.sh @@ -20,7 +20,7 @@ echo " CalDAVAccountDescription - Mail-in-a-Box Calendar + $PRIMARY_HOSTNAME calendar CalDAVHostName $PRIMARY_HOSTNAME CalDAVPort @@ -46,7 +46,7 @@ echo " EmailAccountDescription - Mail-in-a-Box Mail + $PRIMARY_HOSTNAME mail EmailAccountType EmailTypeIMAP IncomingMailServerAuthentication @@ -90,7 +90,7 @@ echo " CardDAVAccountDescription - Mail-in-a-Box Contacts + $PRIMARY_HOSTNAME contacts CardDAVHostName $PRIMARY_HOSTNAME CardDAVPort From b04addda9a4346bcab0ce18e8144a9939a7d45d0 Mon Sep 17 00:00:00 2001 From: Joshua Tauberer Date: Fri, 14 Nov 2014 13:49:01 +0000 Subject: [PATCH 4/4] move the mobileconfig into the conf directory as a plain XML file and handle substitutions and copying to /var in web.sh --- .gitignore | 1 - setup/mobileconfig.sh => conf/ios-profile.xml | 72 +++++++++---------- setup/start.sh | 1 - setup/web.sh | 13 ++++ 4 files changed, 46 insertions(+), 41 deletions(-) rename setup/mobileconfig.sh => conf/ios-profile.xml (62%) diff --git a/.gitignore b/.gitignore index f3cdb1bc..e22c1d9f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,3 @@ management/__pycache__/ tools/__pycache__/ externals/ .env -.vagrant diff --git a/setup/mobileconfig.sh b/conf/ios-profile.xml similarity index 62% rename from setup/mobileconfig.sh rename to conf/ios-profile.xml index d2462093..19460c00 100644 --- a/setup/mobileconfig.sh +++ b/conf/ios-profile.xml @@ -1,28 +1,22 @@ -#!/bin/bash -# -# iOS Configuration Profile -# ---------------------------------------------- -# -# Mobileconfig for iOS users to setup IMAP, Contacts & Calendars -# -# https://developer.apple.com/library/ios/featuredarticles/iPhoneConfigurationProfileRef/Introduction/Introduction.html - -source setup/functions.sh # load our functions -source /etc/mailinabox.conf # load global vars - -echo "Generate iOS Configuration Profile" - -echo " + + PayloadContent CalDAVAccountDescription - $PRIMARY_HOSTNAME calendar + PRIMARY_HOSTNAME calendar CalDAVHostName - $PRIMARY_HOSTNAME + PRIMARY_HOSTNAME CalDAVPort 443 CalDAVPrincipalURL @@ -30,29 +24,29 @@ echo " CalDAVUseSSL PayloadDescription - $PRIMARY_HOSTNAME (Mail-in-a-Box) + PRIMARY_HOSTNAME (Mail-in-a-Box) PayloadDisplayName - $PRIMARY_HOSTNAME calendar + PRIMARY_HOSTNAME calendar PayloadIdentifier - email.mailinabox.mobileconfig.$PRIMARY_HOSTNAME.CalDAV + email.mailinabox.mobileconfig.PRIMARY_HOSTNAME.CalDAV PayloadOrganization PayloadType com.apple.caldav.account PayloadUUID - $(cat /proc/sys/kernel/random/uuid) + UUID1 PayloadVersion 1 EmailAccountDescription - $PRIMARY_HOSTNAME mail + PRIMARY_HOSTNAME mail EmailAccountType EmailTypeIMAP IncomingMailServerAuthentication EmailAuthPassword IncomingMailServerHostName - $PRIMARY_HOSTNAME + PRIMARY_HOSTNAME IncomingMailServerPortNumber 993 IncomingMailServerUseSSL @@ -60,7 +54,7 @@ echo " OutgoingMailServerAuthentication EmailAuthPassword OutgoingMailServerHostName - $PRIMARY_HOSTNAME + PRIMARY_HOSTNAME OutgoingMailServerPortNumber 587 OutgoingMailServerUseSSL @@ -68,17 +62,17 @@ echo " OutgoingPasswordSameAsIncomingPassword PayloadDescription - $PRIMARY_HOSTNAME (Mail-in-a-Box) + PRIMARY_HOSTNAME (Mail-in-a-Box) PayloadDisplayName - $PRIMARY_HOSTNAME mail + PRIMARY_HOSTNAME mail PayloadIdentifier - email.mailinabox.mobileconfig.$PRIMARY_HOSTNAME.E-Mail + email.mailinabox.mobileconfig.PRIMARY_HOSTNAME.E-Mail PayloadOrganization PayloadType com.apple.mail.managed PayloadUUID - $(cat /proc/sys/kernel/random/uuid) + UUID2 PayloadVersion 1 PreventAppSheet @@ -90,9 +84,9 @@ echo " CardDAVAccountDescription - $PRIMARY_HOSTNAME contacts + PRIMARY_HOSTNAME contacts CardDAVHostName - $PRIMARY_HOSTNAME + PRIMARY_HOSTNAME CardDAVPort 443 CardDAVPrincipalURL @@ -100,27 +94,27 @@ echo " CardDAVUseSSL PayloadDescription - $PRIMARY_HOSTNAME (Mail-in-a-Box) + PRIMARY_HOSTNAME (Mail-in-a-Box) PayloadDisplayName - $PRIMARY_HOSTNAME contacts + PRIMARY_HOSTNAME contacts PayloadIdentifier - email.mailinabox.mobileconfig.$PRIMARY_HOSTNAME.carddav + email.mailinabox.mobileconfig.PRIMARY_HOSTNAME.carddav PayloadOrganization PayloadType com.apple.carddav.account PayloadUUID - $(cat /proc/sys/kernel/random/uuid) + UUID3 PayloadVersion 1 PayloadDescription - $PRIMARY_HOSTNAME (Mail-in-a-Box) + PRIMARY_HOSTNAME (Mail-in-a-Box) PayloadDisplayName - $PRIMARY_HOSTNAME + PRIMARY_HOSTNAME PayloadIdentifier - email.mailinabox.mobileconfig.$PRIMARY_HOSTNAME + email.mailinabox.mobileconfig.PRIMARY_HOSTNAME PayloadOrganization PayloadRemovalDisallowed @@ -128,8 +122,8 @@ echo " PayloadType Configuration PayloadUUID - $(cat /proc/sys/kernel/random/uuid) + UUID4 PayloadVersion 1 -" > "/var/lib/mailinabox/mobileconfig.xml"; + diff --git a/setup/start.sh b/setup/start.sh index c47aaee2..22759c60 100755 --- a/setup/start.sh +++ b/setup/start.sh @@ -125,7 +125,6 @@ source setup/webmail.sh source setup/owncloud.sh source setup/zpush.sh source setup/management.sh -source setup/mobileconfig.sh # Write the DNS and nginx configuration files. sleep 5 # wait for the daemon to start diff --git a/setup/web.sh b/setup/web.sh index d8d4644a..fd0b557c 100755 --- a/setup/web.sh +++ b/setup/web.sh @@ -40,6 +40,19 @@ tools/editconf.py /etc/php5/fpm/pool.d/www.conf -c ';' \ # since it depends on what domains we're serving, which we don't know # until mail accounts have been created. +# Create the iOS Mobile Configuration file which is exposed via the +# nginx configuration at /mailinabox-mobileconfig. +mkdir -p /var/lib/mailinabox +chmod a+rx /var/lib/mailinabox +cat conf/ios-profile.xml \ + | sed "s/PRIMARY_HOSTNAME/$PRIMARY_HOSTNAME/" \ + | sed "s/UUID1/$(cat /proc/sys/kernel/random/uuid)/" \ + | sed "s/UUID2/$(cat /proc/sys/kernel/random/uuid)/" \ + | sed "s/UUID3/$(cat /proc/sys/kernel/random/uuid)/" \ + | sed "s/UUID4/$(cat /proc/sys/kernel/random/uuid)/" \ + > /var/lib/mailinabox/mobileconfig.xml +chmod a+r /var/lib/mailinabox/mobileconfig.xml + # make a default homepage if [ -d $STORAGE_ROOT/www/static ]; then mv $STORAGE_ROOT/www/static $STORAGE_ROOT/www/default; fi # migration #NODOC mkdir -p $STORAGE_ROOT/www/default