Blame


1 386bf42a 2022-08-18 mischa ## OpenSMTPD Admin
2 386bf42a 2022-08-18 mischa
3 4189bd17 2023-10-14 mischa OpenSMTPD Admin started as a fork of Postfix Admin 2.1.0 (released
4 4189bd17 2023-10-14 mischa in 2007), and grew quickly in a complete rewrite for OpenSMTPD.
5 386bf42a 2022-08-18 mischa
6 4189bd17 2023-10-14 mischa ## Installation of packages
7 ff907833 2022-08-21 mischa
8 4189bd17 2023-10-14 mischa To get going on OpenBSD you will need to install the following packages:
9 4189bd17 2023-10-14 mischa
10 4189bd17 2023-10-14 mischa mariadb-server
11 4189bd17 2023-10-14 mischa php
12 4189bd17 2023-10-14 mischa php-pdo_mysql
13 4189bd17 2023-10-14 mischa
14 4189bd17 2023-10-14 mischa For OpenSMTPD you need the packages:
15 4189bd17 2023-10-14 mischa
16 4189bd17 2023-10-14 mischa opensmtpd-extras
17 4189bd17 2023-10-14 mischa opensmtpd-extras-mysql
18 4189bd17 2023-10-14 mischa
19 4189bd17 2023-10-14 mischa Once the packages are installed follow the steps outlined in /usr/local/share/doc/pkg-readmes
20 4189bd17 2023-10-14 mischa
21 4189bd17 2023-10-14 mischa You need to create the database with:
22 4189bd17 2023-10-14 mischa
23 ff907833 2022-08-21 mischa CREATE DATABASE IF NOT EXISTS `opensmtpd` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
24 ff907833 2022-08-21 mischa USE `opensmtpd`;
25 ff907833 2022-08-21 mischa
26 ff907833 2022-08-21 mischa CREATE TABLE `admin` (
27 ff907833 2022-08-21 mischa `username` varchar(255) NOT NULL DEFAULT '',
28 ff907833 2022-08-21 mischa `password` varchar(255) NOT NULL DEFAULT '',
29 080e0cc0 2022-09-05 mischa `role` varchar(32) DEFAULT NULL,
30 ff907833 2022-08-21 mischa `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
31 ff907833 2022-08-21 mischa `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
32 a3641a18 2022-09-04 mischa PRIMARY KEY (`username`),
33 a3641a18 2022-09-04 mischa KEY `username` (`username`)
34 4189bd17 2023-10-14 mischa ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='OpenSMTPD Admin - Virtual Admins';
35 ff907833 2022-08-21 mischa
36 ff907833 2022-08-21 mischa CREATE TABLE `alias` (
37 ff907833 2022-08-21 mischa `address` varchar(255) NOT NULL DEFAULT '',
38 ff907833 2022-08-21 mischa `goto` text NOT NULL,
39 ff907833 2022-08-21 mischa `domain` varchar(255) NOT NULL DEFAULT '',
40 ff907833 2022-08-21 mischa `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
41 ff907833 2022-08-21 mischa `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
42 a3641a18 2022-09-04 mischa PRIMARY KEY (`address`),
43 a3641a18 2022-09-04 mischa KEY `address` (`address`)
44 4189bd17 2023-10-14 mischa ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='OpenSMTPD Admin - Virtual Aliases';
45 ff907833 2022-08-21 mischa
46 ff907833 2022-08-21 mischa CREATE TABLE `domain` (
47 ff907833 2022-08-21 mischa `domain` varchar(255) NOT NULL DEFAULT '',
48 ff907833 2022-08-21 mischa `description` varchar(255) NOT NULL DEFAULT '',
49 ff907833 2022-08-21 mischa `aliases` int(10) NOT NULL DEFAULT 0,
50 ff907833 2022-08-21 mischa `mailboxes` int(10) NOT NULL DEFAULT 0,
51 ff907833 2022-08-21 mischa `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
52 ff907833 2022-08-21 mischa `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
53 a3641a18 2022-09-04 mischa PRIMARY KEY (`domain`),
54 a3641a18 2022-09-04 mischa KEY `domain` (`domain`)
55 4189bd17 2023-10-14 mischa ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='OpenSMTPD Admin - Virtual Domains';
56 ff907833 2022-08-21 mischa
57 ff907833 2022-08-21 mischa CREATE TABLE `domain_admins` (
58 ff907833 2022-08-21 mischa `username` varchar(255) NOT NULL DEFAULT '',
59 ff907833 2022-08-21 mischa `domain` varchar(255) NOT NULL DEFAULT '',
60 ff907833 2022-08-21 mischa `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
61 a3641a18 2022-09-04 mischa KEY `username` (`username`)
62 4189bd17 2023-10-14 mischa ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='OpenSMTPD Admin - Domain Admins';
63 ff907833 2022-08-21 mischa
64 ff907833 2022-08-21 mischa CREATE TABLE `log` (
65 ff907833 2022-08-21 mischa `timestamp` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
66 ff907833 2022-08-21 mischa `username` varchar(255) NOT NULL DEFAULT '',
67 ff907833 2022-08-21 mischa `domain` varchar(255) NOT NULL DEFAULT '',
68 ff907833 2022-08-21 mischa `action` varchar(255) NOT NULL DEFAULT '',
69 a3641a18 2022-09-04 mischa `data` varchar(255) NOT NULL DEFAULT '',
70 a3641a18 2022-09-04 mischa KEY `timestamp` (`timestamp`)
71 4189bd17 2023-10-14 mischa ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='OpenSMTPD Admin - Log';
72 ff907833 2022-08-21 mischa
73 a3641a18 2022-09-04 mischa CREATE TABLE `mailbox` (
74 a3641a18 2022-09-04 mischa `username` varchar(255) NOT NULL DEFAULT '',
75 a3641a18 2022-09-04 mischa `password` varchar(255) NOT NULL DEFAULT '',
76 a3641a18 2022-09-04 mischa `name` varchar(255) NOT NULL DEFAULT '',
77 a3641a18 2022-09-04 mischa `maildir` varchar(255) NOT NULL DEFAULT '',
78 a3641a18 2022-09-04 mischa `domain` varchar(255) NOT NULL DEFAULT '',
79 a3641a18 2022-09-04 mischa `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
80 a3641a18 2022-09-04 mischa `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
81 a3641a18 2022-09-04 mischa PRIMARY KEY (`username`),
82 a3641a18 2022-09-04 mischa KEY `username` (`username`)
83 4189bd17 2023-10-14 mischa ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='OpenSMTPD Admin - Virtual Mailboxes';
84 ff907833 2022-08-21 mischa
85 a3641a18 2022-09-04 mischa CREATE TABLE `vacation` (
86 a3641a18 2022-09-04 mischa `email` varchar(255) NOT NULL DEFAULT '',
87 a3641a18 2022-09-04 mischa `subject` varchar(255) NOT NULL DEFAULT '',
88 a3641a18 2022-09-04 mischa `body` text NOT NULL,
89 a3641a18 2022-09-04 mischa `cache` text NOT NULL,
90 a3641a18 2022-09-04 mischa `domain` varchar(255) NOT NULL DEFAULT '',
91 a3641a18 2022-09-04 mischa `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
92 a3641a18 2022-09-04 mischa PRIMARY KEY (`email`),
93 a3641a18 2022-09-04 mischa KEY `email` (`email`)
94 4189bd17 2023-10-14 mischa ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='OpenSMTPD Admin - Virtual Vacation';
95 ff907833 2022-08-21 mischa
96 a3641a18 2022-09-04 mischa
97 4189bd17 2023-10-14 mischa You can create the database user with something like:
98 ff907833 2022-08-21 mischa
99 4189bd17 2023-10-14 mischa CREATE USER IF NOT EXISTS 'opensmtpd'@'localhost' IDENTIFIED BY 'RandomString';
100 4189bd17 2023-10-14 mischa GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON opensmtpd.* TO 'opensmtpd'@'localhost';
101 4189bd17 2023-10-14 mischa
102 4189bd17 2023-10-14 mischa
103 4189bd17 2023-10-14 mischa As an example configuration for httpd you can use:
104 4189bd17 2023-10-14 mischa
105 4189bd17 2023-10-14 mischa server "opensmtpadmin" {
106 4189bd17 2023-10-14 mischa listen on * tls port 443
107 4189bd17 2023-10-14 mischa tls {
108 4189bd17 2023-10-14 mischa certificate "/etc/ssl/opensmtpdadmin.fullchain.pem"
109 4189bd17 2023-10-14 mischa key "/etc/ssl/private/opensmtpadmin.key"
110 4189bd17 2023-10-14 mischa }
111 4189bd17 2023-10-14 mischa tcp { nodelay, sack }
112 4189bd17 2023-10-14 mischa log style forwarded
113 4189bd17 2023-10-14 mischa location "/admin/*" {
114 4189bd17 2023-10-14 mischa authenticate with "/opensmtpdadmin/admin/.htpasswd"
115 4189bd17 2023-10-14 mischa root "/opensmtpdadmin"
116 4189bd17 2023-10-14 mischa fastcgi socket "/run/php-fpm.sock"
117 4189bd17 2023-10-14 mischa }
118 4189bd17 2023-10-14 mischa location "*.php*" {
119 4189bd17 2023-10-14 mischa root "/opensmtpdadmin"
120 4189bd17 2023-10-14 mischa directory index index.php
121 4189bd17 2023-10-14 mischa fastcgi socket "/run/php-fpm.sock"
122 4189bd17 2023-10-14 mischa }
123 4189bd17 2023-10-14 mischa location "/*" {
124 4189bd17 2023-10-14 mischa root "/opensmtpdadmin"
125 4189bd17 2023-10-14 mischa directory index index.php
126 4189bd17 2023-10-14 mischa }
127 4189bd17 2023-10-14 mischa }
128 4189bd17 2023-10-14 mischa
129 8b1f4b87 2023-10-14 mischa As soon as that is done you can go to https://YOURHOST/<br>
130 4189bd17 2023-10-14 mischa You will be greeted by setup.php to check if everything is present to run OpenSMTPDAdmin.
131 4189bd17 2023-10-14 mischa
132 4189bd17 2023-10-14 mischa Copy or move the conf.php-sample to conf.php and make the needed changes for your setup.<br>
133 4189bd17 2023-10-14 mischa You can remove setup.php if you want.
134 4189bd17 2023-10-14 mischa
135 8b1f4b87 2023-10-14 mischa After that you can go to https://YOURHOST/admin/admin.php where you create the SUPER ADMIN.<br>
136 8c659469 2023-10-16 mischa **NOTE: Once this is done, either remove or protect /admin/admin.php.**
137 4189bd17 2023-10-14 mischa
138 4189bd17 2023-10-14 mischa You are now ready to use OpenSMTPDAdmin.
139 4189bd17 2023-10-14 mischa
140 4189bd17 2023-10-14 mischa
141 4189bd17 2023-10-14 mischa To use the accounts OpenSMTPDAdmin create in OpenSMTPD you can use the below config:
142 4189bd17 2023-10-14 mischa
143 ff907833 2022-08-21 mischa # /etc/mail/smtpd.conf
144 ff907833 2022-08-21 mischa table credentials mysql:/etc/mail/sql.conf
145 ff907833 2022-08-21 mischa table domains mysql:/etc/mail/sql.conf
146 ff907833 2022-08-21 mischa table userinfo mysql:/etc/mail/sql.conf
147 ff907833 2022-08-21 mischa table virtuals mysql:/etc/mail/sql.conf
148 ff907833 2022-08-21 mischa
149 4189bd17 2023-10-14 mischa
150 ff907833 2022-08-21 mischa Connecting the database to smtpd:
151 ff907833 2022-08-21 mischa
152 ff907833 2022-08-21 mischa # /etc/mail/sql.conf
153 ff907833 2022-08-21 mischa host localhost
154 ff907833 2022-08-21 mischa username opensmtpd
155 ff907833 2022-08-21 mischa password RandomString
156 ff907833 2022-08-21 mischa database opensmtpd
157 ff907833 2022-08-21 mischa
158 ff907833 2022-08-21 mischa query_alias SELECT goto FROM alias WHERE address=?;
159 05eea069 2022-09-02 mischa query_credentials SELECT username, password FROM mailbox WHERE username=?;
160 05eea069 2022-09-02 mischa query_domain SELECT domain FROM domain WHERE domain=?;
161 05eea069 2022-09-02 mischa query_userinfo SELECT 501, 501, maildir FROM mailbox WHERE username=?;