User Tools

Site Tools


start:howto:dovecot_plus_database_quota

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
start:howto:dovecot_plus_database_quota [2012/01/09 13:58]
aseques
start:howto:dovecot_plus_database_quota [2012/01/09 15:13]
aseques [Older documentation (pending to be purged)]
Line 148: Line 148:
     flags=DROhu user=vmail:​mail argv=/​usr/​libexec/​dovecot/​deliver -f ${sender} -d ${recipient}     flags=DROhu user=vmail:​mail argv=/​usr/​libexec/​dovecot/​deliver -f ${sender} -d ${recipient}
  
-===== Older documentation =====+===== Older documentation ​(pending to be purged) ​=====
  
- 
-=== 1. Create a new table in ispcp called quota_dovecot === 
- 
-This will create also the database to store quota 
-  mysql -u root -p mysql 
-  mysql> USE ispcp; 
-  mysql> CREATE TABLE quota_dovecot ( 
-    username varchar(100) not null, 
-    bytes bigint not null default 0, 
-    messages integer not null default 0, 
-    primary key (username) 
-    ); 
-  ​ 
-=== 2. Granting permissions to the sql user === 
- 
-  mysql> GRANT SELECT,​INSERT,​UPDATE ON imscp.quota_dovecot to '​ispcp_dovecot'​@'​localhost'​ 
-  mysql> FLUSH PRIVILEGES; 
-  mysql> QUIT; 
- 
-=== 4. Configure Dovecot === 
- 
-Replace /​etc/​dovecot/​dovecot.conf with the following one (you should backup the original because there are a lot of comments in it explaining all the configuration parameters). 
- 
-  cp /​etc/​dovecot/​dovecot.conf /​etc/​dovecot/​dovecot.conf.org 
- 
-Then save this content as your /​etc/​dovecot/​dovecot.conf 
- 
-<​code>​ 
-base_dir = /​var/​run/​dovecot/​ 
- 
-protocols = imap pop3 
-#Uncomment if using ssl 
-#protocols = imap pop3 imaps pop3s 
-disable_plaintext_auth = no 
-listen=* 
-syslog_facility = mail 
- 
-login_greeting = Dovecot ready. 
- 
-mail_location = maildir:%h 
-mail_privileged_group = mail 
- 
- #​Uncomment these lines to enable dovecot ssl support 
- #​Dovecot 1.2+ (i.e *BSD ports, lenny backport or squeeze) 
- ssl = yes 
- # 
- #​Certificate location 
- #​ssl_cert_file = /​etc/​ssl/​certs/​servername.crt 
- #​ssl_key_file = /​etc/​ssl/​certs/​servername.key 
- 
-protocol imap { 
-  mail_plugins = quota imap_quota 
-} 
- 
-#Uncomment to enable debugging 
-#mail_debug = yes 
-#auth_debug = yes 
-#​auth_verbose = yes 
- 
-namespace private { 
- ​prefix = INBOX. 
- inbox = yes 
-} 
- 
-protocol pop3 { 
- ​pop3_uidl_format = %u-%v 
- ​mail_plugins = quota 
-} 
- 
-protocol lda { 
- ​postmaster_address = [email protected] 
- ​auth_socket_path = /​var/​run/​dovecot/​auth-master 
- ​mail_plugins = quota sieve 
-} 
- 
-auth default { 
- ​mechanisms = plain login 
- ​passdb checkpassword { 
-  args = /​var/​www/​ispcp/​engine/​ispcp-dovecot-mngr 
- } 
- ​userdb sql { 
-  args = /​etc/​dovecot/​dovecot-sql-domain.conf 
- } 
- ​userdb sql { 
-   args = /​etc/​dovecot/​dovecot-sql-aliasdomain.conf 
- } 
- 
- ​userdb sql { 
-  args = /​etc/​dovecot/​dovecot-sql-subdomain.conf 
- } 
- 
- ​socket listen { 
-  client { 
-   path = /​var/​spool/​postfix/​private/​auth 
-   mode = 0660 
-   user = postfix 
-   group = postfix 
-  } 
- 
-  master { 
-   path = /​var/​run/​dovecot/​auth-master 
-   mode = 0660 
-   user = vmail 
-   group = mail 
-  } 
- } 
- 
- user = root 
-} 
- 
-#If you don't want to save quota occupation in a database, you should comment this: 
-dict { 
-  quotadict = mysql:/​etc/​dovecot/​dovecot-dict-sql.conf 
-} 
- 
-plugin { 
-  #Enable sieve for everybody (in dovecot >= 1.2 it is configured here) 
-  global_script_path = /​etc/​dovecot/​sieve/​dovecot.sieve 
-  #Uncomment this if you are using managesieve or per-user rules 
-  #sieve = ~/​sieve/​.dovecot.sieve 
-  #sieve_dir = ~/sieve 
-  ​ 
-  #Enable per-user quota 
-  #OPTION A: Using per user maildir files (no database) 
-  #quota = maildir:​User quota 
-  #OPTION B: Using per user database quota (can be read from ispCP) 
-  quota = dict:​user::​proxy::​quotadict 
-  quota_rule = *:bytes=1G 
-} 
-</​code>​ 
- 
-Create a new file  
-**/​etc/​dovecot/​dovecot-sql-domain.conf** ​ 
-with the following content: \\ 
 **NOTE:** In the SQL query for user_query there are uids and gids '​hardcoded'​. The uid must be the uid of your vmail user and gid the gid of the mail group. Maybe you have to change the defaults (1001/8)) **NOTE:** In the SQL query for user_query there are uids and gids '​hardcoded'​. The uid must be the uid of your vmail user and gid the gid of the mail group. Maybe you have to change the defaults (1001/8))
  
