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: 96.065 ]

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 ('[email protected]','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

Os atuais MDAs e as linguagens de filtragem de e-mail (parte 1 - Procmail)

Instalando Postfix e Dovecot no SLES 11 e autenticando em um diretório da Novell (Edir)

Alta disponibilidade com Debian Lenny + Heartbeat + DRBD8 + OCFS2 + MONIT + LVS

Postfix + AntiSpam (Postgrey)

Instalando o Qmail no RedHat 9

  
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, [email protected], [email protected]

[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 [email protected]

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 [email protected] tenha limite de 20 MB na mailbox dele, e o [email protected] 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 = '[email protected]';

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: [email protected] ou gtalk; [email protected]

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:

[[email protected] 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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts