Servidor de email com SMTP, POP, IMAP, quota e MySQL

Este artigo mostra passo-a-passo um método de instalação de um servidor de e-mail com suporte a SMTP, POP, IMAP, quota e armazenamento e controle de contas em MySQL. Veja como é possível obter um servidor de e-mail para domínios virtuais, utilizando Postfix, Courier IMAP, MYSQL e SASL.

[ Hits: 540.364 ]

Por: Marco A. S. Máximo em 05/09/2003


Introdução



Nesse tutorial vou mostrar como configurar um servidor de email Postfix para trabalhar com MySQL + COURIER-IMAP + SASL + DOMÍNIOS VIRTUAIS + QUOTA. Não sou nenhum expert em nenhum desses programas, sou apenas um cara esforçado :-), mas o fato de estar trabalhando diariamente com eles, fez com que eu adquirisse uma certa experiência. Esse tutorial é uma compilação de vários tutoriais, dicas, manuais e muita dor de cabeça que fui adquirindo até montar esse ambiente.

O meu problema começou quando me chamaram para trabalhar com servidores de email que suportasse vários domínios na mesma máquina, onde cada domínio representava uma empresa distinta, até ai eu sabia que o Postfix tinha esse tipo de suporte. Optei pelo Postfix devido a sua facilidade (experiências anteriores com Qmail :-) e compatibilidade com o "Sendmail". Seguindo os manuais, consegui criar essa ambiente para 2 domínios e outros que aparecessem.

Os meus problemas começaram quando, por exemplo, um diretor do dominio1 de nome José da Silva queria que o seu login fosse jose.silva, até aí tudo bem. Só que um outro diretor do dominio2, também de nome José da Silva queria que o seu login também fosse jose.silva. Ferrou!!! Pois eu não poderia criar dois logins iguais e nem dava para explicar que esse login já tinha sido reservado para o diretor de uma outra empresa. Olha a encrenca!!!

Pedi ajuda nas listas de discussão e me sugeriram usar MySQL ou um indicador no login; criando depois um alias para esse login. Bem, como eu não conhecia patavinas de MySQL, optei pela segunda dica :-). Então criei o jose.silva-dm2 e uma alias (jose.silva@dominio2.com.br = jose.silva-dm2). Perfeito, resolveu o problema, só que tinha de explicar para todo mundo por que o seu login tinha esse "-dm2" e o seu email, não. Sem falar nos relatórios de logs que não ficaram nada bonitos.

O negócio começou a ficar feio, quando fechamos com um cliente que o seu webmail mostrava o login da pessoa que estava logado no momento e lá estava o "-dm*".

Os meus problemas seriam resolvidos se eu pudesse criar o login já com o domínio, exemplo: jose.silva@dominio1.com.br. E não é que da!! O Linux aceita. Só que quando esse usuário envia uma mensagem pelo Postfix, o seu email sai como "jose.silva@dominio1.com.br@dominio1.com.br", bem! Não preciso dizer mais nada :-)

Alguns dias antes de pedir as contas da empresa :-), resolvi pesquisar sobre o Postfix com MySQL e o que lhes apresento agora, é o resultado da minha pesquisa. Há! Ainda continuo na empresa :-)

    Próxima página

Páginas do artigo
   1. Introdução
   2. Configurando o MySQL
   3. Instalando o Courier-imap
   4. Iniciando o Courier e o POP
   5. Instalando o Postfix
   6. Testando o Postfix com MySQL
   7. Teste de autenticação do IMAP e POP
Outros artigos deste autor

Montando um servidor de e-mail completo com Postfix

Leitura recomendada

Montando um servidor de e-mail completo com Postfix

Qmail a La Toaster no Debian Etch

Qmail + Patches + Performance Tuning, the Debian AMD64 way

Postfix - Relay agent

Implantação de um Sistema de Workgroup Open Source

  
Comentários
[1] Comentário enviado por fabio em 05/09/2003 - 09:38h

Muito bom este artigo! Na minha opinião a adoção de servidores de e-mail com contas de usuários armazenados em MySQL é essencial para empresas de médio a grande porte.

