Roundcube and Open Directory

Hi,
I use Roundcube instead of Squirrelmail. Everything is ok but I would like to use LDAP to fill the Adresses Book of Roundcube.
How to configure it ?

Hi,
I use Roundcube instead of Squirrelmail. Everything is ok but I would like to use LDAP to fill the Adresses Book of Roundcube.
How to configure it ?

Similar Messages

  • 10.6 home directory mounting with active directory and open directory integration

    Hi guys i am having some issues in my new mac environment. I have a windows network with an server 2008 active directory. I have just recentlly created a "magic triangle" setup with active directory and open directory. When my users login via windows their home folders mount perfect. When any user logs in to any iMac in the building it does not work. They login perfectly fine, but their home folders do not mount. When i try mounting them manually with smb, i get a prompt for credentials. I am thinking this is my issue, my Single sign on with kerbos is working but for some reason is not logging in correctly. If i type in my credentials with my domain first then my name it works.
    For example DOMAIN\jsmith works, but the way i think the mac and active directory is doing it now is just jsmith without the DOMAIN.
    I feel like this is the problem with the home folders not mounting.
    Can anyone provide some help with this?
    Thanks,
    Dani

    Hi dani190,
    are you using the fully qualified domain name of the network server? ie if your server is bob. and your domain is domain.company.com. then the FQDNS would typically be bob.domain.company.com or bob.company.com.
    If the FQDNS works, then have you checked in the AD to make sure the path to the network home folder uses the FQDNS?
    For the contact search path, did you put the AD at the top the list? (in directory utility)
    Did you set the WINS work group on your client computer to your domain?
    ie:Apple Menu, System Preferences, Network, Active Network Port (ethernet and or airport) , Advanced Button, WINS Tab, set workgroup to the name of your domain. ie domain.company.com and or company.com

  • Directory Binding Script (Active and Open Directory) 10.7

    Hi everyone
    I'm reposting this in the right thread. I've written a Directory Binding Script for 10.6 and ported it now to 10.7 as among the things that have changed in the upgraded version is a refurbished directory binding enviroment.
    The original thread can be found here: https://discussions.apple.com/thread/3090068. The script is applicable for clients as well and simplifies the binding process considerably.
    Be aware that the reformatted script here contains some faulty line breaks. So you'll have to correct them in a proper text editor.
    #!/bin/sh
    #Uncomment the following line to abort the script on errors
    #trap exit ERR
    ## Script to automate OD and AD Binding of Mac OS X 10.7 Servers
    ## Script written by Marc Horat, URZ Basel, 11.6.2010
    ## Updated: 12.08.2011
    # With the use of the following sources as inspiration:
    # http://www.howtomac.co.uk/?p=247
    #Created by Ross Hamilton
    #Clock restart / Remove existing settings
    #Join to Open Directory and Active Directory
    # Bombich's AD-Bind Script:
    # This script binds to AD and configures advanced options of the AD plugin
    # As this scripts contains a password, be sure to take appropriate security
    # precautions
    # A good way to run this script is to set it as a login hook on your master machine
    # Because it only needs to be run once, the last thing this script does is to delete
    # itself. If you have another login script that you typically run, include the
    # script on your master machine, and indicate its path in the "newLoginScript"
    # variable.
    # If running this as a one-time login hook to bind to AD after imaging,
    # be sure to enable auto-login (for any local user) before creating your master image
    #################CONFIGURATION##########################
    #OD
    # These variables need to be configured for your env
    odAdmin="YOURODADMIN" #enter your OD admin name between the quotes
    odPassword="YOURODPW"  # Enter your OD admin password between the quotes
    oddomain="YOURODDOMAIN" # FQDN of your OD domain
    computerGroup="YOURNEWODCOMPGROUP"  # Add appropriate computer group you want machines to be added to, case sensitive
    oldComputerGroup="YOUROLDODCOMPGROUP" # If the Computer is in a Group already
    #AD
    # Standard parameters
    domain="YOURADDOMAIN"                              # fully qualified DNS name of Active Directory Domain
    domainname="YOURADDOMAINNAME"                    #Name of the Domain as specified in the search paths
    udn="YOURADADMIN"                              # username of a privileged network user
    password="YOURADPW"                                                  # password of a privileged network user
    ou="OU=YOUR,OU=OU,OU=URZ,OU=IN,DC=YOUR,DC=AD,DC=DOMAIN"                    # Distinguished name of container for the computer E.G. OU=Macs,OU=Computers,DC=AD,DC=DOMAIN,DC=CH
    # Advanced options AD Plugin
    alldomains="disable"                              # 'enable' or 'disable' automatic multi-domain authentication
    localhome="disable"                              # 'enable' or 'disable' force home directory to local drive
    protocol="smb"                                        # 'afp', 'smb' or 'nfs' (since 10.7) change how home is mounted from server
    mobile="enable"                              # 'enable' or 'disable' mobile account support for offline logon
    mobileconfirm="enable"                    # 'enable' or 'disable' warn the user that a mobile acct will be created
    useuncpath="enable"                              # 'enable' or 'disable' use AD SMBHome attribute to determine the home dir
    user_shell="/bin/bash"                    # e.g., /bin/bash or "none"
    preferred="-preferred $domain"          # Use the specified server for all Directory lookups and authentication
    # (e.g. "-nopreferred" or "-preferred ad.server.edu")
    admingroups="$domainname\YOURADADMINGROUP" # These comma-separated AD groups may administer the machine (e.g. "" or "APPLE\macadmins")
    packetsign="allow"                              # allow | disable | require
    packetencrypt="allow"                    # allow | disable | require
    passinterval="14"                              # number of days
    namespace="domain"                              # forest | domain
    # Login hook setting -- specify the path to a login hook that you want to run instead of this script
    newLoginHook=""                    # e.g., "/Library/Management/login.sh"
    ################################# End of configuration
    ############ Begin of Script
    # Host-specific parameters
    # computerid should be set dynamically, this value must be machine-specific
    # This value may be restricted to 19 characters! The only error you'll receive upon entering
    # an invalid computer id is to the effect of not having appropriate privileges to perform the requested operation
    #computerid=`/sbin/ifconfig en0 | awk '/ether/ { gsub(":", ""); print $2 }'` # MAC Address
    #computerid=`hostname | sed 's/.unibas.ch//'`
    #computerid=`/usr/sbin/scutil --get LocalHostName | cut -c 1-19` # Assure that this will produce unique names!
    #computerid=`/usr/sbin/scutil --get LocalHostName`
    computerid=`scutil --get ComputerName`
    adcomputerid=`echo "$computerid" | tr [:lower:] [:upper:]`
    # These variables probably don't need to be changed
    # Determing if any directory binding exists
    nicAddress=`ifconfig en0 | grep ether | awk '{print $2}'`
    if dscl localhost -list /LDAPv3 | grep . > /dev/null
    then
              check4ODtmp=`dscl localhost -list /LDAPv3 | grep -n 1 | sed 's/1://' | sed 's/2://'`
              check4OD=${check4ODtmp//[[:space:]]/}
              echo "Found LDAP: "$check4ODtmp
              check4ODaccttmp=`dscl /LDAPv3/"$check4OD" -read Computers/"$computerid" RealName | cut -c 11-`
              check4ODacct=${check4ODaccttmp//[[:space:]]/}
              echo "Found LDAP-Computer-Account: "$check4ODacct
    else
              check4OD=""
              check4ODacct=""
              echo "No bound LDAP Server found"
    fi
    if [ $oldComputerGroup != "" ] && dscl localhost -list /LDAPv3 | grep . > /dev/null
    then
              check4ODgroupMembershiptmp=`dscl /LDAPv3/"$check4OD" -read ComputerGroups/"$oldComputerGroup" | grep "$computerid"`
              check4ODgroupMembership=$check4ODgroupMembershiptmp
              echo "LDAP Group Membership in Group: "$oldComputerGroup
    else
              check4ODgroupMembership=""
              echo "No LDAP Group Membership defined or not bound to a server"
    fi
    if dscl localhost -list "/Active Directory" | grep $domainname > /dev/null
    then
              check4ADtmp=`dsconfigad -show | grep "Active Directory Domain" | sed 's/Active Directory Domain//'  | sed 's/=//'`
              check4AD=${check4ADtmp//[[:space:]]/}
              echo "Found AD: "$check4AD
              check4ADaccttmp=`dsconfigad -show | grep "Computer Account" | sed 's/Computer Account//' | sed 's/=//'`
              check4ADacct=${check4ADaccttmp//[[:space:]]/}
              echo "Found AD-Account: "$check4ADacct
    else
              check4AD=""
              check4ADacct=""
              echo "No AD-Account found"
    fi
    osversionlong=`sw_vers -productVersion`
    osvers=${osversionlong:3:1}
    #Time Sync
    #Restart ntpdate
    StartService ()
    if [ "${TIMESYNC:=-YES-}" = "-YES-" ] && ! GetPID ntpd > /dev/null; then
              CheckForNetwork
    if [ -f /var/run/NetworkTime.StartupItem -o "${NETWORKUP}" = "-NO-" ]; then exit; fi
              touch /var/run/NetworkTime.StartupItem
              echo "Starting network time synchronization"
    # Synchronize our clock to the network’s time,
    # then fire off ntpd to keep the clock in sync.
              ntpdate -bvs
              ntpd -f /var/run/ntp.drift -p /var/run/ntpd.pid
    fi
    echo ""
    echo ""
    sleep 5
    #### Removing any existing directory bindings
    #Clear OD Computer Account and delete entry from Computer group
    if dscl localhost -list /LDAPv3 | grep . > /dev/null
    then
              echo "This computer is bound to the following Open Directory Services:"
              dscl localhost -list /LDAPv3
              echo "With the Search Path entries:"
              dscl /Search -read / CSPSearchPath | grep /LDAP
              sleep 5
              if [ "${check4ODacct}" == "${computerid}" ]
              then
                        echo "This machine already has a computer account on $oddomain."
                        # Set the GUID
                        GUID="$(dscl /LDAPv3/$oddomain -read /Computers/${computerid} GeneratedUID | awk '{ print $2 }')"
                        echo "Found GUID: "$GUID
                        if [ "$oldComputerGroup" != "" ] && [ "$check4ODgroupMembership" != "" ]
                        then
                                  echo "Removing entry from group $oldComputerGroup"
                                  dscl -u "${odAdmin}" -P "${odPassword}" /LDAPv3/"$check4OD" -delete /ComputerGroups/"$oldComputerGroup" GroupMembership "${computerid}"
                                  dscl -u "${odAdmin}" -P "${odPassword}" /LDAPv3/"$check4OD" -delete /ComputerGroups/"$oldComputerGroup" GroupMembers "${GUID}"
                                  dscl -u "${odAdmin}" -P "${odPassword}" /LDAPv3/"$check4OD" -delete /ComputerLists/"$oldComputerGroup" Computers "${computerid}"
                        fi
                        echo "Removing Computer entry $computerid in OD"
                        dscl -u "${odAdmin}" -P "${odPassword}" /LDAPv3/"$check4OD" -delete /Computers/"${computerid}"
              fi
              #List existing Directories
              echo "Removing OD-Binding to "$check4OD
              dsconfigldap -r "$check4OD"
              echo "Removing Search Path entries"
              dscl /Search -delete / CSPSearchPath /LDAPv3/"$check4OD"
              dscl /Search/Contacts -delete / CSPSearchPath /LDAPv3/"$check4OD"
              dscl /Search -delete / CSPSearchPath /LDAPv3/"$check4OD"
              sleep 5
    else
              echo "No LDAP or OD Binding present.";
    fi
    echo ""
    # Check a second time in order to delete any remaining LDAP-Bindings
    echo "Scanning for further LDAP servers"
    if dscl localhost -list /LDAPv3 | grep . > /dev/null
    then
              echo "Found:"
              dscl localhost -list /LDAPv3
              echo "Removing OD-Binding to "$check4ODtmp
              dsconfigldap -r "$check4ODtmp"
              dscl /Search -delete / CSPSearchPath /LDAPv3/"$check4ODtmp"
              dscl /Search/Contacts -delete / CSPSearchPath /LDAPv3/"$check4ODtmp"
              dscl /Search -delete / CSPSearchPath /LDAPv3/"$check4ODtmp"
              sleep 5
    else
              echo "No further LDAP or OD Binding present."
    fi
    echo ""
    echo ""
    #Remove the Active Directory binding
    if [ "$check4AD" != "" ]
    then
              echo "This computer is bound to the following Active Directory Services:"
              dscl localhost -list "/Active Directory"
              echo "With the Search Path entries:"
              dscl /Search -read / CSPSearchPath | grep /Active
              sleep 5
              echo "Removing any existing AD-Binding to "$check4AD
        dsconfigad -f -remove -username "$udn" -password "$password"
        echo "Removing Search Path entries"
              if [ "$preferred" != "-nopreferred" ]
              then
                        dscl /Search -delete / CSPSearchPath /Active Directory/"$domainname"
                        dscl /Search/Contacts -delete / CSPSearchPath /Active Directory/"$domainname"
                        dscl /Search -delete / CSPSearchPath /Active Directory/"$domainname"
              fi
              dscl /Search -delete / CSPSearchPath "/Active Directory/$domainname/All Domains"
              dscl /Search/Contacts -delete / CSPSearchPath "/Active Directory/$domainname/All Domains"
    #remove search path entries from 10.6
        if dscl /Search -read / CSPSearchPath | grep /Active > /dev/null
        then
            dscl /Search -delete / CSPSearchPath "/Active Directory/$domainname/$domain"
            dscl /Search/Contacts -delete / CSPSearchPath "/Active Directory/$domainname/$domain"
        fi
              sleep 5
    else
              echo "No Active Directory Binding present."
    fi
    echo ""
    #Remove Existing Directory Services Config
    echo "Removing existing DS Config"
    if [ -d "/Library/Preferences/edu.mit.Kerberos" ]
    then
              rm -R /Library/Preferences/edu.mit.Kerberos
    fi
    if [ -d "/etc/krb5.keytab" ]
    then
              rm -R /etc/krb5.keytab
    fi
    # Clean up the DirectoryService configuration files
    rm -Rfv /Library/Preferences/DirectoryService/*
    #OD
    echo ""
    echo ""
    echo "Binding to OD-Damin "$oddomain
    sleep 5
    dsconfigldap -v -a "$oddomain" -n "$oddomain" -c "$computerid"
    echo "Killing opendirectoryd"
    killall opendirectoryd
    sleep 5
    echo "Adding computer account $computerid to /LDAPv3/${oddomain} on $oddomain"
    dscl -u "${odAdmin}" -P "${odPassword}" /LDAPv3/"$oddomain" -create /Computers/"$computerid" ENetAddress "$nicAddress"
    dscl -u "${odAdmin}" -P "${odPassword}" /LDAPv3/"$oddomain" -merge /Computers/"$computerid" RealName "$computerid"
    # Set the GUID
    GUID="$(dscl /LDAPv3/$oddomain -read /Computers/${computerid} GeneratedUID | awk '{ print $2 }')"
    # Add computer to ComputerList and ComputerGroup
    if [ $computerGroup != "" ]
    then
              echo "Adding computer $computerid to OD group $computerGroup on $oddomain"
              dscl -u "${odAdmin}" -P "${odPassword}" /LDAPv3/"$oddomain" -merge /ComputerLists/"$computerGroup" apple-computers "$computerid"
              dscl -u "${odAdmin}" -P "${odPassword}" /LDAPv3/"$oddomain" -merge /ComputerGroups/"$computerGroup" apple-group-memberguid "${GUID}"
              dscl -u "${odAdmin}" -P "${odPassword}" /LDAPv3/"$oddomain" -merge /ComputerGroups/"$computerGroup" memberUid "$computerid"
    fi
    echo "Finished OD Binding."
    sleep 5 # Give DS a chance to catch up
    echo ""
    echo ""
    echo "Performing the AD Binding"
    #AD
    # Activate the AD plugin
    defaults write /Library/Preferences/DirectoryService/DirectoryService "Active Directory" "Active"
    plutil -convert xml1 /Library/Preferences/DirectoryService/DirectoryService.plist
    #Use the existing AD-Computername or generate a new one
    computeridtmp="default"
    if [ "$check4ADacct" == "" ]
    then
              LEN=$(echo ${#adcomputerid})
              if [ $LEN -lt 15 ]; then
                      echo "ComputerID "$adcomputerid " has 15 characters or less and is therefore suitable for AD-Binding. It is $adcomputerid"
                      computeridtmp=$adcomputerid
              else
                      echo "ComputerID "$adcomputerid " has 16 or more characters and needs to be modified for AD-Binding."
                        echo "Removing any -"
                      computeridtmp=${adcomputerid//-/}
                                  LEN=$(echo ${#computeridtmp})
                                  if [ $LEN -lt 15 ]; then
                                            echo "ComputerID "$computeridtmp" has now 15 characters or less and is therefore suitable for AD-Binding."
                                  else
                                            echo "Only using the last 15 characters of the Computer name to be able to bind to AD."
                                            computeridtmp=${computeridtmp:(-15)}
                                  fi
                      echo "Cropped Computername to "$computeridtmp
              fi
    else
        computeridtmp=${check4ADacct//$/}
        echo "Found existing AD Account previously, attempting to recreate in the OU: "$computeridtmp
    fi
    echo ""
    # Bind to AD
    echo "Binding to AD-Domain "$domain" with computerid "$computeridtmp
    dsconfigad -f -add "$domain" -username "$udn" -password "$password" -ou "$ou" -computer "$computeridtmp"
    echo ""
    echo "Setting the Advanced AD Plugin options"
    # Configure advanced AD plugin options
    if [ "$admingroups" = "" ]
    then
              dsconfigad -nogroups
    else
              dsconfigad -groups "$admingroups"
    fi
    dsconfigad -alldomains "$alldomains"
    dsconfigad -localhome "$localhome"
    dsconfigad -protocol "$protocol"
    dsconfigad -mobile "$mobile"
    dsconfigad -mobileconfirm "$mobileconfirm"
    dsconfigad -useuncpath "$useuncpath"
    dsconfigad -shell "$user_shell"
    dsconfigad "$preferred"
    dsconfigad -packetsign "$packetsign" -packetencrypt "$packetencrypt" -passinterval "$passinterval"
    dsconfigad -namespace "$namespace"
    sleep 5
    echo ""
    echo ""
    # Add the OD & AD node to the search path
    if [ "$alldomains" = "enable" ]
    then
              csp="/Active Directory/$domainname/All Domains"
    else
              csp="/Active Directory/$domainname"
    fi
    echo "Finished AD Binding."
    echo "Adding Domain /LDAPv3/"$oddomain" and "$csp" to Search Path"
    dscl /Search -create / SearchPolicy CSPSearchPath
    dscl /Search/Contacts -create / SearchPolicy CSPSearchPath
    echo "Adding OD.."
    dscl /Search -append / CSPSearchPath /LDAPv3/"$oddomain"
    dscl /Search/Contacts -append / CSPSearchPath /LDAPv3/"$oddomain"
    echo "Adding AD.."
    #Adding all Domains first to improve reliability under 10.7
    if [ "$alldomains" != "enable" ]
    then
        cspadall="/Active Directory/$domainname/All Domains"
        dscl /Search/Contacts -append / CSPSearchPath "$cspadall"
        dscl /Search -append / CSPSearchPath "$cspadall"
    fi
    dscl /Search/Contacts -append / CSPSearchPath "$csp"
    dscl /Search -append / CSPSearchPath "$csp"
    echo "Finished Updating Search Paths."
    echo ""
    echo ""
    # Restart DirectoryService (necessary to reload AD plugin activation settings)
    killall opendirectoryd
    # Destroy the login hook (or change it)
    if [ "${newLoginHook}" == "" ]
    then
              defaults delete /var/root/Library/Preferences/com.apple.loginwindow LoginHook
    else
              defaults write /var/root/Library/Preferences/com.apple.loginwindow LoginHook $newLoginHook
    fi
    sleep 5
    # Customizing the login-Window
    #defaults write /Library/Preferences/com.apple.loginwindow AdminHostInfo DSStatus
    #defaults write /Library/Preferences/com.apple.loginwindow showInputMenu -bool TRUE
    #defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME -bool TRUE
    # This works in a pinch if the above code does not
    #defaults write /Library/Preferences/DirectoryService/SearchNodeConfig "Search Node Custom Path Array" -array "/Active Directory/All Domains"
    #defaults write /Library/Preferences/DirectoryService/SearchNodeConfig "Search Policy" -int 3
    #plutil -convert xml1 /Library/Preferences/DirectoryService/SearchNodeConfig.plist
    #killall opendirectoryd
    # Disable autologin
    defaults delete /Library/Preferences/com.apple.loginwindow autoLoginUser
    srm /etc/kcpassword
    echo ""
    echo ""
    echo ""
    echo "Now bound to OD Domain:"
    dscl localhost -list /LDAPv3
    echo "With Search Path entries:"
    dscl /Search -read / CSPSearchPath | grep /LDAP
    echo "Now bound to AD Domain:"
    dscl localhost -list "/Active Directory"
    echo "With Search Path entries:"
    dscl /Search -read / CSPSearchPath | grep /Active
    exit 0                    ## Success
    exit 1                    ## Failure
    Any inputs, questions and improvement suggestions are, of course, most welcome!
    Cheers
    See

    Hi everyone
    I'm reposting this in the right thread. I've written a Directory Binding Script for 10.6 and ported it now to 10.7 as among the things that have changed in the upgraded version is a refurbished directory binding enviroment.
    The original thread can be found here: https://discussions.apple.com/thread/3090068. The script is applicable for clients as well and simplifies the binding process considerably.
    Be aware that the reformatted script here contains some faulty line breaks. So you'll have to correct them in a proper text editor.
    #!/bin/sh
    #Uncomment the following line to abort the script on errors
    #trap exit ERR
    ## Script to automate OD and AD Binding of Mac OS X 10.7 Servers
    ## Script written by Marc Horat, URZ Basel, 11.6.2010
    ## Updated: 12.08.2011
    # With the use of the following sources as inspiration:
    # http://www.howtomac.co.uk/?p=247
    #Created by Ross Hamilton
    #Clock restart / Remove existing settings
    #Join to Open Directory and Active Directory
    # Bombich's AD-Bind Script:
    # This script binds to AD and configures advanced options of the AD plugin
    # As this scripts contains a password, be sure to take appropriate security
    # precautions
    # A good way to run this script is to set it as a login hook on your master machine
    # Because it only needs to be run once, the last thing this script does is to delete
    # itself. If you have another login script that you typically run, include the
    # script on your master machine, and indicate its path in the "newLoginScript"
    # variable.
    # If running this as a one-time login hook to bind to AD after imaging,
    # be sure to enable auto-login (for any local user) before creating your master image
    #################CONFIGURATION##########################
    #OD
    # These variables need to be configured for your env
    odAdmin="YOURODADMIN" #enter your OD admin name between the quotes
    odPassword="YOURODPW"  # Enter your OD admin password between the quotes
    oddomain="YOURODDOMAIN" # FQDN of your OD domain
    computerGroup="YOURNEWODCOMPGROUP"  # Add appropriate computer group you want machines to be added to, case sensitive
    oldComputerGroup="YOUROLDODCOMPGROUP" # If the Computer is in a Group already
    #AD
    # Standard parameters
    domain="YOURADDOMAIN"                              # fully qualified DNS name of Active Directory Domain
    domainname="YOURADDOMAINNAME"                    #Name of the Domain as specified in the search paths
    udn="YOURADADMIN"                              # username of a privileged network user
    password="YOURADPW"                                                  # password of a privileged network user
    ou="OU=YOUR,OU=OU,OU=URZ,OU=IN,DC=YOUR,DC=AD,DC=DOMAIN"                    # Distinguished name of container for the computer E.G. OU=Macs,OU=Computers,DC=AD,DC=DOMAIN,DC=CH
    # Advanced options AD Plugin
    alldomains="disable"                              # 'enable' or 'disable' automatic multi-domain authentication
    localhome="disable"                              # 'enable' or 'disable' force home directory to local drive
    protocol="smb"                                        # 'afp', 'smb' or 'nfs' (since 10.7) change how home is mounted from server
    mobile="enable"                              # 'enable' or 'disable' mobile account support for offline logon
    mobileconfirm="enable"                    # 'enable' or 'disable' warn the user that a mobile acct will be created
    useuncpath="enable"                              # 'enable' or 'disable' use AD SMBHome attribute to determine the home dir
    user_shell="/bin/bash"                    # e.g., /bin/bash or "none"
    preferred="-preferred $domain"          # Use the specified server for all Directory lookups and authentication
    # (e.g. "-nopreferred" or "-preferred ad.server.edu")
    admingroups="$domainname\YOURADADMINGROUP" # These comma-separated AD groups may administer the machine (e.g. "" or "APPLE\macadmins")
    packetsign="allow"                              # allow | disable | require
    packetencrypt="allow"                    # allow | disable | require
    passinterval="14"                              # number of days
    namespace="domain"                              # forest | domain
    # Login hook setting -- specify the path to a login hook that you want to run instead of this script
    newLoginHook=""                    # e.g., "/Library/Management/login.sh"
    ################################# End of configuration
    ############ Begin of Script
    # Host-specific parameters
    # computerid should be set dynamically, this value must be machine-specific
    # This value may be restricted to 19 characters! The only error you'll receive upon entering
    # an invalid computer id is to the effect of not having appropriate privileges to perform the requested operation
    #computerid=`/sbin/ifconfig en0 | awk '/ether/ { gsub(":", ""); print $2 }'` # MAC Address
    #computerid=`hostname | sed 's/.unibas.ch//'`
    #computerid=`/usr/sbin/scutil --get LocalHostName | cut -c 1-19` # Assure that this will produce unique names!
    #computerid=`/usr/sbin/scutil --get LocalHostName`
    computerid=`scutil --get ComputerName`
    adcomputerid=`echo "$computerid" | tr [:lower:] [:upper:]`
    # These variables probably don't need to be changed
    # Determing if any directory binding exists
    nicAddress=`ifconfig en0 | grep ether | awk '{print $2}'`
    if dscl localhost -list /LDAPv3 | grep . > /dev/null
    then
              check4ODtmp=`dscl localhost -list /LDAPv3 | grep -n 1 | sed 's/1://' | sed 's/2://'`
              check4OD=${check4ODtmp//[[:space:]]/}
              echo "Found LDAP: "$check4ODtmp
              check4ODaccttmp=`dscl /LDAPv3/"$check4OD" -read Computers/"$computerid" RealName | cut -c 11-`
              check4ODacct=${check4ODaccttmp//[[:space:]]/}
              echo "Found LDAP-Computer-Account: "$check4ODacct
    else
              check4OD=""
              check4ODacct=""
              echo "No bound LDAP Server found"
    fi
    if [ $oldComputerGroup != "" ] && dscl localhost -list /LDAPv3 | grep . > /dev/null
    then
              check4ODgroupMembershiptmp=`dscl /LDAPv3/"$check4OD" -read ComputerGroups/"$oldComputerGroup" | grep "$computerid"`
              check4ODgroupMembership=$check4ODgroupMembershiptmp
              echo "LDAP Group Membership in Group: "$oldComputerGroup
    else
              check4ODgroupMembership=""
              echo "No LDAP Group Membership defined or not bound to a server"
    fi
    if dscl localhost -list "/Active Directory" | grep $domainname > /dev/null
    then
              check4ADtmp=`dsconfigad -show | grep "Active Directory Domain" | sed 's/Active Directory Domain//'  | sed 's/=//'`
              check4AD=${check4ADtmp//[[:space:]]/}
              echo "Found AD: "$check4AD
              check4ADaccttmp=`dsconfigad -show | grep "Computer Account" | sed 's/Computer Account//' | sed 's/=//'`
              check4ADacct=${check4ADaccttmp//[[:space:]]/}
              echo "Found AD-Account: "$check4ADacct
    else
              check4AD=""
              check4ADacct=""
              echo "No AD-Account found"
    fi
    osversionlong=`sw_vers -productVersion`
    osvers=${osversionlong:3:1}
    #Time Sync
    #Restart ntpdate
    StartService ()
    if [ "${TIMESYNC:=-YES-}" = "-YES-" ] && ! GetPID ntpd > /dev/null; then
              CheckForNetwork
    if [ -f /var/run/NetworkTime.StartupItem -o "${NETWORKUP}" = "-NO-" ]; then exit; fi
              touch /var/run/NetworkTime.StartupItem
              echo "Starting network time synchronization"
    # Synchronize our clock to the network’s time,
    # then fire off ntpd to keep the clock in sync.
              ntpdate -bvs
              ntpd -f /var/run/ntp.drift -p /var/run/ntpd.pid
    fi
    echo ""
    echo ""
    sleep 5
    #### Removing any existing directory bindings
    #Clear OD Computer Account and delete entry from Computer group
    if dscl localhost -list /LDAPv3 | grep . > /dev/null
    then
              echo "This computer is bound to the following Open Directory Services:"
              dscl localhost -list /LDAPv3
              echo "With the Search Path entries:"
              dscl /Search -read / CSPSearchPath | grep /LDAP
              sleep 5
              if [ "${check4ODacct}" == "${computerid}" ]
              then
                        echo "This machine already has a computer account on $oddomain."
                        # Set the GUID
                        GUID="$(dscl /LDAPv3/$oddomain -read /Computers/${computerid} GeneratedUID | awk '{ print $2 }')"
                        echo "Found GUID: "$GUID
                        if [ "$oldComputerGroup" != "" ] && [ "$check4ODgroupMembership" != "" ]
                        then
                                  echo "Removing entry from group $oldComputerGroup"
                                  dscl -u "${odAdmin}" -P "${odPassword}" /LDAPv3/"$check4OD" -delete /ComputerGroups/"$oldComputerGroup" GroupMembership "${computerid}"
                                  dscl -u "${odAdmin}" -P "${odPassword}" /LDAPv3/"$check4OD" -delete /ComputerGroups/"$oldComputerGroup" GroupMembers "${GUID}"
                                  dscl -u "${odAdmin}" -P "${odPassword}" /LDAPv3/"$check4OD" -delete /ComputerLists/"$oldComputerGroup" Computers "${computerid}"
                        fi
                        echo "Removing Computer entry $computerid in OD"
                        dscl -u "${odAdmin}" -P "${odPassword}" /LDAPv3/"$check4OD" -delete /Computers/"${computerid}"
              fi
              #List existing Directories
              echo "Removing OD-Binding to "$check4OD
              dsconfigldap -r "$check4OD"
              echo "Removing Search Path entries"
              dscl /Search -delete / CSPSearchPath /LDAPv3/"$check4OD"
              dscl /Search/Contacts -delete / CSPSearchPath /LDAPv3/"$check4OD"
              dscl /Search -delete / CSPSearchPath /LDAPv3/"$check4OD"
              sleep 5
    else
              echo "No LDAP or OD Binding present.";
    fi
    echo ""
    # Check a second time in order to delete any remaining LDAP-Bindings
    echo "Scanning for further LDAP servers"
    if dscl localhost -list /LDAPv3 | grep . > /dev/null
    then
              echo "Found:"
              dscl localhost -list /LDAPv3
              echo "Removing OD-Binding to "$check4ODtmp
              dsconfigldap -r "$check4ODtmp"
              dscl /Search -delete / CSPSearchPath /LDAPv3/"$check4ODtmp"
              dscl /Search/Contacts -delete / CSPSearchPath /LDAPv3/"$check4ODtmp"
              dscl /Search -delete / CSPSearchPath /LDAPv3/"$check4ODtmp"
              sleep 5
    else
              echo "No further LDAP or OD Binding present."
    fi
    echo ""
    echo ""
    #Remove the Active Directory binding
    if [ "$check4AD" != "" ]
    then
              echo "This computer is bound to the following Active Directory Services:"
              dscl localhost -list "/Active Directory"
              echo "With the Search Path entries:"
              dscl /Search -read / CSPSearchPath | grep /Active
              sleep 5
              echo "Removing any existing AD-Binding to "$check4AD
        dsconfigad -f -remove -username "$udn" -password "$password"
        echo "Removing Search Path entries"
              if [ "$preferred" != "-nopreferred" ]
              then
                        dscl /Search -delete / CSPSearchPath /Active Directory/"$domainname"
                        dscl /Search/Contacts -delete / CSPSearchPath /Active Directory/"$domainname"
                        dscl /Search -delete / CSPSearchPath /Active Directory/"$domainname"
              fi
              dscl /Search -delete / CSPSearchPath "/Active Directory/$domainname/All Domains"
              dscl /Search/Contacts -delete / CSPSearchPath "/Active Directory/$domainname/All Domains"
    #remove search path entries from 10.6
        if dscl /Search -read / CSPSearchPath | grep /Active > /dev/null
        then
            dscl /Search -delete / CSPSearchPath "/Active Directory/$domainname/$domain"
            dscl /Search/Contacts -delete / CSPSearchPath "/Active Directory/$domainname/$domain"
        fi
              sleep 5
    else
              echo "No Active Directory Binding present."
    fi
    echo ""
    #Remove Existing Directory Services Config
    echo "Removing existing DS Config"
    if [ -d "/Library/Preferences/edu.mit.Kerberos" ]
    then
              rm -R /Library/Preferences/edu.mit.Kerberos
    fi
    if [ -d "/etc/krb5.keytab" ]
    then
              rm -R /etc/krb5.keytab
    fi
    # Clean up the DirectoryService configuration files
    rm -Rfv /Library/Preferences/DirectoryService/*
    #OD
    echo ""
    echo ""
    echo "Binding to OD-Damin "$oddomain
    sleep 5
    dsconfigldap -v -a "$oddomain" -n "$oddomain" -c "$computerid"
    echo "Killing opendirectoryd"
    killall opendirectoryd
    sleep 5
    echo "Adding computer account $computerid to /LDAPv3/${oddomain} on $oddomain"
    dscl -u "${odAdmin}" -P "${odPassword}" /LDAPv3/"$oddomain" -create /Computers/"$computerid" ENetAddress "$nicAddress"
    dscl -u "${odAdmin}" -P "${odPassword}" /LDAPv3/"$oddomain" -merge /Computers/"$computerid" RealName "$computerid"
    # Set the GUID
    GUID="$(dscl /LDAPv3/$oddomain -read /Computers/${computerid} GeneratedUID | awk '{ print $2 }')"
    # Add computer to ComputerList and ComputerGroup
    if [ $computerGroup != "" ]
    then
              echo "Adding computer $computerid to OD group $computerGroup on $oddomain"
              dscl -u "${odAdmin}" -P "${odPassword}" /LDAPv3/"$oddomain" -merge /ComputerLists/"$computerGroup" apple-computers "$computerid"
              dscl -u "${odAdmin}" -P "${odPassword}" /LDAPv3/"$oddomain" -merge /ComputerGroups/"$computerGroup" apple-group-memberguid "${GUID}"
              dscl -u "${odAdmin}" -P "${odPassword}" /LDAPv3/"$oddomain" -merge /ComputerGroups/"$computerGroup" memberUid "$computerid"
    fi
    echo "Finished OD Binding."
    sleep 5 # Give DS a chance to catch up
    echo ""
    echo ""
    echo "Performing the AD Binding"
    #AD
    # Activate the AD plugin
    defaults write /Library/Preferences/DirectoryService/DirectoryService "Active Directory" "Active"
    plutil -convert xml1 /Library/Preferences/DirectoryService/DirectoryService.plist
    #Use the existing AD-Computername or generate a new one
    computeridtmp="default"
    if [ "$check4ADacct" == "" ]
    then
              LEN=$(echo ${#adcomputerid})
              if [ $LEN -lt 15 ]; then
                      echo "ComputerID "$adcomputerid " has 15 characters or less and is therefore suitable for AD-Binding. It is $adcomputerid"
                      computeridtmp=$adcomputerid
              else
                      echo "ComputerID "$adcomputerid " has 16 or more characters and needs to be modified for AD-Binding."
                        echo "Removing any -"
                      computeridtmp=${adcomputerid//-/}
                                  LEN=$(echo ${#computeridtmp})
                                  if [ $LEN -lt 15 ]; then
                                            echo "ComputerID "$computeridtmp" has now 15 characters or less and is therefore suitable for AD-Binding."
                                  else
                                            echo "Only using the last 15 characters of the Computer name to be able to bind to AD."
                                            computeridtmp=${computeridtmp:(-15)}
                                  fi
                      echo "Cropped Computername to "$computeridtmp
              fi
    else
        computeridtmp=${check4ADacct//$/}
        echo "Found existing AD Account previously, attempting to recreate in the OU: "$computeridtmp
    fi
    echo ""
    # Bind to AD
    echo "Binding to AD-Domain "$domain" with computerid "$computeridtmp
    dsconfigad -f -add "$domain" -username "$udn" -password "$password" -ou "$ou" -computer "$computeridtmp"
    echo ""
    echo "Setting the Advanced AD Plugin options"
    # Configure advanced AD plugin options
    if [ "$admingroups" = "" ]
    then
              dsconfigad -nogroups
    else
              dsconfigad -groups "$admingroups"
    fi
    dsconfigad -alldomains "$alldomains"
    dsconfigad -localhome "$localhome"
    dsconfigad -protocol "$protocol"
    dsconfigad -mobile "$mobile"
    dsconfigad -mobileconfirm "$mobileconfirm"
    dsconfigad -useuncpath "$useuncpath"
    dsconfigad -shell "$user_shell"
    dsconfigad "$preferred"
    dsconfigad -packetsign "$packetsign" -packetencrypt "$packetencrypt" -passinterval "$passinterval"
    dsconfigad -namespace "$namespace"
    sleep 5
    echo ""
    echo ""
    # Add the OD & AD node to the search path
    if [ "$alldomains" = "enable" ]
    then
              csp="/Active Directory/$domainname/All Domains"
    else
              csp="/Active Directory/$domainname"
    fi
    echo "Finished AD Binding."
    echo "Adding Domain /LDAPv3/"$oddomain" and "$csp" to Search Path"
    dscl /Search -create / SearchPolicy CSPSearchPath
    dscl /Search/Contacts -create / SearchPolicy CSPSearchPath
    echo "Adding OD.."
    dscl /Search -append / CSPSearchPath /LDAPv3/"$oddomain"
    dscl /Search/Contacts -append / CSPSearchPath /LDAPv3/"$oddomain"
    echo "Adding AD.."
    #Adding all Domains first to improve reliability under 10.7
    if [ "$alldomains" != "enable" ]
    then
        cspadall="/Active Directory/$domainname/All Domains"
        dscl /Search/Contacts -append / CSPSearchPath "$cspadall"
        dscl /Search -append / CSPSearchPath "$cspadall"
    fi
    dscl /Search/Contacts -append / CSPSearchPath "$csp"
    dscl /Search -append / CSPSearchPath "$csp"
    echo "Finished Updating Search Paths."
    echo ""
    echo ""
    # Restart DirectoryService (necessary to reload AD plugin activation settings)
    killall opendirectoryd
    # Destroy the login hook (or change it)
    if [ "${newLoginHook}" == "" ]
    then
              defaults delete /var/root/Library/Preferences/com.apple.loginwindow LoginHook
    else
              defaults write /var/root/Library/Preferences/com.apple.loginwindow LoginHook $newLoginHook
    fi
    sleep 5
    # Customizing the login-Window
    #defaults write /Library/Preferences/com.apple.loginwindow AdminHostInfo DSStatus
    #defaults write /Library/Preferences/com.apple.loginwindow showInputMenu -bool TRUE
    #defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME -bool TRUE
    # This works in a pinch if the above code does not
    #defaults write /Library/Preferences/DirectoryService/SearchNodeConfig "Search Node Custom Path Array" -array "/Active Directory/All Domains"
    #defaults write /Library/Preferences/DirectoryService/SearchNodeConfig "Search Policy" -int 3
    #plutil -convert xml1 /Library/Preferences/DirectoryService/SearchNodeConfig.plist
    #killall opendirectoryd
    # Disable autologin
    defaults delete /Library/Preferences/com.apple.loginwindow autoLoginUser
    srm /etc/kcpassword
    echo ""
    echo ""
    echo ""
    echo "Now bound to OD Domain:"
    dscl localhost -list /LDAPv3
    echo "With Search Path entries:"
    dscl /Search -read / CSPSearchPath | grep /LDAP
    echo "Now bound to AD Domain:"
    dscl localhost -list "/Active Directory"
    echo "With Search Path entries:"
    dscl /Search -read / CSPSearchPath | grep /Active
    exit 0                    ## Success
    exit 1                    ## Failure
    Any inputs, questions and improvement suggestions are, of course, most welcome!
    Cheers
    See

  • Screen Sharing and Open Directory (10.8)

    I'm trying to allow Open Directory users to login over Screen Sharing to my Mountain Lion servers. I have tried the solution on the page linked below and it isn't working. Maybe I'm missing something:
    https://discussions.apple.com/thread/2329389?start=0&tstart=0

    From the menu bar on the Screen Sharing server, select
     ▹ System Preferences... ▹ Users & Groups ▹ Login Options
    and check the box marked
    Allow network users to log in at the login window
    If there's a closed padlock icon in the lower left corner of the preference pane, you may need to click it to unlock the settings. Enter your login password when prompted.
    Note that this option is only available when the server is bound to a network directory server.

  • Adobe Premiere CS5 and Open Directory users - Premiere fails to start

    We have several class rooms with desktops that are configured for Open Directory.
    When a student logs in he's actually working in his home folder on the server and his user is also managed by the server.
    This works fine for all the applications that we're using except for Adobe Premiere CS5 and Adobe After Effects CS5. Whenever a student tries to start one of them the application will hang and only a force quit can stop it. It is impossible to start these applications.
    However, it is possible to use Premiere and After Effects using a local standard on the desktops. But I don't want to go that route. I want the managed users to be able to use those applications.
    Has anyone found a solution for this?
    Are you able to use this applications in a same environment?
    I've played a lot with the permissions on the library, system and Adobe folders, but the problem doesn't seem to be related to them.
    Setup:
    AFP Server: Xserve intel running Mac OS X Server 10.6.5
    OD Servers: Mac Mini Servers running Mac OS X Server 10.6.5
    Clients: iMacs intel running Mac OS X 10.6.6

    Safe Mode disables a lot of drivers and services, like networking.  That would seem to indicate that something is running on your system that interferes somehow.
    I'm just not sure how you'd go about tracking that down.

  • Initial setup and Open Directory problem

    Hi,
    I'm new to the MAC OS X server system and trying to get one up and running on a G5.
    Unfortunately I can’t get the configuration up and running, and I have the feeling it already goes wrong during the initial setup. I was hoping you guys could help me out.
    The purpose of the server is providing network user accounts (DNS + Open Dir.) and providing sharepoints.
    I go trough following steps while installing from scratch:
    - Install MAC OS X and run the Server install package from the OS X Server DVD (as you know, OSX Server is'n installing directly on G5)
    - Choose keyboard layout, enter license and create an account "admin"
    - Define static IP "192.168.1.1", add this IP as the first in the list of DNS Servers, add "company.local" in the search domain
    - Install as a standalone server (so I can configure dns & other network services after basic setup)
    - Check "network time server" (so time will be synced for Kerberos)
    - Proceed, install and reboot
    OSX Server seems to be installed fine and I can login with "admin". Next step I take is configuring DNS.
    - create a zone "companyname.local.", use my IP as server address (192.168.1.1) and use "server" as the server name.
    - add a machine record for DNS-testing (called "gateway", with the IP of "192.168.1.254")
    Start the DNS service and reboot
    - perform an nslookup with a second MAC with 192.168.1.1 as the nameserver and verify that DNS is resolving correctly.
    DNS seems to be working fine, now I would like to get the Open Directory service to work:
    - change "Standalone" to "Open directory master" in the server configuration panel
    - provide a password for the directory admin
    - use "SERVER.COMPANYNAME.LOCAL" as kerberos realm, and "dc=server,dc=companyname,dc=local" as the search base
    - Save & start the service and perform a reboot to be sure all the new settings are in use
    Unfortunately after this install open directory doesn't seem to work fine and also Kerberos doesn't start.
    Concerning Kerberos: I get following output in the "Slapconfig log" Open Directory log file:
    Starting LDAP server (slapd)
    command: /usr/bin/ldapadd -c -x -D uid=root,cn=users,dc=maggie,dc=interesourcegroup,dc=local -w **
    Hostname server.companyname.local is from Rendezvous
    Skipping Kerberos configuration
    Sorry to bother you with the entire walkthrough of the installation, but I have the feeling that I'm missing something while performing the basic install or DNS setup .. ?
    Regards,
    Seppe
    G5 Mac OS X (10.4.6) /

    We currently have a static IP and a public dns hosted
    by MediaTemple, so I think I can create a subdomain
    on MediaTemple and link it to our fixed IP address
    ("private.companyname.com" >> static ip) instead of
    using dydns.. ?
    Of course.
    I suppose I can then use "private.companyname.com" as
    the zone name on my G5 server and use
    "server.private.companyname.com" for my local DNS?
    Sounds reasonable.
    If using this DNS, what will be the Kerberos REALM
    and Search Base? And do I still need to specify
    private.companyname.com as the Search Base in the
    Network Settings of the clients and server?
    Well, REALM and LDAP Search Base can set to whatever you like. On the other hand I've seen tools contacting kerberos servers break when the REALM is not part of the kerberos server fqdn.
    So I'd stick with the usual recomandations and set kerberos REALM to your domain name (if there is no other kerberos server alread running and using this).
    For the LDAP search domain I'd also follow the road of using domain name space as search base.
    When dns will finally be setup properly, these setting will be autopopulated for you in the GUI. So test, test, test you dns with
    host $ip and host $fqdn and then go on promoting "Standalone Server" to "Open Directory Master".
    HTH
    -Ralph

  • OS X Server and Open Directory

    I am trying to use a Mac Mini as an Open Directory domain, however it fails on the Open Directory Setup.
    The exact error from the log is a below:
        Server[308]: An error occurred while configuring webiken as a directory server:
              Error Domain=XSActionErrorDomain Code=78 "Server returned a non-zero status code" UserInfo=0x7fb826114140 {NSLocalizedDescription=Server returned a non-zero status code}
    Any ideas to what this may be?
    FYI: I think this is due to my network configuration.  I connect to the internet via Wifi and I have a switch for LAN traffic, but there's no way to give the switch internet access.  Is there anyway I can limit the LAN traffic to only use ethernet (en0) and internet traffic to only use WiFi?

    Hi,
    Not sure this will help, but OSX uses the top Interface for Internet...
    10.5.x/10.6.x/10.7.x instructions...
    System Preferences>Network, click on the little gear at the bottom next to the + & - icons, (unlock lock first if locked), choose Set Service Order.
    The interface that connects to the Internet should be dragged to the top of the list.

  • SuPhp and Open Directory Administration

    Hello,
    I am trying to install suPhp and mod_suphp working on OS X Server 10.6.7
    Everything seemed to compile and install just fine, but am getting an error in the apache log:
    terminate called after throwing an instance of 'suPHP::LookupException'
    My guess is that suPhp cannot find the user ID in /etc/passwd because OS X Server is using Open Directory Administration
    My searches have not turned up anything.
    Thank you!
    ~ Jeremy

    Hello,
    I am trying to install suPhp and mod_suphp working on OS X Server 10.6.7
    Everything seemed to compile and install just fine, but am getting an error in the apache log:
    terminate called after throwing an instance of 'suPHP::LookupException'
    My guess is that suPhp cannot find the user ID in /etc/passwd because OS X Server is using Open Directory Administration
    My searches have not turned up anything.
    Thank you!
    ~ Jeremy

  • Windows users and open directory

    Since Server for 10.7 I've found I've had to create Windows users as local users rather than local network users to give them access to shares via SMB. Is this correct, or am I missing something? I was aware that you can't bind a Windows PC to Open Directory, but can it not authenticate at all through OD?
    thanks

    If I understand your question, then you are looking for a tool like Centrify.  This will put all management on one platform.

  • Active Directory and Open Directory not working

    I am experiencing an issue, or several issues that I can't figure out how to resolve.
    I have an Active Directory domain set up (running 2003 server R2) and it is humming along quite nicely.
    A few weeks ago I got a new XServe running 10.5.4. Booted it up, bound it to AD, and then set up and OD Master on it so that I could manage some new Macs that we have.
    The Macs are bound to both directories.
    The issue I have comes in when using Workgroup Manager, and trying to add AD user to OD groups. The groups drawer is open, but the little directory menu at the top of the drawer does not include the entry for Active Directory. I see Local, Search Policy, and /LDAPv3/127.0.0.1...
    If I try to pull down the directory menu above the user list, I see the following: Loca, Search Policy, Other..., /Active Directory/All Domains, and /LDAPv3/127.0.0.1.
    If I select /Active Directory/All Domains from that list I get the following error.
    +Unable to open the requested node.+
    +The node /Active Directory/All Domains couldn’t be opened because an unexpected error of type -14002 occurred.+
    I think these issues are related, but I can find no help on the first item (AD not showing up in the groups menu)
    and a search for the second item only reveals the following page form Apple, which means absolutely nothing to me.
    http://developer.apple.com/documentation/Networking/Reference/OpenDirectoryRef/Reference/reference.html
    The killer is that this all worked at one point. I had an Apple Tech out here and he helped me set up this 'Golden Triangle" method of authenticating against both directories. And it works... sort of... I can create groups in OD and add OD machine accounts to the group to enforce some settings. But I can't bring in AD users, cause I can't see the AD user list.
    I hear that this is supposed to work... I can't figure it out.
    Any help would be appreciated.
    Thanks for your time.
    Bill

    Hi
    Can you access Active Directory from the command line using dscl?
    In what order are the LDAP directories listed in Directory Utility on the Server?
    Is Kerberos running on the OD Master?
    If you issue klist from the command line on the server itself - what is the result?
    Or don't bother with any of the above and start again. You've nothing to lose anyway apart from some managed preferences which you can redo in little time. Scrub the configuration in the AD plug-in and demote to Standalone. Restart and go for an AD rebind. Make sure the edu.mit.Kerberos file is created in /Library/Preferences. Launch WGM and you should see AD Users and Groups this time, If you do go for promotion again. What you want to see in the OD Overview pane is everything running apart from Kerberos and the search base reflecting the FQDN of the OD Master. Make sure there is the loopback entry (127.0.0.1) in the LDAPv3 plug in. Finally make sure the OD Master lists itself first in the Directory Search Order.
    I'm assuming the Server is configured as Advanced and is updated to 10.5.4.
    Tony

  • Netboot, diskless clients, and Open Directory users?

    Hi, I've been reading through the System Image pdf & maybe it's me but a couple of things aren't clear.
    I want to set up diskless clients and allow users to log on to their network home folder using their OD login. Is this possible and where would be a good place to start with instructions on setup?
    thanks, Patrick

    Ok, I got it.
    But what if I want the OD user to have some configuration data on the local client?
    Let me explain that a bit better. The configuration I would like for my network and users is as follows: the server works only as an authentication server, I do not want roaming profiles or homes directory on the server; I just want the server to authenticate users when they log in to several client machines amongst the lan.
    For documents sharing, in fact, I much rather prefer using Dropbox, which allows my users to share on a WAN-instead-of-LAN basis.
    But a home local directory is needed for OD users to keep libraries, preferences files and so on.
    Back to the old Windows server (PDC) time, I used the server as a name server authentication only, still the client created a local profile for the user of the server.
    Does OD works this way too or am I missing something?
    Thank you.

  • OS 10.4 and Open Directory intergration

    Dear All,
    first of all, I would like to say Hello to all users!
    I have a MBPro with OS 10.4.10.
    As this is also my office computer, I need to integrate it into Corporate network.
    As I browse through network neighborhood, Finder displays 2030-2050 elements in the current domain (alphabetically). The whole network is around 3500 elements.
    Can I do anything about that.
    The second problem I have is actually the whole subject - printing.
    I have a XEROX DOC machine, connected to the network with IP address.
    Whatever I do or configure, I'm getting always "client-error-bad-request"
    I can ping the IP succesfully.
    When I want to connect to a windows 2000 shared printer, I get Error-50 or Error-43.
    Can anybody help me?
    I will supply any other details if necessary.
    Maartinez

    I still use Classic in 10.4.11 on a PPC Mac with all the current OS updates.
    10.5 drops support for Classic on all Macs. However, even if you lose Classic environment within OS X 10.5, should you upgrade, your G4 Tower still has the option to boot into OS 9, if your model is one of the earlier ones before FW800 was introduced. OS 9 and OS X can be installed on the same hard drive partition.
    Different versions of OS X can be installed on different partitions, so you could even have a bootable 10.4 system with Classic support and try out 10.5 on another drive/partition if you needed to run 10.5 for some reason.
    "Upgrading" the OS is always a consideration of your investment in all your apps, the hardware, and third-party devices (printer/scanner/camera/etc) and all those drivers. When you upgrade the OS sometimes you need to upgrade everything else, and often the more cost-effective solution is to keep the old machine running the old stuff, and get a new machine to run new stuff. Rather than upgrading an old machine to still support the old stuff but can't quite run all the new stuff very well if at all.
    640 MB RAM is really barely enough for doing any serious work in OS X, you should consider at least 1GB or max it out to 1.5GB or 2GB, whatever the limit is for that G4 tower model. The older RAM for those models is fairly cheap now.

  • RoundCube Webmail Authenticating against Open Directory on Mountain Lion 10.8.x

    Hello all,
    I've been battling this issue for over a month with no success. Here is what we got:
    Mac Mini Server running Mountain Lion Server 10.8.2 running Calendar, Contacts, Mail and Web services.
    With there being no webmail present I've gone thru the process of installing RoundCube.
    I'm using Postgres as the database.
    When I test the ability to login I get the following error messages in the console.app
    10/12/12 10:13:27.071 AM log[182]: auth: Error: od(andrew,::1): Authentication server failed to complete the requested operation.
    10/12/12 10:13:27.071 AM log[182]: auth: Error: od(andrew,::1): authentication failed for user=andrew, method=DIGEST-MD5
    The first line I find the most interesting but have had no success determinign exactly what it means.
    I'm using open directory to authenticate and it is working perfectly with every other service so I'm led to believe it's an issue between RoundCube and Open Directory.
    ANY help would be appreciated emmensely!

    Sorry about taking so long to get back on here working on this. I've switched over to MySQL. I had a hard time because mysql.sock was located under /tmp/ rather than /var/mysql/ but I fixed that by using the following command:
    sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock
    Then I reinstalled roundcube. Here is my main.inc.php file:
    <?php
    +-----------------------------------------------------------------------+
    | Main configuration file                                               |
    |                                                                       |
    | This file is part of the Roundcube Webmail client                     |
    | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
    |                                                                       |
    | Licensed under the GNU General Public License version 3 or            |
    | any later version with exceptions for skins & plugins.                |
    | See the README file for a full license statement.                     |
    |                                                                       |
    +-----------------------------------------------------------------------+
    $rcmail_config = array();
    // LOGGING/DEBUGGING
    // system error reporting: 1 = log; 2 = report (not implemented yet), 4 = show, 8 = trace
    $rcmail_config['debug_level'] = 1;
    // log driver:  'syslog' or 'file'.
    $rcmail_config['log_driver'] = 'file';
    // date format for log entries
    // (read http://php.net/manual/en/function.date.php for all format characters) 
    $rcmail_config['log_date_format'] = 'd-M-Y H:i:s O';
    // Syslog ident string to use, if using the 'syslog' log driver.
    $rcmail_config['syslog_id'] = 'roundcube';
    // Syslog facility to use, if using the 'syslog' log driver.
    // For possible values see installer or http://php.net/manual/en/function.openlog.php
    $rcmail_config['syslog_facility'] = LOG_USER;
    // Log sent messages to <log_dir>/sendmail or to syslog
    $rcmail_config['smtp_log'] = true;
    // Log successful logins to <log_dir>/userlogins or to syslog
    $rcmail_config['log_logins'] = false;
    // Log session authentication errors to <log_dir>/session or to syslog
    $rcmail_config['log_session'] = false;
    // Log SQL queries to <log_dir>/sql or to syslog
    $rcmail_config['sql_debug'] = false;
    // Log IMAP conversation to <log_dir>/imap or to syslog
    $rcmail_config['imap_debug'] = false;
    // Log LDAP conversation to <log_dir>/ldap or to syslog
    $rcmail_config['ldap_debug'] = false;
    // Log SMTP conversation to <log_dir>/smtp or to syslog
    $rcmail_config['smtp_debug'] = false;
    // IMAP
    // the mail host chosen to perform the log-in
    // leave blank to show a textbox at login, give a list of hosts
    // to display a pulldown menu or set one host as string.
    // To use SSL/TLS connection, enter hostname with prefix ssl:// or tls://
    // Supported replacement variables:
    // %n - http hostname ($_SERVER['SERVER_NAME'])
    // %d - domain (http hostname without the first part)
    // %s - domain name after the '@' from e-mail address provided at login screen
    // For example %n = mail.domain.tld, %d = domain.tld
    $rcmail_config['default_host'] = 'localhost';
    // TCP port used for IMAP connections
    $rcmail_config['default_port'] = 143;
    // IMAP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or empty to use
    // best server supported one)
    $rcmail_config['imap_auth_type'] = null;
    // If you know your imap's folder delimiter, you can specify it here.
    // Otherwise it will be determined automatically
    $rcmail_config['imap_delimiter'] = null;
    // If IMAP server doesn't support NAMESPACE extension, but you're
    // using shared folders or personal root folder is non-empty, you'll need to
    // set these options. All can be strings or arrays of strings.
    // Folders need to be ended with directory separator, e.g. "INBOX."
    // (special directory "~" is an exception to this rule)
    // These can be used also to overwrite server's namespaces
    $rcmail_config['imap_ns_personal'] = null;
    $rcmail_config['imap_ns_other']    = null;
    $rcmail_config['imap_ns_shared']   = null;
    // By default IMAP capabilities are readed after connection to IMAP server
    // In some cases, e.g. when using IMAP proxy, there's a need to refresh the list
    // after login. Set to True if you've got this case.
    $rcmail_config['imap_force_caps'] = false;
    // By default list of subscribed folders is determined using LIST-EXTENDED
    // extension if available. Some servers (dovecot 1.x) returns wrong results
    // for shared namespaces in this case. http://trac.roundcube.net/ticket/1486225
    // Enable this option to force LSUB command usage instead.
    $rcmail_config['imap_force_lsub'] = false;
    // Some server configurations (e.g. Courier) doesn't list folders in all namespaces
    // Enable this option to force listing of folders in all namespaces
    $rcmail_config['imap_force_ns'] = false;
    // IMAP connection timeout, in seconds. Default: 0 (no limit)
    $rcmail_config['imap_timeout'] = 0;
    // Optional IMAP authentication identifier to be used as authorization proxy
    $rcmail_config['imap_auth_cid'] = null;
    // Optional IMAP authentication password to be used for imap_auth_cid
    $rcmail_config['imap_auth_pw'] = null;
    // Type of IMAP indexes cache. Supported values: 'db', 'apc' and 'memcache'.
    $rcmail_config['imap_cache'] = null;
    // Enables messages cache. Only 'db' cache is supported.
    $rcmail_config['messages_cache'] = false;
    // SMTP
    // SMTP server host (for sending mails).
    // To use SSL/TLS connection, enter hostname with prefix ssl:// or tls://
    // If left blank, the PHP mail() function is used
    // Supported replacement variables:
    // %h - user's IMAP hostname
    // %n - http hostname ($_SERVER['SERVER_NAME'])
    // %d - domain (http hostname without the first part)
    // %z - IMAP domain (IMAP hostname without the first part)
    // For example %n = mail.domain.tld, %d = domain.tld
    $rcmail_config['smtp_server'] = 'localhost';
    // SMTP port (default is 25; use 587 for STARTTLS or 465 for the
    // deprecated SSL over SMTP (aka SMTPS))
    $rcmail_config['smtp_port'] = 25;
    // SMTP username (if required) if you use %u as the username Roundcube
    // will use the current username for login
    $rcmail_config['smtp_user'] = '';
    // SMTP password (if required) if you use %p as the password Roundcube
    // will use the current user's password for login
    $rcmail_config['smtp_pass'] = '';
    // SMTP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or empty to use
    // best server supported one)
    $rcmail_config['smtp_auth_type'] = '';
    // Optional SMTP authentication identifier to be used as authorization proxy
    $rcmail_config['smtp_auth_cid'] = null;
    // Optional SMTP authentication password to be used for smtp_auth_cid
    $rcmail_config['smtp_auth_pw'] = null;
    // SMTP HELO host
    // Hostname to give to the remote server for SMTP 'HELO' or 'EHLO' messages
    // Leave this blank and you will get the server variable 'server_name' or
    // localhost if that isn't defined.
    $rcmail_config['smtp_helo_host'] = '';
    // SMTP connection timeout, in seconds. Default: 0 (no limit)
    $rcmail_config['smtp_timeout'] = 0;
    // SYSTEM
    // THIS OPTION WILL ALLOW THE INSTALLER TO RUN AND CAN EXPOSE SENSITIVE CONFIG DATA.
    // ONLY ENABLE IT IF YOU'RE REALLY SURE WHAT YOU'RE DOING!
    $rcmail_config['enable_installer'] = false;
    // provide an URL where a user can get support for this Roundcube installation
    // PLEASE DO NOT LINK TO THE ROUNDCUBE.NET WEBSITE HERE!
    $rcmail_config['support_url'] = 'http://www.crawfordworks.ca/contact';
    // replace Roundcube logo with this image
    // specify an URL relative to the document root of this Roundcube installation
    $rcmail_config['skin_logo'] = null;
    // automatically create a new Roundcube user when log-in the first time.
    // a new user will be created once the IMAP login succeeds.
    // set to false if only registered users can use this service
    $rcmail_config['auto_create_user'] = true;
    // use this folder to store log files (must be writeable for apache user)
    // This is used by the 'file' log driver.
    $rcmail_config['log_dir'] = 'logs/';
    // use this folder to store temp files (must be writeable for apache user)
    $rcmail_config['temp_dir'] = 'temp/';
    // lifetime of message cache
    // possible units: s, m, h, d, w
    $rcmail_config['message_cache_lifetime'] = '10d';
    // enforce connections over https
    // with this option enabled, all non-secure connections will be redirected.
    // set the port for the ssl connection as value of this option if it differs from the default 443
    $rcmail_config['force_https'] = false;
    // tell PHP that it should work as under secure connection
    // even if it doesn't recognize it as secure ($_SERVER['HTTPS'] is not set)
    // e.g. when you're running Roundcube behind a https proxy
    // this option is mutually exclusive to 'force_https' and only either one of them should be set to true.
    $rcmail_config['use_https'] = false;
    // Allow browser-autocompletion on login form.
    // 0 - disabled, 1 - username and host only, 2 - username, host, password
    $rcmail_config['login_autocomplete'] = 0;
    // Forces conversion of logins to lower case.
    // 0 - disabled, 1 - only domain part, 2 - domain and local part.
    // If users authentication is not case-sensitive this must be enabled.
    // After enabling it all user records need to be updated, e.g. with query:
    // UPDATE users SET username = LOWER(username);
    $rcmail_config['login_lc'] = 0;
    // Includes should be interpreted as PHP files
    $rcmail_config['skin_include_php'] = false;
    // display software version on login screen
    $rcmail_config['display_version'] = false;
    // Session lifetime in minutes
    // must be greater than 'keep_alive'/60
    $rcmail_config['session_lifetime'] = 10;
    // session domain: .example.org
    $rcmail_config['session_domain'] = '';
    // session name. Default: 'roundcube_sessid'
    $rcmail_config['session_name'] = null;
    // Backend to use for session storage. Can either be 'db' (default) or 'memcache'
    // If set to memcache, a list of servers need to be specified in 'memcache_hosts'
    // Make sure the Memcache extension (http://pecl.php.net/package/memcache) version >= 2.0.0 is installed
    $rcmail_config['session_storage'] = 'db';
    // Use these hosts for accessing memcached
    // Define any number of hosts in the form of hostname:port or unix:///path/to/sock.file
    $rcmail_config['memcache_hosts'] = null; // e.g. array( 'localhost:11211', '192.168.1.12:11211', 'unix:///var/tmp/memcached.sock' );
    // check client IP in session athorization
    $rcmail_config['ip_check'] = false;
    // check referer of incoming requests
    $rcmail_config['referer_check'] = false;
    // X-Frame-Options HTTP header value sent to prevent from Clickjacking.
    // Possible values: sameorigin|deny. Set to false in order to disable sending them
    $rcmail_config['x_frame_options'] = 'sameorigin';
    // this key is used to encrypt the users imap password which is stored
    // in the session record (and the client cookie if remember password is enabled).
    // please provide a string of exactly 24 chars.
    $rcmail_config['des_key'] = 'Qw4jLYQK+MyNLPIRmON7Lq+Z';
    // Automatically add this domain to user names for login
    // Only for IMAP servers that require full e-mail addresses for login
    // Specify an array with 'host' => 'domain' values to support multiple hosts
    // Supported replacement variables:
    // %h - user's IMAP hostname
    // %n - http hostname ($_SERVER['SERVER_NAME'])
    // %d - domain (http hostname without the first part)
    // %z - IMAP domain (IMAP hostname without the first part)
    // For example %n = mail.domain.tld, %d = domain.tld
    $rcmail_config['username_domain'] = '';
    // This domain will be used to form e-mail addresses of new users
    // Specify an array with 'host' => 'domain' values to support multiple hosts
    // Supported replacement variables:
    // %h - user's IMAP hostname
    // %n - http hostname ($_SERVER['SERVER_NAME'])
    // %d - domain (http hostname without the first part)
    // %z - IMAP domain (IMAP hostname without the first part)
    // For example %n = mail.domain.tld, %d = domain.tld
    $rcmail_config['mail_domain'] = '';
    // Password charset.
    // Use it if your authentication backend doesn't support UTF-8.
    // Defaults to ISO-8859-1 for backward compatibility
    $rcmail_config['password_charset'] = 'ISO-8859-1';
    // How many seconds must pass between emails sent by a user
    $rcmail_config['sendmail_delay'] = 0;
    // Maximum number of recipients per message. Default: 0 (no limit)
    $rcmail_config['max_recipients'] = 0;
    // Maximum allowednumber of members of an address group. Default: 0 (no limit)
    // If 'max_recipients' is set this value should be less or equal
    $rcmail_config['max_group_members'] = 0;
    // add this user-agent to message headers when sending
    $rcmail_config['useragent'] = 'Roundcube Webmail/'.RCMAIL_VERSION;
    // use this name to compose page titles
    $rcmail_config['product_name'] = 'Tri Innovations Webmail';
    // try to load host-specific configuration
    // see http://trac.roundcube.net/wiki/Howto_Config for more details
    $rcmail_config['include_host_config'] = false;
    // path to a text file which will be added to each sent message
    // paths are relative to the Roundcube root folder
    $rcmail_config['generic_message_footer'] = '';
    // path to a text file which will be added to each sent HTML message
    // paths are relative to the Roundcube root folder
    $rcmail_config['generic_message_footer_html'] = '';
    // add a received header to outgoing mails containing the creators IP and hostname
    $rcmail_config['http_received_header'] = false;
    // Whether or not to encrypt the IP address and the host name
    // these could, in some circles, be considered as sensitive information;
    // however, for the administrator, these could be invaluable help
    // when tracking down issues.
    $rcmail_config['http_received_header_encrypt'] = false;
    // This string is used as a delimiter for message headers when sending
    // a message via mail() function. Leave empty for auto-detection
    $rcmail_config['mail_header_delimiter'] = NULL;
    // number of chars allowed for line when wrapping text.
    // text wrapping is done when composing/sending messages
    $rcmail_config['line_length'] = 72;
    // send plaintext messages as format=flowed
    $rcmail_config['send_format_flowed'] = true;
    // don't allow these settings to be overriden by the user
    $rcmail_config['dont_override'] = array();
    // Set identities access level:
    // 0 - many identities with possibility to edit all params
    // 1 - many identities with possibility to edit all params but not email address
    // 2 - one identity with possibility to edit all params
    // 3 - one identity with possibility to edit all params but not email address
    $rcmail_config['identities_level'] = 0;
    // Mimetypes supported by the browser.
    // attachments of these types will open in a preview window
    // either a comma-separated list or an array: 'text/plain,text/html,text/xml,image/jpeg,image/gif,image/png,application/pdf'
    $rcmail_config['client_mimetypes'] = null;  # null == default
    // mime magic database
    $rcmail_config['mime_magic'] = '/usr/share/misc/magic';
    // path to imagemagick identify binary
    $rcmail_config['im_identify_path'] = null;
    // path to imagemagick convert binary
    $rcmail_config['im_convert_path'] = null;
    // maximum size of uploaded contact photos in pixel
    $rcmail_config['contact_photo_size'] = 160;
    // Enable DNS checking for e-mail address validation
    $rcmail_config['email_dns_check'] = false;
    // PLUGINS
    // List of active plugins (in plugins/ directory)
    $rcmail_config['plugins'] = array();
    // USER INTERFACE
    // default messages sort column. Use empty value for default server's sorting,
    // or 'arrival', 'date', 'subject', 'from', 'to', 'fromto', 'size', 'cc'
    $rcmail_config['message_sort_col'] = '';
    // default messages sort order
    $rcmail_config['message_sort_order'] = 'DESC';
    // These cols are shown in the message list. Available cols are:
    // subject, from, to, fromto, cc, replyto, date, size, status, flag, attachment, 'priority'
    $rcmail_config['list_cols'] = array('subject', 'status', 'fromto', 'date', 'size', 'flag', 'attachment');
    // the default locale setting (leave empty for auto-detection)
    // RFC1766 formatted language name like en_US, de_DE, de_CH, fr_FR, pt_BR
    $rcmail_config['language'] = null;
    // use this format for date display (date or strftime format)
    $rcmail_config['date_format'] = 'Y-m-d';
    // give this choice of date formats to the user to select from
    $rcmail_config['date_formats'] = array('Y-m-d', 'd-m-Y', 'Y/m/d', 'm/d/Y', 'd/m/Y', 'd.m.Y', 'j.n.Y');
    // use this format for time display (date or strftime format)
    $rcmail_config['time_format'] = 'H:i';
    // give this choice of time formats to the user to select from
    $rcmail_config['time_formats'] = array('G:i', 'H:i', 'g:i a', 'h:i A');
    // use this format for short date display (derived from date_format and time_format)
    $rcmail_config['date_short'] = 'D H:i';
    // use this format for detailed date/time formatting (derived from date_format and time_format)
    $rcmail_config['date_long'] = 'Y-m-d H:i';
    // store draft message is this mailbox
    // leave blank if draft messages should not be stored
    // NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP)
    $rcmail_config['drafts_mbox'] = 'Drafts';
    // store spam messages in this mailbox
    // NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP)
    $rcmail_config['junk_mbox'] = 'Junk';
    // store sent message is this mailbox
    // leave blank if sent messages should not be stored
    // NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP)
    $rcmail_config['sent_mbox'] = 'Sent Messages';
    // move messages to this folder when deleting them
    // leave blank if they should be deleted directly
    // NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP)
    $rcmail_config['trash_mbox'] = 'Trash';
    // display these folders separately in the mailbox list.
    // these folders will also be displayed with localized names
    // NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP)
    $rcmail_config['default_folders'] = array('INBOX', 'Drafts', 'Sent Messages', 'Junk', 'Trash');
    // automatically create the above listed default folders on first login
    $rcmail_config['create_default_folders'] = false;
    // protect the default folders from renames, deletes, and subscription changes
    $rcmail_config['protect_default_folders'] = true;
    // if in your system 0 quota means no limit set this option to true
    $rcmail_config['quota_zero_as_unlimited'] = false;
    // Make use of the built-in spell checker. It is based on GoogieSpell.
    // Since Google only accepts connections over https your PHP installatation
    // requires to be compiled with Open SSL support
    $rcmail_config['enable_spellcheck'] = true;
    // Enables spellchecker exceptions dictionary.
    // Setting it to 'shared' will make the dictionary shared by all users.
    $rcmail_config['spellcheck_dictionary'] = false;
    // Set the spell checking engine. 'googie' is the default. 'pspell' is also available,
    // but requires the Pspell extensions. When using Nox Spell Server, also set 'googie' here.
    $rcmail_config['spellcheck_engine'] = 'googie';
    // For a locally installed Nox Spell Server, please specify the URI to call it.
    // Get Nox Spell Server from http://orangoo.com/labs/?page_id=72
    // Leave empty to use the Google spell checking service, what means
    // that the message content will be sent to Google in order to check spelling
    $rcmail_config['spellcheck_uri'] = '';
    // These languages can be selected for spell checking.
    // Configure as a PHP style hash array: array('en'=>'English', 'de'=>'Deutsch');
    // Leave empty for default set of available language.
    $rcmail_config['spellcheck_languages'] = NULL;
    // Makes that words with all letters capitalized will be ignored (e.g. GOOGLE)
    $rcmail_config['spellcheck_ignore_caps'] = false;
    // Makes that words with numbers will be ignored (e.g. g00gle)
    $rcmail_config['spellcheck_ignore_nums'] = false;
    // Makes that words with symbols will be ignored (e.g. g@@gle)
    $rcmail_config['spellcheck_ignore_syms'] = false;
    // Use this char/string to separate recipients when composing a new message
    $rcmail_config['recipients_separator'] = ',';
    // don't let users set pagesize to more than this value if set
    $rcmail_config['max_pagesize'] = 200;
    // Minimal value of user's 'keep_alive' setting (in seconds)
    // Must be less than 'session_lifetime'
    $rcmail_config['min_keep_alive'] = 60;
    // Enables files upload indicator. Requires APC installed and enabled apc.rfc1867 option.
    // By default refresh time is set to 1 second. You can set this value to true
    // or any integer value indicating number of seconds.
    $rcmail_config['upload_progress'] = false;
    // Specifies for how many seconds the Undo button will be available
    // after object delete action. Currently used with supporting address book sources.
    // Setting it to 0, disables the feature.
    $rcmail_config['undo_timeout'] = 0;
    // ADDRESSBOOK SETTINGS
    // This indicates which type of address book to use. Possible choises:
    // 'sql' (default) and 'ldap'.
    // If set to 'ldap' then it will look at using the first writable LDAP
    // address book as the primary address book and it will not display the
    // SQL address book in the 'Address Book' view.
    $rcmail_config['address_book_type'] = 'sql';
    // In order to enable public ldap search, configure an array like the Verisign
    // example further below. if you would like to test, simply uncomment the example.
    // Array key must contain only safe characters, ie. a-zA-Z0-9_
    $rcmail_config['ldap_public'] = array();
    // If you are going to use LDAP for individual address books, you will need to
    // set 'user_specific' to true and use the variables to generate the appropriate DNs to access it.
    // The recommended directory structure for LDAP is to store all the address book entries
    // under the users main entry, e.g.:
    //  o=root
    //   ou=people
    //    uid=user@domain
    //  mail=contact@contactdomain
    // So the base_dn would be uid=%fu,ou=people,o=root
    // The bind_dn would be the same as based_dn or some super user login.
    * example config for Verisign directory
    $rcmail_config['ldap_public']['Verisign'] = array(
      'name'          => 'Verisign.com',
      // Replacement variables supported in host names:
      // %h - user's IMAP hostname
      // %n - http hostname ($_SERVER['SERVER_NAME'])
      // %d - domain (http hostname without the first part)
      // %z - IMAP domain (IMAP hostname without the first part)
      // For example %n = mail.domain.tld, %d = domain.tld
      'hosts'         => array('directory.verisign.com'),
      'port'          => 389,
      'use_tls'                => false,
      'ldap_version'  => 3,       // using LDAPv3
      'user_specific' => false,   // If true the base_dn, bind_dn and bind_pass default to the user's IMAP login.
      // %fu - The full username provided, assumes the username is an email
      //       address, uses the username_domain value if not an email address.
      // %u  - The username prior to the '@'.
      // %d  - The domain name after the '@'.
      // %dc - The domain name hierarchal string e.g. "dc=test,dc=domain,dc=com"
      // %dn - DN found by ldap search when search_filter/search_base_dn are used
      'base_dn'       => '',
      'bind_dn'       => '',
      'bind_pass'     => '',
      // It's possible to bind for an individual address book
      // The login name is used to search for the DN to bind with
      'search_base_dn' => '',
      'search_filter'  => '',   // e.g. '(&(objectClass=posixAccount)(uid=%u))'
      // DN and password to bind as before searching for bind DN, if anonymous search is not allowed
      'search_bind_dn' => '',
      'search_bind_pw' => '',
      // Default for %dn variable if search doesn't return DN value
      'search_dn_default' => '',
      // Optional authentication identifier to be used as SASL authorization proxy
      // bind_dn need to be empty
      'auth_cid'       => '',
      // SASL authentication method (for proxy auth), e.g. DIGEST-MD5
      'auth_method'    => '',
      // Indicates if the addressbook shall be hidden from the list.
      // With this option enabled you can still search/view contacts.
      'hidden'        => false,
      // Indicates if the addressbook shall not list contacts but only allows searching.
      'searchonly'    => false,
      // Indicates if we can write to the LDAP directory or not.
      // If writable is true then these fields need to be populated:
      // LDAP_Object_Classes, required_fields, LDAP_rdn
      'writable'       => false,
      // To create a new contact these are the object classes to specify
      // (or any other classes you wish to use).
      'LDAP_Object_Classes' => array('top', 'inetOrgPerson'),
      // The RDN field that is used for new entries, this field needs
      // to be one of the search_fields, the base of base_dn is appended
      // to the RDN to insert into the LDAP directory.
      'LDAP_rdn'       => 'cn',
      // The required fields needed to build a new contact as required by
      // the object classes (can include additional fields not required by the object classes).
      'required_fields' => array('cn', 'sn', 'mail'),
      'search_fields'   => array('mail', 'cn'),  // fields to search in
      // mapping of contact fields to directory attributes
      //   for every attribute one can specify the number of values (limit) allowed.
      //   default is 1, a wildcard * means unlimited
      'fieldmap' => array(
        // Roundcube  => LDAP:limit
        'name'        => 'cn',
        'surname'     => 'sn',
        'firstname'   => 'givenName',
        'title'       => 'title',
        'email'       => 'mail:*',
        'phone:home'  => 'homePhone',
        'phone:work'  => 'telephoneNumber',
        'phone:mobile' => 'mobile',
        'phone:pager' => 'pager',
        'street'      => 'street',
        'zipcode'     => 'postalCode',
        'region'      => 'st',
        'locality'    => 'l',
    // if you uncomment country, you need to modify 'sub_fields' above
    //    'country'     => 'c',
        'department'  => 'departmentNumber',
        'notes'       => 'description',
    // these currently don't work:
    //    'phone:workfax' => 'facsimileTelephoneNumber',
    //    'photo'        => 'jpegPhoto',
    //    'organization' => 'o',
    //    'manager'      => 'manager',
    //    'assistant'    => 'secretary',
      // Map of contact sub-objects (attribute name => objectClass(es)), e.g. 'c' => 'country'
      'sub_fields' => array(),
      'sort'          => 'cn',    // The field to sort the listing by.
      'scope'         => 'sub',   // search mode: sub|base|list
      'filter'        => '(objectClass=inetOrgPerson)',      // used for basic listing (if not empty) and will be &'d with search queries. example: status=act
      'fuzzy_search'  => true,    // server allows wildcard search
      'vlv'           => false,   // Enable Virtual List View to more efficiently fetch paginated data (if server supports it)
      'numsub_filter' => '(objectClass=organizationalUnit)',   // with VLV, we also use numSubOrdinates to query the total number of records. Set this filter to get all numSubOrdinates attributes for counting
      'sizelimit'     => '0',     // Enables you to limit the count of entries fetched. Setting this to 0 means no limit.
      'timelimit'     => '0',     // Sets the number of seconds how long is spend on the search. Setting this to 0 means no limit.
      'referrals'     => true|false,  // Sets the LDAP_OPT_REFERRALS option. Mostly used in multi-domain Active Directory setups
      // definition for contact groups (uncomment if no groups are supported)
      // for the groups base_dn, the user replacements %fu, %u, $d and %dc work as for base_dn (see above)
      // if the groups base_dn is empty, the contact base_dn is used for the groups as well
      // -> in this case, assure that groups and contacts are separated due to the concernig filters!
      'groups'        => array(
        'base_dn'     => '',
        'scope'       => 'sub',   // search mode: sub|base|list
        'filter'      => '(objectClass=groupOfNames)',
        'object_classes' => array("top", "groupOfNames"),
        'member_attr'  => 'member',   // name of the member attribute, e.g. uniqueMember
        'name_attr'    => 'cn',       // attribute to be used as group name
    // An ordered array of the ids of the addressbooks that should be searched
    // when populating address autocomplete fields server-side. ex: array('sql','Verisign');
    $rcmail_config['autocomplete_addressbooks'] = array('sql');
    // The minimum number of characters required to be typed in an autocomplete field
    // before address books will be searched. Most useful for LDAP directories that
    // may need to do lengthy results building given overly-broad searches
    $rcmail_config['autocomplete_min_length'] = 1;
    // Number of parallel autocomplete requests.
    // If there's more than one address book, n parallel (async) requests will be created,
    // where each request will search in one address book. By default (0), all address
    // books are searched in one request.
    $rcmail_config['autocomplete_threads'] = 0;
    // Max. numer of entries in autocomplete popup. Default: 15.
    $rcmail_config['autocomplete_max'] = 15;
    // show address fields in this order
    // available placeholders: {street}, {locality}, {zipcode}, {country}, {region}
    $rcmail_config['address_template'] = '{street}<br/>{locality} {zipcode}<br/>{country} {region}';
    // Matching mode for addressbook search (including autocompletion)
    // 0 - partial (*abc*), default
    // 1 - strict (abc)
    // 2 - prefix (abc*)
    // Note: For LDAP sources fuzzy_search must be enabled to use 'partial' or 'prefix' mode
    $rcmail_config['addressbook_search_mode'] = 0;
    // USER PREFERENCES
    // Use this charset as fallback for message decoding
    $rcmail_config['default_charset'] = 'ISO-8859-1';
    // skin name: folder from skins/
    $rcmail_config['skin'] = 'larry';
    // show up to X items in messages list view
    $rcmail_config['mail_pagesize'] = 50;
    // show up to X items in contacts list view
    $rcmail_config['addressbook_pagesize'] = 50;
    // sort contacts by this col (preferably either one of name, firstname, surname)
    $rcmail_config['addressbook_sort_col'] = 'surname';
    // the way how contact names are displayed in the list
    // 0: display name
    // 1: (prefix) firstname middlename surname (suffix)
    // 2: (prefix) surname firstname middlename (suffix)
    // 3: (prefix) surname, firstname middlename (suffix)
    $rcmail_config['addressbook_name_listing'] = 0;
    // use this timezone to display date/time
    // valid timezone identifers are listed here: php.net/manual/en/timezones.php
    // 'auto' will use the browser's timezone settings
    $rcmail_config['timezone'] = 'auto';
    // prefer displaying HTML messages
    $rcmail_config['prefer_html'] = true;
    // display remote inline images
    // 0 - Never, always ask
    // 1 - Ask if sender is not in address book
    // 2 - Always show inline images
    $rcmail_config['show_images'] = 0;
    // compose html formatted messages by default
    // 0 - never, 1 - always, 2 - on reply to HTML message only
    $rcmail_config['htmleditor'] = 0;
    // show pretty dates as standard
    $rcmail_config['prettydate'] = true;
    // save compose message every 300 seconds (5min)
    $rcmail_config['draft_autosave'] = 300;
    // default setting if preview pane is enabled
    $rcmail_config['preview_pane'] = false;
    // Mark as read when viewed in preview pane (delay in seconds)
    // Set to -1 if messages in preview pane should not be marked as read
    $rcmail_config['preview_pane_mark_read'] = 0;
    // Clear Trash on logout
    $rcmail_config['logout_purge'] = false;
    // Compact INBOX on logout
    $rcmail_config['logout_expunge'] = false;
    // Display attached images below the message body
    $rcmail_config['inline_images'] = true;
    // Encoding of long/non-ascii attachment names:
    // 0 - Full RFC 2231 compatible
    // 1 - RFC 2047 for 'name' and RFC 2231 for 'filename' parameter (Thunderbird's default)
    // 2 - Full 2047 compatible
    $rcmail_config['mime_param_folding'] = 0;
    // Set true if deleted messages should not be displayed
    // This will make the application run slower
    $rcmail_config['skip_deleted'] = false;
    // Set true to Mark deleted messages as read as well as deleted
    // False means that a message's read status is not affected by marking it as deleted
    $rcmail_config['read_when_deleted'] = true;
    // Set to true to never delete messages immediately
    // Use 'Purge' to remove messages marked as deleted
    $rcmail_config['flag_for_deletion'] = false;
    // Default interval for keep-alive/check-recent requests (in seconds)
    // Must be greater than or equal to 'min_keep_alive' and less than 'session_lifetime'
    $rcmail_config['keep_alive'] = 60;
    // If true all folders will be checked for recent messages
    $rcmail_config['check_all_folders'] = false;
    // If true, after message delete/move, the next message will be displayed
    $rcmail_config['display_next'] = false;
    // 0 - Do not expand threads
    // 1 - Expand all threads automatically
    // 2 - Expand only threads with unread messages
    $rcmail_config['autoexpand_threads'] = 0;
    // When replying place cursor above original message (top posting)
    $rcmail_config['top_posting'] = false;
    // When replying strip original signature from message
    $rcmail_config['strip_existing_sig'] = true;
    // Show signature:
    // 0 - Never
    // 1 - Always
    // 2 - New messages only
    // 3 - Forwards and Replies only
    $rcmail_config['show_sig'] = 1;
    // When replying or forwarding place sender's signature above existing message
    $rcmail_config['sig_above'] = false;
    // Use MIME encoding (quoted-printable) for 8bit characters in message body
    $rcmail_config['force_7bit'] = false;
    // Defaults of the search field configuration.
    // The array can contain a per-folder list of header fields which should be considered when searching
    // The entry with key '*' stands for all folders which do not have a specific list set.
    // Please note that folder names should to be in sync with $rcmail_config['default_folders']
    $rcmail_config['search_mods'] = null;  // Example: array('*' => array('subject'=>1, 'from'=>1), 'Sent' => array('subject'=>1, 'to'=>1));
    // Defaults of the addressbook search field configuration.
    $rcmail_config['addressbook_search_mods'] = null;  // Example: array('name'=>1, 'firstname'=>1, 'surname'=>1, 'email'=>1, '*'=>1);
    // 'Delete always'
    // This setting reflects if mail should be always deleted
    // when moving to Trash fails. This is necessary in some setups
    // when user is over quota and Trash is included in the quota.
    $rcmail_config['delete_always'] = false;
    // Directly delete messages in Junk instead of moving to Trash
    $rcmail_config['delete_junk'] = false;
    // Behavior if a received message requests a message delivery notification (read receipt)
    // 0 = ask the user, 1 = send automatically, 2 = ignore (never send or ask)
    // 3 = send automatically if sender is in addressbook, otherwise ask the user
    // 4 = send automatically if sender is in addressbook, otherwise ignore
    $rcmail_config['mdn_requests'] = 0;
    // Return receipt checkbox default state
    $rcmail_config['mdn_default'] = 0;
    // Delivery Status Notification checkbox default state
    $rcmail_config['dsn_default'] = 0;
    // Place replies in the folder of the message being replied to
    $rcmail_config['reply_same_folder'] = false;
    // Sets default mode of Forward feature to "forward as attachment"
    $rcmail_config['forward_attachment'] = false;
    // Defines address book (internal index) to which new contacts will be added
    // By default it is the first writeable addressbook.
    // Note: Use '0' for built-in address book.
    $rcmail_config['default_addressbook'] = null;
    // Enables spell checking before sending a message.
    $rcmail_config['spellcheck_before_send'] = false;
    // Skip alternative email addresses in autocompletion (show one address per contact)
    $rcmail_config['autocomplete_single'] = false;
    // Default font for composed HTML message.
    // Supported values: Andale Mono, Arial, Arial Black, Book Antiqua, Courier New,
    // Georgia, Helvetica, Impact, Tahoma, Terminal, Times New Roman, Trebuchet MS, Verdana
    $rcmail_config['default_font'] = '';
    // end of config file

  • Open Directory or LDAP Problem with 10.5 Client and 10.4 Server

    Yesterday, the client-server setup we've been using successfully FOR YEARS decided not to work on a v10.5.8 MacBook Pro client. Did not do anything to the v10.5 client recently (other than to boot it up). Not sure if any software was updated on the server recently (where do I check for this?). Curiously, a v10.4.11 client running on a Mac Pro (tower) continues to work fine/as though nothing's changed. It appears as though the only difference is v10.4 client (working) vs. v10.5 client (not working).
    Here is what IS working:
    1) Network Home Directories on dedicated drive partition of Mac running OS X Server v10.4.11. AFP, DNS, and Open Directory are all up and running (normally, I think) as shown in Server Admin application.
    2) Mac Pro (tower) client running v10.4.11 binds to and authenticates at v10.4.11 server. Any valid user can access their home directory on the server seamlessly when logging in at this v10.4.11 client Mac.
    3) That same v10.4.11 client Mac also contains a LOCAL admin user with its home directory on the local hard drive. That LOCAL admin account is used to update software on a per machine basis (and preclude users from adding unauthorized software, needing to use a specific machine, etc.).
    Here is what IS NOT working:
    4) On a MacBook Pro client running v10.5.8, the LOCAL admin account looses access to the partition containing its local home directory. The drive partition literally disappears. The only "solution" I've been able to find (and it's not truly a solution) is to turn off the Open Directory/LDAP binding (using the Directory Utility application). With binding turned off, the LOCAL admin user has no problem accessing their home directory on the local hard drive partition. Turn binding on again (using Directory Utility application), and the LOCAL admin user can no longer see its local home directory.
    Again, binding is necessary to allow regular users to use the v10.5 MacBook Pro with Network Home Directories (as in items 1-3 above). Binding should be turned on for this reason. However, with binding on, the LOCAL admin user cannot manage the computer because the local partition containing the admin home directory disappears/is inaccessible. Turn binding off, and the partition containing the admin home directory reappears.
    Perhaps there's something in the sever logs that will help. I don't really know how to read these, so if your help involves the logs, please refer to them explicitly (e.g., "in Server Admin, go to Open Directory->Logs->LDAP log" or similar).
    Any help greatly appreceated.

    Nope. Never used sso_util.
    I try to use Apple's GUI server management tools unless absolutely necessary/at the end of my rope (i.e., last step before re-install etc.). I figure there's just too many things going on under the hood: using the command line may fix one setting, but not re-configure the two or three others that Apple NEEDS in order to have the whole thing working in harmony. Unless you really know what's going on with all the configuration files, it's best to let the GUI manage the settings.
    In my particular circumstance, I've now got ALL Leopard clients, one Leopard v10.5 server, and one Tiger v10.4 server. Everything is working fine now, but it was not a simple matter getting the Tiger v10.4 server re-integrated into the otherwise ALL Leopard environment. OD/Kerberos is on the Leopard v10.5 server. Home directories are still on the Tiger v10.4 server.
    Two keys to getting THIS/MY set-up working:
    1) Tiger v10.4 server needs to have Open Directory set to "Connected to a Directory System" and has to be joined to the Kerberos realm that was set-up on the Leopard v10.5 server (use Server Admin to do all of this).
    2) Sharepoint on Tiger v10.4 server has to have SOME, but NOT ALL checkboxes for guest access enables/checked. See:
    http://discussions.apple.com/message.jspa?messageID=10903468#10903468
    Number 2 immediately above is contrary to what Apple manual for User Management reads, but this is what worked for me/my set up, after pulling my hair out following the manual's instructions to the letter and not getting the thing to work!

  • Open Directory Shares and Settings

    We have an Apple Server in our school district.
    The 40 G5 clients log in with their Active Directory info and are connected to the Apple shares and Open Directory settings on the Apple Server. Everything usually works fine except for one issue.
    At least once a week, the shares and Open Directory settings (i.e. the Dock settings) disappear and the only resolution we have right now is to reboot the Apple Server. I would like to fix this issue as you should not have to reboot a server once a week.

    At least once a week, the shares and Open Directory
    settings (i.e. the Dock settings) disappear and the
    only resolution we have right now is to reboot the
    Apple Server. I would like to fix this issue as you
    should not have to reboot a server once a week.
    I presume you mean the dock on the clients?
    Since you have not had any other comments...
    I have not seen this myself (but I don't use managed clients) but I'm just wondering what the significance of the once-a-week is? Is it consistently after a certain period? The only things I can think of with period settings are DHCP leases and possibly 'Idle Timeouts' for AFP (straw clutching I think).
    Some links that might be useful (or maybe not)...
    Mac OS X Server: AppleShare performance tuning for client and server...
    http://docs.info.apple.com/article.html?artnum=304106
    Understanding the "disconnect when idle" feature for AFP connections...
    http://docs.info.apple.com/article.html?artnum=301591
    -david

Maybe you are looking for