From Fedora Project Wiki

No edit summary
(The goal of this howto is to install a mail server based on cyrus with a webmail based on horde (version 4))
Line 254: Line 254:


=== Direct import ===
=== Direct import ===
5. Mail configuration
5.1. Fetchmail
Fetchmail is configure by a single file “/etc/fetchmailrc”
 gedit /etc/fetchmailrc
The format of the file is described in the man page of fetchmail. Here is the main command of the file
• set : allow to configure a parameter
o set daemon <interval> : polling interval of fetchmail in second
o set syslog : redirect status and error messages emitted to the syslog
• smtphost <internal server>: internal server where the mail has to be send. In our case as we used postfix, we must have the socket of the postfix lmtp server
• poll <mail server>: indicate the mail serveur to be poll
o protocol <proto>: protocol for the polling (POP3 or IMAP)
o username <login>: indicate the login on the server
o password <pass>: indicate the login on the server
o to <internal>: give the internal login on LDAP
• Usefull option
o keep: option to keep the mail on the server
o fetchall : option to get all the mail on the server (read or not read)
An example of “fetchmailrc” file
set daemon 300
set syslog
poll "pop.mail.yahoo.fr"
protocol POP3
username "login"
password "password"
to user1@comp1.domain.com
fetchall
poll "serveur2"
protocol IMAP
username “login"
password "password"
keep
to user2@comp1.domain.com
smtphost "/var/lib/imap/socket/lmtp"
This file must be protected (it included your mail password)
 chmod 600 /etc/fetchmailrc
By default, no daemon mode is defined, so this must be done by creating the init function as for other daemon
 gedit /etc/init.d/fetchmail
# This shell script takes care of starting and stopping
# fetchmail.
#
# chkconfig: 2345 81 45
# description: The Fetchmail daemons allows to retrieve mail using various
#       mail protocols and route them to the local MTA just as if
#       the mail was sent directly to the local MTA. This is
#       specially useful on intermittent dial-up connections.
# processname: fetchmail
# config: /etc/fetchmailrc
# author[s]:
# Andrea Sterbini <a.sterbini@itelcad.it>
# ObiTuarY <obituary@freshmeat.net>
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
if [ ${NETWORKING} = "no" ]
then
exit 0
fi
   
# See how we were called.
case "$1" in
  start)
if [ -s /etc/fetchmailrc ]; then
echo -n "Loading fetchmail: "
daemon /usr/bin/fetchmail -f /etc/fetchmailrc
echo
touch /var/lock/subsys/fetchmail
else
exit 1
fi
;;
  stop)
echo -n "Shutting down fetchmail: "
/usr/bin/fetchmail -q >/dev/null 2>&1 && echo fetchmail
# killproc fetchmail
rm -f /var/lock/subsys/fetchmail
;;
  status)
        status fetchmail
        ;;
  restart|reload)
        $0 stop
        $0 start
        ;;
*)
echo "Usage: fetchmail {start|stop|status|restart|reload}"
exit 1
esac
exit 0
# === End of File ===
5.2. postfix
A lot of web article speak about he choice of postfix versus sendmail, so we will not discuss it. The choice made here is postfix
All file for the configuration of postfix can be found in the folder ‘/etc/postfix’
Configuration of postfix
 gedit /etc/postfix/main.cf
Change this value
myhostname = comp1.domain.com
mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp
inet_interfaces = $myhostname,localhost
mynetworks_style = host
relayhost = smtp.monprovider.fr
smtpd_banner = $myhostname ESMTP $mail_name
# smtpd_tls_security_level = may
smtpd_tls_security_level = none
#unknown_local_recipient_reject_code = 550
unknown_local_recipient_reject_code = 450
alias_maps = hash:/etc/aliases, ldap:/etc/postfix/ldap-aliases.cf
Now you must define the link between LDAP and postfix
 gedit /etc/postfix/ldap-aliases.cf
server_host = ldap://localhost:389
search_base = ou=People,dc=domain,dc=com
query_filter = mail=%u@%2.com
result_format = %u
domain = deomain.com
for internal mail we used the alias database, so you must edit the alias database
 gedit /etc/aliases
Replace all root/news/ftp/webmaster/postmaster par user1 and add
“root: user1”
Generate the binary database
 postalias /etc/aliases
5.3. cyrus
Configuration of postfix
 gedit /etc/cyrus.conf
commenter dans SERVICES  : imap, impas, pop3, pop3s, sieve
ajouter a SERVICE :
imaplocal cmd="imapd -C /etc/imapd-local.conf" listen="127.0.0.1:imap" prefork=0
Configuration of cyrus
 gedit /etc/imapd-local.conf
   
servername: 127.0.0.1
configdirectory: /var/lib/imap
partition-default: /var/spool/imap
reject8bit: no
munge8bit: yes
admins: cyrus root
allowanonymouslogin: no
hashimapspool: true
allowplaintext: yes
sasl_pwcheck_method: saslauthd
sasl_mech_list: PLAIN
tls_require_cert: false
lmtpsocket: /var/lib/imap/socket/lmtp
Configuration of sasl
 gedit  /etc/sysconfig/saslauth
MECH: ==> ldap
 gedit  /etc/sysconfig/saslauthd
auxprop_plugin: slapd
ldap_servers: ldap://localhost:389
ldap_default_domain: domain.com
ldap_auth_method: bind
ldap_use_sasl: no
ldap_start_tls: no
ldap_bind_dn: cn=Directory Manager
ldap_bind_pw: ????TND????,
ldap_search_base: ou=People,dc=domain,dc=com
ldap_scope: sub
ldap_filter: uid=%u
ldap_password_attr: userPassword
5.4. Start of all server
Stop the sendmail server as we used postfix instead
 /sbin/chkconfig sendmail off
 /etc/init.d/sendmail stop
Start the servers for the current session and added to the list of process to be started at init
 /sbin/chkconfig postfix on
 /sbin/chkconfig cyrus-imapd on
 /sbin/chkconfig fetchmail on
 /sbin/chkconfig saslauthd on
 /etc/init.d/postfix start
 /etc/init.d/cyrus-imapd start
 /etc/init.d/fetchmail start
 /etc/init.d/saslauthd start
