Servidor de e-mail Postfix + MySQL + Dovecot + Cyrus

Nesse artigo aprenderemos a configurar rapidamente um servidor de e-mail com Postfix + MySQL + Dovecot + Cyrus usando RHEL 5.2.

[ Hits: 99.783 ]

Por: André Costa em 08/03/2010


Configuração do SMTP-AUTH/TLS e MySQL



Configuração do SMTP-AUTH

Vamos configurar o SMTP-AUTH e TLS.

# vi /usr/lib/sasl2/smtpd.conf

#pwcheck_method: saslauthd #mech_list: plain login pwcheck_method: auxprop mech_list: login plain sql_engine: mysql auxprop_plugin: sql srp_mda: md5 password_format: crypt sql_hostnames: localhost sql_user: mail sql_passwd: mail sql_database: mail sql_select: select password from mailbox where username = '%u@%r' sql_verbose: true

Configuração do MySQL (base e tabelas)

Vamos criar um banco de dados chamado "mail".

# mysql -u root -p

mysql> CREATE DATABASE mail;
mysql> GRANT ALL PRIVILEGES ON mail.* TO 'mail'@'localhost' IDENTIFIED BY 'mail'; //poderá colocar qualquer senha, no meu caso coloquei "mail"
mysql> FLUSH PRIVILEGES;
mysql> quit

Então vamos criar as tabelas necessárias para o nosso novo banco de dados (mail) que contém domínios, usuários, aliases e informações de caixas de correio:

# mysql -u mail -p

mysql> USE mail;

Criar tabela de domínios:

mysql> 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',
maxquota int(10) NOT NULL default '0',
transport varchar(255) default NULL,
backupmx tinyint(1) 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',
active tinyint(1) NOT NULL default '1',
PRIMARY KEY (domain),
KEY domain (domain) ) TYPE=MyISAM COMMENT=' Virtual Domains';


Criar tabela mailbox (usuários):

mysql> 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 '',
quota int(10) NOT NULL default '0',
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',
active tinyint(1) NOT NULL default '1',
PRIMARY KEY (username),
KEY username (username) ) TYPE=MyISAM COMMENT='Virtual Mailboxes';


Criar tabela de alias:

mysql> 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',
active tinyint(1) NOT NULL default '1',
PRIMARY KEY (address),
KEY address (address) ) TYPE=MyISAM COMMENT='Virtual Aliases';


Criamos as tabelas necessárias agora vamos sair do MySQL com o comando:

mysql> quit;

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Instalação e configuração do DNS (Bind)
   3. Cyrus-sasl para SMTP AUTH, OpenSSL para TLS e MySQL
   4. Dovecot e MTA Postfix
   5. Configuração do SMTP-AUTH/TLS e MySQL
   6. Configuração do MTA Postfix
   7. Configuração do Dovecot, servidor POP3 e IMAP
   8. Subindo os serviços e testando o sistema
Outros artigos deste autor

Cluster MySQL - Instalação e configuração

Webmail Squirrelmail e Roundcubemail, Clamav e SpamAssassin integrados no MTA Postfix

Leitura recomendada

Gerando estatísticas do seu servidor de email utilizando o isoqlog

Solução completa com o sendmail

Qmail - Servidor de email em 20 minutos

Gmail com POP e SMTP no Thunderbird

Reforçando a segurança do MTA Postfix com o Apolicy

  
Comentários
[1] Comentário enviado por thiagosc em 08/03/2010 - 20:40h

Olá amigo muito bom o artigo!

Você já configurou o mesmo como um servidor de e-mail interno? Em uma rede baseada em windows 2003 server?

[2] Comentário enviado por andrecostall em 08/03/2010 - 21:00h

Obrigado thiagosc.
Sim, já configurei como um servidor interno, minha rede também é baseada em windows 2003 server, são 35 usuários pendurado em um unico servidor usando Terminal Service e funcionou perfeitamente.
Quaisquer duvida da um grito ai.
Abraços

[3] Comentário enviado por marcosantonioti em 03/05/2010 - 16:33h

André, vc esta de parabéns, o artigo ficou perfeito, com uma ótima distribuição que é o"CentOS" e uma linguagem de fácil entendimento. Precisamos de mais Administradores como vc, Obrigado!!!

[4] Comentário enviado por marcosantonioti em 29/09/2010 - 17:14h

André, é o Marcos colega seu que trabalhava na Consel em Brasilia, me add no meu novo msn e gtalk, marcosantonioti@hotmail.com, marcosferreiralpi@gmail.com.

[5] Comentário enviado por tiagogchagas em 19/11/2010 - 18:10h

Amigos, estou tendo o seguinte problema ao compilar esses arquivos
/usr/bin/ld: cannot find -llber
collect2: ld returned 1 exit status
make: ** [master] Erro 1
make: ** [update] Erro 1

Se alguem poder me ajudar...preciso muito instalar o postfix..estou fazendo um trabalho sobre...

desde ja grato

[6] Comentário enviado por syokoyama em 29/11/2010 - 12:56h

A linha xxgdb $daemon_directory/$process_name $process_id & sleep 5 contém um erro.

