diff --git a/docs/INSTALL_DEBIAN_6.0_dovecot_bind.txt b/docs/INSTALL_DEBIAN_6.0_dovecot_bind.txt new file mode 100644 index 0000000000000000000000000000000000000000..84b93cc1e2beb72d03e4c5879cbeeb0d26cf1cee --- /dev/null +++ b/docs/INSTALL_DEBIAN_6.0_dovecot_bind.txt @@ -0,0 +1,262 @@ +Installation +----------- + +# It is recommended to use a clean (fresh) Debian squeeze 6.0 install where you just selected "Standard System" as the package selection during +# setup. Then follow the steps below to setup your server with ISPConfig 3. In this guide "vi" is used as texteditor, but you ofcourse +# you can use whatever you prefer. You should be root for doing all of this. + + +# Check we have Fully Qualified Domain Name + +/bin/hostname + +# it should return something like "ispconfig.example.com" +# if not, then we assign a hostname (for example ispconfig): + +echo ispconfig.example.com > /etc/hostname + +vi /etc/hosts + +# and add lines similar but appropriate: + +127.0.0.1 localhost.localdomain localhost +192.168.0.100 ispconfig.example.com ispconfig + +# Run: + +/etc/init.d/hostname.sh + +# enable the Debian volaitile repository to get a newer clamav version +# The volatile repository for debian squueze was not available yet at the time this howto was written. +# echo "deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free" >> /etc/apt/sources.list +# apt-get update + +# Some optional choices + +opt0.1) Optionally install SSH-server to get remote shell + +apt-get install ssh openssh-server + +opt0.2) Optionally if you are not running in virtual machine you can set server clocksync via NTP. Virtual quests get this from the host. + +apt-get -y install ntp ntpdate + +opt0.3) Optionally if you want vi editor improvement + +apt-get -y install vim-nox + + +# Next is the real deal + +1) Install Postfix, Dovecot, MySQL, phpMyAdmin, rkhunter, binutils with the following command line (on one line!): + +apt-get -y install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d + +# Answer the questions from the package manager as follows. + +General type of configuration? <-- Internet site +Mail name? <-- server1.mydomain.tld + +# ...use your own domain name of course ;) + + + +# Edit the file /etc/mysql/my.cnf + +vi /etc/mysql/my.cnf + +# and change the line: + +bind-address = 127.0.0.1 + +to: + +#bind-address = 127.0.0.1 + +# then restart mysql + +/etc/init.d/mysql restart + +2) Install Amavisd-new, Spamassassin and Clamav (1 line!): + +apt-get -y install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl + + +3) Install apache, PHP5, phpmyadmin, better fastCGI, suexec, Pear and mcrypt (1 line!): + +apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt imagemagick libapache2-mod-suphp libopenssl-ruby + + +# When phpMyAdmin is asking weather to configure itself automatically, select "Apache2" + +# Then run the following to enable the Apache modules suexec, rewrite and ssl: + +a2enmod suexec rewrite ssl actions include + +# restart apache before continuing + +/etc/init.d/apache2 restart + + +4) Install pure-ftpd and quota + +apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatool + +# Optional: Enable TLS in pureftpd +echo 1 > /etc/pure-ftpd/conf/TLS +mkdir -p /etc/ssl/private/ +openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem +chmod 600 /etc/ssl/private/pure-ftpd.pem + + +# Edit /etc/fstab. Mine looks like this (I added ,usrquota,grpquota to the partition with the mount point /): + +vi /etc/fstab + +---------------------------------------------------------------------------------------------- +# /etc/fstab: static file system information. +# +# +proc /proc proc defaults 0 0 +/dev/sda1 / ext3 errors=remount-ro,usrquota,grpquota 0 1 +/dev/sda5 none swap sw 0 0 +/dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0 +/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 +---------------------------------------------------------------------------------------------- + +# To enable quota, run these commands: + +touch /aquota.user /aquota.group +chmod 600 /aquota.* +mount -o remount / +quotacheck -avugm +quotaon -avug + + +5) Install BIND DNS Server + +apt-get -y install bind9 dnsutils + +6) Install vlogger and webalizer + +apt-get -y install vlogger webalizer + + +7) Install Jailkit (optional, only needed if you want to use chrroting for SSH users) + +apt-get -y install build-essential autoconf automake1.9 libtool flex bison debhelper +cd /tmp +wget http://olivier.sessink.nl/jailkit/jailkit-2.11.tar.gz +tar xvfz jailkit-2.11.tar.gz +cd jailkit-2.11 +./debian/rules binary +cd .. +dpkg -i jailkit_2.11-1_*.deb +rm -rf jailkit-2.11* + +8) Install fail2ban (optional but recomended, because the monitor tries to show the log) +More info at: http://www.howtoforge.com/fail2ban_debian_etch + +apt-get -y install fail2ban + +9) Install ISPConfig 3 + +cd /tmp +wget http://www.ispconfig.org/downloads/ISPConfig-3.0.2.2.tar.gz +tar xvfz ISPConfig-3.0.2.2.tar.gz +cd ispconfig3_install/install/ + +# Now start the installation process by executing: + +php -q install.php + +# The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not nescessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!): + +http://192.168.0.100:8080/ + +# the default login is: + +user: admin +password: admin + +# In case you get a permission denied error from apache, please restart the apache webserver process. + + + +---------------------------------------------------------------------------------------------------------- +Optional: + +Install a webbased Email Client + +apt-get install squirrelmail +ln -s /usr/share/squirrelmail/ /var/www/webmail + +Access squirrelmail: + +http://192.168.0.100/webmail + + +To configure squirrelmail, run: + +/usr/sbin/squirrelmail-configure + +---------------------------------------------------------------------------------------------------------- + +Hints: + +debian 5.0 under openvz: + +VPSID=101 +for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE +do + vzctl set $VPSID --capability ${CAP}:on --save +done + +---------------------------------------------------------------------------------------------------------- + + +Optional recommended packages: + +denyhosts - a utility to help sys admins thwart ssh crackers +rsync - fast remote file copy program (for backup) + +----------------------------------------------------------------------------------------------------------- + +Ispc log files rotate, for now manual add but to add in ispc installer: + +/etc/logrotate.d/logispc3 + +/var/log/ispconfig/ispconfig.log { + weekly + missingok + rotate 4 + compress + delaycompress +} +/var/log/ispconfig/cron.log { + weekly + missingok + rotate 4 + compress + delaycompress +} + + +----------------------------------------------------------------------------------------------------------- + +Possible errors and their solutions +------------------------------------ + +pureftpd login does not work. Take a look at the syslog, if you find an error message like this: +Mar 24 16:26:28 ispconfig pure-ftpd: (?@?) [ERROR] Sorry, invalid address given + +then pureftpd is not able to resolve the hostname. Name resolving can be disabled with these commands: + +echo 'yes' > /etc/pure-ftpd/conf/DontResolve +/etc/init.d/pure-ftpd-mysql restart + + + + + + diff --git a/install/dist/conf/debian60.conf.php b/install/dist/conf/debian60.conf.php new file mode 100644 index 0000000000000000000000000000000000000000..ca959bbcbd8fdebb68811c5604c1dcecf2db7c90 --- /dev/null +++ b/install/dist/conf/debian60.conf.php @@ -0,0 +1,187 @@ + \ No newline at end of file diff --git a/install/dist/lib/debian60.lib.php b/install/dist/lib/debian60.lib.php new file mode 100644 index 0000000000000000000000000000000000000000..3bacd5056f1ac7f0381331463e3581d744ad7ddb --- /dev/null +++ b/install/dist/lib/debian60.lib.php @@ -0,0 +1,101 @@ + /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } + + //* copy dovecot.conf + $configfile = 'dovecot.conf'; + if(is_file("$config_dir/$configfile")){ + copy("$config_dir/$configfile", "$config_dir/$configfile~"); + } + copy('tpl/debian6_dovecot.conf.master',"$config_dir/$configfile"); + + //* dovecot-sql.conf + $configfile = 'dovecot-sql.conf'; + if(is_file("$config_dir/$configfile")){ + copy("$config_dir/$configfile", "$config_dir/$configfile~"); + } + exec("chmod 400 $config_dir/$configfile~"); + $content = rf("tpl/debian6_dovecot-sql.conf.master"); + $content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['ispconfig_user'],$content); + $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['ispconfig_password'], $content); + $content = str_replace('{mysql_server_database}',$conf['mysql']['database'],$content); + $content = str_replace('{mysql_server_host}',$conf['mysql']['host'],$content); + wf("$config_dir/$configfile", $content); + + exec("chmod 600 $config_dir/$configfile"); + exec("chown root:root $config_dir/$configfile"); + + } + +} + +?> \ No newline at end of file diff --git a/install/install.php b/install/install.php index c24bd3b4c0f43ff99c7a97ffad918a3969689e35..88742adcee30f28e712637a0e2942fd10ae826f8 100644 --- a/install/install.php +++ b/install/install.php @@ -166,20 +166,20 @@ if($install_mode == 'standard') { //* Configure jailkit swriteln('Configuring Jailkit'); $inst->configure_jailkit(); - - //* Configure saslauthd - swriteln('Configuring SASL'); - $inst->configure_saslauthd(); - - //* Configure PAM - swriteln('Configuring PAM'); - $inst->configure_pam(); if($conf['dovecot']['installed'] == true) { //* Configure dovecot swriteln('Configuring Dovecot'); $inst->configure_dovecot(); } else { + //* Configure saslauthd + swriteln('Configuring SASL'); + $inst->configure_saslauthd(); + + //* Configure PAM + swriteln('Configuring PAM'); + $inst->configure_pam(); + //* Configure courier swriteln('Configuring Courier'); $inst->configure_courier(); @@ -247,22 +247,22 @@ if($install_mode == 'standard') { $inst->install_crontab(); swriteln('Restarting services ...'); - if($conf['mysql']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['mysql']['init_script'])) system($conf['init_scripts'].'/'.$conf['mysql']['init_script'].' restart'); - if($conf['postfix']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['postfix']['init_script'])) system($conf['init_scripts'].'/'.$conf['postfix']['init_script'].' restart'); - if($conf['saslauthd']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'])) system($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'].' restart'); - if($conf['amavis']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['amavis']['init_script'])) system($conf['init_scripts'].'/'.$conf['amavis']['init_script'].' restart'); - if($conf['clamav']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['clamav']['init_script'])) system($conf['init_scripts'].'/'.$conf['clamav']['init_script'].' restart'); - if($conf['courier']['courier-authdaemon'] != '' && is_file($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'].' restart'); - if($conf['courier']['courier-imap'] != '' && is_file($conf['init_scripts'].'/'.$conf['courier']['courier-imap'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap'].' restart'); - if($conf['courier']['courier-imap-ssl'] != '' && is_file($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'].' restart'); - if($conf['courier']['courier-pop'] != '' && is_file($conf['init_scripts'].'/'.$conf['courier']['courier-pop'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop'].' restart'); - if($conf['courier']['courier-pop-ssl'] != '' && is_file($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'].' restart'); - if($conf['dovecot']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['dovecot']['init_script'])) system($conf['init_scripts'].'/'.$conf['dovecot']['init_script'].' restart'); - if($conf['apache']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['apache']['init_script'])) system($conf['init_scripts'].'/'.$conf['apache']['init_script'].' restart'); - if($conf['pureftpd']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'])) system($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'].' restart'); - if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['mydns']['init_script'])) system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart &> /dev/null'); - if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['powerdns']['init_script'])) system($conf['init_scripts'].'/'.$conf['powerdns']['init_script'].' restart &> /dev/null'); - if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['bind']['init_script'])) system($conf['init_scripts'].'/'.$conf['bind']['init_script'].' restart &> /dev/null'); + if($conf['mysql']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mysql']['init_script'])) system($conf['init_scripts'].'/'.$conf['mysql']['init_script'].' restart'); + if($conf['postfix']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['postfix']['init_script'])) system($conf['init_scripts'].'/'.$conf['postfix']['init_script'].' restart'); + if($conf['saslauthd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'])) system($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'].' restart'); + if($conf['amavis']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['amavis']['init_script'])) system($conf['init_scripts'].'/'.$conf['amavis']['init_script'].' restart'); + if($conf['clamav']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['clamav']['init_script'])) system($conf['init_scripts'].'/'.$conf['clamav']['init_script'].' restart'); + if($conf['courier']['courier-authdaemon'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'].' restart'); + if($conf['courier']['courier-imap'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap'].' restart'); + if($conf['courier']['courier-imap-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'].' restart'); + if($conf['courier']['courier-pop'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop'].' restart'); + if($conf['courier']['courier-pop-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'].' restart'); + if($conf['dovecot']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['dovecot']['init_script'])) system($conf['init_scripts'].'/'.$conf['dovecot']['init_script'].' restart'); + if($conf['apache']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['apache']['init_script'])) system($conf['init_scripts'].'/'.$conf['apache']['init_script'].' restart'); + if($conf['pureftpd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'])) system($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'].' restart'); + if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mydns']['init_script'])) system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart &> /dev/null'); + if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['powerdns']['init_script'])) system($conf['init_scripts'].'/'.$conf['powerdns']['init_script'].' restart &> /dev/null'); + if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['bind']['init_script'])) system($conf['init_scripts'].'/'.$conf['bind']['init_script'].' restart &> /dev/null'); }else{ @@ -330,20 +330,21 @@ if($install_mode == 'standard') { //* Configure Postfix swriteln('Configuring Postfix'); $inst->configure_postfix(); - - //* Configure saslauthd - swriteln('Configuring SASL'); - $inst->configure_saslauthd(); - - //* Configure PAM - swriteln('Configuring PAM'); - $inst->configure_pam(); if($conf['dovecot']['installed'] == true) { //* Configure dovecot swriteln('Configuring Dovecot'); $inst->configure_dovecot(); } else { + + //* Configure saslauthd + swriteln('Configuring SASL'); + $inst->configure_saslauthd(); + + //* Configure PAM + swriteln('Configuring PAM'); + $inst->configure_pam(); + //* Configure courier swriteln('Configuring Courier'); $inst->configure_courier(); diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php index 56c453d16aa00287f02b3e1f2d37d80fceec89d7..3c2adc129b522d50f5a718d95f6281ca9db9e5e3 100644 --- a/install/lib/install.lib.php +++ b/install/lib/install.lib.php @@ -85,9 +85,9 @@ function get_distname() { } elseif(strstr(trim(file_get_contents('/etc/debian_version')),'6.0') || trim(file_get_contents('/etc/debian_version')) == 'squeeze/sid') { $distname = 'Debian'; $distver = 'Squeeze/Sid'; - $distid = 'debian40'; + $distid = 'debian60'; $distbaseid = 'debian'; - swriteln("Operating System: Debian Squeeze/Sid or compatible\n"); + swriteln("Operating System: Debian 6.0 (Squeeze/Sid) or compatible\n"); } else { $distname = 'Debian'; $distver = 'Unknown'; diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index eba6f5c0beb09fb4fedb4cc120d1f2755aa93c40..3e235c6a20c64beca4bdfc92ae8ea5a4f046dd6a 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -544,7 +544,7 @@ class installer_base { //** We have to change the permissions of the courier authdaemon directory to make it accessible for maildrop. $command = 'chmod 755 /var/run/courier/authdaemon/'; - caselog($command.' &> /dev/null', __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command); + if(is_file('/var/run/courier/authdaemon/')) caselog($command.' &> /dev/null', __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command); //* Changing maildrop lines in posfix master.cf if(is_file($config_dir.'/master.cf')) { diff --git a/install/tpl/debian6_dovecot-sql.conf.master b/install/tpl/debian6_dovecot-sql.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..0258b23bd3f0c2010ddcef97d6268a06bf8eb034 --- /dev/null +++ b/install/tpl/debian6_dovecot-sql.conf.master @@ -0,0 +1,125 @@ +# This file is opened as root, so it should be owned by root and mode 0600. +# +# http://wiki.dovecot.org/AuthDatabase/SQL +# +# For the sql passdb module, you'll need a database with a table that +# contains fields for at least the userid and password. If you want to +# use the user@domain syntax, you might want to have a separate domain +# field as well. +# +# If your users all have the same uig/gid, and have predictable home +# directories, you can use the static userdb module to generate the home +# dir based on the userid and domain. In this case, you won't need fields +# for home, uid, or gid in the database. +# +# If you prefer to use the sql userdb module, you'll want to add fields +# for home, uid, and gid. Here is an example table: +# +# CREATE TABLE users ( +# userid VARCHAR(128) NOT NULL, +# password VARCHAR(64) NOT NULL, +# home VARCHAR(255) NOT NULL, +# uid INTEGER NOT NULL, +# gid INTEGER NOT NULL, +# active CHAR(1) DEFAULT 'Y' NOT NULL +# ); + +# Database driver: mysql, pgsql, sqlite +#driver = + +# Database connection string. This is driver-specific setting. +# +# pgsql: +# For available options, see the PostgreSQL documention for the +# PQconnectdb function of libpq. +# +# mysql: +# Basic options emulate PostgreSQL option names: +# host, port, user, password, dbname +# +# But also adds some new settings: +# client_flags - See MySQL manual +# ssl_ca, ssl_ca_path - Set either one or both to enable SSL +# ssl_cert, ssl_key - For sending client-side certificates to server +# ssl_cipher - Set minimum allowed cipher security (default: HIGH) +# +# You can connect to UNIX sockets by using host: host=/var/run/mysqld/mysqld.sock +# Note that currently you can't use spaces in parameters. +# +# sqlite: +# The path to the database file. +# +# Examples: +# connect = host=192.168.1.1 dbname=users +# connect = host=sql.example.com dbname=virtual user=virtual password=blarg +# connect = /etc/dovecot/authdb.sqlite +# +#connect = dbname=virtual user=virtual + +# Default password scheme. +# +# List of supported schemes is in +# http://wiki.dovecot.org/Authentication/PasswordSchemes +# +#default_pass_scheme = PLAIN-MD5 + +# Query to retrieve the password. +# +# This query must return only one row with "user" and "password" columns. +# The query can also return other fields which have a special meaning, see +# http://wiki.dovecot.org/PasswordDatabase/ExtraFields +# +# The "user" column is needed to make sure the username gets used with exactly +# the same casing as it's in the database. Note that if you store username and +# domain in separate fields, you most likely want to return a combination of +# them as the "user" column, otherwise the domain gets stripped. +# +# Commonly used available substitutions (see +# http://wiki.dovecot.org/Variables for full list): +# %u = entire userid +# %n = user part of user@domain +# %d = domain part of user@domain +# +# Note that these can be used only as input to SQL query. If the query outputs +# any of these substitutions, they're not touched. Otherwise it would be +# difficult to have eg. usernames containing '%' characters. +# +# Example: +# password_query = SELECT concat(userid, '@', domain) AS user, password FROM users WHERE userid = '%n' AND domain = '%d' +# password_query = SELECT pw AS password FROM users WHERE userid = '%u' AND active = 'Y' +# +#password_query = SELECT userid as user, password FROM users WHERE userid = '%u' + +# Query to retrieve the user information. +# +# The query must return only one row. Commonly returned columns are: +# uid - System UID +# gid - System GID +# home - Home directory +# mail - Mail location +# +# Either home or mail is required. uid and gid are required. If more than one +# row is returned or there are missing fields, the login will fail. For a list +# of all fields that can be returned, see +# http://wiki.dovecot.org/UserDatabase/ExtraFields +# +# Examples +# user_query = SELECT home, uid, gid FROM users WHERE userid = '%n' AND domain = '%d' +# user_query = SELECT dir AS home, user AS uid, group AS gid FROM users where userid = '%u' +# user_query = SELECT home, 501 AS uid, 501 AS gid FROM users WHERE userid = '%u' +# +#user_query = SELECT home, uid, gid FROM users WHERE userid = '%u' + +# If you wish to avoid two SQL lookups (passdb + userdb), you can use +# userdb prefetch instead of userdb sql in dovecot.conf. In that case you'll +# also have to return userdb fields in password_query prefixed with "userdb_" +# string. For example: +#password_query = SELECT userid as user, password, home as userdb_home, uid as userdb_uid, gid as userdb_gid FROM users WHERE userid = '%u' + +driver = mysql +connect = host={mysql_server_host} dbname={mysql_server_database} user={mysql_server_ispconfig_user} password={mysql_server_ispconfig_password} +default_pass_scheme = CRYPT + +password_query = SELECT password FROM mail_user WHERE email = '%u' AND disable%Ls = 'n' +user_query = SELECT email AS user, maildir AS home, CONCAT('*:storage=', quota , 'B') AS quota_rule FROM mail_user WHERE email = '%u' AND disable%Ls = 'n' + diff --git a/install/tpl/debian6_dovecot.conf.master b/install/tpl/debian6_dovecot.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..51c6910ee5fd41318519f198cf05f7bee7a72c62 --- /dev/null +++ b/install/tpl/debian6_dovecot.conf.master @@ -0,0 +1,98 @@ +## Dovecot configuration file +base_dir = /var/run/dovecot/ + +protocols = imap imaps pop3 pop3s +disable_plaintext_auth = no +log_timestamp = "%Y-%m-%d %H:%M:%S " + +# ssl_cert_file = /etc/ssl/_.my-domain.tld/_.my-domain.tld.crt +# ssl_key_file = /etc/ssl/_.my-domain.tld/_.my-domain.tld.key + +mail_privileged_group = mail + +login_greeting = my-domain.tld IMAP server ready... + +## IMAP specific settings +protocol imap { + mail_executable = /usr/lib/dovecot/rawlog /usr/lib/dovecot/imap + mail_plugins = quota imap_quota +} + +## POP3 specific settings +protocol pop3 { + mail_executable = /usr/lib/dovecot/rawlog /usr/lib/dovecot/pop3 + pop3_uidl_format = %08Xu%08Xv + mail_plugins = quota +} + +## LDA specific settings +protocol lda { + # Address to use when sending rejection mails. + postmaster_address = postmaster@my-domain.tld + + # Support for dynamically loadable plugins. mail_plugins is a space separated + # list of plugins to load. + mail_plugin_dir = /usr/lib/dovecot/modules/lda + + # UNIX socket path to master authentication server to find users. + auth_socket_path = /var/run/dovecot/auth-master + + # Enabling Sieve plugin for server-side mail filtering + mail_plugins = sieve quota +} + + +## Plugin settings +plugin { + quota = maildir + sieve=/var/vmail/%d/%n/.sieve +} + + +## Authentication processes + +# Executable location +#auth_executable = /usr/lib/dovecot/dovecot-auth +auth default { + mechanisms = plain login + passdb pam { + } + + # SQL database + passdb sql { + # Path for SQL configuration file + args = /etc/dovecot/dovecot-sql.conf + } + +# new quota support: + userdb prefetch { + } + + userdb sql { + args = /etc/dovecot/dovecot-sql.conf + } + + + ## dovecot-lda specific settings + ## + socket listen { + master { + path = /var/run/dovecot/auth-master + mode = 0600 + user = vmail # User running Dovecot LDA + #group = vmail # Or alternatively mode 0660 + LDA user in this group + } + client { + path = /var/spool/postfix/private/auth + mode = 0660 + user = postfix + group = postfix + } + } + +} + +mail_location = maildir:/var/vmail/%d/%n/Maildir + +mail_uid = 5000 +mail_gid = 5000 diff --git a/install/update.php b/install/update.php index 84faa0540e50e0d9258720523a32636dcfb9ed5c..acfbe30a5f92bf41d624ddd3913fcd3eff7607db 100644 --- a/install/update.php +++ b/install/update.php @@ -221,20 +221,20 @@ if($reconfigure_services_answer == 'yes') { //* Configure Jailkit swriteln('Configuring Jailkit'); $inst->configure_jailkit(); - - //** Configure saslauthd - swriteln('Configuring SASL'); - $inst->configure_saslauthd(); - - //** Configure PAM - swriteln('Configuring PAM'); - $inst->configure_pam(); if($conf['dovecot']['installed'] == true) { //* Configure dovecot swriteln('Configuring Dovecot'); $inst->configure_dovecot(); } else { + //** Configure saslauthd + swriteln('Configuring SASL'); + $inst->configure_saslauthd(); + + //** Configure PAM + swriteln('Configuring PAM'); + $inst->configure_pam(); + //* Configure courier swriteln('Configuring Courier'); $inst->configure_courier(); @@ -319,27 +319,27 @@ if($update_crontab_answer == 'yes') { //** Restart services: if($reconfigure_services_answer == 'yes') { swriteln('Restarting services ...'); - if($conf['mysql']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['mysql']['init_script'])) system($conf['init_scripts'].'/'.$conf['mysql']['init_script'].' restart'); + if($conf['mysql']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mysql']['init_script'])) system($conf['init_scripts'].'/'.$conf['mysql']['init_script'].' restart'); if($conf['services']['mail']) { - if($conf['postfix']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['postfix']['init_script'])) system($conf['init_scripts'].'/'.$conf['postfix']['init_script'].' restart'); - if($conf['saslauthd']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'])) system($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'].' restart'); - if($conf['amavis']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['amavis']['init_script'])) system($conf['init_scripts'].'/'.$conf['amavis']['init_script'].' restart'); - if($conf['clamav']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['clamav']['init_script'])) system($conf['init_scripts'].'/'.$conf['clamav']['init_script'].' restart'); - if($conf['courier']['courier-authdaemon'] != '' && is_file($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'].' restart'); - if($conf['courier']['courier-imap'] != '' && is_file($conf['init_scripts'].'/'.$conf['courier']['courier-imap'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap'].' restart'); - if($conf['courier']['courier-imap-ssl'] != '' && is_file($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'].' restart'); - if($conf['courier']['courier-pop'] != '' && is_file($conf['init_scripts'].'/'.$conf['courier']['courier-pop'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop'].' restart'); - if($conf['courier']['courier-pop-ssl'] != '' && is_file($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'].' restart'); - if($conf['dovecot']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['dovecot']['init_script'])) system($conf['init_scripts'].'/'.$conf['dovecot']['init_script'].' restart'); + if($conf['postfix']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['postfix']['init_script'])) system($conf['init_scripts'].'/'.$conf['postfix']['init_script'].' restart'); + if($conf['saslauthd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'])) system($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'].' restart'); + if($conf['amavis']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['amavis']['init_script'])) system($conf['init_scripts'].'/'.$conf['amavis']['init_script'].' restart'); + if($conf['clamav']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['clamav']['init_script'])) system($conf['init_scripts'].'/'.$conf['clamav']['init_script'].' restart'); + if($conf['courier']['courier-authdaemon'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'].' restart'); + if($conf['courier']['courier-imap'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap'].' restart'); + if($conf['courier']['courier-imap-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'].' restart'); + if($conf['courier']['courier-pop'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop'].' restart'); + if($conf['courier']['courier-pop-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'].' restart'); + if($conf['dovecot']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['dovecot']['init_script'])) system($conf['init_scripts'].'/'.$conf['dovecot']['init_script'].' restart'); } if($conf['services']['web']) { - if($conf['apache']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['apache']['init_script'])) system($conf['init_scripts'].'/'.$conf['apache']['init_script'].' restart'); - if($conf['pureftpd']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'])) system($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'].' restart'); + if($conf['apache']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['apache']['init_script'])) system($conf['init_scripts'].'/'.$conf['apache']['init_script'].' restart'); + if($conf['pureftpd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'])) system($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'].' restart'); } if($conf['services']['dns']) { - if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['mydns']['init_script'])) system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart &> /dev/null'); - if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['powerdns']['init_script'])) system($conf['init_scripts'].'/'.$conf['powerdns']['init_script'].' restart &> /dev/null'); - if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['bind']['init_script'])) system($conf['init_scripts'].'/'.$conf['bind']['init_script'].' restart &> /dev/null'); + if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mydns']['init_script'])) system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart &> /dev/null'); + if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['powerdns']['init_script'])) system($conf['init_scripts'].'/'.$conf['powerdns']['init_script'].' restart &> /dev/null'); + if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['bind']['init_script'])) system($conf['init_scripts'].'/'.$conf['bind']['init_script'].' restart &> /dev/null'); } } diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 0043ecb7b8d0d692f4b9def1698c9629280d4c46..9995e7605d10077f20713bb31d1a1c8fb60137c3 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -89,6 +89,10 @@ # suexec enabled SuexecUserGroup + # Clear PHP settings of this website + + SetHandler None + # mod_php enabled AddType application/x-httpd-php .php .php3 .php4 .php5