Servidor de email: Postfix + Courier IMAP + RoundCube e usuários virtuais (Debian e derivados)

Configuração detalhada de um servidor de e-mails que utiliza autenticação por usuários virtuais não cadastrados no sistema Linux, mas sim no banco de dados PostgreSQL, com o webmail RoundCube para acesso dos usuários via internet.

[ Hits: 100.589 ]

Por: Isaias J. A. Soares (http://lattes.cnpq.br/9504289735203731) em 29/09/2010


Instalação e configuração do Roundcube



O Roundcube é, sem sombra de dúvida, um dos melhores sistemas de webmail que temos disponível atualmente no mundo open source, daí a sua escolha para uso em produção. Ele pode ser baixado em:
Após o download, descompacte-o no diretório de páginas web de sua preferência no seu servidor (geralmente, contido em /var/www), entre nele e descompacte o Roudcube (cd <seudir>, tar -xzvf roundcubemail-0.4.tar.gz).

O roundcube usa php, então o apache tem que estar com o php instalado e o módulo de acesso ao postgre também. Se não estiver, instale (libapache2-mod-php5 e php5-pgsql).

Se, por exemplo, <dir> = webmail no seu diretório raiz, então vá, pelo browser, em meudominio.com.br/webmail/installer.

A partir deste ponto, encaramos uma tranquila e agradável interface gráfica. Pressione next, e os passos vão aparecendo. Inicia-se pela verificação do estado do sistema e pacotes que você tem ou não instalados. Por um momento, você pode querer instalar os pacotes indicados como faltantes. Se for assim, interrompa a instalação, vá na console, instale o que quiser (se quiser), e pressione reload para atualizar. Existem alguns arquivos no diretório em que o roundcube é descompactado (INSTALL, README) que podem ser muito úteis, principalmente o INSTALL, e sua leitura é fortemente recomendada. Finalizada essa etapa, pressione next.

Novamente, uma tela com todas as informações. Preencha e a partir dela será gerado um arquivo de configuração. Copie para o diretório config, dentro do diretório do roundcube. Embora muita coisa seja gerada automaticamente, é possível que ocorram erros nessa criação do arquivo de configuração. Por isso, é recomendado verificar manualmente o arquivo, antes de copiá-lo para o diretório de configuração do Roundcube (cuja localização precisa e instruções são descritos no INSTALL da versão que você baixou). Na versão que baixei, por exemplo, embora eu marcasse, na interface, que o banco de dados a ser utilizado seria o postgres, o arquivo foi gerado como sendo para mysql. Então, fique atento a essas questões, e verifique o arquivo final manualmente.

Ok, agora temos que fazer o setup inicial do BD. É necessário criar um usuário 'roudcube' para acesso ao banco de dados. Para o postgre, no diretório base do rouncube (webmail, no caso), fazemos:

# createuser roundcube
# createdb -O roundcube -E UNICODE roundcubemail
# psql roundcubemail


roundcubemail =# ALTER USER roundcube WITH PASSWORD 'the_new_password';
roundcubemail =# \c - roundcube
roundcubemail => \i SQL/postgres.initial.sql

Abra uma nova aba (no firefox), com o endereço base do roundcube (seudomínio/webmail) e efetue os testes de login.

Notas:

1) Existem vários outros métodos de autenticação, alguns por banco de dados, como o userdb, não abordado aqui, por não ser estritamente necessário ao processo.

2) Podem ocorrer erros na autenticação. Verifique no diretório de logs do Roundcube. Comigo ocorreu o seguinte erro:

Mensagem no log do sistema (/var/log/syslog): -ERR chdir <diretorio de mail> failed
Causa: falha no acesso ao diretório de email.

Solução: Verifique:

1) permissões (todos os diretórios devem pertencer ao usuário postfix e ao grupo postfix);
2) O diretório existe?

Conclusão

Essa é uma configuração 'básica' de um servidor de e-mails com um webmail para permitir envio e recebimento usando nomes personalizados com o domínio da empresa. Esta é uma solução razoável para o início de implantação de um sistema dessa categoria. Uma vez estável, é possível adicionar funcionalidades, como melhorar a segurança, filtrar spams, antivirus, e outras mais, a fim de tornar essa solução adequada aos objetivos pretendidos.

Nesse sentido, é possível iniciar a implantação por meio deste artigo e efetuar as melhorias com base nas várias referências disponíveis na internet, muitas das quais citadas nas referências. O importante é que, uma vez que o servidor esteja funcionando, supre-se a necessidade imediata, e as melhorias podem ser realizadas com mais tranquilidade.

