Tabele bazy danych

W tym rozdziale podam skrypty i omówię tabele bazy danych dla serwera pocztowego.

Tabela użytkowników
Ta tabela przechowuje nazwy użytkowników, hasła i wiele dodatkowych parametrów, które po kolei omówię.


CREATE TABLE IF NOT EXISTS `virtual_users` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
`userpassword` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
`auth` tinyint(1) NOT NULL default '1',
`active` tinyint(1) NOT NULL default '1',
`email` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
`virtual_uid` smallint(5) NOT NULL default '1000',
`virtual_gid` smallint(5) NOT NULL default '1000',
`virtual_mailbox` varchar(255) character set utf8 collate utf8_unicode_ci default NULL,
`name` varchar(255) character set utf8 collate utf8_unicode_ci default NULL,
`maildir` varchar(255) character set utf8 collate utf8_unicode_ci default NULL,
`home` varchar(255) character set utf8 collate utf8_unicode_ci default NULL,
`transport` varchar(128) character set utf8 collate utf8_unicode_ci default NULL,
`cmusaslsecretCRAM` varchar(32) character set utf8 collate utf8_unicode_ci NOT NULL default 'asdfASDF213123',
`cmusaslsecretPLAIN` varchar(32) character set utf8 collate utf8_unicode_ci NOT NULL default 'asdfASDFqw3132',
`quota` varchar(16) character set utf8 collate utf8_unicode_ci NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


Poniżej znajduje się omówienie pól:
username – nazwa użytkownika
email – email użytkownika (nazwa użytkownika + ‘@’ + nazwa domeny)
password – hasło w postaci hashowanej (funkcja MYSQL: PASSWORD(‘string’))
active – status użytkownika (1 – aktywny, 0 – nieaktywny)
virtual_uid – uid użytkownika UNIXowego obsługującgo pocztę, np. 1001 dla użytkownika adam
virtual_gid – gid (id grupy) użytkownika UNIXowego obsługującgo pocztę, np. 1001 dla użytkownika adam
virtual_mailbox – ścieżka względna katalogu poczty użytkownika
home – pełna ścieżka katalogu użytkownika
transport – metoda transportu, tutaj zawsze ‘virtual’
cmusaslsecretCRAM – pole wymagane przez kompilacje dla FreeBSD, może zawierać cokolwiek
cmusaslsecretPLAIN - pole wymagane przez kompilacje dla FreeBSD, może zawierać cokolwiek
quota – limit poczty dla użytkownika, w MB.


Tabela aliasów – przechowywania przekserowań adresów e-mail:

CREATE TABLE IF NOT EXISTS `virtual_aliases` (
`id` int(11) NOT NULL auto_increment PRIMARY KEY,
`alias` varchar(255) collate utf8_unicode_ci default NULL,
`virtual_user_email` varchar(512) collate utf8_unicode_ci default NULL
)


Alias – adres email, z którego chcemy kopiować przychodzącą pocztę na docelowy e-mail zawarty w polu virtual_user_email


Tabela domen – tabela zawierająca wszystkie domeny, które obsługuje poczta


CREATE TABLE IF NOT EXISTS `virtual_domains` (
`id` int(11) NOT NULL PRIMARY KEY,
`domain` varchar(255) collate utf8_unicode_ci default NULL,
`destination` text collate utf8_unicode_ci
)



Zapełnienie danymi:


INSERT INTO `virtual_mailbox_domains` (`id`, `domain`, `destination`) VALUES (1, domain.com, NULL);



INSERT INTO `virtual_users` (`id`, `username`, `userpassword`, `auth`, `active`, `email`, `virtual_uid`, `virtual_gid`, `virtual_mailbox`, `name`, `maildir`, `home`, `transport`, `cmusaslsecretCRAM`, `cmusaslsecretPLAIN`, `quota`) VALUES (1, 'adam', ENCRYPT (‘passowrd’), 1, 1, 'adam@domain.com', 1001, 1001, 'domain.com/adam/Maildir/', 'Adam Domain.com', 'Maildir/', '/usr/local/vmail/domains/domain.com/info/', 'virtual', 'asdfASDF213123', 'asdfASDFqw3132', '0');



INSERT INTO `virtual_domains` (`id`, `domain`, `destination`) VALUES (0, 'adamlesiak.waw.pl', NULL);


Tabela virtual_aliases może być pusta.