Com usuários em banco de dados você passa a oferecer uma fácil integração com sistemas de gestão, perde o limite de 65 mil usuários do sistema operacional, tem maior organização no servidor, etc.

Legal mesmo! No meu caso uso Exim com MySQL, mas o Postfix também é muito bem falado.

[2] Comentário enviado por _simmons_ em 05/09/2003 - 12:06h

Parabéns Rômulo, excelente artigo.

[3] Comentário enviado por dinho_rock em 06/09/2003 - 11:25h

Parabéns Romulo.

A muito tempo estava querendo saber como fazia algo parecido. Os e-mails eu estava criando tudo como email-dominio, e ele o cliente tinha que escrever isso na conta pop, que era uma chateação.
Parabéns pelo artigo, agora vou ver se tiro algum dia para transformar os e-mails da minha empresa para assim.

Thiago

[4] Comentário enviado por removido em 06/09/2003 - 20:39h

Fabio, você podia escrever ADICIONAR ao artigo do _m0dpr0b3_ o uso com o Exim. Por exemplo no meu caso não vou precisar do IMAP com fazer então?

[5] Comentário enviado por fabio em 06/09/2003 - 20:45h

Daniel, o IMAP não depende do servidor MTA e sim do servidor POP. Se você optar por Courier IMAP ele não vai nem querer saber qual MTA você está utilizando, seja Postfix, Sendmail, Exim e sim onde estão as mensagens dos usuários e quais os campos de autenticação na tabela, coisas que já estão bem explicadas por aqui :)

[6] Comentário enviado por agerum em 08/09/2003 - 16:55h

Romulo que vergonha, voce copiou o artigo do marco.maximo@pwo.com.br e colocou como se fosse seu ???????

E o pior de tudo e que nem copiou direito pois está incompleto o tutorial...

[7] Comentário enviado por msmaximo em 08/09/2003 - 17:21h


************ FALTA DE ÉTICA *******************

Esse tutorial NÃO PERTENCE ao senhor Rômulo Banhe

Fui alertado por uma amigo, sobre o ocorrido o que me deixou muito desapontado com o comportamento de alguns membros da comunidade.
Não tenho nada contra, que esse tutorial circule pela internet. Pois o meu intuito, foi que ele alcança-se as pessoas que pudessem a vir tirar algum benefício dele.
O que não contava, era que pessoas SEM escrúpulo, o tomassem como seu não levando em consideração o trabalho do autor original.

É ainda PIOR, o fato de não estar completo. Sendo que o Senhor Rômulo Banhe não teve nem a capacidade de copia-lo.

Mas caso queiram ver o tutorial completo, acessem:

http://www.underlinux.com.br/modules.php?name=Sections&op=viewarticle&artid=174

Atenciosamente,
Marco A. S. Máximo
marco.maximo@pwo.com.br

[8] Comentário enviado por fabio em 09/09/2003 - 10:19h

Olá Marco,

Infelizmente em alguns casos não tenho como perceber que um artigo é de terceiros e só descobrimos quando o autor original se identifica, como é o seu caso.

No mês passado escrevi um documento chamado "Edital de política de contribuição de artigos", que pode ser acessado a partir de:
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=332

Logo, nos desculpamos pelo transtorno e gostaríamos de saber o que você prefere:
1. que o artigo seja removido de nosso banco de dados?
2. que o artigo permaneça, porém com os devidos direitos autorais dedicados à você?

[]'s,
Fábio

[9] Comentário enviado por msmaximo em 09/09/2003 - 13:40h

Olá Fabio,
li seu artigo e sei que você não possui nenhuma culpa...
Como eu havia comentado, eu tenho interesse que todos possam tirar algum proveito do meu tutorial, desde que, permaneçam os direitos autorais.
Respondendo a sua pergunta. Eu opto pela a segunda alternativa, e sugiro que seja completado a parte que falta usando o conteúdo do link que forneci.
Também informo para aos interessados, que estou em fase de teste para uma atualização desse tutorial, acrescentando algumas novas funcionalidades.
Só que dessa vez, espero que seja eu, que possa enviar o tutorial ao site :-)