Um forte abraço a todos, e boa sorte.

Referências

  1. http://www.guiadohardware.net/tutoriais/servidor-emails/instalando-postfix.html
  2. http://www.wish4web.com.br/blog/theflockers/archives/21
  3. http://wiki.linuxquestions.org/wiki/Testing_IMAP_via_telnet
  4. http://wiki.locaweb.com.br/pt-br/Teste_de_envio_e_recebimento_via_Telnet
  5. http://www.splicenet.com.br/suporte/index.php/TELNET_para_contas_@dominio
  6. http://inmyplace.info/2008/05/07/postfix-warning-mail_queue_enter-create-file-maildrop-permission-denied/
  7. http://wiki.luispa.com/index.php/HowTo:Servidor:Correo
  8. http://www.ufpa.br/~rei/material/artigos/postfix-with-mailbox.html
  9. http://wiki.fabriciovc.eti.br/doku.php?id=linux:artigos:smtp-postfix-courier-maildir
  10. http://www.coding.com.br/sysadmin/postfix-com-virtual-hosts-e-smtp-autenticado
  11. http://www.reverse.net/pub/postfix/postconf.5.html
  12. http://wiki.linuxquestions.org/wiki/Postfix_virtual_MAILBOX_example:_separate_domains,_non-UNIX_accounts

Página anterior    

Páginas do artigo
   1. Instalação do Postfix
   2. Instalação e configuração do Courier, autenticação e usuários virtuais
   3. Instalação e configuração do Roundcube
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Instalação, configuração, utilização e testes do DRBD 0.7

Acessando remotamente máquina Windows dentro de uma VPN através do Ubuntu

Configurando a mudança de brilho no Notebook Vostro 1000 da Dell

Slackware descomplicado para iniciantes

Otimizando a bateria em sistemas Android 2.2/2.3

  
Comentários
[1] Comentário enviado por doomk em 06/10/2010 - 16:30h

Excelente Artigo.

Achei bem interessante a integração dele com o Postgree, até então só tinha visto para o MySQL.

Foi para o favoritos.


Forte abraço.

[2] Comentário enviado por isoares em 07/10/2010 - 15:13h

Oi, doomk!

Obrigado. Esse artigo surgiu da minha dificuldade em instalar essa combinação de softwares. Na primeira tentativa, fiquei umas tres semanas, sem conseguir. Dava de cara com uma série de problemas, oriundos da minha falta de experiência no assunto e de conhecimento sobre esses esquemas de autenticação que citei. Resolvi então, durante a última tentativa, documentar tudo, pra virar artigo. Assim, outros e eu mesmo poderíamos consultar posteriormente.

A escolha do Postgres foi devida ao fato de que o utilizo como meu servidor padrão - desde sempre - de banco de dados. O Mysql pode ser mais rápido para determinadas tarefas, mas o Postgres é de longe mais completo. Claro, o foco de cada um deles é diferente.

Quando eu estudava na UFPR, um rapaz fez um estudo para o uso do Postgres para se montar um Datawarehouse (um banco de dados que armazena bancos de dados, como é feito no sistema bancário). A comparação do Postgres com os demais softwares, mesmo proprietários, me impressionou. Por isso, desde então, o adotei como servidor padrão.

Realmente, eu achei muita coisa envolvendo essa combinação com o Mysql no lugar do postgres, tive que dar uma boa garimpada para achar algo útil, mas, valeu a pena. Fico feliz que tenha gostado.

É possível que, futuramente, eu poste algumas melhorias, quando as tiver implementado.

Um forte abraço!

Isaias.

[3] Comentário enviado por renanrodrigues em 30/10/2010 - 04:02h

Muito obrigado estava procurando um artigo desse você tirou minha duvida movendo para favoritos obrigado.

[4] Comentário enviado por doomk em 09/11/2010 - 15:27h

Muito Legal.

Acabei de concluir a configuração de um servidor de e-mail baseando em seu tutorial, funcionou que uma beleza.

E mais, juntei também com o tutorial do nosso grande amigo douglashx, que nos mostrou como fazer um cluster, baseando nas soluções Heartbeat + DRBD8 + OCFS2 + MONIT + LVS.

http://www.vivaolinux.com.br/artigo/Alta-disponibilidade-com-Debian-Lenny-+-Heartbeat-+-DRBD8-+-OCFS...

