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