Atenciosamente,
Marco A. S. Máximo
marco.maximo@pwo.com.br

[10] Comentário enviado por fabrizmat em 21/06/2004 - 08:52h

Muito bom. vai ser de grande ajuda na empresa

[11] Comentário enviado por Outsider_ em 15/08/2004 - 01:10h

Muito bom artigo ajuda um monte e realmente funciona ;P

[12] Comentário enviado por nico_di_mafre em 30/08/2004 - 15:47h

Legal esse artigo, ele é muito util e responde algumas dúvidas!

[13] Comentário enviado por ezdn em 19/09/2004 - 15:10h

òtimo artigo eu preciso faze algo semelhante e este artigo é uma mao
na roda vai me ajudar muito
vlw msmaximo eu adorei este teu artigo vai me ajudar bastate té mais .

[14] Comentário enviado por sasse em 15/12/2004 - 16:28h

Esou com problemas para instalar o postfix !

toda vez que vou fazer a instalação no meu red-hat 9 da a seguinte mensagem ::

(set -e; echo "# DO NOT EDIT"; /bin/sh ../../makedefs && cat Makefile.in) >Makefile

por favor ajude-me.

[15] Comentário enviado por augustowebd em 31/01/2005 - 10:14h

admira-me uma pessoa publicar um artigo sobre configuracao de uma ferramenta, sem saber os tipos basicos da ferramenta.

Por que
-> nome char(255) default NULL ?
ao inves de
-> nome varchar(255) default NULL ?

[16] Comentário enviado por marcaoguitarra em 31/01/2005 - 18:58h

cara... nao consegui passar da parte de instalar o POSTFIX.. como faco pra instalar esse
sasl-devel
db*-devel
ed

?????????
obrigado

[17] Comentário enviado por jgama em 05/02/2005 - 00:05h

Caro augustowebd, não entendi sua pergunta, o que pode está errado?

Por que
-> nome char(255) default NULL ?
ao inves de
-> nome varchar(255) default NULL ?

Estou perguntando porque estou usando este tutorial e o script mail.db, como sou leigo no assunto quem ficou com dúvida fui eu.

Abraço

[18] Comentário enviado por randra em 05/05/2005 - 17:59h

OTIMO TRABALHO ...
parabens!!!


Rafael Andrade

[19] Comentário enviado por hgdanilo em 09/05/2005 - 18:31h

Olá,

Eu estou precisando de uma ajuda sua, eu estou tentando instalar em casa o Postfix com o Courier-imap, tenho instalado o conectiva 9, mas quando eu passo o comando ./configure para iniciar a instalação do Courier ele dá a mensagem de erro abaixo:


configure: WARNING: === Courier authentication library not found.
configure: WARNING: === You need to download and install
configure: WARNING: === http://www.courier-mta.org/download.php#authlib first.
configure: WARNING: === If courier-authlib is installed in a non-default
configure: WARNING: === directory, set the COURIERAUTHCONFIG environment
configure: WARNING: === variable to the full path to the courierauthconfig
configure: WARNING: === binary and rerun this configure script.
configure: WARNING:
configure: error: courierauthconfig not found


Você sabe como eu devo fazer para instalar esse authlib?


Abraço

[20] Comentário enviado por gatoseco em 05/01/2006 - 20:17h

Gostaria de saber se alguem conseguiu fazer funcionar o vacation seguindo exatamente os passos propostos no artigo ???

Ou tem mais algum macete escondido !!!

Abraçao a todos

[21] Comentário enviado por fernandoamador em 23/02/2006 - 13:53h

Ótimo artigo...

[22] Comentário enviado por buzaneli em 02/03/2006 - 16:28h

como compilar o postfix+mysql no conectiva linux 10

[23] Comentário enviado por juliopimentel em 16/03/2006 - 20:24h

Acompanhei o ocorrido e achei lamentavél o ato praticado pelo Sr. Rômulo, quero deixar aqui o meu repúdio a este tipo de ato.
Quanto a dúvida do Sr. Buzaneli quero informar que em breve estarei postando aqui uma pequena modificação do tutorial do Marco Maximo, voltado exatamento para o Conectiva Linux 10. Com os devidos créditos ao autor do tutorial é claro, que por sinal foi competentissimo na sua criação.
Obrigado Marco !!! Seu tutorial me foi muito util!