Enfim, após bater um pouco de cabeça, está configurado um servidor de e-mail Postfix + Postgree + Roundcube + Heartbeat + Drbd8 + Ocfs2.

Muito bom.

Obrigado mais uma vez pela sua dedicação na elaboração deste valioso tutorial.

[5] Comentário enviado por geraldoquites em 06/12/2010 - 11:23h

Bom dia "isoares" vou fazer a minha instalação geral usando o seu artigo. Estou usando o OpenSuse 11.3. Depois te dou retorno sobre as sequencias. Grande abraço, Geraldo.

[6] Comentário enviado por isoares em 06/12/2010 - 22:33h

Olá doomk!

Obrigado, procurei fazer o mais detalhado possível. A configuração que vc montou deve ter ficado ótima, sem comentários, hehehe!

Fico muito grato e mesmo incentivado a escrever novos tutoriais, com esse feedback da comunidade!

Um forte abraço!

Isaias.

[7] Comentário enviado por isoares em 06/12/2010 - 22:36h

Oi, Geraldo (geraldoquites)!

Bem, como você pode ver, esse tutorial foi elaborado para debian e derivados, mas creio que funcionará bem para outras distros também. Você vai ter, claro, que adaptar alguns passos, mas o esquema de configuração deve ser muito similar (se não idêntico), então, deve dar certo. Creio que o tutorial está detalhado o bastante para te permitir essa liberdade, com a plena compreensão dos passos que são necessários (configurações, autenticações, enfim). Fico aguardando pelo resultado! Boa sorte!

Um forte abraço!

Isaias.

[8] Comentário enviado por striteiro em 31/12/2010 - 09:39h

Bom dia, segui a risca o tutorial, instalei e configurei tudo como manda o artigo, porem quando tento logar via webmail, me retorna o seguinte erro: A ligacao com o servidor IMAP falhou!
Alguem tem uma luz ?

desde ja, agradeco!=D

[9] Comentário enviado por isoares em 05/01/2011 - 00:25h

Olá, striteiro!

Bem, você deve ficar atento a todas as recomendações do artigo. Esse tipo de erro que você menciona é percebido quando se faz os testes de autenticação, via telnet. O artigo menciona ainda a verificação dos erros nos logs (/var/log/syslog). Várias coisas podem dar errado, poste as mensagens, logs e o que mais puder.

Um forte abraço!

Isaias.

[10] Comentário enviado por andredemetriods em 04/03/2011 - 09:31h

Bom dia Amigo,

Cheguei até o passo:
Agora vamos criar o usuário postfix no postgre, com a mesma senha que colocamos no script:
# su - postgres
Quando dou este comando, o shell me retorna:
ID desconhecido : postgres
Tens idéia do que pode ter acontencido?

Att,

[11] Comentário enviado por isoares em 17/04/2011 - 20:16h

Olá, andredemetriods!

O usuário postgres é geralmente criado quando se instala o posgtres (pois ele é o usuário administrador do banco de dados). Se você instalou o Postgres e não possui esse usuário, das duas uma, ou seu usuário administrador está com outro nome, ou precisa reconfigurar o postgres novamente. Isso poderia ser feito com o gerenciador de pacotes, com o comando 'dpkg-reconfigure postgresql'.

Qualquer coisa, estou à disposição!
Um forte abraço!

Isaias

[12] Comentário enviado por alexandrehrs em 11/07/2011 - 10:41h

Na minha empresa uso o roudcube, porem presico remover o acesso webmail de alguns usuarios e não sei como fazer. Alguem pode me ajudar.

[13] Comentário enviado por isoares em 19/07/2011 - 09:49h

Oi, Alexandre! (alexandrehrs)

Bem, imagino que você esteja falando de usuários reais, cadastrados na máquina onde roda o servidor de email. Para conseguir isso, terá de trabalhar no sistema de autenticação, pois é esse sistema que libera o acesso ao sistema de e-mail.

Veja, se vc tiver usuários virtuais, é fácil, é só removê-los do banco de dados. Nesse caso, creio que, talvez, se você tiver muita experiência em autenticação, consiga isso. Eu não saberia como realizar essa tarefa, enfim, apenas uma idéia acerca disso. Você teria de criar um script de autenticação que permitisse todos, menos os usuários indesejados, um por um.Mas ao mesmo tempo, isso bloquearia também o acesso remoto do usuário à máquina. O fato de que o usuário seja um usuário real na máquina complica bastante as coisas. Na minha opinião, é mais fácil manter o servidor de e-mail em uma máquina separada, na qual esses usuários não tenham acesso, enfim. Desse modo, vc pode configurar do modo que descrevi e ter controle total de quem vai utilizar o sistema.

