Absolutely open to any suggestion.

I will fix that immediately.

On Fri, Jan 28, 2011 at 11:10 AM, Carl Farrington <[email protected]> wrote:
> Are you open to typographical corrections/contributions? I know nothing about 
> SOGo, and particularly nothing about FreeBSD, but here are my contributions 
> anyway :
>
> Line 30: user -> using
> Line 69: "the first line one of" -> "the first line of" OR "line one of"
> Line 73: too -> to
> Line 341: you -> your
> Line 458: no -> now
>
> Hope it doesn't look like I'm being picky or anything - just offering 
> assistance. Looks like a thorough guide!
> ________________________________________
> From: Jose Amengual [[email protected]]
> Sent: 28 January 2011 18:42
> To: [email protected]
> Subject: [SOGo] FreeBSD installation guide.
>
> Hi guys.
>
> Finally this is it.
>
>
> This guide will walk through the installation of SOGo 1.3.4 on FreeBSD 8.0/8.2
> I make the assumption that you have a mail server running with some
> sort of database auth
> like Mysql, PosgreSQL or LDAP. In my setup I have Postfixadmin,
> Postfix, Dovecot and Mysql so
> the example for the auth process is base on Mysql auth.
>
> If you need information on how to use LDAP auth there is a lot of
> detailed documentation on the SOGo page
> and is easy to set up than Mysql/PgSQL ( in my opinion ,for the lack
> of documentation and examples)
>
>
> 1.- Just so everyone knows that I started from a blank jail.
>
> sogo# pkg_info
> pkg_info: no packages installed
>
>
> 2.- I edit and add entries to my resolv.conf to have DNS resolve.
>
> nameserver ipofyournameserver
>
>
> 3.- Now I will install bash user portmanager so I can get some basic
> dependencies :
>
> sogo# cd /usr/ports/ports-mgmt/portmanager/
> sogo# make install clean distclean
> sogo# tcsh
> sogo# portmanager shells/bash
>
> And continue with the install process until is done.
>
> 4.- we switch to bash and we update the locate db
>
> sogo# /usr/libexec/locate.updatedb
>
>
> 5.- Installing some SOGo dependencies
>
> sogo# portmanager devel/gnustep
> sogo# portmanager databases/mysql51-client
> sogo# portmanager net/openldap24-server ( if you are going to set up
> LDAP sever in the same server)
> sogo# portmanager databases/libmemcached
> sogo# portmanager devel/monotone
> sogo# portmanager www/nginx
>
> 6.- Create the user sogo and then run :
>
> sogo# su -l sogo
> sogo# mtn db init --db=~/db.mtn
> sogo# mtn --db=~/db.mtn pull inverse.ca ca.inverse.sope
> sogo# mtn --db=~/db.mtn checkout --branch ca.inverse.sope SOPE
> sogo# mtn --db=~/db.mtn pull inverse.ca ca.inverse.sogo
> sogo# mtn --db=~/db.mtn checkout --branch ca.inverse.sogo SOGo
>
> At this point I did a snapshot of the jail just in case I screw up
> some libraries and such….:)
>
> 7.- ok so now the fun starts, let's try to install SOPE
>
> change the first line one of configure script to
>
> #!/usr/local/bin/bash or /bin/sh
>
> change this line too :
>
> LINK_SYSLIBDIRS="-L/usr/local/lib/mysql -L/usr/local/pgsql/lib
> -L/usr/local/lib -L/usr/lib"
>
> if you are using postgress and add the path to the libs here too.
>
> now we have to source the GNUstep.sh file
>
> sogo# source /usr/local/GNUstep/System/Library/Makefiles/GNUstep.sh (
> read the GNUstep.sh file for more information ).
> sogo# cd SOPE
> sogo# ./configure --with-gnustep --enable-debug --disable-strip
> ...
> ...
> ...
> GNUstep environment:
>  system: /usr/local/GNUstep/System
>  local:  /usr/local/GNUstep/Local
>  user:   /root/GNUstep
>  path:   
> /usr/local/GNUstep/System:/usr/local/GNUstep/Network:/usr/local/GNUstep/Local:/root/GNUstep
>  flat:   yes
>  arch:   amd64-portbld-freebsd8.0
>  combo:  gnu-gnu-gnu
>
> Note: will install in GNUSTEP_LOCAL_ROOT: /usr/local/GNUstep/Local
>
> Configuration:
>  FHS:    install in GNUstep tree
>  debug:  yes
>  strip:  no
>  prefix:     /usr/local/GNUstep/Local
>  frameworks:
>  gstep:      /usr/local/GNUstep/System/Library/Makefiles
>  config:     /home/sogo/SOPE/config.make
>  script:     /usr/local/GNUstep/System/Library/Makefiles/GNUstep.sh
>
> creating: /home/sogo/SOPE/config.make
> optional library found: xml2
> optional library found: ldap
> required library found: ssl
> failed to link optional library: pq
> failed to link optional library: mysqlclient
> configuring NGStreams library .... done (log in config-NGStreams.log).
>
> Base on http://mail.opengroupware.org/pipermail/users/2006-August/016620.html
> and http://www.mail-archive.com/[email protected]/msg03000.html
>
> you can pretty much ignore the error that it can't find mysql or pg
> libraries you can run make with the following parameter and it will
> compiled with support for mysql or pg.
>
> sogo# gmake HAS_LIBRARY_pq=yes
> sogo# gmake HAS_LIBRARY_mysqlclient=yes
>
> as you can see in the output of make :
>
> Making all in MySQL ...
> Making all for bundle MySQL...
>  Creating MySQL.gdladaptor/....
>  Compiling file MySQL4Expression.m ...
>  Compiling file MySQL4Adaptor.m ...
>  Compiling file MySQL4Context.m ...
>  Compiling file MySQL4Channel.m ...
>  Compiling file MySQL4Channel+Model.m ...
>  Compiling file MySQL4Exception.m ...
>  Compiling file MySQL4Values.m ...
>  Compiling file NSString+MySQL4.m ...
>  Compiling file EOAttribute+MySQL4.m ...
>  Compiling file NSString+MySQL4Val.m ...
>  Compiling file NSData+MySQL4Val.m ...
>  Compiling file NSCalendarDate+MySQL4Val.m ...
>  Compiling file NSNumber+MySQL4Val.m ...
>  Linking bundle MySQL ...
>  Creating MySQL.gdladaptor/Resources...
>  Copying resources into the bundle wrapper...
>  Creating stamp file...
>  Creating MySQL.gdladaptor/Resources/Info-gnustep.plist...
>
> it actually works!!!!
>
> sogo# gmake install
>
> 8.- Now the real fun begins….will SOGo compile ????
>
> sogo# cd ../SOGO
>
> We need to change the first line of configure script like we did for sope.
> We need to change the LINK_SYSLIBDIR accordingly as we did for SOPE
> (-L/usr/local/lib/mysql or pg )
>
> sogo# ./configure --enable-debug --disable-strip
>
> sogo# ./configure --enable-debug --disable-strip
> GNUstep environment:
>  system: /usr/local/GNUstep/System
>  local:  /usr/local/GNUstep/Local
>  user:   /root/GNUstep
>  path:   
> /usr/local/GNUstep/System:/usr/local/GNUstep/Network:/usr/local/GNUstep/Local:/root/GNUstep
>  flat:   yes
>  arch:   amd64-portbld-freebsd8.0
>  combo:  gnu-gnu-gnu
>
> Note: will install in GNUSTEP_LOCAL_ROOT: /usr/local/GNUstep/Local
>
> Configuration:
>  debug:  yes
>  strip:  no
>  ldap-based configuration:  no
>  prefix: /usr/local/GNUstep/Local
>  gstep:  /usr/local/GNUstep/System/Library/Makefiles
>  config: /usr/home/sogo/SOGo/config.make
>  script: /usr/local/GNUstep/System/Library/Makefiles/GNUstep.sh
>
> creating: /usr/home/sogo/SOGo/config.make
>
>
> now we need to modify the GNUmakefile.postamble file that has options
> for cp command that are not compatible with FreeBSD cp.
>
> sogo## sed -i.back 's/-dpR/-a/g' SOPE/NGCards/GNUmakefile.postamble
>
> and now….
>
> sogo# gmake install
>
> if you don't see any more errors you are almost there, now the service
> configuration and nginx configs part begins :
>
> 9.- nginx virtual host config
>
> server {
>        listen       80;
>        server_name  sogo.example.com 10.0.0.58; (ip or FQDN name of
> you soggy virtual host)
>        access_log  /var/log/sogo-access.log  main;
>        error_log   /var/log/sogo-error.log info;
>        client_max_body_size    50m;
>
> location  /usr/local/GNUstep/Local/Library/SOGo/ {
> if (-f $request_filename) {
>                    expires max;
>                    break;
>                }
> }
> #location ^~ /SOGo/ { ( if you want your url like mail.example.com/SOGo/)
> location ^~ / { ( if you want mail.example.com)
>  (see sogo docs for more info about this parameter)
>      proxy_pass            http://10.0.0.58:20000/SOGo;
>      proxy_set_header      X-Real-IP                 $remote_addr;
>            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
>      proxy_set_header      Host                          $host;
>      proxy_set_header      x-webobjects-remote-host      10.0.0.58;
>  proxy_set_header      x-webobjects-server-protocol  HTTP/1.0;
>      proxy_set_header    x-webobjects-server-name sogo.example.com;
>      proxy_set_header    x-webobjects-server-port 80;
>      proxy_set_header    x-webobjects-server-url http://sogo.example.com:7777;
>      proxy_connect_timeout       90;
>      proxy_send_timeout          90;
>      proxy_read_timeout          90;
>      proxy_buffer_size           4k;
>      proxy_buffers               4 32k;
>      proxy_busy_buffers_size     64k;
>      proxy_temp_file_write_size  64k;
>      client_max_body_size        50m;
>      client_body_buffer_size     128k;
>      break;
> }
> location /.woa/WebServerResources/ {
> alias /usr/local/GNUstep/Local/Library/SOGo/WebServerResources/;
> }
> location /SOGo.woa/WebServerResources/ {
>        alias /usr/local/GNUstep/Local/Library/SOGo/WebServerResources/;
>        }
>
> location /SOGo/WebServerResources/ {
> alias /usr/local/GNUstep/Local/Library/SOGo/WebServerResources/;
> }
> location ^/SOGo/so/ControlPanel/Products/([^/]*)/Resources/(.*)$ {
> alias /usr/local/GNUstep/Local/Library/SOGo/$1.SOGo/Resources/$2;
> }
>
> }
>
> 10.- now you have to use this start up script to run sogo ( courtesy
> of Euan Thoms ):
>
> copy this to /usr/local/etc/rc.d make it executable and add
> sogod_enable="YES" on your /etc/rc.conf
>
> #!/bin/sh
>  #
>  #
>  # PROVIDE: sogod
>  # REQUIRE: memcached
>  #
>  # Add the following lines to /etc/rc.conf to enable sogod:
>  #
>  # sogod_enable (bool): Set it to "YES" to enable sogod.
>  # Default is "NO"
>  #
>  #
>
>
>  . /etc/rc.subr
>
>
>  name="sogod"
>  rcvar=`set_rcvar`
>
>
>  load_rc_config ${name}
>
>  : ${sogod_enable="NO"}
>  : ${sogod_user="sogo"}
>  : ${sogod_group="sogo"}
>  : ${sogod_workers="-WOWorkersCount 1"}
>  : ${sogod_command="/usr/local/GNUstep/Local/Tools/Admin/sogod"}
>  : ${sogod_logfile="/var/log/sogo/sogo.log"}
>
>  pidfile="/var/run/sogo/sogo.pid"
>  command="/usr/sbin/daemon"
>  command_args="-p ${pidfile} -u ${sogod_user} ${sogod_command}
> ${sogod_workers} -WOPidFile ${pidfile} -WOLogFile ${sogod_logfile}"
>
>
>  start_precmd="sogod_prestart"
>  start_cmd="sogod_start"
>  stop_cmd="sogod_stop"
>  status_cmd="sogod_status"
>
>  sogod_prestart() {
>   if [ ! -d `dirname ${pidfile}` ]; then
>     mkdir `dirname ${pidfile}` && chown ${sogod_user}:${sogod_group}
> `dirname ${pidfile}`
>   fi
>   if [ ! -d `dirname ${sogod_logfile}` ]; then
>     mkdir `dirname ${sogod_logfile}`
>     touch ${sogod_logfile} && chown ${sogod_user}:${sogod_group}
> ${sogod_logfile}
>   fi
>   if [ -z ${GNUSTEP_SYSTEM_ROOT} ]; then
>     . /usr/local/GNUstep/System/Library/Makefiles/GNUstep.sh
>   fi
>  }
>
>  sogod_start () {
>     ${command} ${command_args}
>  }
>
>  sogod_stop () {
>     kill `cat ${pidfile}`
>  }
>
>  sogod_status () {
>     if [ -f ${pidfile} ]; then
>       echo "${name} is running as pid `cat ${pidfile}`"
>     else
>       echo "${name} is not running"
>     fi
>  }
>
>
>  run_rc_command "$1"
>
>
> 11.- You have to create a compatible SOGo mysql view of your users
> database to allow SOGo to query using c_uid, c_name, c_password etc (
> SOGo doesn't support md5crypt (yet) so you password must be stored
> using MD5 only otherwise is not going to work) in my case
> this is the postfix db used by postfixadmin
>
> so the view will look like :
>
> USE postfix;
> CREATE VIEW sogo_auth_view AS
>       SELECT  username AS c_uid,
>               username AS c_name,
>               password AS c_password,
>               username AS c_cn,
>               username AS mail,
>               name AS displayName
>       FROM mailbox
>       WHERE active=1;
>
> 12.- Now if you don't have an existing mysql table with users then you
> can create one like :
>
> CREATE DATABASE sogo;
> USE sogo
> CREATE TABLE IF NOT EXISTS `sogo_users` (
>  `c_uid` varchar(32) CHARACTER SET utf8 NOT NULL DEFAULT '',
>  `c_name` varchar(32) CHARACTER SET utf8 NOT NULL DEFAULT '',
>  `c_password` varchar(250) CHARACTER SET utf8 NOT NULL DEFAULT '',
>  `c_cn` varchar(250) CHARACTER SET utf8 NOT NULL DEFAULT '',
>  `c_mail` varchar(250) CHARACTER SET utf8 NOT NULL DEFAULT '',
>  UNIQUE KEY `c_uid` (`c_uid`)
> ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 ;
>
> You will need to populate this db in order to test sogo.
>
>
> 13.- Now we need to populate the .GNUDefault for SOGo :
>
> sogo# su -l sogo
> sogo# source /usr/local/GNUstep/System/Library/Makefiles/GNUstep.sh
>
> sogo# defaults write sogod SOGoTimeZone "America/Vancouver"
> sogo# defaults write sogod SOGoMailDomain "example.com"
> sogo# defaults write sogod SOGoLanguage English
> sogo# defaults write sogod SOGoAppointmentSendEMailNotifications YES
> sogo# defaults write sogod SOGoFoldersSendEMailNotifications YES
> sogo# defaults write sogod SOGoACLsSendEMailNotifications YES
> sogo# defaults write sogod SOGoMemcachedHost 10.0.0.58 ( you could
> have memcache running on localhost too)
> sogo# defaults write sogod SOGoPasswordChangeEnabled YES
> ### For Mysql auth
> defaults write sogod SOGoUserSources '({
> type = "sql";
> id = "directory";
> viewURL = "mysql://sogo:[email protected]:3306/postfix/sogo_auth_view";
> canAuthenticate = YES;
> isAddressBook = YES;
> userPasswordAlgorithm = md5;
> })'
>
> defaults write sogod SOGoProfileURL 'mysql://sogo:
> mysqlpassword@localhost:3306/sogo/sogo_user_profile'
> defaults write sogod OCSFolderInfoURL 'mysql://sogo:
> mysqlpassword@localhost:3306/sogo/sogo_folder_info'
> defaults write sogod SOGoMailingMechanism smtp
> defaults write sogod SOGoSMTPServer 10.0.0.56
> defaults write sogod SOGoDraftsFolderName INBOX/Drafts
> defaults write sogod SOGoSentFolderName INBOX/Sent
> defaults write sogod SOGoTrashFolderName INBOX/Trash
> defaults write sogod SOGoOtherUsersFolderName "Other Users"
> defaults write sogod SOGoSharedFolderName "Shared Folders"
> defaults write sogod SOGoIMAPServer imap://10.0.0.56:143
> defaults write sogod SOGoMailingMechanism smtpcd
> defaults write sogod SOGoSieveServer sieve://10.0.0.56
> defaults write sogod SOGoVacationEnabled YES
> defaults write sogod SOGoForwardEnabled YES
> defaults write sogod SOGoSieveScriptsEnabled YES
>
>
> If you want to enable full debug in case of problem run this :
>
> defaults write sogod GCSFolderDebugEnabled YES
> defaults write sogod GCSFolderStoreDebugEnabled YES
> defaults write sogod LDAPDebugEnabled YES
> defaults write sogod NGImap4DisableIMAP4Pooling YES
> defaults write sogod OCSFolderManagerSQLDebugEnabled YES
> defaults write sogod PGDebugEnabled YES
> defaults write sogod SOGoDebugRequests YES
> defaults write sogod SOGoMailKeepDraftsAfterSend YES
> defaults write sogod SOGoUIxDebugEnabled YES
> defaults write sogod SoDebugObjectTraversal YES
> defaults write sogod SoSecurityManagerDebugEnabled YES
> defaults write sogod WOApplicationRedirectURL YES
> defaults write sogod WODontZipResponse YES
> defaults write sogod WODebugZipResponse YES
>
> Here is the xml configuration of the SOGoUserSources
>
> <key>SOGoUserSources</key>
>        <array>
>            <dict>
>                <key>canAuthenticate</key>
>                <string>YES</string>
>                <key>id</key>
>                <string>directory</string>
>                <key>isAddressBook</key>
>                <string>YES</string>
>                <key>type</key>
>                <string>sql</string>
>                <key>userPasswordAlgorithm</key>
>                <string>md5</string>
>                <key>viewURL</key>
>
> <string>mysql://sogo:[email protected]:3306/postfix/sogo_auth_view</string>
>            </dict>
>        </array>
>
>
> 14.- No you can start sogod
>
> /usr/local/etc/rc.d/sogod start
>
> And this is it, I was able to log in SOGo without any problems.
>
> There is a log file in /var/log/sogo.log.
>
> Now I'm working in SOGo on Apache, Gosa, Funanbol and Openchange in Freebsd.
>
> Please feel free to email me suggestions or comments about this guide
> so we can keep one good guide for installing SOGo on FreeBSD and not
> 10 of them with different installation methods.
>
> I will try to keep this guide up to date.
>
> Thanks
>
> Jose Amengual
> --
> [email protected]
> https://inverse.ca/sogo/lists
> --
> [email protected]
> https://inverse.ca/sogo/lists
-- 
[email protected]
https://inverse.ca/sogo/lists

Reply via email to