6. Horde configuration
6.1. Horde base configuration
Change under your configuration the following value (http://127.0.0.1/horde/???
Page Parameter name Value Comments
General vhosts false Default
General debug_level E_ALL & ~E_NOTICE Default
General max_exec_time 0 Default
General compress_pages true Default
General secret_key 'xxxxxxxxxxxxxxxxxxxxxxxxx' Default (generated during installation)
General umask 077 Default
General use_ssl 2 Default
General server/name $_SERVER['SERVER_NAME'] Default
General server/port $_SERVER['SERVER_PORT'] Default
General urls/token_lifetime 30 Default
General urls/hmac_lifetime 30 Default
General urls/pretty false Default
General safe_ips array() Default
General session/name 'Horde' Default
General session/use_only_cookies true Default
General session/cache_limiter 'nocache' Default
General session/timeout 0 Default
General cookie/domain $_SERVER['SERVER_NAME'] Default
General cookie/path '/horde' Default
Database sql/persistent false Default
Database sql/username 'horde' My horde login
Database sql/password 'Pass-mySql' My sql password
Database sql/protocol 'unix' Default
Database sql/socket '' Default
Database sql/database 'horde' The horde database
Database sql/charset 'utf-8' Default
Database sql/ca '' Default
Database sql/ssl false Default
Database sql/splitread false Default
Database sql/phptype 'mysql' Default
Authentification auth/admins array('admin') Default
Authentification auth/checkip true Default
Authentification auth/checkbrowser true Default
Authentification auth/alternate_login false Default
Authentification auth/redirect_on_logout false Default
Authentification auth/list_users 'list' Default
Authentification auth/params/hostspec 'comp1.domain.com’ The server
Authentification auth/params/basedn 'ou=People,dc=domain, dc=com' Access all people in LDAP
Authentification auth/params/binddn 'cn=Directory Manager' The admin of LDAP
Authentification auth/params/password 'Pass-389-dir-man' 389 DS Directory Manager password
Authentification auth/params/version '3' Default
Authentification auth/params/sizelimit '' Default
Authentification auth/params/tls true
Authentification auth/params/scope 'sub' Default
Authentification auth/params/ad false Default
Authentification auth/params/uid 'uid' Default
Authentification auth/params/encryption 'ssha' Default
Authentification auth/params/newuser_objectclass array('inetOrgPerson', 'organizationalPerson', 'person', 'hordePerson') When create a new user used all this object
Authentification auth/params/objectclass array('inetOrgPerson') Search object
Authentification auth/params/filter_type 'objectclass' Default
Authentification auth/params/password_expiration 'no' Default
Authentification auth/driver 'ldap' Sure, we need to use LDAP
Sign Up signup/allow false Default
Logging log/enabled false Default
Logging log_accesskeys false Default
Preference System prefs/maxsize '' Default
Preference System prefs/params/hostspec 'comp1.domain.com’ The server
Preference System prefs/params/port 389 Default
Preference System prefs/params/version '3' Default
Preference System prefs/params/tls false Default
Preference System prefs/params/basedn 'ou=People,dc=domain, dc=com'
Preference System prefs/params/searchdn 'cn=Directory Manager'
Preference System prefs/params/searchpw 'Pass-389-dir-man' 389 DS Directory Manager password
Preference System prefs/params/admindn 'cn=Directory Manager' Default
Preference System prefs/params/adminpw 'Pass-389-dir-man' 389 DS Directory Manager password
Preference System prefs/params/writedn 'admin' Default
Preference System prefs/params/uid 'uid' Default
Preference System prefs/driver 'ldap' Default
Alarm System alarms/params/driverconfig 'horde' Default
Alarm System alarms/params/ttl 300 Default
Alarm System alarms/params/table '' Default
Alarm System alarms/driver 'sql' Default
DataTree System datatree/params/driverconfig 'horde’ Default
DataTree System datatree/params/table '’ Default
DataTree System datatree/params/table_attributes] '’ Default
DataTree System datatree/driver 'sql’ Default
Groups group/params/hostspec 'comp1.domain.com’ The server
Groups group/params/basedn 'ou=Groups,dc=domain,dc=com' Default
Groups group/params/binddn 'cn=Directory Manager' Default
Groups group/params/password 'Pass-389-dir-man’ 389 DS Directory Manager password
Groups group/params/version '3’ Default
Groups group/params/tls true
Groups group/params/gid 'cn’ Default
Groups group/params/memberuid 'memberUid’ Default
Groups group/params/attrisdn false Default
Groups group/params/newgroup_objectclass array('groupofuniquenames', 'hordeGroup', 'posixGroup') Default
Groups group/params/objectclass array('posixGroup') Default
Groups group/params/filter_type 'objectclass’ Default
Groups group/driver 'ldap’ Default
Groups group/cache false Default
Permissions perms/driver 'datatree’ Default
Shares share/no_sharing true Default
Shares share/any_group true Default
Shares share/cache false Default
Shares share/driver 'datatree’ Default
Cache System cache/default_lifetime 86400 Default
Cache System cache/params/dir '' Default
Cache System cache/params/sub 0 Default
Cache System cache/params/prefix '' Default
Cache System cache/driver 'file’ Default
Lock System lock/driver 'none’ Default
Token System token/driver 'none’ Default
Token System Token/timeout '’ Default
Mailer mailer/params/auth true Default
Mailer mailer/type 'smtp’ Default
Mailer mailformat/brokenrfc2231 false Default
Virtual File Storage vfs/params/vfsroot '/home/Horde_vf’ Default
Virtual File Storage vfs/type 'file’ Default
Custom Session Handler sessionhandler/type 'none’ Default
Custom Session Handler sessionhandler/memcache false Default
Problem Reporting problems/email 'webmaster@domain.com’ Default
Problem Reporting problems/maildomain 'domain.com’ Default
Problem Reporting problems/tickets false Default
Problem Reporting problems/attachments true Default
Menu menu/apps array() Default
Menu menu/always false Default
Menu menu/links/help 'all’ Default
Menu menu/links/options 'authenticated’ Default
Menu menu/links/problem 'all’ Default
Menu menu/links/login 'all’ Default
Menu menu/links/logout 'authenticated’ Default
Custom Function Hooks hooks/permsdenied false Default
Custom Function Hooks hooks/username false Default
Custom Function Hooks hooks/preauthenticate false Default
Custom Function Hooks hooks/postauthenticate false Default
Custom Function Hooks hooks/authldap false Default
Custom Function Hooks hooks/groupldap false Default
Portal Blocks portal/fixed_blocks array() Default
Portal Blocks accounts/driver 'null’ Default
User Capabilities and Constraints user/verify_from_addr true Default
IMSP Server imsp/enabled false Default
Kolab Server kolab/enabled false Default
Memcache Server memcache/enabled false Default
V4
Page Parameter name Value Comments
General vhosts false Default
General debug_level E_ALL & ~E_NOTICE Default
General max_exec_time 0 Default
General compress_pages true Default
General secret_key 'xxxxxxxxxxxxxxxxxxxxxxxxx' Default (generated during installation)
General umask 077 Default
General testdisable true Default
General tmpdir '' Default
General use_ssl 2 Default
General server/name $_SERVER['SERVER_NAME'] Default
General server/port $_SERVER['SERVER_PORT'] Default
General urls/token_lifetime 30 Default
General urls/hmac_lifetime 30 Default
General urls/pretty false Default
General safe_ips array() Default
General session/name 'Horde' Default
General session/use_only_cookies true Default
General session/cache_limiter 'nocache' Default
General session/timeout 0 Default
General cookie/domain $_SERVER['SERVER_NAME'] Default
General cookie/path '/horde' Installation path
Database sql/persistent false Default
Database sql/username 'horde' My horde login
Database sql/password 'Pass-mySql' My sql password
Database sql/protocol 'unix' Default
Database sql/socket '' Default
Database sql/database 'horde' The horde database
Database sql/charset 'utf-8' Default
Database sql/ca '' Default
Database sql/ssl false Default
Database sql/splitread false Default
Database sql/phptype 'mysql' Default
LDAP Ldap/useldap yes Sure, we need to use LDAP
LDAP Ldap/hostspec 'comp1.domain.com’ The server
LDAP Ldap/port '' Default
LDAP Ldap/tls no Default
LDAP Ldap/version 3 Default
LDAP Ldap/bindas Bind with administration Default
LDAP Ldap/binddn 'cn=Directory Manager' login
LDAP Ldap/bindpw 'Pass-389-dir-man’ 389 DS Directory Manager password
Authentification auth/admins array('admin') Default
Authentification auth/checkip true Default
Authentification auth/checkbrowser true Default
Authentification auth/alternate_login false Default
Authentification auth/redirect_on_logout false Default
Authentification auth/list_users 'list' Default
Authentification auth/params/driverconfig 'horde default’ Default
Authentification auth/params/basedn 'ou=people,dc=domain, dc=com' Access all people in LDAP
Authentification auth/params/scope 'sub' Default
Authentification auth/params/ad false Default
Authentification auth/params/uid 'uid' Default
Authentification auth/params/encryption 'ssha' Default
Authentification auth/params/newuser_objectclass array('inetOrgPerson', 'organizationalPerson', 'person', 'hordePerson') When create a new user used all this object
Authentification auth/params/filter (objectclass=inetOrgPerson) Search object
Authentification auth/params/password_expiration 'no' Default
Authentification auth/driver 'ldap' Sure, we need to use LDAP
Terms of Service Agreement tos/file '' Default
Sign Up signup/allow false Default
Logging log/enabled false Default
Logging log_accesskeys false Default
Preference System prefs/maxsize '' Default
Preference System prefs/params/basedn 'ou=people,dc=domain, dc=com' My config
Preference System prefs/params/driverconfig 'Horde default' Default
Preference System prefs/params/scope 'Subtree search' Default
Preference System prefs/params/uid 'uid' Default
Preference System prefs/driver 'ldap' Default
Alarm System alarms/params/driverconfig 'horde' Default
Alarm System alarms/params/ttl 300 Default
Alarm System alarms/params/table '' Default
Alarm System alarms/driver 'sql' Default
DataTree System datatree/params/driverconfig 'horde’ Default
DataTree System datatree/params/table '’ Default
DataTree System datatree/params/table_attributes] '’ Default
DataTree System datatree/driver 'sql’ Default
Groups group/params/driverconfig 'horde default' Default
Groups group/params/basedn 'ou=groups,dc=domain, dc=com' Default
Groups group/params/scope 'sub' Default
Groups group/params/gid 'cn’ Default
Groups group/params/memberuid 'memberUid’ Default
Groups group/params/attrisdn false Default
Groups group/params/newgroup_objectclass array('groupofuniquenames', 'hordeGroup', 'posixGroup') Default
Groups group/params/objectclass array('posixGroup') Default
Groups group/params/filter_type 'objectclass’ Default
Groups group/driver 'ldap’ Default
Groups group/cache false Default
Permissions perms/driver 'sql’ Default
Permissions perms/driverconfig 'horde default’ Default
Shares share/no_sharing true My configuration
Shares share/auto_create true Default
Shares share/world true Default
Shares share/any_group false Default
Shares share/cache false Default
Shares share/hidden false Default
Shares share/cache false Default
Shares share/driver 'sql’ Default
Cache System cache/default_lifetime 86400 Default
Cache System cache/params/dir '' Default
Cache System cache/params/sub 0 Default
Cache System cache/params/prefix '' Default
Cache System cache/params/compress yes Default
Cache System cache/use_memorycache 'none' Default
Cache System cache/driver 'file’ TBD
CSS Cachingcachecss cachecss no Default
Javascript Caching cachejs no Default
Theme Caching cachethemes no Default
Lock System lock/driver 'none’ Default
Token System token/driver 'none’ Default
Token System Token/timeout '’ Default
Mailer mailer/params/host '' Default
Mailer mailer/params/port '' Default
Mailer mailer/params/localhost '' Default
Mailer mailer/params/auth 'Best available authentification' My configuration
Mailer mailer/params/username '' Default
Mailer mailer/params/password '' Default
Mailer mailer/type 'smtp’ My configuration
Mailer mailformat/brokenrfc2231 false Default
Virtual File Storage vfs/params/vfsroot '/home/Horde_vf’ Default
Virtual File Storage vfs/type 'file’ Default
Custom Session Handler sessionhandler/type 'none’ Default
Custom Session Handler sessionhandler/memcache false Default
HTTP Proxy Settings Http/proxy/proxy_host '' Default
HTTP Proxy Settings Http/proxy/proxy_port '' Default
HTTP Proxy Settings Http/proxy/proxy_user '' Default
HTTP Proxy Settings Http/proxy/proxy_pass '' Default
Spell Checker Settings spell/driver 'aspell' My configuration
Spell Checker Settings spell/params/path '/usr/bin/' My configuration
OpenSSL Settings openssl/cafile '' Default
OpenSSL Settings openssl/path '' Default
GnuPG Settings Gnupg/path '' Default
GnuPG Settings Gnupg/keyserver Pgp.mit.edu Default
GnuPG Settings Gnupg/timeout 10 Default
Image Manipulation Settings Image/driver 'PECL image magic' My configuration
Image Metadata Driver Settings exif/driver Bundel Default
MIME Detection Settings Mime/magic_db '/usr/share/misc/magic' Fedora configuration
Country Lookup Settings geoip/datafile '' Default
Problem Reporting problems/email 'admin@domain.com’ Default
Problem Reporting problems/maildomain 'domain.com’ Default
Problem Reporting problems/tickets false Default
Problem Reporting problems/username '' Default
Problem Reporting problems/password '' Default
Problem Reporting problems/attachments true Default
Menu menu/apps array() Default
Menu menu/always false Default
Menu menu/links/help 'all’ Default
Menu menu/links/options 'authenticated’ Default
Menu menu/links/problem 'all’ Default
Menu menu/links/login 'all’ Default
Menu menu/links/logout 'authenticated’ Default
Menu logo/image '’ Default
Menu logo/link '’ Default
Portal Blocks portal/fixed_blocks array() Default
Portal Blocks accounts/driver 'null’ Default
User Capabilities and Constraints user/verify_from_addr false Default
API keys
API keys
API keys
API keys
API keys
IMSP Server imsp/enabled false Default
Kolab Server kolab/enabled false Default
Memcache Server memcache/enabled false Default
ActiveSync
6.2. IMP configuration
IMP is a email part of horde, all the mail are managed by cyrus, configuration is done in two places, directly under horde/configuration, with administration account. And also in a specific file written in php to describe the mail database connection
Modification of the php file of imp to access the mail database :
 gedit /etc/horde/imp/servers.php
