Q: SOGo as a virtualhost I am currently busy setting up a mail/web/caldav/carddav server for personal use (apache, postfix, dovecot, SOGo) and at the moment I am getting stuck at the point where I want to specify a subdomain for the SOGo service.
For example I would like to access SOGo on web.example.com, but without de /SOGo subdirectory it normally is using. I am not sure if this is feasible with SOGo and/or CalDAV/CardDAV. Also, with security in mind, I would like to SOGo, CalDAV and CardDAV be accessible only over HTTPs.
As seen below you will find the default SOGo configuration file for apache. Can someone help me with getting this right or explaining why this is a stupid idea?
Alias /SOGo.woa/WebServerResources/ /usr/lib64/GNUstep/SOGo/WebServerResources/
Alias /SOGo/WebServerResources/ /usr/lib64/GNUstep/SOGo/WebServerResources/

<Directory /usr/lib64/GNUstep/SOGo/>
    AllowOverride None

    <IfVersion < 2.4>     
        Order deny,allow
        Allow from all
    </IfVersion>
    <IfVersion >= 2.4>
        Require all granted
    </IfVersion>

    # Explicitly allow caching of static content to avoid browser specific behavior.
    # A resource's URL MUST change in order to have the client load the new version.
    <IfModule expires_module>
        ExpiresActive On
        ExpiresDefault "access plus 1 year"
    </IfModule>
</Directory>

# # Uncomment the following to enable proxy-side authentication, you will then
# # need to set the "SOGoTrustProxyAuthentication" SOGo user default to YES and
# # adjust the "x-webobjects-remote-user" proxy header in the "Proxy" section
# # below.
#
# # For full proxy-side authentication:
# <Location /SOGo>
#   AuthType XXX
#   Require valid-user
#   SetEnv proxy-nokeepalive 1
#   Allow from all
# </Location>
# 
# # For proxy-side authentication only for CardDAV and GroupDAV from external
# # clients:
# <Location /SOGo/dav>
#   AuthType XXX
#   Require valid-user
#   SetEnv proxy-nokeepalive 1
#   Allow from all
# </Location>

ProxyRequests Off
SetEnv proxy-nokeepalive 1
ProxyPreserveHost On

# # When using CAS, you should uncomment this and install cas-proxy-validate.py
# # in /usr/lib64/cgi-bin to reduce server overloading
#
# ProxyPass /SOGo/casProxy http://localhost/cgi-bin/cas-proxy-validate.py
# <Proxy http://localhost/app/cas-proxy-validate.py>
#   Order deny,allow
#   Allow from your-cas-host-addr
# </Proxy>

# # Enable to use Microsoft ActiveSync support
# # Note that you MUST have many sogod workers to use ActiveSync.
# # See the SOGo Installation and Configuration guide for more details.
#
# ProxyPass /Microsoft-Server-ActiveSync http://127.0.0.1:20000/SOGo/Microsoft-Server-ActiveSync retry=60 connectiontimeout=5 timeout=360

ProxyPass /SOGo http://127.0.0.1:20000/SOGo retry=0

<Proxy http://127.0.0.1:20000/SOGo>
#   adjust the following to your configuration
    RequestHeader set "x-webobjects-server-port" "443"
#   RequestHeader set "x-webobjects-server-name" "yourhostname"
#   RequestHeader set "x-webobjects-server-url" "https://yourhostname"

    # When using proxy-side autentication, you need to uncomment and
    # adjust the following line:
    RequestHeader unset "x-webobjects-remote-user"
#   RequestHeader set "x-webobjects-remote-user" "%{REMOTE_USER}e" env=REMOTE_USER

    RequestHeader set "x-webobjects-server-protocol" "HTTP/1.0"

    AddDefaultCharset UTF-8

    Order allow,deny
    Allow from all
</Proxy>

# For Apple autoconfiguration
<IfModule rewrite_module>
    RewriteEngine On
    RewriteRule ^/.well-known/caldav/?$ /SOGo/dav [R=301]
    RewriteRule ^/.well-known/carddav/?$ /SOGo/dav [R=301]
</IfModule>


A: You can't put SOGo in the document root, it always wants to use the /SOGo path (or, to be more precise: I haven't been able to figure out how to do this).
It is possible, however, to put it in a separate VirtualHost directive. All you need to do is to wrap the SOGo config to a VirtualHost, and set up redirecting so if anyone points the browser to your domain, they will be redirected to /SOGo, like this:
RewriteEngine On
RewriteRule ^/$ /SOGo/ [R]

You can include any directives in the VirtualHost as per usual, so you can easily make you SOGo installation to be accessible only through SSL (which is a good idea anyway).
