1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# postconf -n  
command_directory = /usr/local/sbin
config_directory = /usr/local/etc/postfix
content_filter = lmtp:[212.110.95.13]:10024
daemon_directory = /usr/local/libexec/postfix
data_directory = /var/db/postfix
debug_peer_level = 2
disable_vrfy_command = yes
home_mailbox = Maildir/
html_directory = no
mail_owner = postfix
mailq_path = /usr/local/bin/mailq
manpage_directory = /usr/local/man
mynetworks = 212.110.95.8/32, 127.0.0.1/32
mynetworks_style = host
newaliases_path = /usr/local/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = no
sample_directory = /usr/local/etc/postfix
sendmail_path = /usr/local/sbin/sendmail
setgid_group = maildrop
show_user_unknown_table_name = no
smtpd_banner = $myhostname ESMTP $mail_name
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject
unknown_local_recipient_reject_code = 550
virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:1002
virtual_mailbox_base = /mc
virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 51200000
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_transport = virtual
virtual_uid_maps = static:1002


# cat mysql_virtual_domains_maps.cf 
user = postfix
password = maildb1234
hosts = localhost
dbname = maildb
table = domain
select_field = domain
where_field = domain


# cat mysql_virtual_mailbox_maps.cf 
user = postfix
password = maildb1234
hosts = 127.0.0.1
dbname = maildb
table = mailbox
select_field = maildir
where_field = username


mysql> desc domain;
+-------------+--------------+------+-----+---------------------+-------+
| Field       | Type         | Null | Key | Default             | Extra |
+-------------+--------------+------+-----+---------------------+-------+
| domain      | varchar(255) | NO   | PRI |                     |       | 
| description | varchar(255) | NO   |     | NULL                |       | 
| aliases     | int(10)      | NO   |     | 0                   |       | 
| mailboxes   | int(10)      | NO   |     | 0                   |       | 
| maxquota    | bigint(20)   | NO   |     | 0                   |       | 
| quota       | bigint(20)   | NO   |     | 0                   |       | 
| transport   | varchar(255) | YES  |     | NULL                |       | 
| backupmx    | tinyint(1)   | NO   |     | 0                   |       | 
| created     | datetime     | NO   |     | 0000-00-00 00:00:00 |       | 
| modified    | datetime     | NO   |     | 0000-00-00 00:00:00 |       | 
| active      | tinyint(1)   | NO   |     | 1                   |       | 
+-------------+--------------+------+-----+---------------------+-------+
11 rows in set (0.01 sec)

mysql> desc mailbox;
+----------+--------------+------+-----+---------------------+-------+
| Field    | Type         | Null | Key | Default             | Extra |
+----------+--------------+------+-----+---------------------+-------+
| username | varchar(255) | NO   | PRI |                     |       | 
| password | varchar(255) | NO   |     |                     |       | 
| name     | varchar(255) | NO   |     | NULL                |       | 
| maildir  | varchar(255) | NO   |     |                     |       | 
| quota    | bigint(20)   | NO   |     | 0                   |       | 
| domain   | varchar(255) | NO   |     |                     |       | 
| created  | datetime     | NO   |     | 0000-00-00 00:00:00 |       | 
| modified | datetime     | NO   |     | 0000-00-00 00:00:00 |       | 
| active   | tinyint(1)   | NO   |     | 1                   |       | 
+----------+--------------+------+-----+---------------------+-------+
9 rows in set (0.01 sec)



mysql> select domain,transport from domain;
+------------------+-----------+
| domain           | transport |
+------------------+-----------+
| mol.com.mk       | virtual   | 
| vox-mundi.net.mk | virtual   | 
+------------------+-----------+
2 rows in set (0.00 sec)


mysql> select username,maildir from mailbox;
+-----------------------+------------------------+
| username              | maildir                |
+-----------------------+------------------------+
| [email protected]      | mol.com.mk/admin/      | 
| [email protected] | vox-mundi.net.mk/test/ | 
+-----------------------+------------------------+
2 rows in set (0.00 sec)