A connection to data is made throw a “servers”, so the first operation is to comment all the “$servers[“
Add a the source to connect to the mail database.
$servers['cyrus'] = array(
    'name' => 'Cyrus IMAP Server',
    'server' => '127.0.0.1',
    'hordeauth' => true,
    'protocol' => 'imap/notls',
    'port' => 143,
    'maildomain' => domain.com',
    'smtphost' => '127.0.0.1',
    'smtpport' => 25,
    'realm' => '',
    'preferred' => '',
    'admin' => array(
        'params' => array(
            'login' => 'administrator',
            'password' => '?????TBD????,',
            // The 'userhierarchy' parameter defaults to 'user.'
            // If you are using a nonstandard hierarchy for personal
            // mailboxes, you will need to set it here.
            'userhierarchy' => 'user.',
            // Although these defaults are normally all that is required,
            // you can modify the following parameters from their default
            // values.
            'protocol' => 'imap/notls',
            'hostspec' => 'localhost',
            'port' => 143
        )
    ),
    'quota' => array(
        'driver' => 'imap',
        'params' => array('hide_quota_when_unlimited' => true),
    ),
    'acl' => array(
        'driver' => 'rfc2086',
    ),
);
Change under your configuration the following value (http://127.0.0.1/horde/???
127.0.0.1/horde/???
Page Parameter name Value Comments
External Utilities and Menu spell/params/path '/usr/bin/' Default
External Utilities and Menu spell/driver 'aspell' Default
External Utilities and Menu utils/gnupg '' Default
External Utilities and Menu utils/gnupg_keyserver array('pgp.mit.edu') Default
External Utilities and Menu utils/gnupg_timeout 10 Default
External Utilities and Menu utils/openssl_cafile '' Default
External Utilities and Menu utils/openssl_binary '' Default
External Utilities and Menu menu/apps array() Default
User Capabilities and Constraints user/select_sentmail_folder false Default
User Capabilities and Constraints user/allow_resume_all_in_drafts false Default
User Capabilities and Constraints user/allow_folders true Default
User Capabilities and Constraints user/allow_resume_all false Default
User Capabilities and Constraints user/allow_view_source true Default
User Capabilities and Constraints user/alternate_login false Default
User Capabilities and Constraints user/redirect_on_logout false Default
User Capabilities and Constraints user/select_view true Default
Server server/server_list 'shown' Default
Server server/fixed_folders array() Default
Server server/sort_limit 0 Default
Server server/cache_folders true Default
Server server/token_lifetime 1800 Default
Server server/cachejs 'none' Default
Server server/cachecss 'none' Default
Mailbox and Fetchmail mailbox/show_preview true Default
Mailbox and Fetchmail fetchmail/show_account_colors false Default
Mailbox and Fetchmail fetchmail/size_limit 4000000 Default
Mailbox and Fetchmail msgcache/use_msgcache false Default
Mailbox and Fetchmail mlistcache/use_mlistcache false Default
Message and Spam msgsettings/filtering/words './config/filter.txt' Default
Message and Spam msgsettings/filtering/replacement '****' Default
Message and Spam spam/reporting false Default
Message and Spam notspam/reporting false Default
Message and Spam print/add_printedby true Default
Compose msg/prepend_header true Default
Compose msg/append_trailer false Default
Compose compose/allow_receipts true Default
Compose compose/special_characters true Default
Compose compose/use_vfs false Default
Compose compose/link_all_attachments false Default
Compose compose/link_attachments_notify true Default
Compose compose/link_attachments true Default
Compose compose/attach_size_limit 0 Default
Compose compose/attach_count_limit 0 Default
Compose compose/reply_limit 200000 Default
Custom Hooks hooks/vinfo false Default
Custom Hooks hooks/postlogin false Default
Custom Hooks hooks/postsent false Default
Custom Hooks hooks/signature false Default
Custom Hooks hooks/trailer false Default
Custom Hooks hooks/fetchmail_filter false Default
Custom Hooks hooks/mbox_redirect false Default
Custom Hooks hooks/mbox_icon false Default
Custom Hooks hooks/spam_bounce false Default
Custom Hooks hooks/msglist_format false Default
Custom Hooks hooks/display_folder false Default
Other settings maillog/use_maillog true Default
Other settings sentmail/driver 'none' Default
Other settings tasklist/use_tasklist true Default
Other settings notepad/use_notepad true Default
Other settings tos/file '' Default
6.3. kronolith configuration
All the information for the diary is stored in the SQL database
Change under your configuration the following value (http://127.0.0.1/horde/???
Page Parameter name Value Comments
Calendar Driver calendar/params/table 'kronolith_events' Default
Calendar Driver calendar/params/driverconfig 'horde' Default
Calendar Driver calendar/driver 'sql' Default
Calendar Driver storage/params/table 'kronolith_storage' Default
Calendar Driver storage/params/driverconfig 'horde' Default
Calendar Driver storage/driver 'sql' Default
Calendar Driver metadata/keywords false Default
Calendar Driver reminder/server_name '127.0.0.1' localhost
Calendar Driver reminder/from_addr 'reminders@domain.com' The address fom witch you send remeinder
Calendar Driver autoshare/shareperms 'read' Default
Calendar Driver holidays/enable true Default
Calendar Driver menu/print true Default
Calendar Driver menu/import_export true Default
Calendar Driver menu/apps array() Default
V4
Page Parameter name Value Comments
Calendar Driver calendar/params/table 'kronolith_events' Default
Calendar Driver calendar/params/driverconfig 'horde' Default
Calendar Driver calendar/params/utc 'true' Default
Calendar Driver calendar/driver 'sql' Default
Calendar Driver storage/default_domain '' Default
Calendar Driver storage/params/table 'kronolith_storage' Default
Calendar Driver storage/params/driverconfig 'horde' Default
Calendar Driver storage/driver 'sql' Default
Calendar Driver reminder/server_name '127.0.0.1' localhost
Calendar Driver reminder/from_addr 'reminders@domain.com' The address fom witch you send remeinder
Calendar Driver autoshare/shareperms 'read' Default
Calendar Driver share/notify false Default
Calendar Driver holidays/enable true Default
Calendar Driver menu/print true Default
Calendar Driver menu/import_export true Default
Calendar Driver menu/apps array() Default
Calendar Driver Maps/driver 'No inline maps' Default
6.4. Ingo configuration
6.5. Turba configuration
Turba is a contact database, all the contact will be stored in the LDAP, configuration is done in two places, directly under horde/configuration, with administration account. and also in a specific file written in php to describe the LDAP connection
Modification of the php file of turba to access the contact database (LDAP) :
 gedit /etc/horde/turba/sources.php
A connection to data is made throw a “cfgSources”, so the first operation is to comment all the “$cfgSources[“
Add a first source to implement the contact (will be stored as LDAP schema 'turbaContact')
$cfgSources['localldap'] = array(
    'title' => _("Shared Directory"),
    'type' => 'ldap',
    'params' => array(
        'server' => 'comp.domain.com',
        'port' => 389,
        'tls' => true,
        'root' => 'dc=domain,dc=com',
        'bind_dn' => 'cn=Directory Manager',
        'bind_password' => '?????TBD?????,',
        'sizelimit' => 200,
        'dn' => array('cn'),
        'objectclass' => array('top',
                              'person',
                              'organizationalPerson',
                              'inetOrgPerson','turbaContact'),
                              // Add 'turbaContact' to this array if using
                              // 'turbaType' attribute below, and 'calEntry'
                              // if using 'freebusyUrl'.
        'scope' => 'one',
        'charset' => 'utf-8',
        // Consult the LDAP schema to verify that all required attributes for
        // an entry are set and add them if needed.
        'checkrequired' => false,
        // Value used to fill in missing required attributes.
        'checkrequired_string' => ' ',
        // Check LDAP schema for valid syntax. If this is false an address
        // field is assumed to have postalAddress syntax; otherwise the schema
        // is consulted for the syntax to use.
        'checksyntax' => false,
        'version' => 3
    ),
    'map' => array(
        '__key' => 'dn',
        '__uid' => 'uid',
        // From horde.schema.  Make sure you have 'turbaContact' objectClass
        // included above:
        '__type' => 'turbaType',
        '__members' => 'turbaMembers',
        'name' => 'cn',
        'lastname' => 'sn',
        'email' => 'mail',
        'homePhone' => 'homephone',
        'workPhone' => 'telephonenumber',
        'cellPhone' => 'mobiletelephonenumber',
        'homeAddress' => 'homepostaladdress',
//
        // From rfc2739.schema:
        'freebusyUrl' => 'calFBURL',
    ),
    'search' => array(
        'name',
'lastname',
        'email',
        'homePhone',
        'workPhone',
        'cellPhone',
        'homeAddress'
    ),
    'strict' => array(
        'dn',
    ),
    'approximate' => array(
        'cn',
    ),
    'export' => true,
    'browse' => true,
);
Add a second source to implement the users of the system (will be stored as LDAP schema ‘initPeople’)
$_ldap_uid = Auth::getBareAuth();
$_ldap_basedn = 'dc=example,dc=com';
$cfgSources['personal_ldap'] = array(
    'title' => _("My Address Book"),
    'type' => 'ldap',
    'params' => array(
        'server' => 'localhost',
        'tls' => true,
        'root' => 'ou=' . $_ldap_uid . ',ou=personal_addressbook,' . $_ldap_basedn,
        'bind_dn' => 'uid=' . $_ldap_uid . ',ou=People,' . $_ldap_basedn,
        'bind_password' => Auth::getCredential('password'),
        'dn' => array('uid'),
        'objectclass' => array('top',
                              'person',
                              // 'turbaContact',
                              'inetOrgPerson',
                              // 'calEntry',
                              'organizationalPerson'),
        'scope' => 'one',
        'charset' => 'utf-8',
        'version' => 3
    ),
    'map' => array(
        '__key' => 'dn',
        '__uid' => 'uid',
        From horde.schema:
        // '__type' => 'turbaType',
        // '__members' => 'turbaMembers',
        'name' => 'cn',
        'email' => 'mail',
        'lastname' => 'sn',
        'title' => 'title',
        'company' => 'organizationname',
        'businessCategory' => 'businesscategory',
        'workAddress' => 'postaladdress',
        'workPostalCode' => 'postalcode',
        'workPhone' => 'telephonenumber',
        'fax' => 'facsimiletelephonenumber',
        'homeAddress' => 'homepostaladdress',
        'homePhone' => 'homephone',
        'cellPhone' => 'mobile',
        'notes' => 'description',
        // Evolution interopt attributes: (those that do not require the
        // evolution.schema)
        'office' => 'roomNumber',
        'department' => 'ou',
        'nickname' => 'displayName',
        'website' => 'labeledURI',
        // These are not stored on the LDAP server.
        'pgpPublicKey' => 'object_pgppublickey',
        'smimePublicKey' => 'object_smimepublickey',
        // From rfc2739.schema:
        // 'freebusyUrl' => 'calFBURL',
    ),
    'search' => array(
        'name',
        'email',
        'businessCategory',
        'title',
        'homePhone',
        'workPhone',
        'cellPhone',
        'homeAddress'
    ),
    'strict' => array(
        'dn',
    ),
    'approximate' => array(
        'cn',
    ),
    'export' => true,
    'browse' => true,
);
Change if necessary your configuration the following value (http://127.0.0.1/ horde/???)
127.0.0.1/horde/???
Page Parameter name Value Comments
General vhosts false Default
General debug_level E_ALL & ~E_NOTICE Default
Parameter name Value Comments
menu/import_export true Default
menu/apps array() Default
client/addressbook 'localldap' The predefined source for contact
shares/source 'localldap' The predefined source for contact
comments/allow true Default
documents/type 'Horde defaults' Change to horde configuration
6.6. Gollem configuration
Gollem is a web-based File Manager, configuration is done in two places, directly under horde/configuration, with administration account. and also in two specific files written in php to describe the file connection
First get this module directly from horde website and install it (no rpm for it)
 wget ftp://ftp.horde.org/pub/gollem/gollem-h3-1.1.2.tar.gz
 tar -xvf gollem-h3-1.1.2.tar.gz
 cd gollem-h3-1.1.2
 mv config /etc/horde/gollem
 chown -R apache:apache /etc/horde/gollem
 chmod -R 770 /etc/horde/gollem
 cd ..
 mv gollem-h3-1.1.2 /usr/share/horde/gollem
 cd  /usr/share/horde/gollem
 ln -s ../../../../etc/horde/gollem config
Modification of the php file of gollem to correct the link between configuration and php files :
 cp /etc/horde/gollem/prefs.php.dist /etc/horde/gollem/prefs.php
 chown -R apache:apache /etc/horde/gollem/prefs.php
 gedit /etc/horde/gollem/prefs.php
Change line
require_once dirname(__FILE__) . '/../lib/Gollem.php';
by
require_once '/usr/share/horde/gollem/lib/Gollem.php';
Modification of the php file of gollem to access file data :
 cp /etc/horde/gollem/backends.php.dist /etc/horde/gollem/backends.php
 chown -R apache:apache /etc/horde/gollem/backends.php
 gedit /etc/horde/gollem/backends.php
A connection to data is made throw a “$backends”, so the first operation is to comment all the “$backends“
Add a first source to implement the file system
$backends['file'] = array(
    'name' => 'Virtual Home Directories',
    'driver' => 'file',
    'preferred' => 'comp1.domain.com',
    'hordeauth' => false,
    'params' => array(
        // The base location under which the user home directories live.
        'vfsroot' => '/home/Horde_vf/',
        // The default permissions to set for newly created folders and files.
        // 'permissions' => $conf['umask']
    ),
    'loginparams' => array(),
    'root' => '/',
    'home' => Auth::getAuth(),
    // 'createhome' => false,
    // 'filter' => '^regex$',
    // 'quota' => false,
    'clipboard' => true,
    'attributes' => array('type', 'name', 'edit', 'download', 'modified', 'size', 'permission', 'owner', 'group')
);
Change if necessary your configuration the following value (http://127.0.0.1/horde/???)
Page Parameter name Value Comments
File Manager backend/backend_list none Default
File Manager foldercache/use_cache No Default
Menu Settings menu/apps array() Default
Users capabilities and constrains User/alternate_login false Default
Users capabilities and constrains User/redirect_on_logout false Default
6.7. Passwd configuration
Passwd is a tool to allow user to change their password, configuration is done in two places, directly under horde/configuration, with administration account. and also in a specific file written in php to describe the LDAP connection
First get this module directly from horde website and install it (no rpm for it)
 wget ftp://ftp.horde.org/pub/passwd/passwd-h3-3.1.3.tar.gz
 tar -xvf passwd-h3-3.1.3.tar.gz
 cd passwd-h3-3.1.3
 mv config /etc/horde/passwd
 chown -R apache:apache /etc/horde/passwd
 chmod -R 770 /etc/horde/passwd
 cd ..
 mv passwd-h3-3.1.3 /usr/share/horde/passwd
 cd  /usr/share/horde/passwd
 ln -s ../../../../etc/horde/passwd config
Modification of the php file of passwd to access the password database (LDAP) :
 cp /etc/horde/passwd/backends.php.dist /etc/horde/passwd/backends.php
 chown -R apache:apache /etc/horde/passwd/backends.php
 gedit /etc/horde/passwd/backends.php
A connection to data is made throw a “$backends”, so the first operation is to comment all the “$backends“
Add a source to implement the password change (will be stored as LDAP)
$backends['ldapadmin'] = array(
    'name' => 'LDAP Server',
    'preferred' => 'comp1.domain.com',
    'password policy' => array(
        'minLength' => 4,
        'maxLength' => 20
    ),
    'driver' => 'ldap',
    'params' => array(
        'host' => 'comp1.domain.com',
        'port' => 389,
        'basedn' => 'ou=People,dc=domain,dc=com',
        'admindn' => 'cn=Directory Manager',
        'adminpw' => 'Pass-389-dir-man',
        // LDAP object key attribute
        'uid' => 'uid',
        // these attributes will enable shadow password policies.
        // 'shadowlastchange' => 'shadowlastchange',
        // 'shadowmin' => 'shadowmin',
        'attribute' => 'userPassword',
        // this will be appended to the username when looking for the userdn.
        'realm' => '',
        // Use this filter when searching for the user's DN.
        'filter' => '',
        // Hash method to use when storing the password
        'encryption' => 'ssha',
   
        // Only applies to LDAP servers. If set, should be 0 or 1. See the LDAP
        // documentation about the corresponding parameter REFERRALS.
        // Windows 2003 Server require to set this parameter to 0
        //'referrals' => 0,
       
        // Whether to enable TLS for this LDAP connection
        // Note: make sure the host matches cn in the server certificate
        'tls' => true
    )
);
Change if necessary your configuration the following value (http://127.0.0.1/horde/???)
Page Parameter name Value Comments
menu menu/apps array() Default
backend backend/backend_list 'hidden' Default
user user/change true Default
user user/refused array('root', 'bin', 'daemon', 'adm', 'lp', 'shutdown', 'halt', 'uucp', 'ftp', 'anonymous', 'nobody', 'httpd', 'operator', 'guest', 'diginext', 'bind', 'cyrus', 'courier', 'games', 'kmem', 'mailnull', 'man', 'mysql', 'news', 'postfix', 'sshd', 'tty', 'www', 'admin') Add the « admin » user
password password/strengthtests false Default
hooks hooks/full_name false Default
hooks hooks/default_username false Default
hooks hooks/username false Default
hooks hooks/userdn false Default
6.8. Ansel configuration (H4)
Ansel is a web-based photo manager, configuration is done in one places, directly under horde/configuration, with administration account.
First get this module directly from horde website and install it
 wget ftp://ftp.horde.org/pub/ansel/ansel-h3-1.1.2.tar.gz
 tar -xvf ansel-h3-1.1.2.tar.gz
 cd ansel-h3-1.1.2
 mv config /etc/horde/ansel
 chown -R apache:apache /etc/horde/ansel
 chmod -R 770 /etc/horde/ansel
 cd ..
 mv ansel-h3-1.1.2 /usr/share/horde/ansel
 cd  /usr/share/horde/ansel
 ln -s ../../../../etc/horde/ansel config
Change if necessary your configuration the following value (http://127.0.0.1/horde/???)
Page Parameter name Value Comments
General settings gallery/listlimit '' Default
General settings gallery/numlimit '' Default
General settings gallery/downloadzip true Default
General settings gallery/customlabel true Default
General settings menu/print true Default
General settings menu/apps array('horde') Default
VFS and photos options image/type Horde default Default
VFS and photos options vfs/src 'php' Default
VFS and photos options image/type 'jpeg' Default
VFS and photos options image/autogen '5' Default
VFS and photos options image/prettythumbs true Default
VFS and photos options image/squaremini true Default
VFS and photos options image/smartcrop false Default
VFS and photos options image/tiny false Default
VFS and photos options image/num_uploads '100' Default
VFS and photos options image/font '' Default
Thumbnail Settings thumbnail/perpage '30' Default
Thumbnail Settings thumbnail/width '150' Default
Thumbnail Settings thumbnail/height '150' Default
Thumbnail Settings thumbnail/unsharp true Default
Thumbnail Settings thumbnail/radius '0.7' Default
Thumbnail Settings thumbnail/amount '1' Default
Thumbnail Settings thumbnail/threshold ‘0.05’ Default
Screen Image Settings screen/width '800' Default
Screen Image Settings screen/height '600' Default
Screen Image Settings screen/unsharp true Default
Screen Image Settings screen/radius '0.5' Default
Screen Image Settings screen/amount '1.2' Default
Screen Image Settings screen/threshold ‘0.05’ Default
Ecard Settings ecard/enable true Default
Photo Comments comments/allow ‘Authenticated user’ Default
Cache Settings ansel_cache/usecache false Default
Tag Settings tags/relatedtags false Default
Content Reporting Settings report_content/driver false Default
Age settings ages/limits ‘’ Default
Age settings ages/hook false Default
Face Detection faces/driver ‘manuel detection of user’ Default
Face Detection faces/search
'7' Default
Add the sql schema for Ansel in the database
First get this module directly from horde website and install it
 cd /usr/share/horde/
 ./bin/db_migrate ansel
6.9. Mnemo configuration
Mnemo is a web-based note, configuration is done directly under horde/configuration, with administration account. But you need first to add the correct field in the SQL database
First get this module directly from horde website and install it (no rpm for it)
 wget ftp://ftp.horde.org/pub/mnemo/mnemo-h3-2.2.4.tar.gz
 tar -xvf mnemo-h3-2.2.4.tar.gz
 cd mnemo-h3-2.2.4
 mv config /etc/horde/mnemo
 chown -R apache:apache /etc/horde/mnemo
 chmod -R 770 /etc/horde/mnemo
 cd ..
 mv mnemo-h3-2.2.4 /usr/share/horde/mnemo
 cd  /usr/share/horde/mnemo
 ln -s ../../../../etc/horde/mnemo config
Modification of the php file of mnemo to correct the link between configuration and php files :
 cp /etc/horde/mnemo/prefs.php.dist /etc/horde/mnemo/prefs.php
 chown -R apache:apache /etc/horde/mnemo/prefs.php
 gedit /etc/horde/mnemo/prefs.php
Change line
require_once dirname(__FILE__) . '/../lib/Mnemo.php';
by
require_once '/usr/share/horde/mnemo/lib/Mnemo.php';
Add the field in the SQL database :
 cd /usr/share/horde/mnemo/scripts/sql/
 mysql -u root -p horde <mnemo.sql
Used password : “Pass-mySql“.
Change if necessary your configuration the following value (http://127.0.0.1/horde/???)
127.0.0.1/horde/???
Page Parameter name Value Comments
Generate Notes storage/params/table mnemo_memos Default
Generate Notes storage/params/driverconfig Horde Default
Generate Notes storage/driver sql Default
Generate Notes utils/gnupg Default
Generate Notes menu/print true Default
Generate Notes menu/import_export true Default
Generate Notes menu/apps array() Default
6.10. MIMP configuration
MIMP is a special configuration of imp for mobile phone
First get this module directly from horde website and install it (no rpm for it)
 wget ftp://ftp.horde.org/pub/mimp/mimp-h3-1.1.3.tar.gz
 tar -xvf mimp-h3-1.1.3.tar.gz
 cd  mimp-h3-1.1.3
 mv config /etc/horde/mimp
 chown -R apache:apache /etc/horde/mimp
 chmod -R 770 /etc/horde/mimp
 cd ..
 mv mimp-h3-1.1.3 /usr/share/horde/mimp
 cd  /usr/share/horde/mimp
 ln -s ../../../../etc/horde/mimp config
Change if necessary your configuration the following value (http://127.0.0.1/horde/???)
127.0.0.1/horde/???
Page Parameter name Value Comments
Mailbox Settings mailbox/max_from_chars 10 Default
Mailbox Settings mailbox/max_subj_chars 20 Default
6.11. trean configuration
trean is a Bookmarks managers , configuration is done directly under horde/configuration, with administration account. But you need first to add the correct field in the SQL database
First get this module directly from horde website and install it (no rpm for it)
 wget ftp://ftp.horde.org/pub/snaps/latest/trean-FRAMEWORK_3*.tar.gz
 tar -xvf trean-FRAMEWORK_3*.tar.gz
 cd trean-FRAMEWORK_3
 mv config /etc/horde/trean
 chown -R apache:apache /etc/horde/trean
 chmod -R 770 /etc/horde/trean
 cd ..
 mv trean-FRAMEWORK_3 /usr/share/horde/trean
 cd  /usr/share/horde/trean
 ln -s ../../../../etc/horde/trean config
Modification of the php file of horde to add this application in the horde database :
 gedit /etc/horde/registry.php
Change line
$this->applications['trean'] = array(
    'fileroot' => FEDORA_FILEROOT . '/trean',
    'webroot' => $this->applications['horde']['webroot'] . '/trean',
    'name' => _("Bookmarks"),
    'status' => 'inactive',
    'provides' => 'bookmarks',
    'menu_parent' => 'organizing'
);
by
$this->applications['ansel'] = array(
    'fileroot' => FEDORA_FILEROOT . '/ansel',
    'webroot' => $this->applications['horde']['webroot'] . '/ansel',
    'name' => _("Photos"),
    'status' => 'active',
    'provides' => 'images',
    'menu_parent' => 'website'
);
$this->applications['trean'] = array(
    'fileroot' => FEDORA_FILEROOT . '/trean',
    'webroot' => $this->applications['horde']['webroot'] . '/trean',
    'name' => _("Bookmarks"),
    'status' => 'active',
    'provides' => 'bookmarks',
    'menu_parent' => 'organizing'
);
Add the field in the SQL database :
 cd /usr/share/horde/trean/scripts/sql/
 mysql -u root -p horde <trean.sql
Used password : “Pass-mySql“.
Change if necessary your configuration the following value (http://127.0.0.1/horde/???)
127.0.0.1/horde/???
Page Parameter name Value Comments
Menu settings Menu/mport_export Yes Default
Menu settings Menu/apps list Default
Virtual File Storage Favicons/type Sql We want to use SQL, yes
Virtual File Storage Favicons/params/driverconfig Horde Default
(TBD)
(TBD)

Revision as of 14:31, 18 February 2011

Warning.png
This page is a draft only
It is still under construction and content may change. Do not rely on the information on this page.

Summary

The goal of this howto is to install a mail server based on cyrus with a webmail based on horde (version 4)

Inside the server the different component

Initialisation and pre requis

Open a terminal and connect as Root and used-it for all different operation

> su -

First operation to do is to install all the loads from repository (fedora and rpmfusion)

> yum install httpd horde imp ingo kronolith turba mysql-server  php-mysql 389-ds 389-ds-base 389-ds-console policycoreutils-gui
cyrus-imapd cyrus-imapd-utils cyrus-sasl-ldap postfix fetchmail aspell php-pear-MDB2-Driver-mysql
php-pear-Mail-mimeDecode php-pear-Date-Holidays php-pear-HTTP-Request php-idn php-libpuzzle php-facedetect php-pecl-imagick php-pecl-geoip
php-pecl-lzf php-mbstring php-mcrypt php-pear-Services-Weather php-pear-Net-DNS openssl mod_ssl

Define in “/etc/php.ini“ the value of date.timezone. If you don’t do that you will a lot of error in the http log (for example : date.timezone = Europe/Paris)

Change SELINUX right to authorise external connection: TBD (for the moment deactivate by using IHM TBD)


We will consider in the next part of the document the different password

User or application Password
root Pass-root
Mysql (Application) Pass-mySql
Horde (inside mySql) Pass-horde-DB
389 DS administration Pass-389-admin
389 DS Directory Manager Pass-389-dir-man
user1 Pass-user1
user2 Pass-user2
admin pass-admin

We will also consider that your are located in the domain “domain.com” and the server is name”comp1”. The computer name and domain shall be correctly defined (can be check by command hostname) or the configuration will not be work correctly

And finally for security reason, we will used as possible crypted connection. For example LDAPS instead of LDAP. So for that we need to have a certificat First create the private certificate

> mkdir /etc/certificate 
> chmod 700 /etc/certificate 
> cd /etc/certificate 
> openssl genrsa -des3 -out server.key 1024

when the command ask you “Enter pass phrase for server.key: ” enter a sentence 'phrase' and remember it. Now create the csr file (Certificate Signing Request)

> cd /etc/certificate 
> openssl req -new -key server.key -out server.csr

  • Enter pass phrase for server.key: :==> 'phrase'
  • Country Name (2 letter code) [XX]: :==> answer it
  • State or Province Name (full name) []: :==> answer it
  • Locality Name (eg, city) [Default City]: :==> answer it
  • Organization Name (eg, company) [Default Company Ltd]: :==> answer it
  • Organizational Unit Name (eg, section) []: :==> answer it
  • Common Name (eg, your name or your server's hostname) []:==> domain.com
  • Email Address []: :==> admin@domain.com
  • A challenge password []:  :==> empty
  • An optional company name []:  :==> empty

Remove Passphrase from Key

> cd /etc/certificate 
> cp server.key server.key.org
> openssl rsa -in server.key.org -out server.key

Enter pass phrase for server.key.org: :==> 'phrase'

Generating a Self-Signed Certificate for 365 days (so you need to renew it each year, it's more secure)

> cd /etc/certificate 
> openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt


Comment definition of port 80 (non secure access) in http.conf files

> gedit /etc/httpd/conf/httpd.conf

Add # before line “Listen 80” Co,nfigure ssl acces (port 443)

> gedit /etc/httpd/conf.d

/ssl.conf set line SSLCertificateFile /etc/certificate/server.crt SSLCertificateKeyFile /etc/certificate/server.key

edit the horde server part

> gedit /etc/httpd/conf.d/horde.conf

Add after “Allow from 127.0.0.1” the line “Allow from YouExternalIP”

Start the web server for the current session and added to the list of process to be started at init

> /sbin/chkconfig httpd on
> /etc/init.d/httpd start


Mysql configuration

Start the DB server for the current session and added to the list of process to be started at init

> /sbin/chkconfig mysqld on
> /etc/init.d/mysqld start

Configure mysql

> mysql_secure_installation

Enter current password for root (enter for none):==> Pass-root Change the root password? [Y/n] ==> y New password: ==> Pass-mySql Remove anonymous users? [Y/n] ==> Y Disallow root login remotely? [Y/n] ==> Y Remove test database and access to it? [Y/n] ==> Y Reload privilege tables now? [Y/n] ==> Y

Add in the DB the different tables for the used with horde First edit in the file “/usr/share/horde/scripts/sql/create.mysql.sql” and change the password (line after “-- IMPORTANT: Change this password.”) with “Pass-horde-BD“.

> gedit /usr/share/horde/scripts/sql/create.mysql.sql
> cd /usr/share/horde/scripts/sql/
> mysql -u root -p < create.mysql.sql

Used password : “Pass-mySql”

> cd /usr/share/horde/kronolith/scripts/sql/
> mysql -u root -p horde < kronolith.mysql.sql

Used password : “Pass-mySql“.

389 DS configuration

Initialisation of the server

The configuration of LDAP is more difficult and the chose on a fedora box is to use 389 DS instead (thank to the 389-console tool)

Add schema for Horde

> gedit /usr/share/horde/turba/scripts/ldap/rfc2739.schema

Change /usr/share/horde/turba/scripts/ldap/rfc2739.schema in "attribute" by "attributetype"

> cd /usr/lib/dirsrv/perl
> wget Http://directory.fedoraproject.org/download/ol-schema-migrate.pl
> chmod 700 ol-schema-migrate.pl 
> ./ol-schema-migrate.pl -b /usr/share/horde/scripts/ldap/horde.schema > /etc/dirsrv/schema/60horde.ldif
> ./ol-schema-migrate.pl -b /usr/share/horde/turba/scripts/ldap/rfc2739.schema > /etc/dirsrv/schema/05rfc2739.ldif

Configure 389 DS

> setup-ds-admin.pl -u

Would you like to continue with set up? [yes]:==> yes Do you agree to the license terms? [no]: ==> yes Would you like to continue? [no]: ==> yes (With the use of 386 DS for personal usage, the limit is OK) Choose a setup type [2]: ==> 2 Computer name [comp1.domain.com]: ==> comp1.domain.com System User [nobody]: ==> nobody (User ‘nobody’ already exist in based fedora install) System Group [nobody]: ==> nobody Do you want to register this software with an existing configuration directory server? [no]: ==> no administrator ID [admin]: ==> admin Password: ==> Pass-389-admin Password (confirm): ==> Pass-389-admin Administration Domain [domain.com]: ==> domain.com Directory server network port [389]: ==> 389 Directory server identifier [comp1]: ==> comp1 Suffix [dc=domain, dc=com]: ==> dc=domain, dc=com Directory Manager DN [cn=Directory Manager]: ==> cn=Directory Manager Password: ==> Pass-389-dir-man Password (confirm): ==> Pass-389-dir-man Administration port [9830]: ==> 9830 Are you ready to set up your servers? [yes]: ==> yes

Add the certificate so the LDAP server will be secure

> cd /etc/dirsrv/slapd-comp1 binary
> openssl pkcs12 -export -inkey /etc/certificate/server.key -in /etc/certificate/server.crt -out /tmp/crt.p12 -nodes -name 'Server-Cert' 

Enter Export Password: :==> none Verifying - Enter Export Password: :==> none

> pk12util -i /tmp/crt.p12 -d .

Enter new password: :==> none Re-enter password: :==> none Enter password for PKCS12 file: :==> none • certutil -d . -A -n "My Local CA" -t CT,, -a -i /etc/certificate/server.crt

Now we will update the configuration to use the secure port only (636) for that create 2 files

First /tmp/ssl_enable.ldif dn: cn=encryption,cn=config changetype: modify replace: nsSSL3 nsSSL3: on - replace: nsSSLClientAuth nsSSLClientAuth: required - add: nsSSL3Ciphers nsSSL3Ciphers: -rsa_null_md5,+rsa_rc4_128_md5,+rsa_rc4_40_md5,+rsa_rc2_40_md5,+rsa_des_sha,+rsa_fips_des_sha,+rsa_3des_sha,+rsa_fips_3des_sha,+fortezza,+fortezza_rc4_128_sha,+fortezza_null,+tls_rsa_export1024_with_rc4_56_sha,+tls_rsa_export1024_with_des_cbc_sha,-rc4,-rc4export,-rc2,-rc2export,-des,-desede3

dn: cn=config changetype: modify add: nsslapd-security nsslapd-security: on - replace: nsslapd-ssl-check-hostname nsslapd-ssl-check-hostname: off - replace: nsslapd-port nsslapd-port: 0

And /tmp/addRSA.ldif dn: cn=RSA,cn=encryption,cn=config changetype: add objectclass: top objectclass: nsEncryptionModule cn: RSA nsSSLPersonalitySSL: Server-Cert nsSSLToken: internal (software) nsSSLActivation: on


insert this file in the LDAP server

> /usr/lib/mozldap/ldapmodify -D "cn=directory manager" -w - -f /tmp/ssl_enable.ldif
> /usr/lib/mozldap/ldapmodify -D "cn=directory manager" -w - -a -f /tmp/addRSA.ldif

Each time used the password : Pass-389-dir-man

Start the 389 DS for the current session and added to the list of process to be started at init

> /sbin/chkconfig dirsrv on
> /etc/init.d/dirsrv restart

Directory service filling

With admin tool

insert the certificate in admin tool

> cd /etc/dirsrv/admin-serv
> certutil -A -d . -n "CA certificate" -t "CT,," -a -i /etc/certificate/server.crt

Start the 389 DS admin server for the current session. When the tool is needed (change of LDAP database) this action is needed to used it

> /etc/init.d/dirsrv-admin start


Start the tool Name: “admin” Password: “Pass-389-admin” Server: “http://comp1.domain.com:9830”

> /usr/bin/389-console

(TBD)

create admin et root account

Direct import

5. Mail configuration 5.1. Fetchmail Fetchmail is configure by a single file “/etc/fetchmailrc”  gedit /etc/fetchmailrc

The format of the file is described in the man page of fetchmail. Here is the main command of the file • set : allow to configure a parameter o set daemon <interval> : polling interval of fetchmail in second o set syslog : redirect status and error messages emitted to the syslog • smtphost <internal server>: internal server where the mail has to be send. In our case as we used postfix, we must have the socket of the postfix lmtp server • poll <mail server>: indicate the mail serveur to be poll o protocol <proto>: protocol for the polling (POP3 or IMAP) o username <login>: indicate the login on the server o password <pass>: indicate the login on the server o to <internal>: give the internal login on LDAP • Usefull option o keep: option to keep the mail on the server o fetchall : option to get all the mail on the server (read or not read)

An example of “fetchmailrc” file

set daemon 300 set syslog poll "pop.mail.yahoo.fr" protocol POP3 username "login" password "password" to user1@comp1.domain.com fetchall poll "serveur2" protocol IMAP username “login" password "password" keep to user2@comp1.domain.com smtphost "/var/lib/imap/socket/lmtp"


This file must be protected (it included your mail password)  chmod 600 /etc/fetchmailrc

By default, no daemon mode is defined, so this must be done by creating the init function as for other daemon  gedit /etc/init.d/fetchmail


  1. This shell script takes care of starting and stopping
  2. fetchmail.
  3. chkconfig: 2345 81 45
  4. description: The Fetchmail daemons allows to retrieve mail using various
  5. mail protocols and route them to the local MTA just as if
  6. the mail was sent directly to the local MTA. This is
  7. specially useful on intermittent dial-up connections.
  8. processname: fetchmail
  9. config: /etc/fetchmailrc
  10. author[s]:
  11. Andrea Sterbini <a.sterbini@itelcad.it>
  12. ObiTuarY <obituary@freshmeat.net>

. /etc/rc.d/init.d/functions

  1. Source networking configuration.

. /etc/sysconfig/network

  1. Check that networking is up.

if [ ${NETWORKING} = "no" ] then exit 0 fi

  1. See how we were called.

case "$1" in

 start)

if [ -s /etc/fetchmailrc ]; then echo -n "Loading fetchmail: " daemon /usr/bin/fetchmail -f /etc/fetchmailrc echo touch /var/lock/subsys/fetchmail else exit 1 fi ;;

 stop)	

echo -n "Shutting down fetchmail: " /usr/bin/fetchmail -q >/dev/null 2>&1 && echo fetchmail

  1. killproc fetchmail

rm -f /var/lock/subsys/fetchmail ;;

 status)
       status fetchmail
       ;;
 restart|reload)
       $0 stop
       $0 start
       ;; 

*) echo "Usage: fetchmail {start|stop|status|restart|reload}" exit 1 esac

exit 0

  1. === End of File ===

5.2. postfix

A lot of web article speak about he choice of postfix versus sendmail, so we will not discuss it. The choice made here is postfix

All file for the configuration of postfix can be found in the folder ‘/etc/postfix’

Configuration of postfix  gedit /etc/postfix/main.cf Change this value myhostname = comp1.domain.com mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp inet_interfaces = $myhostname,localhost mynetworks_style = host relayhost = smtp.monprovider.fr smtpd_banner = $myhostname ESMTP $mail_name

  1. smtpd_tls_security_level = may

smtpd_tls_security_level = none

  1. unknown_local_recipient_reject_code = 550

unknown_local_recipient_reject_code = 450 alias_maps = hash:/etc/aliases, ldap:/etc/postfix/ldap-aliases.cf

Now you must define the link between LDAP and postfix  gedit /etc/postfix/ldap-aliases.cf


server_host = ldap://localhost:389 search_base = ou=People,dc=domain,dc=com query_filter = mail=%u@%2.com result_format = %u domain = deomain.com


for internal mail we used the alias database, so you must edit the alias database  gedit /etc/aliases Replace all root/news/ftp/webmaster/postmaster par user1 and add “root: user1” Generate the binary database  postalias /etc/aliases

5.3. cyrus Configuration of postfix  gedit /etc/cyrus.conf

commenter dans SERVICES  : imap, impas, pop3, pop3s, sieve ajouter a SERVICE : imaplocal cmd="imapd -C /etc/imapd-local.conf" listen="127.0.0.1:imap" prefork=0


Configuration of cyrus  gedit /etc/imapd-local.conf

servername: 127.0.0.1 configdirectory: /var/lib/imap partition-default: /var/spool/imap reject8bit: no munge8bit: yes admins: cyrus root allowanonymouslogin: no hashimapspool: true allowplaintext: yes sasl_pwcheck_method: saslauthd sasl_mech_list: PLAIN tls_require_cert: false lmtpsocket: /var/lib/imap/socket/lmtp Configuration of sasl

 gedit /etc/sysconfig/saslauth

MECH: ==> ldap

 gedit /etc/sysconfig/saslauthd

auxprop_plugin: slapd ldap_servers: ldap://localhost:389 ldap_default_domain: domain.com ldap_auth_method: bind ldap_use_sasl: no ldap_start_tls: no ldap_bind_dn: cn=Directory Manager ldap_bind_pw: ????TND????, ldap_search_base: ou=People,dc=domain,dc=com ldap_scope: sub ldap_filter: uid=%u ldap_password_attr: userPassword


5.4. Start of all server Stop the sendmail server as we used postfix instead  /sbin/chkconfig sendmail off  /etc/init.d/sendmail stop

Start the servers for the current session and added to the list of process to be started at init  /sbin/chkconfig postfix on  /sbin/chkconfig cyrus-imapd on  /sbin/chkconfig fetchmail on  /sbin/chkconfig saslauthd on  /etc/init.d/postfix start  /etc/init.d/cyrus-imapd start  /etc/init.d/fetchmail start  /etc/init.d/saslauthd start




6. Horde configuration 6.1. Horde base configuration Change under your configuration the following value (http://127.0.0.1/horde/???

Page Parameter name Value Comments General vhosts false Default General debug_level E_ALL & ~E_NOTICE Default General max_exec_time 0 Default General compress_pages true Default General secret_key 'xxxxxxxxxxxxxxxxxxxxxxxxx' Default (generated during installation) General umask 077 Default General use_ssl 2 Default General server/name $_SERVER['SERVER_NAME'] Default General server/port $_SERVER['SERVER_PORT'] Default General urls/token_lifetime 30 Default General urls/hmac_lifetime 30 Default General urls/pretty false Default General safe_ips array() Default General session/name 'Horde' Default General session/use_only_cookies true Default General session/cache_limiter 'nocache' Default General session/timeout 0 Default General cookie/domain $_SERVER['SERVER_NAME'] Default General cookie/path '/horde' Default Database sql/persistent false Default Database sql/username 'horde' My horde login Database sql/password 'Pass-mySql' My sql password Database sql/protocol 'unix' Default Database sql/socket Default Database sql/database 'horde' The horde database Database sql/charset 'utf-8' Default Database sql/ca Default Database sql/ssl false Default Database sql/splitread false Default Database sql/phptype 'mysql' Default Authentification auth/admins array('admin') Default Authentification auth/checkip true Default Authentification auth/checkbrowser true Default Authentification auth/alternate_login false Default Authentification auth/redirect_on_logout false Default Authentification auth/list_users 'list' Default Authentification auth/params/hostspec 'comp1.domain.com’ The server Authentification auth/params/basedn 'ou=People,dc=domain, dc=com' Access all people in LDAP Authentification auth/params/binddn 'cn=Directory Manager' The admin of LDAP Authentification auth/params/password 'Pass-389-dir-man' 389 DS Directory Manager password Authentification auth/params/version '3' Default Authentification auth/params/sizelimit Default Authentification auth/params/tls true Authentification auth/params/scope 'sub' Default Authentification auth/params/ad false Default Authentification auth/params/uid 'uid' Default Authentification auth/params/encryption 'ssha' Default Authentification auth/params/newuser_objectclass array('inetOrgPerson', 'organizationalPerson', 'person', 'hordePerson') When create a new user used all this object Authentification auth/params/objectclass array('inetOrgPerson') Search object Authentification auth/params/filter_type 'objectclass' Default Authentification auth/params/password_expiration 'no' Default Authentification auth/driver 'ldap' Sure, we need to use LDAP Sign Up signup/allow false Default Logging log/enabled false Default Logging log_accesskeys false Default Preference System prefs/maxsize Default Preference System prefs/params/hostspec 'comp1.domain.com’ The server Preference System prefs/params/port 389 Default Preference System prefs/params/version '3' Default Preference System prefs/params/tls false Default Preference System prefs/params/basedn 'ou=People,dc=domain, dc=com' Preference System prefs/params/searchdn 'cn=Directory Manager' Preference System prefs/params/searchpw 'Pass-389-dir-man' 389 DS Directory Manager password Preference System prefs/params/admindn 'cn=Directory Manager' Default Preference System prefs/params/adminpw 'Pass-389-dir-man' 389 DS Directory Manager password Preference System prefs/params/writedn 'admin' Default Preference System prefs/params/uid 'uid' Default Preference System prefs/driver 'ldap' Default Alarm System alarms/params/driverconfig 'horde' Default Alarm System alarms/params/ttl 300 Default Alarm System alarms/params/table Default Alarm System alarms/driver 'sql' Default DataTree System datatree/params/driverconfig 'horde’ Default DataTree System datatree/params/table '’ Default DataTree System datatree/params/table_attributes] '’ Default DataTree System datatree/driver 'sql’ Default Groups group/params/hostspec 'comp1.domain.com’ The server Groups group/params/basedn 'ou=Groups,dc=domain,dc=com' Default Groups group/params/binddn 'cn=Directory Manager' Default Groups group/params/password 'Pass-389-dir-man’ 389 DS Directory Manager password Groups group/params/version '3’ Default Groups group/params/tls true Groups group/params/gid 'cn’ Default Groups group/params/memberuid 'memberUid’ Default Groups group/params/attrisdn false Default Groups group/params/newgroup_objectclass array('groupofuniquenames', 'hordeGroup', 'posixGroup') Default Groups group/params/objectclass array('posixGroup') Default Groups group/params/filter_type 'objectclass’ Default Groups group/driver 'ldap’ Default Groups group/cache false Default Permissions perms/driver 'datatree’ Default Shares share/no_sharing true Default Shares share/any_group true Default Shares share/cache false Default Shares share/driver 'datatree’ Default Cache System cache/default_lifetime 86400 Default Cache System cache/params/dir Default Cache System cache/params/sub 0 Default Cache System cache/params/prefix Default Cache System cache/driver 'file’ Default Lock System lock/driver 'none’ Default Token System token/driver 'none’ Default Token System Token/timeout '’ Default Mailer mailer/params/auth true Default Mailer mailer/type 'smtp’ Default Mailer mailformat/brokenrfc2231 false Default Virtual File Storage vfs/params/vfsroot '/home/Horde_vf’ Default Virtual File Storage vfs/type 'file’ Default Custom Session Handler sessionhandler/type 'none’ Default Custom Session Handler sessionhandler/memcache false Default Problem Reporting problems/email 'webmaster@domain.com’ Default Problem Reporting problems/maildomain 'domain.com’ Default Problem Reporting problems/tickets false Default Problem Reporting problems/attachments true Default Menu menu/apps array() Default Menu menu/always false Default Menu menu/links/help 'all’ Default Menu menu/links/options 'authenticated’ Default Menu menu/links/problem 'all’ Default Menu menu/links/login 'all’ Default Menu menu/links/logout 'authenticated’ Default Custom Function Hooks hooks/permsdenied false Default Custom Function Hooks hooks/username false Default Custom Function Hooks hooks/preauthenticate false Default Custom Function Hooks hooks/postauthenticate false Default Custom Function Hooks hooks/authldap false Default Custom Function Hooks hooks/groupldap false Default Portal Blocks portal/fixed_blocks array() Default Portal Blocks accounts/driver 'null’ Default User Capabilities and Constraints user/verify_from_addr true Default IMSP Server imsp/enabled false Default Kolab Server kolab/enabled false Default Memcache Server memcache/enabled false Default

V4


Page Parameter name Value Comments General vhosts false Default General debug_level E_ALL & ~E_NOTICE Default General max_exec_time 0 Default General compress_pages true Default General secret_key 'xxxxxxxxxxxxxxxxxxxxxxxxx' Default (generated during installation) General umask 077 Default General testdisable true Default General tmpdir Default General use_ssl 2 Default General server/name $_SERVER['SERVER_NAME'] Default General server/port $_SERVER['SERVER_PORT'] Default General urls/token_lifetime 30 Default General urls/hmac_lifetime 30 Default General urls/pretty false Default General safe_ips array() Default General session/name 'Horde' Default General session/use_only_cookies true Default General session/cache_limiter 'nocache' Default General session/timeout 0 Default General cookie/domain $_SERVER['SERVER_NAME'] Default General cookie/path '/horde' Installation path Database sql/persistent false Default Database sql/username 'horde' My horde login Database sql/password 'Pass-mySql' My sql password Database sql/protocol 'unix' Default Database sql/socket Default Database sql/database 'horde' The horde database Database sql/charset 'utf-8' Default Database sql/ca Default Database sql/ssl false Default Database sql/splitread false Default Database sql/phptype 'mysql' Default LDAP Ldap/useldap yes Sure, we need to use LDAP LDAP Ldap/hostspec 'comp1.domain.com’ The server LDAP Ldap/port Default LDAP Ldap/tls no Default LDAP Ldap/version 3 Default LDAP Ldap/bindas Bind with administration Default LDAP Ldap/binddn 'cn=Directory Manager' login LDAP Ldap/bindpw 'Pass-389-dir-man’ 389 DS Directory Manager password Authentification auth/admins array('admin') Default Authentification auth/checkip true Default Authentification auth/checkbrowser true Default Authentification auth/alternate_login false Default Authentification auth/redirect_on_logout false Default Authentification auth/list_users 'list' Default Authentification auth/params/driverconfig 'horde default’ Default Authentification auth/params/basedn 'ou=people,dc=domain, dc=com' Access all people in LDAP Authentification auth/params/scope 'sub' Default Authentification auth/params/ad false Default Authentification auth/params/uid 'uid' Default Authentification auth/params/encryption 'ssha' Default Authentification auth/params/newuser_objectclass array('inetOrgPerson', 'organizationalPerson', 'person', 'hordePerson') When create a new user used all this object Authentification auth/params/filter (objectclass=inetOrgPerson) Search object Authentification auth/params/password_expiration 'no' Default Authentification auth/driver 'ldap' Sure, we need to use LDAP Terms of Service Agreement tos/file Default Sign Up signup/allow false Default Logging log/enabled false Default Logging log_accesskeys false Default Preference System prefs/maxsize Default Preference System prefs/params/basedn 'ou=people,dc=domain, dc=com' My config Preference System prefs/params/driverconfig 'Horde default' Default Preference System prefs/params/scope 'Subtree search' Default Preference System prefs/params/uid 'uid' Default Preference System prefs/driver 'ldap' Default Alarm System alarms/params/driverconfig 'horde' Default Alarm System alarms/params/ttl 300 Default Alarm System alarms/params/table Default Alarm System alarms/driver 'sql' Default DataTree System datatree/params/driverconfig 'horde’ Default DataTree System datatree/params/table '’ Default DataTree System datatree/params/table_attributes] '’ Default DataTree System datatree/driver 'sql’ Default Groups group/params/driverconfig 'horde default' Default Groups group/params/basedn 'ou=groups,dc=domain, dc=com' Default Groups group/params/scope 'sub' Default Groups group/params/gid 'cn’ Default Groups group/params/memberuid 'memberUid’ Default Groups group/params/attrisdn false Default Groups group/params/newgroup_objectclass array('groupofuniquenames', 'hordeGroup', 'posixGroup') Default Groups group/params/objectclass array('posixGroup') Default Groups group/params/filter_type 'objectclass’ Default Groups group/driver 'ldap’ Default Groups group/cache false Default Permissions perms/driver 'sql’ Default Permissions perms/driverconfig 'horde default’ Default Shares share/no_sharing true My configuration Shares share/auto_create true Default Shares share/world true Default Shares share/any_group false Default Shares share/cache false Default Shares share/hidden false Default Shares share/cache false Default Shares share/driver 'sql’ Default Cache System cache/default_lifetime 86400 Default Cache System cache/params/dir Default Cache System cache/params/sub 0 Default Cache System cache/params/prefix Default Cache System cache/params/compress yes Default Cache System cache/use_memorycache 'none' Default Cache System cache/driver 'file’ TBD CSS Cachingcachecss cachecss no Default Javascript Caching cachejs no Default Theme Caching cachethemes no Default Lock System lock/driver 'none’ Default Token System token/driver 'none’ Default Token System Token/timeout '’ Default Mailer mailer/params/host Default Mailer mailer/params/port Default Mailer mailer/params/localhost Default Mailer mailer/params/auth 'Best available authentification' My configuration Mailer mailer/params/username Default Mailer mailer/params/password Default Mailer mailer/type 'smtp’ My configuration Mailer mailformat/brokenrfc2231 false Default Virtual File Storage vfs/params/vfsroot '/home/Horde_vf’ Default Virtual File Storage vfs/type 'file’ Default Custom Session Handler sessionhandler/type 'none’ Default Custom Session Handler sessionhandler/memcache false Default HTTP Proxy Settings Http/proxy/proxy_host Default HTTP Proxy Settings Http/proxy/proxy_port Default HTTP Proxy Settings Http/proxy/proxy_user Default HTTP Proxy Settings Http/proxy/proxy_pass Default Spell Checker Settings spell/driver 'aspell' My configuration Spell Checker Settings spell/params/path '/usr/bin/' My configuration OpenSSL Settings openssl/cafile Default OpenSSL Settings openssl/path Default GnuPG Settings Gnupg/path Default GnuPG Settings Gnupg/keyserver Pgp.mit.edu Default GnuPG Settings Gnupg/timeout 10 Default Image Manipulation Settings Image/driver 'PECL image magic' My configuration Image Metadata Driver Settings exif/driver Bundel Default MIME Detection Settings Mime/magic_db '/usr/share/misc/magic' Fedora configuration Country Lookup Settings geoip/datafile Default Problem Reporting problems/email 'admin@domain.com’ Default Problem Reporting problems/maildomain 'domain.com’ Default Problem Reporting problems/tickets false Default Problem Reporting problems/username Default Problem Reporting problems/password Default Problem Reporting problems/attachments true Default Menu menu/apps array() Default Menu menu/always false Default Menu menu/links/help 'all’ Default Menu menu/links/options 'authenticated’ Default Menu menu/links/problem 'all’ Default Menu menu/links/login 'all’ Default Menu menu/links/logout 'authenticated’ Default Menu logo/image '’ Default Menu logo/link '’ Default Portal Blocks portal/fixed_blocks array() Default Portal Blocks accounts/driver 'null’ Default User Capabilities and Constraints user/verify_from_addr false Default API keys API keys API keys API keys API keys IMSP Server imsp/enabled false Default Kolab Server kolab/enabled false Default Memcache Server memcache/enabled false Default ActiveSync

6.2. IMP configuration IMP is a email part of horde, all the mail are managed by cyrus, configuration is done in two places, directly under horde/configuration, with administration account. And also in a specific file written in php to describe the mail database connection

Modification of the php file of imp to access the mail database :  gedit /etc/horde/imp/servers.php

A connection to data is made throw a “servers”, so the first operation is to comment all the “$servers[“

Add a the source to connect to the mail database.

$servers['cyrus'] = array(

   'name' => 'Cyrus IMAP Server',
   'server' => '127.0.0.1',
   'hordeauth' => true,
   'protocol' => 'imap/notls',
   'port' => 143,
   'maildomain' => domain.com',
   'smtphost' => '127.0.0.1',
   'smtpport' => 25,
   'realm' => ,
   'preferred' => ,
   'admin' => array(
       'params' => array(
           'login' => 'administrator',
           'password' => '?????TBD????,',
           // The 'userhierarchy' parameter defaults to 'user.'
           // If you are using a nonstandard hierarchy for personal
           // mailboxes, you will need to set it here.
           'userhierarchy' => 'user.',
           // Although these defaults are normally all that is required,
           // you can modify the following parameters from their default
           // values.
           'protocol' => 'imap/notls',
           'hostspec' => 'localhost',
           'port' => 143
       )
   ),
   'quota' => array(
       'driver' => 'imap',
       'params' => array('hide_quota_when_unlimited' => true),
   ),
   'acl' => array(
       'driver' => 'rfc2086',
   ),

);


Change under your configuration the following value (http://127.0.0.1/horde/??? 127.0.0.1/horde/???

Page Parameter name Value Comments External Utilities and Menu spell/params/path '/usr/bin/' Default External Utilities and Menu spell/driver 'aspell' Default External Utilities and Menu utils/gnupg Default External Utilities and Menu utils/gnupg_keyserver array('pgp.mit.edu') Default External Utilities and Menu utils/gnupg_timeout 10 Default External Utilities and Menu utils/openssl_cafile Default External Utilities and Menu utils/openssl_binary Default External Utilities and Menu menu/apps array() Default User Capabilities and Constraints user/select_sentmail_folder false Default User Capabilities and Constraints user/allow_resume_all_in_drafts false Default User Capabilities and Constraints user/allow_folders true Default User Capabilities and Constraints user/allow_resume_all false Default User Capabilities and Constraints user/allow_view_source true Default User Capabilities and Constraints user/alternate_login false Default User Capabilities and Constraints user/redirect_on_logout false Default User Capabilities and Constraints user/select_view true Default Server server/server_list 'shown' Default Server server/fixed_folders array() Default Server server/sort_limit 0 Default Server server/cache_folders true Default Server server/token_lifetime 1800 Default Server server/cachejs 'none' Default Server server/cachecss 'none' Default Mailbox and Fetchmail mailbox/show_preview true Default Mailbox and Fetchmail fetchmail/show_account_colors false Default Mailbox and Fetchmail fetchmail/size_limit 4000000 Default Mailbox and Fetchmail msgcache/use_msgcache false Default Mailbox and Fetchmail mlistcache/use_mlistcache false Default Message and Spam msgsettings/filtering/words './config/filter.txt' Default Message and Spam msgsettings/filtering/replacement '****' Default Message and Spam spam/reporting false Default Message and Spam notspam/reporting false Default Message and Spam print/add_printedby true Default Compose msg/prepend_header true Default Compose msg/append_trailer false Default Compose compose/allow_receipts true Default Compose compose/special_characters true Default Compose compose/use_vfs false Default Compose compose/link_all_attachments false Default Compose compose/link_attachments_notify true Default Compose compose/link_attachments true Default Compose compose/attach_size_limit 0 Default Compose compose/attach_count_limit 0 Default Compose compose/reply_limit 200000 Default Custom Hooks hooks/vinfo false Default Custom Hooks hooks/postlogin false Default Custom Hooks hooks/postsent false Default Custom Hooks hooks/signature false Default Custom Hooks hooks/trailer false Default Custom Hooks hooks/fetchmail_filter false Default Custom Hooks hooks/mbox_redirect false Default Custom Hooks hooks/mbox_icon false Default Custom Hooks hooks/spam_bounce false Default Custom Hooks hooks/msglist_format false Default Custom Hooks hooks/display_folder false Default Other settings maillog/use_maillog true Default Other settings sentmail/driver 'none' Default Other settings tasklist/use_tasklist true Default Other settings notepad/use_notepad true Default Other settings tos/file Default



6.3. kronolith configuration All the information for the diary is stored in the SQL database Change under your configuration the following value (http://127.0.0.1/horde/???



Page Parameter name Value Comments Calendar Driver calendar/params/table 'kronolith_events' Default Calendar Driver calendar/params/driverconfig 'horde' Default Calendar Driver calendar/driver 'sql' Default Calendar Driver storage/params/table 'kronolith_storage' Default Calendar Driver storage/params/driverconfig 'horde' Default Calendar Driver storage/driver 'sql' Default Calendar Driver metadata/keywords false Default Calendar Driver reminder/server_name '127.0.0.1' localhost Calendar Driver reminder/from_addr 'reminders@domain.com' The address fom witch you send remeinder Calendar Driver autoshare/shareperms 'read' Default Calendar Driver holidays/enable true Default Calendar Driver menu/print true Default Calendar Driver menu/import_export true Default Calendar Driver menu/apps array() Default

V4


Page Parameter name Value Comments Calendar Driver calendar/params/table 'kronolith_events' Default Calendar Driver calendar/params/driverconfig 'horde' Default Calendar Driver calendar/params/utc 'true' Default Calendar Driver calendar/driver 'sql' Default Calendar Driver storage/default_domain Default Calendar Driver storage/params/table 'kronolith_storage' Default Calendar Driver storage/params/driverconfig 'horde' Default Calendar Driver storage/driver 'sql' Default Calendar Driver reminder/server_name '127.0.0.1' localhost Calendar Driver reminder/from_addr 'reminders@domain.com' The address fom witch you send remeinder Calendar Driver autoshare/shareperms 'read' Default Calendar Driver share/notify false Default Calendar Driver holidays/enable true Default Calendar Driver menu/print true Default Calendar Driver menu/import_export true Default Calendar Driver menu/apps array() Default Calendar Driver Maps/driver 'No inline maps' Default


6.4. Ingo configuration 6.5. Turba configuration Turba is a contact database, all the contact will be stored in the LDAP, configuration is done in two places, directly under horde/configuration, with administration account. and also in a specific file written in php to describe the LDAP connection

Modification of the php file of turba to access the contact database (LDAP) :  gedit /etc/horde/turba/sources.php

A connection to data is made throw a “cfgSources”, so the first operation is to comment all the “$cfgSources[“ Add a first source to implement the contact (will be stored as LDAP schema 'turbaContact')

$cfgSources['localldap'] = array(

   'title' => _("Shared Directory"),
   'type' => 'ldap',
   'params' => array(
       'server' => 'comp.domain.com',
       'port' => 389,
       'tls' => true,
       'root' => 'dc=domain,dc=com',
       'bind_dn' => 'cn=Directory Manager',
       'bind_password' => '?????TBD?????,',
       'sizelimit' => 200,
       'dn' => array('cn'),
       'objectclass' => array('top',
                              'person',
                              'organizationalPerson',
                              'inetOrgPerson','turbaContact'),
                              // Add 'turbaContact' to this array if using
                              // 'turbaType' attribute below, and 'calEntry'
                              // if using 'freebusyUrl'.
       'scope' => 'one',
       'charset' => 'utf-8',
       // Consult the LDAP schema to verify that all required attributes for
       // an entry are set and add them if needed.
       'checkrequired' => false,
       // Value used to fill in missing required attributes.
       'checkrequired_string' => ' ',
       // Check LDAP schema for valid syntax. If this is false an address
       // field is assumed to have postalAddress syntax; otherwise the schema
       // is consulted for the syntax to use.
       'checksyntax' => false,
       'version' => 3
   ),
   'map' => array(
       '__key' => 'dn',
       '__uid' => 'uid',
       // From horde.schema.  Make sure you have 'turbaContact' objectClass
       // included above:
       '__type' => 'turbaType',
       '__members' => 'turbaMembers',
       'name' => 'cn',
       'lastname' => 'sn',
       'email' => 'mail',
       'homePhone' => 'homephone',
       'workPhone' => 'telephonenumber',
       'cellPhone' => 'mobiletelephonenumber',
       'homeAddress' => 'homepostaladdress',

//

       // From rfc2739.schema:
       'freebusyUrl' => 'calFBURL',
   ),
   'search' => array(
       'name',

'lastname',

       'email',
       'homePhone',
       'workPhone',
       'cellPhone',
       'homeAddress'
   ),
   'strict' => array(
       'dn',
   ),
   'approximate' => array(
       'cn',
   ),
   'export' => true,
   'browse' => true,

);


Add a second source to implement the users of the system (will be stored as LDAP schema ‘initPeople’) $_ldap_uid = Auth::getBareAuth(); $_ldap_basedn = 'dc=example,dc=com'; $cfgSources['personal_ldap'] = array(

   'title' => _("My Address Book"),
   'type' => 'ldap',
   'params' => array(
       'server' => 'localhost',
       'tls' => true,
       'root' => 'ou=' . $_ldap_uid . ',ou=personal_addressbook,' . $_ldap_basedn,
       'bind_dn' => 'uid=' . $_ldap_uid . ',ou=People,' . $_ldap_basedn,
       'bind_password' => Auth::getCredential('password'),
       'dn' => array('uid'),
       'objectclass' => array('top',
                              'person',
                              // 'turbaContact',
                              'inetOrgPerson',
                              // 'calEntry',
                              'organizationalPerson'),
       'scope' => 'one',
       'charset' => 'utf-8',
       'version' => 3
   ),
   'map' => array(
       '__key' => 'dn',
       '__uid' => 'uid',
       From horde.schema:
       // '__type' => 'turbaType',
       // '__members' => 'turbaMembers',
       'name' => 'cn',
       'email' => 'mail',
       'lastname' => 'sn',
       'title' => 'title',
       'company' => 'organizationname',
       'businessCategory' => 'businesscategory',
       'workAddress' => 'postaladdress',
       'workPostalCode' => 'postalcode',
       'workPhone' => 'telephonenumber',
       'fax' => 'facsimiletelephonenumber',
       'homeAddress' => 'homepostaladdress',
       'homePhone' => 'homephone',
       'cellPhone' => 'mobile',
       'notes' => 'description',
       // Evolution interopt attributes: (those that do not require the
       // evolution.schema)
       'office' => 'roomNumber',
       'department' => 'ou',
       'nickname' => 'displayName',
       'website' => 'labeledURI',
       // These are not stored on the LDAP server.
       'pgpPublicKey' => 'object_pgppublickey',
       'smimePublicKey' => 'object_smimepublickey',
       // From rfc2739.schema:
       // 'freebusyUrl' => 'calFBURL',
   ),
   'search' => array(
       'name',
       'email',
       'businessCategory',
       'title',
       'homePhone',
       'workPhone',
       'cellPhone',
       'homeAddress'
   ),
   'strict' => array(
       'dn',
   ),
   'approximate' => array(
       'cn',
   ),
   'export' => true,
   'browse' => true,

);


Change if necessary your configuration the following value (http://127.0.0.1/ horde/???) 127.0.0.1/horde/???

Page Parameter name Value Comments General vhosts false Default General debug_level E_ALL & ~E_NOTICE Default

Parameter name Value Comments menu/import_export true Default menu/apps array() Default client/addressbook 'localldap' The predefined source for contact shares/source 'localldap' The predefined source for contact comments/allow true Default documents/type 'Horde defaults' Change to horde configuration

6.6. Gollem configuration Gollem is a web-based File Manager, configuration is done in two places, directly under horde/configuration, with administration account. and also in two specific files written in php to describe the file connection

First get this module directly from horde website and install it (no rpm for it)  wget ftp://ftp.horde.org/pub/gollem/gollem-h3-1.1.2.tar.gz  tar -xvf gollem-h3-1.1.2.tar.gz  cd gollem-h3-1.1.2  mv config /etc/horde/gollem  chown -R apache:apache /etc/horde/gollem  chmod -R 770 /etc/horde/gollem  cd ..  mv gollem-h3-1.1.2 /usr/share/horde/gollem  cd /usr/share/horde/gollem  ln -s ../../../../etc/horde/gollem config

Modification of the php file of gollem to correct the link between configuration and php files :  cp /etc/horde/gollem/prefs.php.dist /etc/horde/gollem/prefs.php  chown -R apache:apache /etc/horde/gollem/prefs.php  gedit /etc/horde/gollem/prefs.php

Change line require_once dirname(__FILE__) . '/../lib/Gollem.php'; by require_once '/usr/share/horde/gollem/lib/Gollem.php';


Modification of the php file of gollem to access file data :  cp /etc/horde/gollem/backends.php.dist /etc/horde/gollem/backends.php  chown -R apache:apache /etc/horde/gollem/backends.php  gedit /etc/horde/gollem/backends.php

A connection to data is made throw a “$backends”, so the first operation is to comment all the “$backends“ Add a first source to implement the file system $backends['file'] = array(

   'name' => 'Virtual Home Directories',
   'driver' => 'file',
   'preferred' => 'comp1.domain.com',
   'hordeauth' => false,
   'params' => array(
       // The base location under which the user home directories live.
       'vfsroot' => '/home/Horde_vf/',
       // The default permissions to set for newly created folders and files.
       // 'permissions' => $conf['umask']
   ),
   'loginparams' => array(),
   'root' => '/',
   'home' => Auth::getAuth(),
   // 'createhome' => false,
   // 'filter' => '^regex$',
   // 'quota' => false,
   'clipboard' => true,
   'attributes' => array('type', 'name', 'edit', 'download', 'modified', 'size', 'permission', 'owner', 'group')

);

Change if necessary your configuration the following value (http://127.0.0.1/horde/???)

Page Parameter name Value Comments File Manager backend/backend_list none Default File Manager foldercache/use_cache No Default Menu Settings menu/apps array() Default Users capabilities and constrains User/alternate_login false Default Users capabilities and constrains User/redirect_on_logout false Default

6.7. Passwd configuration

Passwd is a tool to allow user to change their password, configuration is done in two places, directly under horde/configuration, with administration account. and also in a specific file written in php to describe the LDAP connection

First get this module directly from horde website and install it (no rpm for it)  wget ftp://ftp.horde.org/pub/passwd/passwd-h3-3.1.3.tar.gz  tar -xvf passwd-h3-3.1.3.tar.gz  cd passwd-h3-3.1.3  mv config /etc/horde/passwd  chown -R apache:apache /etc/horde/passwd  chmod -R 770 /etc/horde/passwd  cd ..  mv passwd-h3-3.1.3 /usr/share/horde/passwd  cd /usr/share/horde/passwd  ln -s ../../../../etc/horde/passwd config

Modification of the php file of passwd to access the password database (LDAP) :  cp /etc/horde/passwd/backends.php.dist /etc/horde/passwd/backends.php  chown -R apache:apache /etc/horde/passwd/backends.php  gedit /etc/horde/passwd/backends.php

A connection to data is made throw a “$backends”, so the first operation is to comment all the “$backends“ Add a source to implement the password change (will be stored as LDAP) $backends['ldapadmin'] = array(

   'name' => 'LDAP Server',
   'preferred' => 'comp1.domain.com',
   'password policy' => array(
       'minLength' => 4,
       'maxLength' => 20
   ),
   'driver' => 'ldap',
   'params' => array(
       'host' => 'comp1.domain.com',
       'port' => 389,
       'basedn' => 'ou=People,dc=domain,dc=com',
       'admindn' => 'cn=Directory Manager',
       'adminpw' => 'Pass-389-dir-man',
       // LDAP object key attribute
       'uid' => 'uid',
       // these attributes will enable shadow password policies.
       // 'shadowlastchange' => 'shadowlastchange',
       // 'shadowmin' => 'shadowmin',
       'attribute' => 'userPassword',
       // this will be appended to the username when looking for the userdn.
       'realm' => ,
       // Use this filter when searching for the user's DN.
       'filter' => ,
       // Hash method to use when storing the password
       'encryption' => 'ssha',
   
       // Only applies to LDAP servers. If set, should be 0 or 1. See the LDAP 
       // documentation about the corresponding parameter REFERRALS.
       // Windows 2003 Server require to set this parameter to 0
       //'referrals' => 0,
       
       // Whether to enable TLS for this LDAP connection
       // Note: make sure the host matches cn in the server certificate
       'tls' => true
   )

);

Change if necessary your configuration the following value (http://127.0.0.1/horde/???)

Page Parameter name Value Comments menu menu/apps array() Default backend backend/backend_list 'hidden' Default user user/change true Default user user/refused array('root', 'bin', 'daemon', 'adm', 'lp', 'shutdown', 'halt', 'uucp', 'ftp', 'anonymous', 'nobody', 'httpd', 'operator', 'guest', 'diginext', 'bind', 'cyrus', 'courier', 'games', 'kmem', 'mailnull', 'man', 'mysql', 'news', 'postfix', 'sshd', 'tty', 'www', 'admin') Add the « admin » user password password/strengthtests false Default hooks hooks/full_name false Default hooks hooks/default_username false Default hooks hooks/username false Default hooks hooks/userdn false Default 6.8. Ansel configuration (H4) Ansel is a web-based photo manager, configuration is done in one places, directly under horde/configuration, with administration account.

First get this module directly from horde website and install it  wget ftp://ftp.horde.org/pub/ansel/ansel-h3-1.1.2.tar.gz  tar -xvf ansel-h3-1.1.2.tar.gz  cd ansel-h3-1.1.2  mv config /etc/horde/ansel  chown -R apache:apache /etc/horde/ansel  chmod -R 770 /etc/horde/ansel  cd ..  mv ansel-h3-1.1.2 /usr/share/horde/ansel  cd /usr/share/horde/ansel  ln -s ../../../../etc/horde/ansel config



Change if necessary your configuration the following value (http://127.0.0.1/horde/???)

Page Parameter name Value Comments General settings gallery/listlimit Default General settings gallery/numlimit Default General settings gallery/downloadzip true Default General settings gallery/customlabel true Default General settings menu/print true Default General settings menu/apps array('horde') Default VFS and photos options image/type Horde default Default VFS and photos options vfs/src 'php' Default VFS and photos options image/type 'jpeg' Default VFS and photos options image/autogen '5' Default VFS and photos options image/prettythumbs true Default VFS and photos options image/squaremini true Default VFS and photos options image/smartcrop false Default VFS and photos options image/tiny false Default VFS and photos options image/num_uploads '100' Default VFS and photos options image/font Default Thumbnail Settings thumbnail/perpage '30' Default Thumbnail Settings thumbnail/width '150' Default Thumbnail Settings thumbnail/height '150' Default Thumbnail Settings thumbnail/unsharp true Default Thumbnail Settings thumbnail/radius '0.7' Default Thumbnail Settings thumbnail/amount '1' Default Thumbnail Settings thumbnail/threshold ‘0.05’ Default Screen Image Settings screen/width '800' Default Screen Image Settings screen/height '600' Default Screen Image Settings screen/unsharp true Default Screen Image Settings screen/radius '0.5' Default Screen Image Settings screen/amount '1.2' Default Screen Image Settings screen/threshold ‘0.05’ Default Ecard Settings ecard/enable true Default Photo Comments comments/allow ‘Authenticated user’ Default Cache Settings ansel_cache/usecache false Default Tag Settings tags/relatedtags false Default Content Reporting Settings report_content/driver false Default Age settings ages/limits ‘’ Default Age settings ages/hook false Default Face Detection faces/driver ‘manuel detection of user’ Default Face Detection faces/search '7' Default

Add the sql schema for Ansel in the database First get this module directly from horde website and install it  cd /usr/share/horde/  ./bin/db_migrate ansel


6.9. Mnemo configuration

Mnemo is a web-based note, configuration is done directly under horde/configuration, with administration account. But you need first to add the correct field in the SQL database

First get this module directly from horde website and install it (no rpm for it)  wget ftp://ftp.horde.org/pub/mnemo/mnemo-h3-2.2.4.tar.gz  tar -xvf mnemo-h3-2.2.4.tar.gz  cd mnemo-h3-2.2.4  mv config /etc/horde/mnemo  chown -R apache:apache /etc/horde/mnemo  chmod -R 770 /etc/horde/mnemo  cd ..  mv mnemo-h3-2.2.4 /usr/share/horde/mnemo  cd /usr/share/horde/mnemo  ln -s ../../../../etc/horde/mnemo config

Modification of the php file of mnemo to correct the link between configuration and php files :  cp /etc/horde/mnemo/prefs.php.dist /etc/horde/mnemo/prefs.php  chown -R apache:apache /etc/horde/mnemo/prefs.php  gedit /etc/horde/mnemo/prefs.php

Change line require_once dirname(__FILE__) . '/../lib/Mnemo.php'; by require_once '/usr/share/horde/mnemo/lib/Mnemo.php';

Add the field in the SQL database :  cd /usr/share/horde/mnemo/scripts/sql/  mysql -u root -p horde <mnemo.sql Used password : “Pass-mySql“.

Change if necessary your configuration the following value (http://127.0.0.1/horde/???) 127.0.0.1/horde/???

Page Parameter name Value Comments Generate Notes storage/params/table mnemo_memos Default Generate Notes storage/params/driverconfig Horde Default Generate Notes storage/driver sql Default Generate Notes utils/gnupg Default Generate Notes menu/print true Default Generate Notes menu/import_export true Default Generate Notes menu/apps array() Default




6.10. MIMP configuration

MIMP is a special configuration of imp for mobile phone

First get this module directly from horde website and install it (no rpm for it)  wget ftp://ftp.horde.org/pub/mimp/mimp-h3-1.1.3.tar.gz  tar -xvf mimp-h3-1.1.3.tar.gz  cd mimp-h3-1.1.3  mv config /etc/horde/mimp  chown -R apache:apache /etc/horde/mimp  chmod -R 770 /etc/horde/mimp  cd ..  mv mimp-h3-1.1.3 /usr/share/horde/mimp  cd /usr/share/horde/mimp  ln -s ../../../../etc/horde/mimp config

Change if necessary your configuration the following value (http://127.0.0.1/horde/???) 127.0.0.1/horde/???

Page Parameter name Value Comments Mailbox Settings mailbox/max_from_chars 10 Default Mailbox Settings mailbox/max_subj_chars 20 Default




6.11. trean configuration

trean is a Bookmarks managers , configuration is done directly under horde/configuration, with administration account. But you need first to add the correct field in the SQL database

First get this module directly from horde website and install it (no rpm for it)  wget ftp://ftp.horde.org/pub/snaps/latest/trean-FRAMEWORK_3*.tar.gz  tar -xvf trean-FRAMEWORK_3*.tar.gz  cd trean-FRAMEWORK_3  mv config /etc/horde/trean  chown -R apache:apache /etc/horde/trean  chmod -R 770 /etc/horde/trean  cd ..  mv trean-FRAMEWORK_3 /usr/share/horde/trean  cd /usr/share/horde/trean  ln -s ../../../../etc/horde/trean config

Modification of the php file of horde to add this application in the horde database :  gedit /etc/horde/registry.php

Change line $this->applications['trean'] = array(

   'fileroot' => FEDORA_FILEROOT . '/trean',
   'webroot' => $this->applications['horde']['webroot'] . '/trean',
   'name' => _("Bookmarks"),
   'status' => 'inactive',
   'provides' => 'bookmarks',
   'menu_parent' => 'organizing'

);

by $this->applications['ansel'] = array(

   'fileroot' => FEDORA_FILEROOT . '/ansel',
   'webroot' => $this->applications['horde']['webroot'] . '/ansel',
   'name' => _("Photos"),
   'status' => 'active',
   'provides' => 'images',
   'menu_parent' => 'website'

); $this->applications['trean'] = array(

   'fileroot' => FEDORA_FILEROOT . '/trean',
   'webroot' => $this->applications['horde']['webroot'] . '/trean',
   'name' => _("Bookmarks"),
   'status' => 'active',
   'provides' => 'bookmarks',
   'menu_parent' => 'organizing'

);


Add the field in the SQL database :  cd /usr/share/horde/trean/scripts/sql/  mysql -u root -p horde <trean.sql Used password : “Pass-mySql“.

Change if necessary your configuration the following value (http://127.0.0.1/horde/???) 127.0.0.1/horde/???

Page Parameter name Value Comments Menu settings Menu/mport_export Yes Default Menu settings Menu/apps list Default Virtual File Storage Favicons/type Sql We want to use SQL, yes Virtual File Storage Favicons/params/driverconfig Horde Default




(TBD)