[24] Comentário enviado por randra em 17/03/2006 - 09:11h

ótimo artigo ... meus parabens... explicando diversos passos na configuração...


"cool"

[25] Comentário enviado por penrral em 13/04/2006 - 00:47h

Ola.. uma pequena dica pra os usuarios do OpenBSD.. o Courier-IMAP contém algumas pequenas diferença, deste localização dos arquivos a maneira como ele deve ser inicializado.
Para os interessados de uma olhada neste link
http://dantams.sdf-eu.org/guides/obsd_courier_imap.html

Valew.. ;)

[26] Comentário enviado por Tyreon em 11/07/2006 - 19:28h

Vlw!! Me ajudou mto!!

[27] Comentário enviado por tardego em 04/08/2006 - 23:04h

Olá estou tentando com o conectiva 10 mais não vai no courier-imap

da um erro com coloco o ./configure --without-ipv6 --enable-workarounds-for-imap-client-bugs

checking for gcc... no
checking for cc... no
checking for cc... no
checking for cl... no
configure: error: no acceptable C compiler found in $PATH

[28] Comentário enviado por tardego em 04/08/2006 - 23:05h

quando eu coloco
./configure --without-ipv6 --enable-workarounds-for-imap-client-bugs

dá um erro


checking for gcc... no
checking for cc... no
checking for cc... no
checking for cl... no
configure: error: no acceptable C compiler found in $PATH

[29] Comentário enviado por andrentfs em 24/08/2006 - 14:36h

Parabéns, seu artigo ficou excelente!

[30] Comentário enviado por snails em 24/08/2006 - 20:02h

Kra...to lendo, relendo e reelendo esse tuto.....
Primeiramente...td bem q num eh legal fazer plagio de uma coisa alheia e sai pela net falando que é sua...mas mew...o proprio autor falo q a itensao do tuto foi passada pelo Romulo, que é o conhecimento d uma pessoa para otra....intam, o erro aki foi num ter falado q o tuto original era d FULANO....mas msm assim...sendo d um ou otro ta muito bom.....

Agora o seguinte....tava vendo as regras no BD, e as configurações no Postfix....e uma coisa que num entendi...pode ser bestera, como tbm pode num ser.....na Quota de disco, determinada no BD é de 10 Mb, e no arquivo main.cf tbm....mas e se eu tiver uma conta no meu servidor que tenha de ter 20 MB ???????
Ou se ao inves de um dominio só, eu tiver uns 50 dominios e todos com quotas de virtualbox diferentes ??????

Bom, fica aew a ideia, ou ate mesmo um ponto para atualizar esse tuto...como montar o mesmo servidor, mas para varios dominios...que acho que num foi focado essa ideia....

Vlw aew e ate a proxima...

[31] Comentário enviado por balani em 28/09/2006 - 15:47h

Artigo muito bom, parabens

[32] Comentário enviado por rafaelniken em 03/11/2006 - 11:27h

posso aplicar esse tutoria no slack 10.2 ou preciso de mais coisa

[33] Comentário enviado por rafaelniken em 03/11/2006 - 11:28h

?

[34] Comentário enviado por buzaneli em 23/11/2006 - 17:04h

olá eu fiz tudo certo no debian, mas eu não estou conseguindo comfigurar o vacation no postfixadmin

[35] Comentário enviado por rodrigoncar em 26/12/2006 - 13:14h

e ae pessoal...
Preciso retirar a configuração no servidor pop, para q ele não verifique a criptografia da senha (ou seja texto puro), pois instalei um slack e nele o sasl não aceita a criptografia, deixando como texto puro a msg sai, mas não recebe pois o pop está configurado para a criptografia...
Alguém pode me ajudar????
Abraços
Rodrigo N Carneiro

[36] Comentário enviado por psantos02 em 20/01/2007 - 22:33h

AJUDA....