Em primeiro lugar, a versão 5.5 não possui mais o xxgdb no extras. Mas isso pode ser resolvido baixando em:
ftp.forth.org e instalando manualmente.

Em segundo lugar, as duas linhas abaixo do debugger_command são referentes a ele. Portanto, devem ser colocadas como subcomandos, ou seja, iniciando as linhas com tabulação.

Ficariam semelhantes a:
debugger_command =
<TAB>PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
<TAB>xxgdb $daemon_directory/$process_name $process_id & sleep 5
disable_vrfy_command = no

Deve ser por causa do editor usado para inserção da matéria no site que deve coibir o uso de espaço e tabulação antes da linha.

O tutorial está muito bom. Parabéns.

[7] Comentário enviado por lpossamai em 02/12/2010 - 08:36h

Bom dia tiagogchagas
Conseguiste resolver o problema do "/usr/bin/ld: cannot find -llber"?

Obrigado.

[8] Comentário enviado por andrecostall em 02/12/2010 - 15:46h

Boa tarde tiagogchagas !!!

E ai cara conseguiu resolver o problema ?

Qualquer coisa me add ai no msn andreclsilva@hotmail.com

Abraço

[9] Comentário enviado por lpossamai em 04/12/2010 - 11:53h

Bom dia André..
Seu tutorial é muito bom !
está funcionando tudo perfeitamente.

Porém, tenho uma dúvida.
Se eu quiser que o fulano@dominio.com.br tenha limite de 20 MB na mailbox dele, e o fulano2@dominio.com.br tenha 40 MB.
Como prodecer?

Obrigado

[10] Comentário enviado por andrecostall em 06/12/2010 - 15:56h

Boa tarde psyscrew !!!

Cara na tabela "mailbox" tem o campo "quota", para inserir 20MB o valor seria "20000000" e de 40MB "40000000".

mysql > update mailbox set quota = 20000000 where username = 'fulano@dominio.com.br';

Abraços

[11] Comentário enviado por doomk em 03/04/2012 - 10:39h

Pra a galera que se deparou com o erro abaixo:


/usr/bin/ld: cannot find -llber
collect2: ld returned 1 exit status
make: ** [master] Erro 1
make: ** [update] Erro 1


É só instalar o pacote openldap-devel que resolve.

(yum install openldap-devel)


Abraço

[12] Comentário enviado por heathcliffz em 24/05/2012 - 08:43h

meu caro... como funciona a questão do domínio?
tenho uma rede baseada em win 2008 server e gostaria de ter um servidor de e-mail interno somente para algumas aplicações (como o ZABBIX) enviar e-mails de alerta...
eu terei que ter um domínio válido para configurar os MX ou posso definir qualquer um já que os e-mails serão enviados para o e-mail corporativo? (esse e-mail corporativo é hospedado por nós mesmos)

[13] Comentário enviado por andrecostall em 05/06/2012 - 16:51h

Boa tarde heathcliffz!

Cara desculpa a demora.

Então, vc pode configurar um domínio interno e apontar o MX dentro da sua rede, mas vc só vai poder enviar e-mails.

Se precisar de ajuda me add no MSN: andreclsilva@hotmail.com ou gtalk; andrecostall@gmail.com

Abs

[14] Comentário enviado por carlos domingues em 14/08/2012 - 10:37h

Bom dia André
Obrigado por nos ajudar, ótimo tutorial.
Consigo enviar emails, inclusive externo, porem, receber não consigo. Os emails que chegam não vai para o MAILBOX do dominio.
Ficam no spool e na caixa de entrada de emails /var/mail/"user" em texto. Sendo que deveria ficar em /var/vmail/"dominio"/"usuario".
Se eu cadastro os usuarios no banco de dados do mysql e não cadastro no sistema unix, ao enviar email dá como usuario desconhecido.

Tenho dominio cadastrado com internet e servidor DNS em funcionamento nesse servidor.

Estou te adcionando no MSN caso voce tenha disponibilidade para ajudar me nesse item que falta.

Obrigado.

[15] Comentário enviado por lucianonicola em 18/04/2013 - 11:44h

quando inicio o dovecot da o seguinte erro:

[root@ns1 dovecot]# /etc/init.d/dovecot start
Starting Dovecot Imap: doveconf: Fatal: Error in configuration file /etc/dovecot/dovecot.conf: passdb is missing driver

o que pode ser?

[16] Comentário enviado por linus black em 06/05/2013 - 18:06h

amigo essa configuração pode ser aplcada na integra no debian?.

[17] Comentário enviado por linus black em 06/05/2013 - 18:10h

o dns que vc usou no arquivo /var/named/chroot/etc/named.conf
é da sua rede ou dns free ou de um servidor como velox

[18] Comentário enviado por andrecostall em 06/05/2013 - 22:26h

Fala linus black, boa noite!

Sim, esta configuração pode ser aplicada em qualquer versão do linux.

Essa configuração de dns é da minha própria rede.

Abraço!

[19] Comentário enviado por andrecostall em 06/05/2013 - 22:29h

Fala lucianonicola, boa noite!

Cara desculpe a demora para responder, faz muito tempo que não passo por aqui!

Fique atento nas chaves "{}", pode ser isso!

Qualquer dúvida posta ai!

Abraço!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts