Instalando Postfix com MySQL (Debian) – Parte 01
Devido a escassez de tutoriais na internet ensinando a instalar o Postfix em MySQL e os que eu encontrei geralmente dão erros e acabam não funcionando direito, resolvi fazer este que depois de testado sucessivamente não apresentou nenhum erro. Lembrando que este tutorial foi desenvolvido em um Debian Sarge, não testei no Woody.
Vou levar em garantia que você ja tenha algum conhecimento em utilizar sistemas operacionais unix, pois senão teria de ficar explicando passo-a-passo, qualquer dúvida que tenha, basta utilizar os comentários.
Estou quebrando este arquivo para ser lido em uma página separada pois o mesmo está bem explicado e com isso ficou bem extenso, o que atrapalharia o layout principal.
1º Passo, instalando os pacotes necessários:
aptitude update aptitude install postfix postfix-mysql postfix-doc mysql-server
Após a instalação, será questionado qual a utilização do postfix, escolha “Local Only” se for usar somente em sua rede, caso contrário, selecione “Internet”.
2º Passo, criando o banco de dados:
Dica: Se é a primeira vez que está instalando o MySQL, você poderá usá-lo sem senha, o que ocorre numa grande falha de segurança, pois assim qualquer usuário que tenha acesso neste servidor poderá acessá-lo com total privilégio, para setar a nova senha, vamos executar o comando abaixo:
mysqladmin -u root password sua-nova-senhaAgora vamos criar o banco de dados com o comando abaixo:
mysqladmin -u root -p create postfix
Agora vamos acessar o MySQL e criar o usuário postfix e dar permissões:
mysql -u root -p
grant select on postfix.* to postfix@localhost identified by 'senha-que-quiser';
Agora vamos recarregar os privilégios para surtir efeito no que fizemos:
flush privileges;
3º Passo, criando as tabelas:
Ainda no MySQL, vamos criar as tabelas que nosso servidor Postfix vai utilizar:
USE postfix;
Vamos criar a tabela para os domínios que vamos utilizar no postfix:
CREATE TABLE dominios ( dominio varchar(50) NOT NULL, PRIMARY KEY (dominio) ) TYPE=MyISAM;
Agora vamos criar a tabela responsável pelos redirecionamentos de e-mail:
CREATE TABLE redirecionamentos ( alias varchar(80) NOT NULL, destino TEXT NOT NULL, PRIMARY KEY (alias) ) TYPE=MyISAM;
E por último vamos criar a tabela responsável pelas contas de usuário no nosso servidor:
CREATE TABLE usuarios ( email varchar(80) NOT NULL, senha varchar(20) NOT NULL, PRIMARY KEY (email) ) TYPE=MyISAM;
4º Passo, mostrando ao Postfix aonde pegar os dados no MySQL:
Por omissão, ao instalarmos o Postfix com suporte a MySQL, ele não vem configurado para utilizar o banco de dados, fazendo então o uso de arquivos de texto, assim como na sua instalação sem suporte a MySQL. É necessário criar 4 arquivos dentro do diretório de configuração (/etc/postfix). Mãos à massa!
virtual_dominios.cf:
user = postfix password = senha-que-especificou-para-o-usuario-postfix dbname = postfix table = dominios select_field = 'virtual' where_field = dominio hosts = 127.0.0.1
virtual_redirecionamentos.cf:
user = postfix password = senha-que-especificou-para-o-usuario-postfix dbname = postfix table = redirecionamentos select_field = destino where_field = alias hosts = 127.0.0.1
virtual_mailboxes.cf:
user = postfix password = senha-que-especificou-para-o-usuario-postfix dbname = postfix table = usuarios select_field = CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') where_field = email hosts = 127.0.0.1
virtual_mail2mail.cf:
user = postfix password = senha-que-especificou-para-o-usuario-postfix dbname = postfix table = usuarios select_field = email where_field = email hosts = 127.0.0.1
Tenha certeza que ninguém consiga ter acesso a esses arquivos, com exceção do usuário root, pois qualquer um com acesso em seu servidor conseguirá ver as senhas dos usuários em modo texto. Para maior segurança, vamos alterar o grupo dos arquivos e mudar as permissões dos mesmos:
chgrp postfix /etc/postfix/virtual_*.cf chmod u=rw,g=r,o= /etc/postfix/virtual_*.cf
5º Passo, vamos criar um usuário para mapear e gerenciar todas as contas e e-mails enviados a partir do nosso servidor:
groupadd -g 8500 gmail useradd -g gmail -u 8500 gmail -d /home/gmail -m
6º Passo, agora precisamos editar o arquivo main.cf para que possamos especificar onde estão os arquivos que criamos e para que o Postfix possa trabalhar utilizando o seu servidor MySQL. Você poderá utilizar o editor de textos preferido.
Seu arquivo main.cf ja estará com a maioria das configurações feitas, só precisamos inserir e alterar alguns ítens que são essenciais para o redirecionamento de e-mails quando a conexão vem de fora do seu servidor. Mãos à obra!
Em myhostname (caso seu servidor não tenha detectado automaticamente) é necessário inserir o hostname FQDN do servidor, ou seja, um nome de domínio que aponte para o seu servidor. Caso isso não seja feito, os e-mails enviados a partir do seu servidor poderá cair nas caixas de spam dos servidores.
myhostname = mail.seuservidor.com.br
Em mydomain vamos especificar o domínio principal que nosso servidor vai utilizar:
mydomain = seuservidor.com.br
Em mydestination vamos especificar os domínios que este servidor vai gerenciar. Separe os domínios por vírgula e não liste aqui os domínios que vai utilizar para redirecionamentos de e-mail que não seja o domínio principal. As opções abaixo normalmente já estão especificadas, só é necessário a inclusão do $mydomain por último:
mydestination = mail.seuservidor.com.br, localhost.seuservidor.com.br, localhost, $mydomain
Em mynetworks você precisa especificar a quais endereços IPs (caso você tenha mais de um sem contar com o localhost) seu servidor Postfix vai ‘obedecer’ e aceitar o envio. Separe os endereços com vírgula (coloque seu IP externo somente se você desejar que sejam recebidos (e se utilizar redirecionamentos, repassados) de endereços externos:
mynetworks = 127.0.0.0/8, 192.168.0.0/24, 200.199.12.5
Vamos inserir a opção (caso não exista) inet_interfaces, fazendo com que o nosso servidor seja ouvido em todas as interfaces de rede:
inet_interfaces = all
Logo no final do arquivo, vamos adicionar essas linhas que são correspondentes aos arquivos que criamos para que o Postfix funcione em MySQL:
virtual_alias_domains = $virtual_alias_maps virtual_alias_maps = mysql:/etc/postfix/virtual_redirecionamentos.cf mysql:/etc/postfix/virtual_mail2mail.cf virtual_mailbox_domains = mysql:/etc/postfix/virtual_dominios.cf virtual_mailbox_maps = mysql:/etc/postfix/virtual_mailboxes.cf virtual_mailbox_base = /home/gmail virtual_uid_maps = static:8500 virtual_gid_maps = static:8500
7º Passo, aplicando configurações e procurando erros:
Feito isso, vamos recarregar o Postfix para que faça efeito nas alterações e logo após checar se há algum erro. Caso nenhuma mensagem de erro apareça, seu servidor está devidamente configurado!
postfix reload postfix check
Pronto, você configurou seu servidor Postfix para utilizar o MySQL. Note que até então somente usuários que estejam dentro da rede especificado em mynetworks poderão utilizar seu servidor para enviar e-mails. No tutorial 02, estarei ensinando a como fazer com que usuários fora das redes especificadas possam se autenticar por SMTP e estejam enviando e-mails também.



