## OpenSMTPD Admin OpenSMTPD Admin started as a fork of Postfix Admin 2.1.0 (released in 2007), and grew quickly in a complete rewrite for OpenSMTPD. ## Installation of packages To get going on OpenBSD you will need to install the following packages: mariadb-server php php-pdo_mysql For OpenSMTPD you need the packages: opensmtpd-extras opensmtpd-extras-mysql Once the packages are installed follow the steps outlined in /usr/local/share/doc/pkg-readmes You need to create the database with: CREATE DATABASE IF NOT EXISTS `opensmtpd` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; USE `opensmtpd`; CREATE TABLE `admin` ( `username` varchar(255) NOT NULL DEFAULT '', `password` varchar(255) NOT NULL DEFAULT '', `role` varchar(32) DEFAULT NULL, `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`username`), KEY `username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='OpenSMTPD Admin - Virtual Admins'; CREATE TABLE `alias` ( `address` varchar(255) NOT NULL DEFAULT '', `goto` text NOT NULL, `domain` varchar(255) NOT NULL DEFAULT '', `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`address`), KEY `address` (`address`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='OpenSMTPD Admin - Virtual Aliases'; CREATE TABLE `domain` ( `domain` varchar(255) NOT NULL DEFAULT '', `description` varchar(255) NOT NULL DEFAULT '', `aliases` int(10) NOT NULL DEFAULT 0, `mailboxes` int(10) NOT NULL DEFAULT 0, `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`domain`), KEY `domain` (`domain`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='OpenSMTPD Admin - Virtual Domains'; CREATE TABLE `domain_admins` ( `username` varchar(255) NOT NULL DEFAULT '', `domain` varchar(255) NOT NULL DEFAULT '', `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', KEY `username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='OpenSMTPD Admin - Domain Admins'; CREATE TABLE `log` ( `timestamp` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `username` varchar(255) NOT NULL DEFAULT '', `domain` varchar(255) NOT NULL DEFAULT '', `action` varchar(255) NOT NULL DEFAULT '', `data` varchar(255) NOT NULL DEFAULT '', KEY `timestamp` (`timestamp`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='OpenSMTPD Admin - Log'; CREATE TABLE `mailbox` ( `username` varchar(255) NOT NULL DEFAULT '', `password` varchar(255) NOT NULL DEFAULT '', `name` varchar(255) NOT NULL DEFAULT '', `maildir` varchar(255) NOT NULL DEFAULT '', `domain` varchar(255) NOT NULL DEFAULT '', `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`username`), KEY `username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='OpenSMTPD Admin - Virtual Mailboxes'; CREATE TABLE `vacation` ( `email` varchar(255) NOT NULL DEFAULT '', `subject` varchar(255) NOT NULL DEFAULT '', `body` text NOT NULL, `cache` text NOT NULL, `domain` varchar(255) NOT NULL DEFAULT '', `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`email`), KEY `email` (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='OpenSMTPD Admin - Virtual Vacation'; You can create the database user with something like: CREATE USER IF NOT EXISTS 'opensmtpd'@'localhost' IDENTIFIED BY 'RandomString'; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON opensmtpd.* TO 'opensmtpd'@'localhost'; As an example configuration for httpd you can use: server "opensmtpadmin" { listen on * tls port 443 tls { certificate "/etc/ssl/opensmtpdadmin.fullchain.pem" key "/etc/ssl/private/opensmtpadmin.key" } tcp { nodelay, sack } log style forwarded location "/admin/*" { authenticate with "/opensmtpdadmin/admin/.htpasswd" root "/opensmtpdadmin" fastcgi socket "/run/php-fpm.sock" } location "*.php*" { root "/opensmtpdadmin" directory index index.php fastcgi socket "/run/php-fpm.sock" } location "/*" { root "/opensmtpdadmin" directory index index.php } } As soon as that is done you can go to https://YOURHOST/
You will be greeted by setup.php to check if everything is present to run OpenSMTPDAdmin. Copy or move the conf.php-sample to conf.php and make the needed changes for your setup.
You can remove setup.php if you want. After that you can go to https://YOURHOST/admin/admin.php where you create the SUPER ADMIN.
### NOTE: Once this is done either remove or protect /admin/admin.php. You are now ready to use OpenSMTPDAdmin. To use the accounts OpenSMTPDAdmin create in OpenSMTPD you can use the below config: # /etc/mail/smtpd.conf table credentials mysql:/etc/mail/sql.conf table domains mysql:/etc/mail/sql.conf table userinfo mysql:/etc/mail/sql.conf table virtuals mysql:/etc/mail/sql.conf Connecting the database to smtpd: # /etc/mail/sql.conf host localhost username opensmtpd password RandomString database opensmtpd query_alias SELECT goto FROM alias WHERE address=?; query_credentials SELECT username, password FROM mailbox WHERE username=?; query_domain SELECT domain FROM domain WHERE domain=?; query_userinfo SELECT 501, 501, maildir FROM mailbox WHERE username=?;