Tenho instalado o Postfix e a funcionar, instalei agora o courier-imap e pop3.
Faço telnet à porta 25 dentro do SUSE 10.1 e fora (winxp) e não faço telnet às portas 110 e 143. Executando o netstat -lt todas estas portas estão à escuta.
o telnet funciona tanto por ip como por nome.
O que poderá estar a faltar?

Obrigado pela ajuda.

[37] Comentário enviado por psantos02 em 20/01/2007 - 22:35h

CONTINUAÇÂO...

Não faço o telnet às portas 110 e 143 fora do SUSE, dentro também funciona.

[38] Comentário enviado por fernandocesario em 07/02/2007 - 19:57h

Ajuda,
Estou usando o artigo do colega para a instalacao Servidor de email com SMTP, POP, IMAP, quota e MySQL no conectiva 10 e quando dou o comando ./configure --without-ipv6 --enable-workarounds-for-imap-client-bugs ele me devolve o seguinte erro:

beta [/usr/local/src/courier-imap-4.1.2] > ./configure --without-ipv6 --enable-workarounds-for-imap-client-bugs
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... configure: error: C compiler cannot create executables

como posso resolver isso?

[39] Comentário enviado por kidoidera em 09/03/2007 - 14:02h

Este artigo resolveu todos meus problemas. ....... excelente ... parabens e vlw pela ajuda

[40] Comentário enviado por ifc0nfig em 04/04/2007 - 09:02h

Este artigo tá blz segui ele diretinho e funcionou blz, agora seguinte tem como eu cadastrar outro dominio nele. Por exemplo: quero que o dominiovelho.com.br fique na mesma maquina do dominionovo.com.br que já está cadastrado no server, e que todos os e-mails de todos os usuarios do dominiovelho.com.br envia para suas contas respectivas no dominionovo.com.br e que a saida de e-mail fosse com o user@dominionovo.com.br.

Se alguem entendeu por favor me ajude

Fabiano

[41] Comentário enviado por fingys em 17/06/2007 - 14:35h

ALGUEM PERCEBE DO PRORAT ?

QUEM SOUBER QUE ME ADD : paiva_x@hotmail.com

[42] Comentário enviado por celodacruz em 26/06/2007 - 13:37h

mtu bom o tuto...

tirei mts duvidas para meu server... vlw

[43] Comentário enviado por removido em 03/09/2008 - 11:39h

Olá estou gostando muito do tutorial, esta sendo de grande ajuda para um leigo como eu em linux, porem quando eu digito qualquer comando depois de selecionar o banco de dados, meu terminal fika assim:

mysql>CREATE TABLE aliases ( alias varchar(255) NOT NULL default, rcpt varchar(255) default NULL, PRIMARY KEY (alias)) TYPE=MyISAM;
->

e não sai desse " -> " até que eu de um comando inválido, todos os comandos tipo "show tables" ele tbm faz isso, alguem sabe me dizer oque está acontecendo ???

[44] Comentário enviado por zend em 27/11/2008 - 22:10h

e ai.....

otimo artigo.....

[45] Comentário enviado por valotta em 24/12/2008 - 13:04h

Muito Bom seu artigo, é uma pena que coisas como plagio ainda atrapalhe o desenvolvimento de uma internet livre e com auxilio mutuo.

Parabéns pelo artigo.

[46] Comentário enviado por vagner04 em 28/01/2009 - 23:17h

Legal cara, muito bom.
Obrigado.

[47] Comentário enviado por XimenesWambach em 11/06/2009 - 17:01h

Excelente artigo, muito bem explicado e é passo à passo...

[48] Comentário enviado por removido em 18/10/2009 - 21:27h

Muito Bom.
Postfix Bem Configurado = Sucesso na Rede.

[49] Comentário enviado por shawdown em 21/01/2010 - 22:05h

Seguinte tenho um servidor dedicado e estou tentando configurar um servidor para saida de email’s SMTP.

Presciso desse servidor SMTP para utilizar em meu sistema.
A yahoo, bol, uol e hotmail sempre reconheçem como lixo eletronico.

a pergunta é. presciso de alguem para configurar isso para mim caso alguem se interessar gostaria de saber o quanto cobraria pelo serviço.