Um forte abraço!

Isaias.

[14] Comentário enviado por aldopassos em 27/10/2011 - 10:04h

Bom dia amigo, estou com um problema e queria ver se alguem pode me dar uma luz, estamos com um servidor instalado com debian e postifix rodando normalmente enviando e recebendo de todos os principais servidores de e-mail (TERRA, YAHOO, HOTMAIL) porém há um específico que não consegue nos enviar mensagens, este servidor eu sei que utiliza o EXCHANGE e sempre que nos enviam mensagens o e-mail volta deizendo que não foi possível realizar a entrega e no meu servidor ela nem aparece, nem sequer no mail.log...
Se puder me dar uma luz do que posso fazer para resoolver o problema... Muito obrigado por enquanto...

[15] Comentário enviado por rodrigo.a.sc em 18/11/2011 - 15:34h

Tenho uma grande duvida sobre o PostFix.

Como eu verifico o tamanho da conta de alguem ?
Crio uma conta via linha de comando?
faço o backup e o restore de uma caixa postal ??
Restarto apenas um serviço, tipo pop, smtp pois pelo zmcontrol so consigo restartar tudo de uma so vez até onde eu sei.

zmcontrol status
zmcontrol stop
zmcontrol start

so sei até ai.

Se alguem puder me dar um bizu ai eu fico grato!

[16] Comentário enviado por isoares em 29/11/2011 - 19:54h

Oi, aldopassos!

Então, difícil de dizer. Não entendo quando você diz que 'o servidor usa exchange', pois o uso do exchange, pelo que sei, utiliza um provedor de email para acesso. Pode ser um problema de configuração na máquina que está te enviando o email, pois, como você mesmo disse, nem aparece nos logs, ou seja, do meu ponto de vista, seu servidor parece estar ok, o indivíduo que está te enviando a mensagem é que tem que checar suas configurações, imagino.

Um forte abraço!

Isaias.

[17] Comentário enviado por isoares em 29/11/2011 - 21:12h

Oi, rodrigo.a.sc!

O 'tamanho da conta' é o tamanho do diretório que contém as mensagens do usuário.
Tenho um script para criar contas. Com ele dá para criar uma conta via linha de comando.
Eu criei uma mailbox 'template', que é um modelo do que eu queria (adicionei pasta de enviados
e tudo o que queria no roundcube), e a copio para a nova pasta do usuário. Tem um comando para
criar mailbox, que eu não cito aqui, mas que pode ser encontrado via google. Segue o script:

criar_usuario_virtual.sh:
---------------------------------------------------------------------------------------------------------------------
#!/bin/bash
# Script para criacao de usuarios virtuais para acesso ao webmail

#echo "[$1][$2]"

senha=""
if [[ ($1 != "") && ($2 != "") ]]; then
senha=$2
fi
if [[ "$1" == "" ]]; then
echo ""
echo "Sintaxe: ./criar_usuario_virtual.sh <login> <senha>"
echo ""
exit 1
fi

if [[ $senha == "" ]]; then
chave=`authpasswd`
else
chave=`echo "$senha"|authpasswd`
fi

