Agora vamos para a parte boa,
MySQL, instalá-lo e configurá-lo.
Antes de mais nada, vamos fazer as instalações necessárias:
- p5-Net-Daemon
- p5-PlRPC
- p5-DBI
- p5-DBD-mysql
- mysql-server
Vamos fazer essas instalações via
ports.
# cd /usr/ports/databases/p5-DBD-mysql
# make install clean
Com isso todos os pacotes serão instalados, menos o mysql-server.
# export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.4/packages/`uname -m`
# pkg_add mysql-server
mysql-server-5.0.51ap1: complete
--- mysql-server-5.0.51ap1 -------------------
You can find detailed instructions on how to install a database
in /usr/local/share/doc/mysql/README.OpenBSD.
Agora vamos configurar o MySQL:
# mysql_install_db
# mysqld_safe &
# mysql_secure_installation
Set root password? [Y/n] (enter)
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
Remove anonymous users? [Y/n] (enter)
... Success!
Disallow root login remotely? [Y/n] (enter)
... Success!
Remove test database and access to it? [Y/n] (enter)
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reload privilege tables now? [Y/n] (enter)
... Success!
Cleaning up...
Pronto, está configurado seu MySQL.
Vamos configurar o socket do mysql para o postfix achá-lo facilmente.
# mkdir -p /var/spool/postfix/var/run/mysql/
# ln -f /var/run/mysql/mysql.sock /var/spool/postfix/var/run/mysql/mysql.sock
Para que o MySQL inicie em caso de reboot no servidor, adicione as seguintes linhas no seu arquivo
/etc/rc.local:
if [ -x /usr/local/bin/mysqld_safe ]; then
echo -n 'Iniciando MySQL'
/usr/local/bin/mysqld_safe >/dev/null 2>&1 &
fi
No postfix, para ele trabalhar com as tabelas, adicione as seguintes linhas no
main.cf:
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailboxes.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
Agora vamos editar os arquivos referentes a essas configurações:
/etc/postfix/mysql_virtual_domains.cf
user = vmail
password = vmail
hosts = 127.0.0.1
dbname = mail
query = SELECT domain FROM domains WHERE domain='%s'
/etc/postfix/mysql_virtual_alias_maps.cf
user = vmail
password = vmail
hosts = 127.0.0.1
dbname = mail
query = SELECT alias FROM alias_maps WHERE account='%s'
/etc/postfix/mysql_virtual_mailboxes.cf
user = vmail
password = vmail
hosts = 127.0.0.1
dbname = mail
query = SELECT maildir FROM users WHERE login='%s'
Agora vamos criar o banco que vai trabalhar com esses arquivos de forma correta.
Pegue as seguintes linhas e jogue num arquivo, por exemplo, mail_schema.sql (só um exemplo, pode colocar o nome que quiser):
CREATE DATABASE mail;
use mail
CREATE TABLE domains (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
domain VARCHAR(255) NOT NULL UNIQUE
);
CREATE TABLE users (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
login VARCHAR(255) NOT NULL UNIQUE,
name VARCHAR(255) NOT NULL,
password VARCHAR(13) NOT NULL,
uid SMALLINT NOT NULL DEFAULT 2000,
gid SMALLINT NOT NULL DEFAULT 2000,
home VARCHAR(255) NOT NULL DEFAULT '/var/mail/vhosts',
maildir VARCHAR(255) NOT NULL,
quota VARCHAR(10) NOT NULL DEFAULT '10000000S'
);
CREATE TABLE alias_maps (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
account VARCHAR(255) NOT NULL UNIQUE,
alias VARCHAR(255) NOT NULL
);
E depois para criar o banco, faça o seguinte comando:
# mysql -u root -p < mail_schema.sql
E agora para popular, podemos fazer do jeito que fizemos para criar o banco ou na mão, segue o script e faça do jeito que achar melhor, lembrando que esse é apenas um exemplo:
GRANT SELECT ON mail.* to 'vmail'@'localhost' IDENTIFIED BY 'vmail';
INSERT INTO domains (domain) VALUES ('exemplo.com.br');
INSERT INTO users (login, name, password, maildir)
VALUES ('thiago@exemplo.com.br', 'Thiago Alves', ENCRYPT('thiagogostosao'), 'exemplo.com.br/thiago/');
INSERT INTO alias_maps (account, alias)
VALUES ('postmaster@exemplo.com.br', 'postmaster@localhost.exemplo.com.br');
INSERT INTO alias_maps (account, alias)
VALUES ('root@exemplo.com.br', 'root@localhost.exemplo.com.br');
E agora, reinicie o postfix ou recarregue:
# postfix reload