meu email e shawdown [ @ ] gmail.com

Desde ja obrigado a todos…

[50] Comentário enviado por wellingtoncunha em 04/01/2011 - 16:51h

Ola Sr. Marcos

Eu acho que no seu tutorial vc se esqueceu ou omitiu sobre o courier-authlib ou na sua maquina jah tinha instalado


checking for courierauthconfig... no
configure: WARNING: === Courier authentication library not found.
configure: WARNING: === You need to download and install
configure: WARNING: === http://www.courier-mta.org/download.php#authlib first.
configure: WARNING: === If courier-authlib is installed in a non-default
configure: WARNING: === directory, set the COURIERAUTHCONFIG environment
configure: WARNING: === variable to the full path to the courierauthconfig
configure: WARNING: === binary and rerun this configure script.
configure: WARNING:
configure: error: courierauthconfig not found

pois apartir desse ponto ele pede essa lib ele nao encontrar e pede para ser instalado
vou configurar agora o courier-authlib depois posto se tiver problema

Mais valeu seu turorial me ajudou muito ele salvou minha vida aqui na empresa estava a alguns meses me batendo com isso.

Quanto a gelera que estar tendo problema tipo
CC $PATH algo do tipo tem que installar um compilador C (recomendo o GCC), e ver se ele esta no profile da distro (para Debian /etc/profile)

Espero ter contribuido, da mesma forma que contribuiram comigo

[51] Comentário enviado por hawk_braz em 10/03/2011 - 21:50h

Fiz todos os procedimentos como citado porém pelo visto deu erro... O que pode ter acontecido??????

root@fs-desktop:/home/dominio.com.br/marco.maximo# echo "Funcionou..." | mail -s "TESTE de EMAIL" \
> marco.maximo@dominio.com.br
root@fs-desktop:/home/dominio.com.br/marco.maximo# ls /home/dominio.com.br/marco.maximo/Maildir/new/
root@fs-desktop:/home/dominio.com.br/marco.maximo# cd /home/dominio.com.br/marco.maximo
root@fs-desktop:/home/dominio.com.br/marco.maximo# cat Maildir/new/1041431700.12630_0.pwemail1.localdomain,S\=390
cat: Maildir/new/1041431700.12630_0.pwemail1.localdomain,S=390: Arquivo ou diretório não encontrado
root@fs-desktop:/home/dominio.com.br/marco.maximo#

[52] Comentário enviado por crissbarbosa123 em 04/04/2014 - 15:25h

olá meu nome e Cristiane e eu estou fazendo um projeto final de curso(TÉCNICO EM REDES DE COMPUTADORES) e pretendo criar um servidor de email mas não faço ideia de onde começar .. me ajude por favor.. Obrigado pela atenção..

[53] Comentário enviado por esdrasconde em 03/10/2014 - 00:31h

Boa noite Marco,

Eu gostaria de te pedir uma ajuda se fosse possível. Eu instalei o servidor de email do Postfix no mesmo servidor que roda o Zabbix, e meu intuito era que quando o zabbix tivesse um alerta crítico mandasse um email automaticamente pro gmail que eu criei, no Zabbix já está tudo configurado corretamente pois tenho até um livro, porém no Postfix eu já olhei tutoriais, vídeos, mas não deu jeito.
No Zabbix consta como se tivesse enviado o email pro email cadastrado, mas não está enviando. Lá no Zabbix ele pede para colocar o nome do servidor SMTP, não sei qual nome colocar lá, gostaria também de uma ajuda caso você possa me dar, e como configurar no Postfix para ele mandar email pro gmail, se eu devo ter um domínio.. enfim.


[54] Comentário enviado por julianamoraes em 22/07/2016 - 11:05h

Pessoal, desculpa, sou novo no fórum, mas estava tendando configurar o meu e-mail profisssional para receber e enviar mensagens direto no gmail, vi um tutor nesse site http://gmailentrarlogin.net/ mas ainda assim não consegui. Deu uns erros parecidos com os comentários de alguns membros acima.

Alguém poderia me mostrar um tutor passo a passo para eu consegui?

Grata


Contribuir com comentário