Tree


.gitignorecommits | blame
LICENSE.TXTcommits | blame
README.mdcommits | blame
VIRTUAL_VACATION/
add-alias.phpcommits | blame
add-mailbox.phpcommits | blame
admin/
admin.phpcommits | blame
backup.phpcommits | blame
conf.php-samplecommits | blame
delete.phpcommits | blame
domain.phpcommits | blame
edit-alias.phpcommits | blame
edit-mailbox.phpcommits | blame
favicon.icocommits | blame
functions.inc.phpcommits | blame
images/
index.phpcommits | blame
languages/
list-admin.phpcommits | blame
list-domain.phpcommits | blame
list-virtual.phpcommits | blame
login.phpcommits | blame
logout.phpcommits | blame
password.phpcommits | blame
search.phpcommits | blame
sendmail.phpcommits | blame
setup.phpcommits | blame
stylesheet.csscommits | blame
templates/
vacation.phpcommits | blame
viewlog.phpcommits | blame

README.md

## OpenSMTPD Admin

Fork of Postfix Admin 2.1.0 (released in 2007)

Database needed to use SQL with OpenSMTPD

	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'


Config for OpenSMTPTD, MySQL/MariaDB example:

	# /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=?;