Página inicial > Linux, Tutoriais > Instalando Postfix com MySQL (Debian) - Parte 03

Instalando Postfix com MySQL (Debian) - Parte 03

Até aqui ja configuramos bastante coisa. Na parte 02, você aprendeu a configurar o servidor SMTP a autenticar-se com os usuários no MySQL. Agora vamos fazer a instalação do servidor POP3/IMAP e também aprender como adicionar os usuários para poderem receber e ler os e-mails.

Como este tutorial também ficou grande, para ler, clique no link a seguir.

Para conseguirmos terminar este tutorial, precisamos instalar os pacotes abaixo:
# aptitude install courier-authdaemon courier-authmysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl

1º Passo, configurando o servidor POP3/IMAP:

Vamos editar o arquivo /etc/courier/authdaemonrc e inserir na linha authmodulelist a diretiva authmysql, ficando assim:

authmodulelist="authmysql"

Vamos editar o arquivo /etc/courier/authmysqlrc e inserir as seguintes informações:

MYSQL_SERVER localhost
MYSQL_USERNAME postfix
MYSQL_PASSWORD senha-que-especificou-para-o-usuario-postfix
MYSQL_PORT 0
MYSQL_DATABASE postfix
MYSQL_USER_TABLE usuarios
#MYSQL_CRYPT_PWFIELD (<strong>comente essa linha</strong>)
MYSQL_CLEAR_PWFIELD senha
MYSQL_UID_FIELD 8500
MYSQL_GID_FIELD 8500
MYSQL_LOGIN_FIELD email
MYSQL_HOME_FIELD "/home/gmail"
#MYSQL_NAME_FIELD (<strong>comente essa linha</strong>)
MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')

Pronto, nosso servidor POP3/IMAP ja está configurado.

