Skip to content

Commit

Permalink
continue with sql stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
DO1JLR committed Jan 3, 2021
1 parent 458a88f commit 5f12c58
Show file tree
Hide file tree
Showing 6 changed files with 97 additions and 0 deletions.
3 changes: 3 additions & 0 deletions host_vars/mail01.l3d.space/vars.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,6 @@ firewall_allowed_tcp_ports:
# mysql
mysql_bind_address: "{{ _mysql_bind_address }}"
mysql_root_password: "{{ _mysql_root_password }}"

# mailserver
mailserver_domain: "{{ inventory_hostname }}"
2 changes: 2 additions & 0 deletions roles/mailserver_preperation/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@ set_additional_nameserver: true
additional_v4nameserver: '46.182.19.48'
additional_v6nameserver: '2a02:2970:1002::18'
additional_dns_maildomains: "{{ ansible_fqdn }}"

mailserver_domain: "{{ ansible_fqdn }}"
45 changes: 45 additions & 0 deletions roles/mailserver_preperation/files/schema.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
CREATE DATABASE IF NOT EXISTS vmail CHARACTER SET 'utf8';

USE vmail;

CREATE TABLE `domains` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`domain` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY (`domain`)
);

CREATE TABLE `accounts` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(64) NOT NULL,
`domain` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`quota` int unsigned DEFAULT '0',
`enabled` boolean DEFAULT '0',
`sendonly` boolean DEFAULT '0',
PRIMARY KEY (id),
UNIQUE KEY (`username`, `domain`),
FOREIGN KEY (`domain`) REFERENCES `domains` (`domain`)
);

CREATE TABLE `aliases` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`source_username` varchar(64) NOT NULL,
`source_domain` varchar(255) NOT NULL,
`destination_username` varchar(64) NOT NULL,
`destination_domain` varchar(255) NOT NULL,
`enabled` boolean DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY (`source_username`, `source_domain`, `destination_username`, `destination_domain`),
FOREIGN KEY (`source_domain`) REFERENCES `domains` (`domain`)
);

CREATE TABLE `tlspolicies` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`domain` varchar(255) NOT NULL,
`policy` enum('none', 'may', 'encrypt', 'dane', 'dane-only', 'fingerprint', 'verify', 'secure') NOT NULL,
`params` varchar(255),
PRIMARY KEY (`id`),
UNIQUE KEY (`domain`)
);

4 changes: 4 additions & 0 deletions roles/mailserver_preperation/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,7 @@
mode: 0644
owner: root
group: root

- name: configure mariadb
include_tasks: mariadb.yml

39 changes: 39 additions & 0 deletions roles/mailserver_preperation/tasks/mariadb.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
- name: create database schema store dir
become: true
file:
path: /root/.mariadb_schema
state: directory
mode: '0755'
owner: root
group: root

- name: Copy database schema
become: true
copy:
src: files/schema.sql
dest: /root/.mariadb_schema/schema.sql
register: mysqlschema

- name: Copy mail config
become: true
template:
src: templates/mysqlconfig.sql.j2
dest: /root/.mariadb_schema/config.sql
register: mysqlconfig

- name: Import database schema
become: true
mssql_db:
name: vmail
state: import
target: '/root/.mariadb_schema/schema.sql'
when: mysqlschema.changed

- name: Import database schema
become: true
mssql_db:
name: vmail
state: import
target: '/root/.mariadb_schema/config.sql'
when: mysqlconfig.changed
4 changes: 4 additions & 0 deletions roles/mailserver_preperation/templates/mysqlconfig.sql.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
use vmail;
insert into domains (domain) values ('{{ mailserver_domain }}');
insert into accounts (username, domain, password, quota, enabled, sendonly) values ('{{ mail_user }}', '{{ domain }}', '{{ mail_user_pass_hash }}', 2048, true, false);
insert into aliases (source_username, source_domain, destination_username, destination_domain, enabled) values ('alias', '{{ domain }}', '{{ mail_user }}', '{{ domain }}', true);

0 comments on commit 5f12c58

Please sign in to comment.