diff --git a/defaults/main.yml b/defaults/main.yml index 2b3b85f..0723859 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -5,6 +5,10 @@ mail_db_password: "{{ vault_mail_admin_password }}" mail_db_name: 'mail' admin_password: "{{ mail_admin_password }}" mail_admin_username: 'mail_admin' +mail_db_users_table_name: 'users' +mail_db_users_password_field: 'password' +mail_db_users_username_field: 'email' +mail_db_users_quota_field: 'quota' dns_resolver: 1.1.1.1 mail_domains: - example.org diff --git a/templates/authmysqlrc.j2 b/templates/authmysqlrc.j2 index 2876102..e05a2f1 100644 --- a/templates/authmysqlrc.j2 +++ b/templates/authmysqlrc.j2 @@ -3,15 +3,15 @@ MYSQL_USERNAME {{ mail_db_user}} MYSQL_PASSWORD {{ mail_db_password }} MYSQL_PORT 0 MYSQL_DATABASE {{ mail_db_name }} -MYSQL_USER_TABLE users -MYSQL_CRYPT_PWFIELD password -#MYSQL_CLEAR_PWFIELD password +MYSQL_USER_TABLE {{ mail_db_users_table_name }} +MYSQL_CRYPT_PWFIELD {{ mail_db_users_password_field }} +#MYSQL_CLEAR_PWFIELD {{ mail_db_users_password_field }} MYSQL_UID_FIELD 5000 MYSQL_GID_FIELD 5000 -MYSQL_LOGIN_FIELD email +MYSQL_LOGIN_FIELD {{ mail_db_users_username_field }} MYSQL_HOME_FIELD "/home/vmail" -MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') +MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX({{ mail_db_users_username_field }},'@',-1),'/',SUBSTRING_INDEX({{ mail_db_users_username_field }},'@',1),'/') #MYSQL_NAME_FIELD -MYSQL_QUOTA_FIELD quota +MYSQL_QUOTA_FIELD {{ mail_db_users_quota_field }} MYSQL_OPT 0 ##NAME: MARKER:0 # # Do not remove this section from this configuration file. This section # must be present at the end of this file. diff --git a/templates/mysql-virtual_domains.cf.j2 b/templates/mysql-virtual_domains.cf.j2 index 3b2f4c4..e3b20a1 100644 --- a/templates/mysql-virtual_domains.cf.j2 +++ b/templates/mysql-virtual_domains.cf.j2 @@ -1,5 +1,5 @@ user = {{ mail_db_user}} password = {{ mail_db_password }} dbname = {{ mail_db_name }} -query = SELECT domain AS virtuald FROM domains WHERE domain='%s' +query = SELECT SUBSTRING_INDEX({{ mail_db_users_username_field }},'@',-1) AS virtuald FROM dbmail_aliases WHERE alias like '%%%s' hosts = 127.0.0.1 diff --git a/templates/mysql-virtual_email2email.cf.j2 b/templates/mysql-virtual_email2email.cf.j2 index 08efe82..4019079 100644 --- a/templates/mysql-virtual_email2email.cf.j2 +++ b/templates/mysql-virtual_email2email.cf.j2 @@ -1,5 +1,5 @@ user = {{ mail_db_user}} password = {{ mail_db_password }} dbname = {{ mail_db_name }} -query = SELECT email FROM users WHERE email='%s' +query = SELECT {{ mail_db_users_username_field }} FROM {{ mail_db_users_table_name }} WHERE {{ mail_db_users_username_field }}='%s' hosts = 127.0.0.1 diff --git a/templates/mysql-virtual_mailbox_limit_maps.cf.j2 b/templates/mysql-virtual_mailbox_limit_maps.cf.j2 index ea6a6af..c0d1e71 100644 --- a/templates/mysql-virtual_mailbox_limit_maps.cf.j2 +++ b/templates/mysql-virtual_mailbox_limit_maps.cf.j2 @@ -1,5 +1,5 @@ user = {{ mail_db_user}} password = {{ mail_db_password }} dbname = {{ mail_db_name }} -query = SELECT quota FROM users WHERE email='%s' +query = SELECT {{ mail_db_users_quota_field }} FROM {{ mail_db_users_table_name }} WHERE {{ mail_db_users_username_field }}='%s' hosts = 127.0.0.1 diff --git a/templates/mysql-virtual_mailboxes.cf.j2 b/templates/mysql-virtual_mailboxes.cf.j2 index db327a2..cb4a120 100644 --- a/templates/mysql-virtual_mailboxes.cf.j2 +++ b/templates/mysql-virtual_mailboxes.cf.j2 @@ -1,5 +1,5 @@ user = {{ mail_db_user}} password = {{ mail_db_password }} dbname = {{ mail_db_name }} -query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s' +query = SELECT CONCAT(SUBSTRING_INDEX({{ mail_db_users_username_field }},'@',-1),'/',SUBSTRING_INDEX({{ mail_db_users_username_field }},'@',1),'/') FROM {{ mail_db_users_table_name }} WHERE {{ mail_db_users_username_field }}='%s' hosts = 127.0.0.1 diff --git a/templates/smtp.j2 b/templates/smtp.j2 index 9f3cd6b..010021c 100644 --- a/templates/smtp.j2 +++ b/templates/smtp.j2 @@ -1,2 +1,2 @@ -auth required pam_mysql.so user={{ mail_db_user}} passwd={{ mail_db_password }} host=127.0.0.1 db={{ mail_db_name }} table=users usercolumn=email passwdcolumn=password crypt=1 -account sufficient pam_mysql.so user={{ mail_db_user}} passwd={{ mail_db_password }} host=127.0.0.1 db={{ mail_db_name }} table=users usercolumn=email passwdcolumn=password crypt=1 +auth required pam_mysql.so user={{ mail_db_user}} passwd={{ mail_db_password }} host=127.0.0.1 db={{ mail_db_name }} table={{ mail_db_users_table_name }} usercolumn={{ mail_db_users_username_field }} passwdcolumn={{ mail_db_users_password_field }} crypt=1 +account sufficient pam_mysql.so user={{ mail_db_user}} passwd={{ mail_db_password }} host=127.0.0.1 db={{ mail_db_name }} table={{ mail_db_users_table_name }} usercolumn={{ mail_db_users_username_field }} passwdcolumn={{ mail_db_users_password_field }} crypt=1 diff --git a/templates/smtpd.conf.j2 b/templates/smtpd.conf.j2 index 477a240..b22e99c 100644 --- a/templates/smtpd.conf.j2 +++ b/templates/smtpd.conf.j2 @@ -7,5 +7,5 @@ sql_hostnames: 127.0.0.1 sql_user: {{ mail_db_user}} sql_passwd: {{ mail_db_password }} sql_database: {{ mail_db_name }} -sql_select: select password from users where email = '%u@%r' +sql_select: select {{ mail_db_users_password_field}} from {{ mail_db_users_table_name }} where {{ mail_db_users_username_field }} = '%u@%r' log_level: 9