HOWTO: Postfix + MySQL + SMTP-AUTH + Quota + SpamAssassin + ClamAV
Este é um HOWTO para Debian Sarge 3.1. O instalei e deixei em produção em minha empresa, por isso aconselho: a maneira mais fácil de seguir este tutorial é usar um cliente SSH (como o PuTTY para Windows) e simplesmente copiar e colar os comandos, isto ajuda evitar erros tipográficos. Boa sorte!
Parte 4: Criando uma base de dados MySQL
Por padrão o MySQL é instalado sem senha de root. Vamos mudar isso rapidamente, pois isso é um baita furo de segurança:
# mysqladmin -u root password digitesuasenhaaqui
Agora vamos criar uma base de dados:
# mysqladmin -u root -p create mail
Entre no shell:
# mysql -u root -p
Vamos agora criar um usuário de administração do banco de dados do e-mail e dar as devidas concessões a ele:
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'mail_admin_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost.localdomain' IDENTIFIED BY 'mail_admin_password';
FLUSH PRIVILEGES;
Vamos criar agora as tabelas necessárias à solução.
USE mail;
Essa tabela guardará os domínios virtuais, cada domínio virtual no Postfix deve receber uma entrada na tabela:
CREATE TABLE domains (
domain varchar(50) NOT NULL,
PRIMARY KEY (domain) )
TYPE=MyISAM;
Exemplo de uso:
domain
exemplo.com
A tabela de forwardings servirá para redirecionamento de e-mails.
CREATE TABLE forwardings (
source varchar(80) NOT NULL,
destination TEXT NOT NULL,
PRIMARY KEY (source) )
TYPE=MyISAM;
Exemplo de uso:
CREATE TABLE users (
email varchar(80) NOT NULL,
password varchar(20) NOT NULL,
quota INT(10) DEFAULT '10485760',
PRIMARY KEY (email)
) TYPE=MyISAM;
Exemplo de uso:
CREATE TABLE transport (
domain varchar(128) NOT NULL default '',
transport varchar(128) NOT NULL default '',
UNIQUE KEY domain (domain)
) TYPE=MyISAM;
Exemplo de uso:
DICA: Você poderá administrar a base de dados do MySQL através do phpMyAdmin acessando:
http://ip_do_servidor_postfix/phpmyadmin/
Acesse o mesmo e veja como ele poderá facilitar a sua administração.
# mysqladmin -u root password digitesuasenhaaqui
Agora vamos criar uma base de dados:
# mysqladmin -u root -p create mail
Entre no shell:
# mysql -u root -p
Vamos agora criar um usuário de administração do banco de dados do e-mail e dar as devidas concessões a ele:
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'mail_admin_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost.localdomain' IDENTIFIED BY 'mail_admin_password';
FLUSH PRIVILEGES;
Vamos criar agora as tabelas necessárias à solução.
USE mail;
Essa tabela guardará os domínios virtuais, cada domínio virtual no Postfix deve receber uma entrada na tabela:
CREATE TABLE domains (
domain varchar(50) NOT NULL,
PRIMARY KEY (domain) )
TYPE=MyISAM;
Exemplo de uso:
domain
exemplo.com
A tabela de forwardings servirá para redirecionamento de e-mails.
CREATE TABLE forwardings (
source varchar(80) NOT NULL,
destination TEXT NOT NULL,
PRIMARY KEY (source) )
TYPE=MyISAM;
Exemplo de uso:
source destination info@exemplo.com joao@exemplo.comA tabela de usuário guardará os endereços de email dos usuários, bem com suas senha codificadas e a quota de uso do email, que deve ser escrita em bytes.
CREATE TABLE users (
email varchar(80) NOT NULL,
password varchar(20) NOT NULL,
quota INT(10) DEFAULT '10485760',
PRIMARY KEY (email)
) TYPE=MyISAM;
Exemplo de uso:
email password quota info@exemplo.com No7.E5qkMvGr 10485760 (10MB = 10 x 1024 x 1024) joao@exemplo.com upO7711Q0CRaA 52428800 (50MB = 50 x 1024 x 1024)A tabela transporte é opcional. Ela servirá para você direcionar alguns usuários ou domínios para um outro servidor de e-mail. Isso se torna interessante em casos como o meu, em que tive de instalar um servidor Exchange para disponibilizar alguns recursos que os gerentes e diretores da minha empresa estavam acostumados a utilizar e o Postfix não oferece tais recursos integrados ao Outlook principalmente.
CREATE TABLE transport (
domain varchar(128) NOT NULL default '',
transport varchar(128) NOT NULL default '',
UNIQUE KEY domain (domain)
) TYPE=MyISAM;
Exemplo de uso:
domain transport dominio2.com smtp:[200.222.222.252] joao@exemplo.com smtp:[200.222.222.252]quit;
DICA: Você poderá administrar a base de dados do MySQL através do phpMyAdmin acessando:
http://ip_do_servidor_postfix/phpmyadmin/
Acesse o mesmo e veja como ele poderá facilitar a sua administração.