diff --git a/lib/configfiles/precise.inc.php b/lib/configfiles/precise.inc.php index 66c07e29..a2fc4649 100644 --- a/lib/configfiles/precise.inc.php +++ b/lib/configfiles/precise.inc.php @@ -299,15 +299,17 @@ return Array( 'dovecot' => Array( 'label' => 'Dovecot', 'commands_1' => Array( - 'apt-get install dovecot-imapd dovecot-pop3d dovecot-postfix' + 'apt-get install dovecot-imapd dovecot-pop3d dovecot-postfix dovecot-mysql mail-stack-delivery' ), 'files' => Array( - 'etc_dovecot_auth.d_01-dovecot-postfix.auth' => '/etc/dovecot/auth.d/01-dovecot-postfix.auth', - 'etc_dovecot_conf.d_01-dovecot-postfix.conf' => '/etc/dovecot/conf.d/01-dovecot-postfix.conf', - 'etc_dovecot_dovecot-sql.conf' => '/etc/dovecot/dovecot-sql.conf' + + 'etc_dovecot_conf.d_01_mail_stack_delivery.conf' => '/etc/dovecot/conf.d/01-mail-stack-delivery.conf', + 'etc_dovecot_conf.d_10_auth.conf' => '/etc/dovecot/conf.d/10-auth.conf', + 'etc_dovecot_conf.d_auth-sql.conf.ext' => '/etc/dovecot/conf.d/auth-sql.conf.ext', + 'etc_dovecot_dovecot-sql.conf.ext' => '/etc/dovecot/dovecot-sql.conf.ext' ), 'commands_2' => Array( - 'chmod 0640 /etc/dovecot/dovecot-sql.conf' + 'chmod 0640 /etc/dovecot/dovecot-sql.conf.ext' ), 'restart' => Array( '/etc/init.d/dovecot restart' diff --git a/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_auth.d_01-dovecot-postfix.auth b/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_auth.d_01-dovecot-postfix.auth deleted file mode 100644 index 78ac2f5b..00000000 --- a/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_auth.d_01-dovecot-postfix.auth +++ /dev/null @@ -1,28 +0,0 @@ -mechanisms = plain login -socket listen { - client { - path = /var/spool/postfix/private/dovecot-auth - mode = 0660 - user = postfix - group = postfix - } - master { - path = /var/run/dovecot/auth-master - mode = 0660 - user = vmail - group = vmail - } -} - -passdb sql { - args = /etc/dovecot/dovecot-sql.conf -} - -userdb prefetch { -} - -userdb sql { - args = /etc/dovecot/dovecot-sql.conf -} - -user = vmail \ No newline at end of file diff --git a/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_conf.d_01-dovecot-postfix.conf b/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_conf.d_01_mail_stack_delivery.conf similarity index 54% rename from templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_conf.d_01-dovecot-postfix.conf rename to templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_conf.d_01_mail_stack_delivery.conf index 508402f9..af58c910 100644 --- a/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_conf.d_01-dovecot-postfix.conf +++ b/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_conf.d_01_mail_stack_delivery.conf @@ -1,11 +1,9 @@ # Some general options -protocols = imap pop3 -mail_access_groups = vmail -## allow Plaintext Logins from foreign IP if the Connection doesn't use TLS +protocols = imap pop3 sieve disable_plaintext_auth = no ssl = yes -ssl_cert_file = /etc/ssl/certs/ssl-mail.pem -ssl_key_file = /etc/ssl/private/ssl-mail.key +ssl_cert = - mail_plugins = quota + postmaster_address = postmaster + mail_plugins = sieve quota + quota_full_tempfail = yes deliver_log_format = msgid=%m: %$ rejection_reason = Your message to <%t> was automatically rejected:%n%r } # Plugins configuration plugin { - quota = maildir + sieve=~/.dovecot.sieve + sieve_dir=~/sieve + quota = maildir } + +# Authentication configuration +auth_mechanisms = plain login + +service auth { + # Postfix smtp-auth + unix_listener /var/spool/postfix/private/dovecot-auth { + mode = 0660 + user = postfix + group = postfix + } +} + diff --git a/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_conf.d_10_auth.conf b/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_conf.d_10_auth.conf new file mode 100644 index 00000000..da1aa6da --- /dev/null +++ b/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_conf.d_10_auth.conf @@ -0,0 +1,127 @@ +## +## Authentication processes +## + +# Disable LOGIN command and all other plaintext authentications unless +# SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP +# matches the local IP (ie. you're connecting from the same computer), the +# connection is considered secure and plaintext authentication is allowed. +#disable_plaintext_auth = yes + +# Authentication cache size (e.g. 10M). 0 means it's disabled. Note that +# bsdauth, PAM and vpopmail require cache_key to be set for caching to be used. +#auth_cache_size = 0 +# Time to live for cached data. After TTL expires the cached record is no +# longer used, *except* if the main database lookup returns internal failure. +# We also try to handle password changes automatically: If user's previous +# authentication was successful, but this one wasn't, the cache isn't used. +# For now this works only with plaintext authentication. +#auth_cache_ttl = 1 hour +# TTL for negative hits (user not found, password mismatch). +# 0 disables caching them completely. +#auth_cache_negative_ttl = 1 hour + +# Space separated list of realms for SASL authentication mechanisms that need +# them. You can leave it empty if you don't want to support multiple realms. +# Many clients simply use the first one listed here, so keep the default realm +# first. +#auth_realms = + +# Default realm/domain to use if none was specified. This is used for both +# SASL realms and appending @domain to username in plaintext logins. +#auth_default_realm = + +# List of allowed characters in username. If the user-given username contains +# a character not listed in here, the login automatically fails. This is just +# an extra check to make sure user can't exploit any potential quote escaping +# vulnerabilities with SQL/LDAP databases. If you want to allow all characters, +# set this value to empty. +#auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@ + +# Username character translations before it's looked up from databases. The +# value contains series of from -> to characters. For example "#@/@" means +# that '#' and '/' characters are translated to '@'. +#auth_username_translation = + +# Username formatting before it's looked up from databases. You can use +# the standard variables here, eg. %Lu would lowercase the username, %n would +# drop away the domain if it was given, or "%n-AT-%d" would change the '@' into +# "-AT-". This translation is done after auth_username_translation changes. +#auth_username_format = + +# If you want to allow master users to log in by specifying the master +# username within the normal username string (ie. not using SASL mechanism's +# support for it), you can specify the separator character here. The format +# is then . UW-IMAP uses "*" as the +# separator, so that could be a good choice. +#auth_master_user_separator = + +# Username to use for users logging in with ANONYMOUS SASL mechanism +#auth_anonymous_username = anonymous + +# Maximum number of dovecot-auth worker processes. They're used to execute +# blocking passdb and userdb queries (eg. MySQL and PAM). They're +# automatically created and destroyed as needed. +#auth_worker_max_count = 30 + +# Host name to use in GSSAPI principal names. The default is to use the +# name returned by gethostname(). Use "$ALL" (with quotes) to allow all keytab +# entries. +#auth_gssapi_hostname = + +# Kerberos keytab to use for the GSSAPI mechanism. Will use the system +# default (usually /etc/krb5.keytab) if not specified. You may need to change +# the auth service to run as root to be able to read this file. +#auth_krb5_keytab = + +# Do NTLM and GSS-SPNEGO authentication using Samba's winbind daemon and +# ntlm_auth helper. +#auth_use_winbind = no + +# Path for Samba's ntlm_auth helper binary. +#auth_winbind_helper_path = /usr/bin/ntlm_auth + +# Time to delay before replying to failed authentications. +#auth_failure_delay = 2 secs + +# Require a valid SSL client certificate or the authentication fails. +#auth_ssl_require_client_cert = no + +# Take the username from client's SSL certificate, using +# X509_NAME_get_text_by_NID() which returns the subject's DN's +# CommonName. +#auth_ssl_username_from_cert = no + +# Space separated list of wanted authentication mechanisms: +# plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey +# gss-spnego +# NOTE: See also disable_plaintext_auth setting. +auth_mechanisms = plain + +## +## Password and user databases +## + +# +# Password database is used to verify user's password (and nothing more). +# You can have multiple passdbs and userdbs. This is useful if you want to +# allow both system users (/etc/passwd) and virtual users to login without +# duplicating the system users into virtual database. +# +# +# +# User database specifies where mails are located and what user/group IDs +# own them. For single-UID configuration use "static" userdb. +# +# + +#!include auth-deny.conf.ext +#!include auth-master.conf.ext + +#!include auth-system.conf.ext +!include auth-sql.conf.ext +#!include auth-ldap.conf.ext +#!include auth-passwdfile.conf.ext +#!include auth-checkpassword.conf.ext +#!include auth-vpopmail.conf.ext +#!include auth-static.conf.ext diff --git a/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_conf.d_auth-sql.conf.ext b/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_conf.d_auth-sql.conf.ext new file mode 100644 index 00000000..156a491b --- /dev/null +++ b/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_conf.d_auth-sql.conf.ext @@ -0,0 +1,8 @@ +passdb { + driver = sql + args = /etc/dovecot/dovecot-sql.conf.ext +} +userdb { + driver = sql + args = /etc/dovecot/dovecot-sql.conf.ext +} diff --git a/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_dovecot-sql.conf b/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_dovecot-sql.conf.ext similarity index 82% rename from templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_dovecot-sql.conf rename to templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_dovecot-sql.conf.ext index d46af54d..b39429cb 100644 --- a/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_dovecot-sql.conf +++ b/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_dovecot-sql.conf.ext @@ -1,5 +1,5 @@ driver = mysql -connect = host=xxx.xxx.xxx.xxx dbname=froxlor user=froxlor password=MYSQL_PASSWORD +connect = host= dbname= user= password= default_pass_scheme = CRYPT password_query = SELECT username AS user, password_enc AS password, CONCAT(homedir, maildir) AS userdb_home, uid AS userdb_uid, gid AS userdb_gid, CONCAT('maildir:', homedir, maildir) AS userdb_mail, CONCAT('maildir:storage=', (quota*1024)) as userdb_quota FROM mail_users WHERE (username = '%u' OR email = '%u') AND ((imap = 1 AND '%Ls' = 'imap') OR (pop3 = 1 AND '%Ls' = 'pop3') OR '%Ls' = 'smtp') -user_query = SELECT CONCAT(homedir, maildir) AS home, CONCAT('maildir:', homedir, maildir) AS mail, uid, gid, CONCAT('maildir:storage=', (quota*1024)) as quota FROM mail_users WHERE (username = '%u' OR email = '%u') \ No newline at end of file +user_query = SELECT CONCAT(homedir, maildir) AS home, CONCAT('maildir:', homedir, maildir) AS mail, uid, gid, CONCAT('maildir:storage=', (quota*1024)) as quota FROM mail_users WHERE (username = '%u' OR email = '%u') diff --git a/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_dovecot.conf b/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_dovecot.conf deleted file mode 100644 index 5fd0d617..00000000 --- a/templates/misc/configfiles/ubuntu_precise/dovecot/etc_dovecot_dovecot.conf +++ /dev/null @@ -1,150 +0,0 @@ -auth_mechanisms = plain login -disable_plaintext_auth = no -login_greeting = Welcome to Mail Server. - -info_log_path = /var/log/dovecot-info.log -log_path = /var/log/dovecot.log -#mail_debug = yes - -mail_uid = vmail -mail_gid = vmail - -# NFS Seting -#mail_fsync = always -#mail_nfs_storage = yes -#mmap_disable = no -#mail_nfs_index = no - -ssl_ca = -#service_count = 1 - -# Number of processes to always keep waiting for more connections. -#process_min_avail = 0 - -# If you set service_count=0, you probably need to grow this. -#vsz_limit = 64M -} - -service managesieve { -# Max. number of ManageSieve processes (connections) -# pocess_count = 1024 -} - -protocol sieve { - managesieve_max_line_length = 65536 - mail_max_userip_connections = 10 - managesieve_logout_format = bytes=%i/%o - managesieve_implementation_string = Dovecot Pigeonhole -#managesieve_sieve_capability = -#managesieve_notify_capability = - managesieve_max_compile_errors = 5 -} - -protocol imap { - imap_client_workarounds = delay-newmail tb-extra-mailbox-sep - imap_max_line_length = 64 k - mail_plugins = quota -} - - -protocol pop3 { - pop3_client_workarounds = outlook-no-nuls oe-ns-eoh - pop3_uidl_format = %08Xu%08Xv -} - -protocol lmtp { - mail_plugins = quota, sieve -} diff --git a/templates/misc/configfiles/ubuntu_precise/postfix_dovecot/etc_postfix_master.cf b/templates/misc/configfiles/ubuntu_precise/postfix_dovecot/etc_postfix_master.cf index fa68f5e4..ad2ab5a8 100644 --- a/templates/misc/configfiles/ubuntu_precise/postfix_dovecot/etc_postfix_master.cf +++ b/templates/misc/configfiles/ubuntu_precise/postfix_dovecot/etc_postfix_master.cf @@ -1,4 +1,4 @@ -# Add this lines to be able to use dovecot as delivery agent +# Add these lines to be able to use dovecot as delivery agent # Dovecot LDA -#dovecot unix - n n - - pipe -# flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -c /etc/dovecot/conf.d/01-dovecot-postfix.conf -d ${recipient} +dovecot unix - n n - - pipe + flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -c /etc/dovecot/conf.d/01-dovecot-postfix.conf -d ${recipient}