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.
Instalação do Postfix
Este artigo foi escrito durante o processo de configuração, portanto inclui alertas para erros que cometi (muitos comuns a iniciantes) e que me fizeram perder um tempão tentando descobrir o que era. Não sou um expert no assunto, ainda assim, estou postando aqui para que outros possam fazer disso uma tarefa mais branda, pois encontrei muitos 'buracos' e 'detalhes sem explicação' nos artigos que li. Este tutorial visa uma cobertura completa do básico no assunto.
Obs.: Para instalação de pacotes eu uso aptitude (melhor verificação de dependências), mas o apt-get pode ser usado no lugar dele.
Para a configuração inicial do Postfix é interessante dar uma olhada nessa referência. Bem, dito isso, vamos instalar os pacotes:
# aptitude install postfix postfix-ldap postfix-pgsql
Importante: a configuração, se não for feita na instalação, deve ser feita com o comando:
# dpkg-reconfigure postfix
Como opções, deve-se escolher:
General type of configuration?
-> Internet site (para um servidor 'real' de e-mails)
Conta de usuário admin:
-> fulano
mail name? (Nome do servidor de e-mails)
-> meudominio.com.br ou nome_do_meu_servidor
Destinatários para os quais aceitar emails: (Essencial se o servidor abrigar domínios virtuais) -> dominio1.com.br, domínio2.org, domínio3.net
Force synchronous update on mail queue?
-> Não
Qualquer dúvida, consultar os passos indicados no artigo do Morimoto para instalação e configuração iniciais do Postfix.
Finalizada a instalação, vamos fazer alguns testes.
É bom fazermos uma checagem geral com o comando:
# postfix check
Se houverem problemas aparecerão aqui, do contrário, não aparecerá nada.
Envio e recebimento por telnet (instale o telnet se não tiver com 'aptitude install telnet'):
2.a) Envio para serviço de email local:
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 urano.meudominio.com.br ESMTP Postfix (Debian/GNU)
mail from: usuario@meudominio.com.br
250 2.1.0 Ok
rcpt to: usuario@meudominio.com.br
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
teste de envio de email de urano.
.
250 2.0.0 Ok: queued as B5966E0EE
quit
221 2.0.0 Bye
Connection closed by foreign host.
Obs.: Pode-se instalar e usar o mutt para ler (aptitude install mutt / mutt).
2.b) Envio para serviço de email externo:
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 urano.meudominio.com.br ESMTP Postfix (Debian/GNU)
mail from: usuario@meudominio.com.br
250 2.1.0 Ok
rcpt to: email_de_teste@yahoo.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
teste de envio de email de urano.
.
250 2.0.0 Ok: queued as B5966E0EE
quit
221 2.0.0 Bye
Connection closed by foreign host.
O Postfix deve funcionar normalmente nas configurações padrão. Se estiver ok, vamos em frente. Se não, o problema tem que ser corrigido antes de prosseguir. Dica: dê uma olhada nos logs de sistema ('cat /var/log/syslog') e de email ('cat /var/log/mail.err ou mail.*') para ter algumas pistas dos problemas.
1. Pré-requisitos
Para executar esse tutorial, deve-se ter um Debian (ou derivado) de 32bits, e os pacotes do apache, php, e postgresql 8.3 instalados e configurados. A questão de ser Debian 32 foi que encontrei um erro no courier-imap que não consegui contornar na versão 64 bits, e como já tinha feito o processo numa máquina-cobaia com Debian 5.0/32bits, optei por usar também essa distribuição para o servidor.Obs.: Para instalação de pacotes eu uso aptitude (melhor verificação de dependências), mas o apt-get pode ser usado no lugar dele.
2. Instalação do Postfix
O Morimoto escreveu um excelente guia em:Para a configuração inicial do Postfix é interessante dar uma olhada nessa referência. Bem, dito isso, vamos instalar os pacotes:
# aptitude install postfix postfix-ldap postfix-pgsql
Importante: a configuração, se não for feita na instalação, deve ser feita com o comando:
# dpkg-reconfigure postfix
Como opções, deve-se escolher:
General type of configuration?
-> Internet site (para um servidor 'real' de e-mails)
Conta de usuário admin:
-> fulano
mail name? (Nome do servidor de e-mails)
-> meudominio.com.br ou nome_do_meu_servidor
Destinatários para os quais aceitar emails: (Essencial se o servidor abrigar domínios virtuais) -> dominio1.com.br, domínio2.org, domínio3.net
Force synchronous update on mail queue?
-> Não
Qualquer dúvida, consultar os passos indicados no artigo do Morimoto para instalação e configuração iniciais do Postfix.
Finalizada a instalação, vamos fazer alguns testes.
É bom fazermos uma checagem geral com o comando:
# postfix check
Se houverem problemas aparecerão aqui, do contrário, não aparecerá nada.
Envio e recebimento por telnet (instale o telnet se não tiver com 'aptitude install telnet'):
2.a) Envio para serviço de email local:
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 urano.meudominio.com.br ESMTP Postfix (Debian/GNU)
mail from: usuario@meudominio.com.br
250 2.1.0 Ok
rcpt to: usuario@meudominio.com.br
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
teste de envio de email de urano.
.
250 2.0.0 Ok: queued as B5966E0EE
quit
221 2.0.0 Bye
Connection closed by foreign host.
Obs.: Pode-se instalar e usar o mutt para ler (aptitude install mutt / mutt).
2.b) Envio para serviço de email externo:
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 urano.meudominio.com.br ESMTP Postfix (Debian/GNU)
mail from: usuario@meudominio.com.br
250 2.1.0 Ok
rcpt to: email_de_teste@yahoo.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
teste de envio de email de urano.
.
250 2.0.0 Ok: queued as B5966E0EE
quit
221 2.0.0 Bye
Connection closed by foreign host.
O Postfix deve funcionar normalmente nas configurações padrão. Se estiver ok, vamos em frente. Se não, o problema tem que ser corrigido antes de prosseguir. Dica: dê uma olhada nos logs de sistema ('cat /var/log/syslog') e de email ('cat /var/log/mail.err ou mail.*') para ter algumas pistas dos problemas.
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.