chave=${chave//$/\\$}
login="$1"

echo "Tentando inserir usuario: [$login], chave: [$chave]">> /diretorio_mail_usuarios_virtuais/virtual.log

rsync -ar /diretorio_mail_usuarios_virtuais/template /diretorio_mail_usuarios_virtuais/$login

if [[ ! -d "/diretorio_mail_usuarios_virtuais/vusers/$login" ]]; then #Verifica se o diretório foi criado
echo "ERRO: Nao foi possivel criar o diretorio. Abortando.">> /diretorio_mail_usuarios_virtuais/virtual.log
exit 1
fi

chown -R postfix:postfix /diretorio_mail_usuarios_virtuais/$login

sql=`printf "INSERT INTO mailbox (username, password, name, maildir, quota, domain, created, modified, active) VALUES ('$login@seudominio.com', '$chave', ' ', '$login/', '0', ' ', current_timestamp, current_timestamp, '1');" `

comando=`printf "psql -d mail -c \"$sql\""`

result=`su -l usuario_autorizado_a_inserir_no_postgres -s /bin/bash -c "$comando"`

if [[ $result != "INSERT 0 1" ]]; then
echo "Falha na insercao do usuario no Postgres. Abortando.">>/diretorio_mail_usuarios_virtuais/virtual.log
exit 1
else
echo "Usuario [$login] inserido com sucesso."
echo "Usuario adicionado com sucesso: $login $senha $chave">>/root/virtuais.txt # grava um log
echo ""
fi
---------------------------------------------------------------------------------------------------------------------

E também tem um script para remover a conta (não apaga as mensagens, só remove do banco de dados. Claro,
pode ser modificado para fazer o que você desejar também:

apagar_usuario_virtual.sh:
---------------------------------------------------------------------------------------------------------------------
#!/bin/bash
# Script para apagar usuarios virtuais do acesso ao webmail

senha=""
if [[ ($1 != "") && ($2 != "") ]]; then
senha=$2
fi
if [[ "$1" == "" ]]; then
echo ""
echo "Sintaxe: ./apagar_usuario_virtual.sh <login>"
echo ""
exit 1
fi

login="$1"

echo "Tentando remover usuario: [$login]">> /diretorio_mail_usuarios_virtuais/virtual.log

sql=`printf "DELETE FROM mailbox WHERE maildir='$login/'"`

comando=`printf "psql -d mail -c \"$sql\""`

result=`su -l usuario_autorizado_a_inserir_no_postgres -s /bin/bash -c "$comando"`

if [[ $result != "DELETE 0 1" ]]; then
echo "Falha na insercao do usuario no Postgres. Abortando.">>/diretorio_mail_usuarios_virtuais/virtual.log
exit 1
else
echo "Usuario [$login] removido com sucesso."
echo "Usuario removido com sucesso: $login $senha $chave">>/root/virtuais.txt # grava um log
echo ""
fi
---------------------------------------------------------------------------------------------------------------------

Dá para fazer o backup e restore normalmente, como em qualquer diretório, se necessário.

Quanto aos serviços, é sempre bom reestartar tudo, para assegurar que as modificações estão valendo.

Ah, detalhes: os scripts são executados como root.

E é necessário configurar a conta de algum usuário para dar a ele acesso ao postgres, de inserção e remoção no banco de usuários virtuais.

Qualquer dúvida, estamos aí, é só perguntar.

Isaias.

[18] Comentário enviado por isoares em 26/12/2011 - 19:59h

Só esclarecendo: no contexto do artigo, um 'usuário virtual' é um usuário que está cadastrado no sistema de email, mas não tem uma 'conta real' na máquina, isto é, não tem uma área 'home', nem senha, nem poderia logar via ssh, por exemplo. Esse método aumenta bastante a segurança do servidor, uma vez que há menos brechas de segurança a serem exploradas. Os dados do usuário virtual são armazenados num banco de dados, e o sistema de autenticação realiza a consulta no banco, no caso, o Postgre, e então valida o acesso.

Um forte abraço a todos!

Isaias.

[19] Comentário enviado por JZG em 09/02/2012 - 10:30h

Bom dia,

estou tendo de instalar o servidor de email baseado em seu tutorial. Porém quando tento logar com 'useradmin' pelo comando #su useradmin é retornada a seguinte mensagem:
"unknown id: useradmin"

O usuário existe, quando fui cria-lo novamente me é enviada que "não é possivel executar a ação por que o usuário já existe".

O que pode ser?

[20] Comentário enviado por isoares em 10/02/2012 - 20:06h

Oi, JZG!

Não entendi bem a sua pergunta, poderia ser mais específico? Bem, o tutorial trata de usuários virtuais, então, esses usuários são criados no banco de dados (outro dia postei um script que faz isso). Esse sistema é justamente para evitar que usuários do email sejam usuários reais na máquina, criando posśiveis brechas de segurança.

Qualquer dúvida, posta novamente, que estamos aí..

Isaias.

[21] Comentário enviado por melorymonie em 21/03/2012 - 17:11h

Estou criando (tentando, pelo menos) um servidor de e-mail seguindo o seu tutorial, mas quando cheguei na parte de testar a conexão do imap me ocorreu o seguinte problema:
telnet 0 143
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2010 Double Precision, Inc. See COPYING for distribution information.
0 login user@teste.br teste
* BYE [ALERT] Fatal error: No such file or directory: No such file or directory
Connection closed by foreign host

olhando no log ele encontra o usuário no banco de dados, tudo certinho, mas no final do log encontrei o seguinte erro:
Mar 21 16:47:26 webmail2 imapd: chdir user/: No such file or directory
Mar 21 16:47:26 webmail2 imapd: user@teste.br: No such file or directory

Ai eu te pergunto, quando tenho que criar os maildirmake:
# maildirmake /home/postfix/Maildir/user
# maildirmake /home/postfix/Maildir/admin
# chown -R postfix:postfix /home/postfix

O meu usuário postfix tem que ter uma área de home?
Ou devo criar os diretórios em /var/users?

***************************************************
Segunda questão:
Quando testo o segundo telnet, me ocorre o seguinte erro:
telnet teste.br 110
telnet: could not resolve teste.br/110: Name or service not known

Você saberia me dizer porque isso ocorre?
Estou utilizando uma máquina virtual para realizar os testes, não tendo um IP real para isso, pode ter alguma coisa haver?

Obrigado e parabéns pelo post.


[22] Comentário enviado por isoares em 11/11/2012 - 21:41h

Olá, melorymonie!!

Me desculpe pelo atraso na resposta, espero não ocorrer novamente... é provável que você já tenha resolvido o problema, mas estou postando aqui em respeito ao seu questionamento e aos demais usuários.
Bem, sim, criei o /home/postfix para o usuário postfix como se fosse um usuário normal, e dei permissões para ele para escrever na minha pasta de usuários virtuais, a qual chamei, no meu sistema, de vusers, e onde postei todos os diretórios de emails deles. Também criei um template de diretório de email (simplesmente copio um diretório personalizado, inicialmente criado pelo maildirmake), de modo que quando vou adicionar um usuário, o script faz todo o serviço.

Uma observação que gostaria de ponderar é que o roundcube já está numa versão posterior à que eu utilizei para fazer esse tutorial, de modo que não estou certo se todos os passos aqui são válidos para a versão atual, embora, a princípio, devam funcionar.

Quanto à falha do telnet, eu não saberia te dizer, se obteve a solução poste aqui para compartilhar conosco.

Um forte abraço e sou em quem agradece a oportunidade de ser útil.

Isaias.

[23] Comentário enviado por ttelsen em 23/11/2012 - 11:44h

Estou empacado no mesmo ponto do melorynie
Pois quando dou o comando

# maildirmake /home/postfix/Maildir/user
# maildirmake /home/postfix/Maildir/admin

ele da o retorno: maildirmake: /home/postfix/Maildir/user: No such file or directory
Detalhe, eu criei o usuario "user" e "admin", porém eles nao tem a pasta /home - criei com o comando "useradd user" depois "passwd user" somente.

Alguém pode me ajudar?

[24] Comentário enviado por ttelsen em 23/11/2012 - 19:58h

Fiz o seguinte. criei as pastas
home/postfix/Maildir/ e depois dei um maildirmake user
home/postfix/Maildir/ e depois dei um maildirmake admin
ai o maildirmake criou as pastas cur, new, tmp para cada usuario.

depois criei a pasta /var/vusers e dei um chown postfix /var/vusers/

Será que está certo?

[25] Comentário enviado por isoares em 23/11/2012 - 22:12h

Oi, ttelsen!

Você teve também problemas de conexão com o telnet? Está instalando em máquina virtual ou real?

Então, no meu sistema, eu criei o usuário postfix como usuário real da máquina, e, sim, dei permissões de escrita na /var/vusers. Depois, com maildirmake, criei um 'diretório template' (/diretorio_mail_usuarios_virtuais/template), para ser copiado/reproduzido toda vez que eu quisesse criar um novo usuário (para isso, criei também os scripts criar_usuario_virtual.sh e apagar_usuario_virtual.sh, que postei acima). Nesses scripts, a string 'diretorio_mail_usuarios_virtuais' deveria ser substituída pelo seu diretório personalizado de mails de usuários, no caso, '/var/vusers'.

Salvo engano, eu também tive esse problema, mas esqueci de comentar no tutorial. E, se me lembro bem, o resolvi quando criei um usuário real para o postfix (faz tempo que fiz o procedimento, então pode ser que algum detalhe tenha escapado, embora o artigo tenha sido escrito no ato, logo após a instalação, dadas as dificuldades que encontrei).

Outra coisa importante, no meu sistema, executo os scripts criar_usuario_virtual.sh e apagar_usuario_virtual.sh como root, devido às permissões dos diretórios, que são variadas, e o script está projetado para ajustá-las automaticamente. Talvez seja necessário, dependendo da configuração do seu sistema, revisar esses scripts e ajustá-los ao seu sistema. E vale a pena utilizá-los, pois poupam muito do trabalho chato de adicionar/remover usuários virtuais.

Uma vez instalado e adicionados os usuários, é o postfix quem acessa, lê e escreve nos diretórios, portanto o acesso e permissões devem ser dele.
Qualquer dúvida, posta aí! E se resolver o problema, também, inclusive, com detalhes da solução.

Um forte abraço!

Isaias.

[26] Comentário enviado por cainf em 29/04/2013 - 22:43h

Uma dúvida sobre infra

1- Funcionaria usando um link ADSL ?

2 -Preciso pedir para configurar o DNS Reverso com a minha operadora para evitar que os emails se percam quando enviarem para mim ?

Desde ja agradeço

[27] Comentário enviado por isoares em 02/09/2013 - 12:52h

Oi, cainf!

Então, não vejo problema em funcionar com adsl... mas, para facilitar a manutenção, sugiro a contratação de um serviço de servidor virtual. Eu uso o linode.com, é barato, prático e eficaz. Na configuração do meu domínio, ajustei sim o DNS reverso. Já tive servidor em casa, mas o custo não vale. Sem contar que tem que ter no-break, quando vc viaja tem de ficar atento para a máquina não cair, não vale a pena.

Um grande abraço.

Isaias.

[28] Comentário enviado por igorocampos em 10/01/2015 - 18:29h


olá Isaias, muito bom o tutorial, mas estou com um probleminha...

Aparentemente nao consigo autenticar no imap... da sempre senha invalida... olhei nos arquivos de log e aparentemente é problema de digitar a senha errada (mas nao estou digitando errado) suspeito que seja alguma coisa relacionada a criptografia na comparacao da senha digitada com o que esta no postgre...

Uma coisa engraçada é que quando uso o authpasswd ele sempre gera uma senha criptografada DIFERENTE, mesmo eu tendo digitado a mesma senha sempre...

O que pode estar acontecendo?
Teria algum jeito de tirar a criptografia da senha somente para testar se é esse o problema?

Agradeço muito a ajuda

[29] Comentário enviado por isoares em 11/01/2015 - 10:09h

Oi, igorocampos.

Quando eu estava testando, também tive a mesma impressão. Primeiramente, instale o imap 'básico', e tente autenticar como UM USUÁRIO REAL. Isso porque, a autenticação como usuário virtual depende de que os scripts de configuração já estejam nas pastas, o servidor já deve ter sido reinicializado, e que não haja error nas variáveis que o leitor tem de atribuir (senha, hostname, etc.). Por isso recomendo o teste 'básico'. Se ele não funcionar, vc terá de pesquisar e fazer o imap funcionar, verificando sempre o arquivo de log, que dá excelentes pistas sobre o problema.
Não sei te há diferenças entre as distribuições linux (qual vc usa?), mas vc deve ficar atento a isso tb.
Com o imap funcionando de modo básico, daí vc parte para a configuração usando os scripts de autenticação que coloquei no texto. Perceba que esses scripts usam uma pesquisa no banco de dados para liberar o acesso dos usuários virtuais ao sistema de email, que nunca conseguirão autenticarem-se via ssh, por exemplo. Por isso esse esquema confere mais segurança ao seu sistema.
Se tentar e não conseguir, posta aí a configuração do seu sistema operacional e parte dos logs para a gente ver.

Abração!

Isaias

[30] Comentário enviado por igorocampos em 15/01/2015 - 14:26h

utilizo o ubuntu mesmo. Como assim instalar o imap basico? no caso, como eu reverteria tudo que ja fiz? to meio perdido...
Na tela do telnet aparece "NO login failed"
e no arquivo de log aparece assim:
Jan 15 11:24:11 mega imapd: LOGIN FAILED, user=marcos@mega.com, ip=[::ffff:127.0.0.1]

tem certeza que essa criptografia deveria mudar sempre que executo o authpasswd?

To meio desesperado pq tenho q fazer esses emails funcionando até o fim do mes... Coloquei no google apps por enquanto, mas é só 30 dias trial...
teria como me ensinar tipo um passo a passo para eu saber o que estou fazendo de errado?

Muito obrigado pela sua ajuda e atenção!



[31] Comentário enviado por akasuna em 21/01/2016 - 16:15h

Boa tarde,

Como uma grande maioria, dei uma travada na autenticação IMAP.
Estava tudo indo como os conformes, porém ao chegar nesta parte, me ocorre um erro no qual estou sem ideia do que possa ser.
Postarei em breve os logs onde reporta o erro para caso alguem ja tenha resolvido algo parecido possa me ajudar.

Até breve.

[32] Comentário enviado por jean6758144 em 14/10/2016 - 19:11h

Prezados (as),

Necessito de ajuda referente a servidores de e-mail, instalei os seguintes recursos em meu servidor Debian 8 X64 pela digital Ocena, e DNS apontando para o Cloudflare PHP5 com FastCGI e Xcache, MySQL, phpMyAdmin, Clamav, Amavis e SpamAssassin, PureFTPd e Quota, BIND9, OpenSSH, JailKit (chroot), RKHunter, Servidor de Emails com Postfix e Dovecot, Roundcube, Bastille Firewall com IPTables e Fail2ban.

Portanto não consigo nem enviar e receber email. Segue abaixo as informações do log de e-mail que possuo, segue os links para acessar. Preciso de ajuda.

TABELA DNS CLOUDFLARE =======> https://uploaddeimagens.com.br/imagens/prtscr_capture-jpg--12
TABELA DNS CLOUDFLARE =======> https://uploaddeimagens.com.br/imagens/prtscr_capture_2-jpg--2
Log de Email === >>>> https://drive.google.com/open?id=0B9z5uOU4lczmOHFyWkJ0THJWZnM

Agradeço a colaboração de todos.


PREROUTING ACCEPT [640048:482857312]
:INPUT ACCEPT [640048:482857312]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [443900:125193766]
:POSTROUTING ACCEPT [443870:125191586]
COMMIT
# Completed on Fri Oct 14 17:15:25 2016
# Generated by iptables-save v1.4.21 on Fri Oct 14 17:15:25 2016
*nat
:PREROUTING ACCEPT [16380:902043]
:INPUT ACCEPT [11510:626523]
:OUTPUT ACCEPT [15163:984414]
:POSTROUTING ACCEPT [15128:981870]
COMMIT
# Completed on Fri Oct 14 17:15:25 2016
# Generated by iptables-save v1.4.21 on Fri Oct 14 17:15:25 2016
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [52777:4697686]
:INT_IN - [0:0]
:INT_OUT - [0:0]
:PAROLE - [0:0]
:PUB_IN - [0:0]
:PUB_OUT - [0:0]
:fail2ban-dovecot-pop3imap - [0:0]
-A INPUT -p tcp -m multiport --dports 110,995,143,993 -j fail2ban-dovecot-pop3imap
-A INPUT -d 127.0.0.0/8 ! -i lo -p tcp -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 224.0.0.0/4 -j DROP
-A INPUT -i eth+ -j PUB_IN
-A INPUT -i ppp+ -j PUB_IN
-A INPUT -i slip+ -j PUB_IN
-A INPUT -i venet+ -j PUB_IN
-A INPUT -i bond+ -j PUB_IN
-A INPUT -i en+ -j PUB_IN
-A INPUT -j DROP
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j DROP
-A OUTPUT -o eth+ -j PUB_OUT
-A OUTPUT -o ppp+ -j PUB_OUT
-A OUTPUT -o slip+ -j PUB_OUT
-A OUTPUT -o venet+ -j PUB_OUT
-A OUTPUT -o bond+ -j PUB_OUT
-A OUTPUT -o en+ -j PUB_OUT
-A INT_IN -p icmp -j ACCEPT
-A INT_IN -j DROP
-A INT_OUT -p icmp -j ACCEPT
-A INT_OUT -j ACCEPT
-A PAROLE -j ACCEPT
-A PUB_IN -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A PUB_IN -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A PUB_IN -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A PUB_IN -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A PUB_IN -p tcp -m tcp --dport 20 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 21 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 22 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 25 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 53 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 80 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 110 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 143 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 443 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 587 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 993 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 995 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 3306 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 8080 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 8081 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 10000 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 40110:40210 -j PAROLE
-A PUB_IN -p udp -m udp --dport 53 -j ACCEPT
-A PUB_IN -p udp -m udp --dport 3306 -j ACCEPT
-A PUB_IN -p icmp -j DROP
-A PUB_IN -j DROP
-A PUB_OUT -j ACCEPT
-A fail2ban-dovecot-pop3imap -j RETURN
COMMIT


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts