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.771 ]

Por: André Costa em 08/03/2010


Configuração do Dovecot, servidor POP3 e IMAP



Vamos configurar o Dovecot, que provê tanto um POP3 como um serviço de IMAP.

Para lidar com usuários virtuais com Dovecot vamos criar o arquivo:

# vi /etc/dovecot-mysql.conf

######dovecot-mysql.conf should look like this##########
# NOTE: '\' line splitting is used only for readability, currently Dovecot doesn't support it
# The mysqld.sock socket may be in different locations in different systems
driver = mysql
default_pass_scheme = plain
#connect = host=/var/lib/mysql/mysql.sock dbname=mail user=mail password=mail
# Alternatively you can connect to localhost as well:
connect = host=localhost dbname=mail user=mail password=mail
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n' as mail, 150 AS uid, 12 AS gid, concat('dirsize:storage=',quota) AS quota FROM mailbox WHERE username ='%u' AND active ='1'
####################ends here####################

Nós vamos fazer o backup do arquivo original para dovecot.conf.orig e alterar o arquivo de execução para as nossas necessidades.

# cp -p /etc/dovecot.conf /etc/dovecot.conf.orig

# vi /etc/dovecot.conf

Apenas edite as seguintes linhas:

base_dir = /var/run/dovecot/
protocols = imap imaps pop3 pop3s
listen = [::]
log_path = /var/log/maillog
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = mbox:/var/vmail/%d/%n
first_valid_uid = 150
last_valid_uid = 150
maildir_copy_with_hardlinks = yes
mbox_read_locks = fcntl
passdb sql {
  args = /etc/dovecot-mysql.conf
}

userdb sql {
  args = /etc/dovecot-mysql.conf
}

Permissão para os arquivos do Dovecot:

# chmod 600 /etc/dovecot*
# chown vmail /etc/dovecot*


Criando usuários e domínios virtuais

Agora vamos criar domínios virtuais e usuários virtuais em nosso banco de dados.

# mysql -u mail -p

mysql> USE mail;

Primeiro crie um domínio virtual na tabela de domínio (domain.com.br) usando o comando abaixo:

mysql> INSERT INTO domain (domain,description,aliases,mailboxes,maxquota,transport,backupmx,active) VALUES ('domain.com.br','Virtual domain','10','10', '0','virtual', '0','1');

Agora crie um usuário virtual na tabela mailbox:

mysql> INSERT INTO mailbox (username,password,name,maildir,quota,domain,active) VALUES ('andre.costa@domain.com.br','teste', 'Andre Costa','andre.costa/', '0','domain.com.br','1');

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

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

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

Leitura recomendada

Email + EGroupWare + Active Directory

Servidor Postfix Total

Sendmail sem complicações

Benchmark entre servidores de e-mails

iRedMail como servidor de e-mails em servidor GNU/Linux ou BSD

  
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