Para testar se tudo está funcionando corretamente, faça uma conexão telnet com o pop3 executando o seguinte comando: telnet localhost pop3 (isso se você estiver na mesma máquina.
O resultado deverá ser o seguinte: +OK Hello there.
Caso a mensagem seja de falha, revise o tutorial e suas configurações.

Inserindo usuários/senhas e domínios adicionais no banco de dados

Inserindo os domínios virtuais adicionais

Como eu disse na parte 01 do tutorial, o domínio principal não precisa ser adicionado na tabela de domínios adicionais, no entanto, caso você queira gerenciar mais domínios, será necessários adicioná-los aqui, como também fazer o apontamento correto dos MX no domínio (isso só abordarei se acharem que é necessário).

Para inserir os domínios virtuais adicionais, digite o seguinte no seu console MySQL:

INSERT INTO `dominios` (`dominio`) VALUES ('dominiovirtualadicional.com.br');

Inserindo os usuários/senhas no banco de dados

Para inserir os usuários é simples também, basta digitar o seguinte no seu console MySQL:

Para o dominio principal:

INSERT INTO `usuarios` (`email`,`senha`) VALUES ('conta@dominio.com.br','senhadousuario');

Para os dominios virtuais adicionais:

INSERT INTO `usuarios` (`email`,`senha`) VALUES ('conta@dominiovirtualadicional.com.br','senhadousuario');

Fazendo redirecionamento de e-mails

Sim, você pode fazer redirecionamento de e-mails também!
Para isso digite no console MySQL o seguinte:

Para o domínio principal:

INSERT INTO `redirecionamentos` (`alias`,`destino`) VALUES ('redir@dominio.com.br','seuemail@email.com');

Para os domínios adicionais:

INSERT INTO `redirecionamentos` (`alias`,`destino`) VALUES ('redir@dominiovirtualadicional.com.br','seuemail@email.com');

Instalando e configurando o webmail

Para conseguirmos terminar este tutorial, precisamos instalar o pacote abaixo:
OBS: Para isso, você deverá ter o Apache instalado e configurado!

# aptitude install squirrelmail

Após termos o Squirrel instalado vamos digitar o seguinte:

ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf

Agora configure as opções básicas do Squirrel digitando o comando abaixo:

squirrelmail-configure

Pronto, você poderá acessar seu webmail pelo endereço: http://localhost/squirrelmail.
O usuário e senha será o que você criar pelo MySQL para acessar.

Comandos telnet a serem digitados para criar a mailbox inicial

Entre por telnet no seu servidor digitando:

telnet nomedoservidor 25

Abaixo, veja na tabela a ordem das mensagens que apareceram e o que precisará ser digitado. Siga exatamente como está neste arquivo. Clique aqui para ver.

Após digitar o conteúdo da tabela acima diretamente por telnet, dê uma olhada no log do postfix e veja se o conteúdo é como o abaixo:

Jul 24 21:48:28 myserver postfix/smtpd[9119]: connect from nomedoservidor[127.0.0.1]
Jul 24 21:48:48 myserver postfix/smtpd[9119]: F2C1B47BD: client=nomedoservidor[127.0.0.1]
Jul 24 21:48:52 myserver postfix/cleanup[9144]: F2C1B47BD: message-id=<20040724194842.F2C1B47BD@nomedoservidor>
Jul 24 21:48:52 myserver postfix/qmgr[9117]: F2C1B47BD: from=, size=313, nrcpt=1 (queue active)
Jul 24 21:48:52 myserver postfix/virtual[9148]: F2C1B47BD: to=, relay=virtual, delay=10, status=sent (delivered to maildir)

Caso em “status” esteja como sent (status=sent (delivered to maildir)), o e-mail foi entregue corretamente. Então digite o comando find /home/gmail e a listagem de diretórios e arquivos deverá se parecer com esta:

/home/gmail/dominio.com.br
/home/gmail/dominio.com.br/conta
/home/gmail/dominio.com.br/conta/tmp
/home/gmail/dominio.com.br/conta/cur
/home/gmail/dominio.com.br/conta/new
/home/gmail/dominio.com.br/conta/new/1114511715.V801I7400b.nomedoservidor

Apareceu tudo como escrevi? Então o diretório está criado! Agora o passo é configurar seu cliente para acessar a caixa de e-mail para receber e enviar os e-mails. O usuário neste caso é conta@dominio.com.br e a senha é senhadousuario.

As possibilidades com esse tutorial são ilimitadas. Você pode utilizar somente para acesso próprio, pode oferecer um webmail, pago ou grátis, para os seus amigos, visitantes e etc. O que você precisa é criar um formulário que faça a inserção dentro do banco de dados, assim, os visitantes ou você mesmo poderá cadastrar as contas sem ter de usar o console MySQL.

Então, chegamos ao fim deste tutorial. Espero que tenham gostado e que consigam configurar vários servidores de e-mail Postfix utilizando o MySQL onde pretenderem!

Compartilhar/Salvar artigo

Linux, Tutoriais , ,

  1. Juarez
    21 de agosto de 2008 em 13:16 | #1

    Lincoln,

    Essa parte de inserir usuários não existe uma forma mais “amigável”, talvez pelo postfix ou parte gráfica, pq não sei usar corretamente o mysql e fico com receio de inserir alguma informação incorreta

  2. 21 de agosto de 2008 em 15:39 | #2

    @ Juarez:

    Há sim, é como eu disse em pouquinho em cima.
    Só criar um formulário em php que faça a inserção dos dados no MySQL.
    Assim que eu chegar em casa, se sobrar um tempinho, monto um pequeno formulário que insira estes dados e compartilho aqui.

    Abraço.

  3. elson
    22 de setembro de 2008 em 21:04 | #3

    Ola Boa Noite,

    Segui passo a passo o tutorial mas não consigo enviar e-mail em uma estação usando o oultlook aparece a seguinte mensagem o servidor smtp não responde pode ser algun firewall do linux, essa estação não usa internet precisa de internet nessa estação?

    muito obrigado.

  4. 22 de setembro de 2008 em 22:52 | #4

    @ elson:

    A estação e o servidor estão na mesma rede?

    Se estiverem, não precisa de internet, mas sim de rede local. Dá uma olhada se não tem firewall na máquina travando o acesso na porta 110 (POP) e na porta 25 (SMTP).

    Abraços.

  5. thiagobraga
    24 de setembro de 2008 em 16:35 | #5

    Meu querido,
    eu tento fazer logon pelo outlook ele da o seguinte erro no server:
    Jun 12 16:26:54 teste pop3d-ssl: Connection, ip=[::ffff:192.168.0.26]
    Jun 12 16:26:55 teste pop3d-ssl: LOGIN FAILED, user=thiago@teste.com.br, ip=[::ffff:192.168.0.26]
    Jun 12 16:27:00 teste pop3d-ssl: Unexpected SSL connection shutdown.
    Jun 12 16:27:00 teste pop3d-ssl: Disconnected, ip=[::ffff:192.168.0.26]

    o que pode ser isso?
    abraços!

  6. 24 de setembro de 2008 em 16:49 | #6

    @ thiagobraga:

    Tente fazer o seguinte como root:
    mkdir /var/run/courier && chown courier:courier /var/run/courier

    Reinicie o courrier e veja se o problema vai continuar.

    Qualquer dúvida, fala aí! :)

  7. elson
    24 de setembro de 2008 em 20:39 | #7

    Boa Noite amigo

    ja fiz vario teste mas não consigo fazer o outlook conectar toda hora fica pedido senha e não autentica o pop e smtp apararece uma mensangen o servidor samtp não responde, vc tem ideia o que pode ser isso esse numero de ip que vc diz 127.0.0.1 e numero é default o tem que ser o ip da minha rede, e na configuração do courier o arquivo authmysqlrc e tenho que apagar todo couteudo e deixar do jeito que vc descreve no tutorial, no linux o iptables pode esta bloqueado as portas de conexão.

    cara muito obrigado e desculpa o transtorno.

  8. thagobraga
    25 de setembro de 2008 em 15:55 | #8

    elson,
    meu querido, o courier está com o seguinte erro quando tento reiniciar…

    Starting Courier authentication services: authdaemond/etc/courier/authdaemonrc: line 104: MYSQL_SERVER: command not found
    /etc/courier/authdaemonrc: line 105: MYSQL_USERNAME: command not found
    /etc/courier/authdaemonrc: line 106: MYSQL_PASSWORD: command not found
    /etc/courier/authdaemonrc: line 107: MYSQL_PORT: command not found
    /etc/courier/authdaemonrc: line 108: MYSQL_DATABASE: command not found
    /etc/courier/authdaemonrc: line 109: MYSQL_USER_TABLE: command not found
    /etc/courier/authdaemonrc: line 111: MYSQL_CLEAR_PWFIELD: command not found
    /etc/courier/authdaemonrc: line 112: MYSQL_UID_FIELD: command not found
    /etc/courier/authdaemonrc: line 113: MYSQL_GID_FIELD: command not found
    /etc/courier/authdaemonrc: line 114: MYSQL_LOGIN_FIELD: command not found
    /etc/courier/authdaemonrc: line 115: MYSQL_HOME_FIELD: command not found
    /etc/courier/authdaemonrc: line 117: syntax error near unexpected token `(’
    /etc/courier/authdaemonrc: line 117: `MYSQL_MAILDIR_FIELD = CONCAT(SUBSTRING_INDEX(email,.@’,-1),./’,SUBSTRING_INDEX(email,.@’,1),./’)’

    eu não entendi… lá emcima no tutorial, ele manda eu ADICIONAR as linhas, mas eu não sei se é pra apagar.. e colocar isso entendeu?
    abraços!

  9. 26 de setembro de 2008 em 10:00 | #9

    @ elson:

    Bom dia!

    O servidor que você montou está no mesmo computador que você está usando pra tentar conectar?

  10. 26 de setembro de 2008 em 10:06 | #10

    @ thagobraga:

    Você precisa remover as linhas somente se estas já existirem no arquivo…
    Se elas ja existirem, você as substitui por essas que estão aqui no blog.

    De qualquer forma, esses erros que estão aparecendo é porque você inseriu no arquivo errado. No arquivo /etc/courier/authdaemonrc você vai procurar a linha authmodulelist e colocar somente authmysql, ficando assim: authmodulelist=”authmysql”.

    Já no arquivo /etc/courier/authmysqlrc você vai colocar as linhas que estão lá no blog. Toma cuidado com as aspas… Experimente digitar manualmente ao invés de copiar e colar…

  11. elson
    26 de setembro de 2008 em 11:54 | #11

    não estou tentado conectar de uma estação.

  12. 26 de setembro de 2008 em 12:02 | #12

    @ elson:

    Qual o IP dessa estação e qual o IP de onde instalou o servidor?

  13. elson
    26 de setembro de 2008 em 12:45 | #13

    IP servidor 192.168.0.100 IP estação 192.168.0.101

  14. 29 de setembro de 2008 em 17:19 | #14

    @ elson:

    Então da estação você precisa colocar que o POP e o SMTP são 192.168.0.100.
    Agora você tem que olhar se o firewall do servidor não está bloqueando né…

  15. elson
    02 de outubro de 2008 em 16:36 | #15

    A nossa pagina de internet fica hospedada na locaweb é preciso fazer alguma configuração adicional revisei minhas configurações estão corretas do deixo do tutorial mas não comunica pode ser a locaweb bloqueado o acesso?

    valeu obrigado.

  16. thiago braga
    07 de outubro de 2008 em 14:18 | #16

    Meu querido a minha dúvida é o seguinte:
    como configuro o outlook pra essa solução?
    Desde já fico agradecido!

    abs!

  17. thiago braga
    07 de outubro de 2008 em 14:49 | #17

    só pra constar o erro que dá no log é esse

    Oct 7 10:53:29 iaweh courierpop3login: Connection, ip=[::ffff:192.168.0.26]
    Oct 7 10:53:29 iaweh courierpop3login: LOGIN FAILED, user=teste@iaweh.com.br, ip=[::ffff:192.168.0.26]
    Oct 7 10:53:29 iaweh courierpop3login: authentication error: Input/output error

    ele envia smtp mas não recebe pop..
    sabe o que pode ser?

    abração
    e obrigado desde já!

  18. 08 de outubro de 2008 em 10:31 | #18

    @ thiago braga:

    Bom dia,

    Dá uma olhada no arquivo de configuração do courier comunicando com o MySQL… pesquisei aqui e provavelmente o problema está neste arquivo… pessoas que tiveram esse erro, a linha onde fica a senha com o MySQL estava errada…

    Confere se a senha do MySQL está correta, se as aspas estão certas (o WordPress dependendo do tema converte as aspas comuns em aspas inglesas), se o usuário está criado e etc…

  19. 08 de outubro de 2008 em 10:39 | #19

    @ elson:

    A LocaWeb pode estar bloqueando o acesso externo…
    Muitas empresas de hospedagem fazem isso.

    Agora, o seu servidor de e-mails tem que ter um IP externo válido pra sua página na LocaWeb conseguir acessá-lo né… Assegure-se disso! :)

  20. Paulo
    10 de outubro de 2008 em 01:15 | #20

    fiz tudo como no howto… o redireccionamento funciona bem e quando envio um email para uma conta, também… o email +e entregue na mailbox…

    o problema é quado tento fazer autenticação: nem por smtp, nem pop nem no squirrelmail: não reconhece usuários nem por nada…

    Testei em v+arias máquinas e nada…

    Sabe o que se podera estar a passar?

    Estou desesperado… há muito tempo que ando a tentar configurar o meu servidor de email e nada…

  21. 11 de outubro de 2008 em 18:34 | #21

    @ Paulo:

    Boa noite,

    Verifique se as aspas não estão trocadas… O Wordpress, troca as aspas comuns por aspas inglesas e estas dão problema nos arquivos de configuração! Dê uma olhada na saída do log e veja qual o erro apresentado na autenticação.

    Os usuários foram criados?

    Abraços.

  22. Leonard Augusto
    26 de novembro de 2008 em 16:59 | #22

    Amigo, segui corretamente os passos.
    A autenticação está sendo feita no banco corretamente, mas na hora de criar a pasta dá erro, segue a mensagem abaixo:

    user teste@dominio.com.br
    +OK Password required.
    pass teste
    -ERR chdir pacobranca.com.br/leonard/ failed
    Connection closed by foreign host.

    O que pode ser???

  23. 26 de novembro de 2008 em 17:30 | #23

    @ Leonard Augusto:

    Boa tarde! :)

    Existe uma série de comandos a ser executada via telnet que criam os diretórios necessário, porém eu esqueci de incluir neste tutorial… Estarei lançando o definitivo em poucos dias… tá dando um trabalhinho escrevê-lo!

    Agradeço pela sua compreensão! :)
    Abraços.

  24. Leonard
    26 de novembro de 2008 em 20:46 | #24

    Então amigo, você não saberia nem me passar uma dica.
    O problema está justamente na hora de criar a pasta do usuario.
    Fiquei sabendo que tem que fazer alguma conf para que o courier crie a pasta e assim o imap conecte corretamente.
    Falta só isso para que meu postfix funcione corretamente com o mysql.

    Obrigado pela atenção

  25. Constantino
    15 de dezembro de 2008 em 17:45 | #25

    Muito bom o seu tutorial, segui todo o tutorial e configurei um cliente te me e-mail mais na hora de enviar o e-mail não consigo autenticar e como se a senha estivesse errada.. tem alguma dica

  26. 15 de dezembro de 2008 em 21:24 | #26

    @Constantino
    O problema não é a senha que está errada amigo, é que precisa de uns comandos a serem executados pelo telnet para que a caixa seja criada, a partir daí começa a funcionar normalmente.

    Vou colocar os comandos aqui pra vocês enquanto o tutorial não fica pronto.

    Abraços.

  27. nelson
    17 de dezembro de 2008 em 17:29 | #27

    Seu tutorial e uma merda! ve se conserta essa porra.

  28. 17 de dezembro de 2008 em 18:07 | #28

    @nelson
    Desde já deixo um aviso que sinto-me no direito de aprovar ou não os comentários, o blog é meu, os posts são meus e faço deles o que eu quiser, ok? :twisted:

    Pois bem, é engraçado ver como as coisas são…
    As coisas aqui são feitas de boa vontade e disponibilizadas de forma gratuita para que possam fazer em casa ou aonde for sem ter de pagar um especialista no assunto.

    Você sente-se no direito de vir aqui e chingar meu tutorial, chamá-lo de porra e o que mais bem entender por qual motivo? Por acaso o domínio lincolnlamas.com está sob seu direito? Então amigo, antes de entrar em qualquer site, pense bem no que vai escrever, ok?

    Se eu quiser colocar ou não os comandos a serem executados por telnet ou não quiser mais terminar o tutorial sobre o PostFix, isso é um direito meu e nenhuma outra pessoa tem o direito de vir aqui e questionar o que eu faço ou não.

    Quer fazer seu Postfix funcionar com MySQL perfeitamente? Então me liga, faz um Oi, que por R$ 50,00/hora eu deixo funcionando perfeitamente pra você, com cadastro/manutenção de usuários via browser. Agora se você for mão-de-vaca e quiser ficar garimpando as coisas na internet pra fazer seu servidorzinho mixuruca funcionar, se vira colega, só não vem aqui criticar o que eu faço.

    Passar bem.

  29. 17 de dezembro de 2008 em 18:53 | #29

    @Paulo, @Leonard Augusto, @Constantino:

    Os comandos a serem executados via telnet já se encontram no post.

    Desculpem a demora, abraços.

  1. Nenhum trackback ainda.