Browse Source

10-master.conf.erb template using variables

Xabier de Zuazo 11 years ago
parent
commit
9b953ecc2b
3 changed files with 70 additions and 5 deletions
  1. 7 0
      attributes/conf-10-master.rb
  2. 26 0
      attributes/services.rb
  3. 37 5
      templates/default/conf.d/10-master.conf.erb

+ 7 - 0
attributes/conf-10-master.rb

@@ -0,0 +1,7 @@
+
+default['dovecot']['default_process_limit'] = nil
+default['dovecot']['default_client_limit'] = nil
+default['dovecot']['default_vsz_limit'] = nil
+default['dovecot']['default_login_user'] = nil
+default['dovecot']['default_internal_user'] = nil
+

+ 26 - 0
attributes/services.rb

@@ -1,6 +1,7 @@
 
 default['dovecot']['services'] = {}
 
+default['dovecot']['services']['director'] = nil
 # default['dovecot']['services']['director']['listeners'] = [
 #   { 'unix:login/director' => {
 #       'mode' => '0666',
@@ -16,3 +17,28 @@ default['dovecot']['services'] = {}
 #   } },
 # ]
 
+default['dovecot']['services']['imap-login'] = nil
+# default['dovecot']['services']['imap-login'] = {
+#   'listeners' => [
+#     { 'inet:imap' => {
+#      # 'port' => 143,
+#     } },
+#     { 'inet:imaps' => {
+#       # 'port' => 993,
+#       # 'ssl' => true,
+#     } },
+#   ],
+#   # 'service_count' => 1,
+#   # 'process_min_avail' => 0,
+#   # 'vsz_limit' => '64M',
+# }
+
+default['dovecot']['services']['imap-login'] = nil
+default['dovecot']['services']['pop3-login'] = nil
+default['dovecot']['services']['lmtp'] = nil
+default['dovecot']['services']['imap'] = nil
+default['dovecot']['services']['pop3'] = nil
+default['dovecot']['services']['auth'] = nil
+default['dovecot']['services']['auth-worker'] = nil
+default['dovecot']['services']['dict'] = nil
+

+ 37 - 5
templates/default/conf.d/10-master.conf.erb

@@ -1,19 +1,22 @@
-#default_process_limit = 100
-#default_client_limit = 1000
+<%= Dovecot::Conf.attribute(@conf, 'default_process_limit', 100) %>
+<%= Dovecot::Conf.attribute(@conf, 'default_client_limit', 1000) %>
 
 # Default VSZ (virtual memory size) limit for service processes. This is mainly
 # intended to catch and kill processes that leak memory before they eat up
 # everything.
-#default_vsz_limit = 256M
+<%= Dovecot::Conf.attribute(@conf, 'default_vsz_limit', '256M') %>
 
 # Login user is internally used by login processes. This is the most untrusted
 # user in Dovecot system. It shouldn't have access to anything at all.
-#default_login_user = dovenull
+<%= Dovecot::Conf.attribute(@conf, 'default_login_user', 'dovenull') %>
 
 # Internal user is used by unprivileged processes. It should be separate from
 # login user, so that login processes can't disturb other processes.
-#default_internal_user = dovecot
+<%= Dovecot::Conf.attribute(@conf, 'default_internal_user', 'dovecot') %>
 
+<% if @services['imap-login'].kind_of?(Hash) and @services['imap-login'].length > 0 -%>
+<%=  Dovecot::Conf.service('imap-login', @services['imap-login']) %>
+<% else -%>
 service imap-login {
   inet_listener imap {
     #port = 143
@@ -34,7 +37,11 @@ service imap-login {
   # If you set service_count=0, you probably need to grow this.
   #vsz_limit = 64M
 }
+<% end -%>
 
+<% if @services['pop3-login'].kind_of?(Hash) and @services['pop3-login'].length > 0 -%>
+<%=  Dovecot::Conf.service('pop3-login', @services['pop3-login']) %>
+<% else -%>
 service pop3-login {
   inet_listener pop3 {
     #port = 110
@@ -44,7 +51,11 @@ service pop3-login {
     #ssl = yes
   }
 }
+<% end -%>
 
+<% if @services['lmtp'].kind_of?(Hash) and @services['lmtp'].length > 0 -%>
+<%=  Dovecot::Conf.service('lmtp', @services['lmtp']) %>
+<% else -%>
 service lmtp {
   unix_listener lmtp {
     #mode = 0666
@@ -57,7 +68,11 @@ service lmtp {
     #port = 
   #}
 }
+<% end -%>
 
+<% if @services['imap'].kind_of?(Hash) and @services['imap'].length > 0 -%>
+<%=  Dovecot::Conf.service('imap', @services['imap']) %>
+<% else -%>
 service imap {
   # Most of the memory goes to mmap()ing files. You may need to increase this
   # limit if you have huge mailboxes.
@@ -66,12 +81,20 @@ service imap {
   # Max. number of IMAP processes (connections)
   #process_limit = 1024
 }
+<% end -%>
 
+<% if @services['pop3'].kind_of?(Hash) and @services['pop3'].length > 0 -%>
+<%=  Dovecot::Conf.service('pop3', @services['pop3']) %>
+<% else -%>
 service pop3 {
   # Max. number of POP3 processes (connections)
   #process_limit = 1024
 }
+<% end -%>
 
+<% if @services['auth'].kind_of?(Hash) and @services['auth'].length > 0 -%>
+<%=  Dovecot::Conf.service('auth', @services['auth']) %>
+<% else -%>
 service auth {
   # auth_socket_path points to this userdb socket by default. It's typically
   # used by dovecot-lda, doveadm, possibly imap process, etc. Its default
@@ -92,14 +115,22 @@ service auth {
   # Auth process is run as this user.
   #user = $default_internal_user
 }
+<% end -%>
 
+<% if @services['auth-worker'].kind_of?(Hash) and @services['auth-worker'].length > 0 -%>
+<%=  Dovecot::Conf.service('auth-worker', @services['auth-worker']) %>
+<% else -%>
 service auth-worker {
   # Auth worker process is run as root by default, so that it can access
   # /etc/shadow. If this isn't necessary, the user should be changed to
   # $default_internal_user.
   #user = root
 }
+<% end -%>
 
+<% if @services['dict'].kind_of?(Hash) and @services['dict'].length > 0 -%>
+<%=  Dovecot::Conf.service('dict', @services['dict']) %>
+<% else -%>
 service dict {
   # If dict proxy is used, mail processes should have access to its socket.
   # For example: mode=0660, group=vmail and global mail_access_groups=vmail
@@ -109,3 +140,4 @@ service dict {
     #group = 
   }
 }
+<% end -%>