-  driver ​mysql +=== Configure ​Dovecot ===
-  connect ​host=localhost dbname=ispcp user=ispcp_dovecot password=PASS_MAILRW +
-  user_query = SELECT CONCAT('/​var/​mail/​virtual/',​ domain.domain_name,​ '/',​mail_acc) AS home, '​1001'​ AS uid, '​8'​ AS gid, CONCAT('​maildir:​storage=',​ FLOOR(quota/​1024)) AS quota FROM mail_users INNER JOIN domain ON mail_users.domain_id = domain.domain_id WHERE mail_acc='​%n'​ and domain.domain_name='​%d'​ AND (mail_type='​normal_mail'​ OR mail_type='​normal_mail,​normal_forward'​);​ +
-   +
-  # Use this for Dovecot ​1.1+ +
-  # user_query = SELECT CONCAT('/​var/​mail/​virtual/',​ domain.domain_name,​ '/',​mail_acc) AS home, '​1001'​ AS uid, '​8'​ AS gid, CONCAT('​*:​bytes=',​quota,'​B'​) AS quota_rule FROM mail_users INNER JOIN domain ON mail_users.domain_id = domain.domain_id WHERE mail_acc='​%n'​ AND domain.domain_name='​%d'​ AND (mail_type='​normal_mail'​ OR mail_type='​normal_mail,​normal_forward'​);​ +
-   +
-  #Use this if you don't want quota +
-  # user_query = SELECT CONCAT('/​var/​mail/​virtual/',​ domain.domain_name,​ '/',​mail_acc) AS home, '​1001'​ AS uid, '​8'​ AS gid FROM mail_users INNER JOIN domain ON mail_users.domain_id = domain.domain_id WHERE mail_acc='​%n'​ AND domain.domain_name='​%d'​ AND (mail_type='​normal_mail'​ OR mail_type='​normal_mail,​normal_forward'​);​+
  
-Create a new file +If you want the subdomains to be able to receive mail:
 **/​etc/​dovecot/​dovecot-sql-subdomain.conf** ​ **/​etc/​dovecot/​dovecot-sql-subdomain.conf** ​
 with the following content:\\ with the following content:\\
Line 307: Line 165:
 </​code>​ </​code>​
  
-Create a new file +If you want the domains alias to be able to receive mail:
 **/​etc/​dovecot/​dovecot-sql-aliasdomain.conf** ​ **/​etc/​dovecot/​dovecot-sql-aliasdomain.conf** ​
 with the following content:\\ with the following content:\\
Line 316: Line 174:
 connect = host=localhost dbname=ispcp user=ispcp_dovecot password=PASS_MAILRW connect = host=localhost dbname=ispcp user=ispcp_dovecot password=PASS_MAILRW
 user_query = SELECT concat('/​var/​mail/​virtual/',​ domain_aliasses.alias_name,​ '/',​mail_acc) as home, '​1001'​ as uid, '​8'​ as gid FROM (mail_users INNER JOIN domain_aliasses ON mail_users.sub_id = domain_aliasses.alias_id) INNER JOIN domain ON mail_users.domain_id = domain.domain_id WHERE mail_acc='​%n'​ and domain_aliasses.alias_name ='​%d';​ user_query = SELECT concat('/​var/​mail/​virtual/',​ domain_aliasses.alias_name,​ '/',​mail_acc) as home, '​1001'​ as uid, '​8'​ as gid FROM (mail_users INNER JOIN domain_aliasses ON mail_users.sub_id = domain_aliasses.alias_id) INNER JOIN domain ON mail_users.domain_id = domain.domain_id WHERE mail_acc='​%n'​ and domain_aliasses.alias_name ='​%d';​
-</​code>​ 
- 
-Create the file used to store the quotas on the db 
-**/​etc/​dovecot/​dovecot-dict-sql.conf** 
-<​code>#​ v1.2+ only: 
-connect = host=localhost dbname=ispcp user=ispcp_dovecot password=PASS_MAILRW 
-map { 
-  pattern = priv/​quota/​storage 
-  table = quota_dovecot 
-  username_field = username 
-  value_field = bytes 
-} 
-map { 
-  pattern = priv/​quota/​messages 
-  table = quota_dovecot 
-  username_field = username 
-  value_field = messages 
-} 
 </​code>​ </​code>​
/var/www/virtual/i-mscp.net/wiki/htdocs/data/pages/start/howto/dovecot_plus_database_quota.txt · Last modified: 2013/06/21 07:36 by aseques