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!

Categories: Linux, Tutoriais Tags: , ,
  • @Maggi
    Experimente verificar nas tabelas do MySQL se o usuário está lá.
    Se não estiver, adicione-o e tente novamente.

    Caso esteja, a única coisa que posso sugerir é que siga os passos novamente.
  • Maggi
    blz fera, muito grato pela sua atenção, poderia me ajudar a solucionar?
  • @Maggi,
    Pelo que pude perceber, não está funcionando porque Postfix não está encontrando o usuário william como pode ver nesta linha:

    Jan 19 14:05:49 mailserver postfix/local[2210]: 0AFB569DE: to=, relay=local, delay=49, delays=49/0.03/0/0.04, dsn=5.1.1, status=bounced (unknown user: “william”)

    Então o que está acontecendo é que ele está tentando devolver a mensagem com o erro de que a conta de e-mail (rcpt to:) não existe pro e-mail que está no "mail from:" do comando no telnet.
  • Maggi
    Vamo no passo a passo... Os comandos conforme vc escreveu:
    mailserver:/home/fba# telnet localhost 25
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    220 mailserver.pardalz.no-ip.info ESMTP Postfix (Debian/GNU)
    ehlo dominioficticio.com
    250-mailserver.pardalz.no-ip.info
    250-PIPELINING
    250-SIZE 10240000
    250-VRFY
    250-ETRN
    250-STARTTLS
    250-ENHANCEDSTATUSCODES
    250-8BITMIME
    250 DSN
    mail from:
    250 2.1.0 Ok
    rcpt to:
    250 2.1.5 Ok
    data
    354 End data with .
    Esse e um e-mail de teste
    .
    250 2.0.0 Ok: queued as 0AFB569DE
    quit
    221 2.0.0 Bye
    Connection closed by foreign host.


    enquanto isso no syslog...

    Jan 19 14:04:07 mailserver postfix/smtpd[2205]: connect from localhost[127.0.0.1]
    Jan 19 14:05:31 mailserver postfix/smtpd[2205]: 0AFB569DE: client=localhost[127.0.0.1]
    Jan 19 14:05:49 mailserver postfix/cleanup[2208]: 0AFB569DE: message-id=
    Jan 19 14:05:49 mailserver postfix/qmgr[2013]: 0AFB569DE: from=, size=413, nrcpt=1 (queue active)
    Jan 19 14:05:49 mailserver postfix/local[2210]: 0AFB569DE: to=, relay=local, delay=49, delays=49/0.03/0/0.04, dsn=5.1.1, status=bounced (unknown user: "william")
    Jan 19 14:05:49 mailserver postfix/cleanup[2208]: 3337B69E0: message-id=
    Jan 19 14:05:49 mailserver postfix/qmgr[2013]: 3337B69E0: from=, size=2300, nrcpt=1 (queue active)
    Jan 19 14:05:49 mailserver postfix/bounce[2211]: 0AFB569DE: sender non-delivery notification: 3337B69E0
    Jan 19 14:05:49 mailserver postfix/qmgr[2013]: 0AFB569DE: removed
    Jan 19 14:05:49 mailserver postfix/local[2210]: 3337B69E0: to=, relay=local, delay=0.04, delays=0.02/0/0/0.02, dsn=5.1.1, status=bounced (unknown user: "william")
    Jan 19 14:05:49 mailserver postfix/qmgr[2013]: 3337B69E0: removed
    Jan 19 14:05:50 mailserver postfix/smtpd[2205]: disconnect from localhost[127.0.0.1]

    o usuario william@~ ja esta criado.. com a senha configurada etc..
  • Maggi
    mailserver:/home/fba# tail -f /var/log/syslog
    Jan 19 12:27:32 mailserver postfix/smtp[2223]: 183B969BD: to=, relay=none, delay=30, delays=0.02/0.03/30/0, dsn=4.4.1, status=deferred (connect to dominioficticio.com[92.242.140.6]:25: Connection timed out)
    Jan 19 12:30:28 mailserver postfix/anvil[2202]: statistics: max connection rate 2/60s for (smtp:55.1.1.14) at Jan 19 12:22:12
    Jan 19 12:30:28 mailserver postfix/anvil[2202]: statistics: max connection count 1 for (smtp:55.1.1.14) at Jan 19 12:21:28
    Jan 19 12:30:28 mailserver postfix/anvil[2202]: statistics: max cache size 1 at Jan 19 12:21:28
    Jan 19 12:33:31 mailserver postfix/qmgr[2011]: 183B969BD: from=, size=2285, nrcpt=1 (queue active)
    Jan 19 12:33:31 mailserver postfix/qmgr[2011]: F2BB769B6: from=, size=2290, nrcpt=1 (queue active)
    Jan 19 12:34:01 mailserver postfix/smtp[2229]: connect to dominioficticio.com[92.242.140.6]:25: Connection timed out
    Jan 19 12:34:01 mailserver postfix/smtp[2228]: connect to dominioficticio.com[92.242.140.6]:25: Connection timed out
    Jan 19 12:34:01 mailserver postfix/smtp[2229]: F2BB769B6: to=, relay=none, delay=2195, delays=2165/0.09/30/0, dsn=4.4.1, status=deferred (connect to dominioficticio.com[92.242.140.6]:25: Connection timed out)
    Jan 19 12:34:01 mailserver postfix/smtp[2228]: 183B969BD: to=, relay=none, delay=419, delays=389/0.12/30/0, dsn=4.4.1, status=deferred (connect to dominioficticio.com[92.242.140.6]:25: Connection timed out)
  • Maggi
    Fera, parabens pelo tutorial, foi o unico q eu consegui fazer funcionar, se tivesse como eu te daria um bejo na boca.
    Só que o meu envia, mas nao recebe... fica dando que o servidor fechou a conexao.. e quando eu dou find /home/gmail, ele nao tem as pastas criadas, eu ja refiz uma vez e nao deu certo ainda... o que sera q eu posso ta fazendo de errado..
  • Obrigado!
    Pode guardar o beijo na boca pra outra pessoa ;)

    Para criar os diretórios veja os passos onde você conecta por telnet e executa alguns comandos. Depois de os diretorios serem criados, você conseguira enviar e receber normalmente.
  • Gredio
    Show de bola, funcionou direitinho.
  • @Rubens,

    O comando executado no telnet não é para criar a caixa do usuário e sim criar a estrutura de diretórios do postfix. Só é preciso executar uma vez e qualquer usuário criado após o comando funciona normalmente.

    Agradecido pelo seu comentário e elogio!
    Abraço.
  • Rubens
    Excelente tutorial, parabéns.
    Tenho a seguinte dúvida: não teria como criar as caixas dos usuários de alguma outra forma ??, tipo, sem ter que ir no telnet para fazer isso, teria como no primeiro login do usuário ja criar automaticamente, via alguma adaptação por scripts ???

    Grato,
    Rubens.
  • Clovis,

    Pelo que deu pra perceber o postfix está tendo dificuldades em conectar-se ao banco de dados.
    Pode-se ver pela linha: Apr 18 10:18:30 servidor postfix/trivial-rewrite[3996]: warning: connect to mysql server 127.0.0.1: Access denied for user 'postfix'@'localhost' (using password: YES)

    O usuário postfix no MySQL pode não estar criado ou a senha estar incorreta...
    Sugiro que revise as configurações e tente novamente.

    Abraço.
  • Clovis
    nossa te mandei ontem uma pergunta e ja respondeu hoje
    agora vou te mandar tudo que descobri ate agora no servidor.
    e parabens amigo pra te falar a verdade o seu tutorial foi o melhor que eu consegui achar na net eu to com o debian lenny 5.

    amigo quando faço os comandos pop da ok
    telnet localhost pop3
    ok
    servidor:~# telnet 127.0.0.1 25
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    220 servidor.ncinformatica.net ESMTP Postfix (Debian/GNU)
    ok
    ehlo dominioficticio.com
    250-servidor.ncinformatica.net
    250-PIPELINING
    250-SIZE 10240000
    250-VRFY
    250-ETRN
    250-STARTTLS
    250-ENHANCEDSTATUSCODES
    250-8BITMIME
    250 DSN
    ok
    mais quando digito
    mail from:<teste@dominioficticio.com>

    o cursor verde vai pra linha de baixo e fica travado nao faz nada ja revisei tudo varias vezes ta tudo certo.
    e se eu tentar logar pelo squirrelmail ele retorna esse erro
    ERROR
    Unknown user or password incorrect.
    Go to the login page

    os usurarios estao no banco de dados tudo certinho o dominio tb
    acho que o problema e com o smtp acho que tem que remover e reinstalar de novo ja tentei executar os comandos e os certificados e continua o msm problema ja reiniciei o servidor e tudo mais nao consigo nada o que faço amigo?
    E por ultimo o comando
    tail -f /var/log/syslog
    o log e esse
    Apr 18 10:17:30 servidor postfix/master[2789]: warning: process /usr/lib/postfix/trivial-rewrite pid 3992 exit status 1
    Apr 18 10:17:30 servidor postfix/smtpd[3194]: warning: problem talking to service rewrite: Connection reset by peer
    Apr 18 10:17:30 servidor postfix/master[2789]: warning: /usr/lib/postfix/trivial-rewrite: bad command startup -- throttling
    Apr 18 10:18:30 servidor postfix/trivial-rewrite[3996]: warning: connect to mysql server 127.0.0.1: Access denied for user 'postfix'@'localhost' (using password: YES)
    Apr 18 10:18:30 servidor postfix/trivial-rewrite[3996]: fatal: mysql:/etc/postfix/virtual_redirecionamentos.cf(0,lock|fold_fix): table lookup problem
    Apr 18 10:18:31 servidor postfix/smtpd[3426]: warning: problem talking to service rewrite: Success
    Apr 18 10:18:31 servidor postfix/smtpd[3194]: warning: problem talking to service rewrite: Connection reset by peer
  • Clovis
    Amigo parabéns por este tutorial esta muito legal.

    gostaria de que me ajudase olha o que na no meu servidor http://201.25.238.233:8080/squirrelmail/

    acho que e o usuario do postfix que nao tem no mysql ta com usuario tudo certinho.
  • Caro Clovis,

    O erro apresentado no Squirrel é muito claro...
    O servidor POP/IMAP aparentemente não está executando, pois as conexões do Squirrel a ele estão sendo recusadas. Caso esteja executando, verifique a configuração inet_interfaces.

    Procure ler o Help do Postfix também, é muito útil quando aparece erros que não são esperados.
  • Gabriel Barbosa
    Beleza llamas!
    Já consegui configurar corretamente as caixas de e-mail... estou funcionando perfeitamente. O único problema que encontrei, acredito que para finalizar o servidor de e-mail é a comunicação do cliente de e-mail (outlook, thunderbird, etc.) com o servidor. Eu uso o thunderbird, e quando tento baixar e-mails da conta que criei aparece o erro de conexão com o pop3. Fiz o teste de telnet na porta 110 e funcionou beleza!
    Gostaria que me auxiliasse nisso!

    Obrigado!!!
  • Gabriel Barbosa
    Valeu Ilamas!
    Funcionou isso que voce me passou!
    Obrigado!

    Tô enfrentando agora um problema com as caixas de e-mail dos usuários. Tem como você explicar melhor a configuração do main.cf para elas usando Maildir, que segundo informações que obtive é melhor que o Mailbox.

    Desde já agradeço.
    Até mais!
  • @Gabriel Barbosa
    Quando instalou o Postfix, tem certeza de que não escolheu a opção "Local only" (ou Somente Local)? Caso tenha escolhido, o Postfix foi configurado para rodar somente em loopback, ou seja, localhost, que é 127.0.0.1.

    Dê uma olhada no arquivo main.cf do postfix e procure por inet_interfaces, veja se está setado como "all", se não estiver, mude para all, ficando assim:

    inet_interfaces = all

    Feito isso, deve funcionar como você quer :)
  • @Vitorjc
    Amigo, pelo que deu pra perceber é que não foi encontrado o usuário teste, como diz no seu log:
    Feb 17 09:26:18 mailserver postfix/local[5898]: 63F9465FA1: to=, relay=local, delay=23, delays=23/0.05/0/0.02, dsn=5.1.1, status=bounced (unknown user: “teste”)

    Tem certeza que o usuário foi criado corretamente?

    Logo, como o sistema não encontrou o usuário na base de dados, consequentemente ele não irá criar os diretórios corretamente.
    Experimente seguir novamente os passos para a criação de usuário e como sempre digo, evite copiar e colar. :)
  • Gabriel Barbosa
    Beleza Ilamas!
    Parabéns pelo tutorial! Está me ajudando bastante, assim como à muita gente. Bela iniciativa.

    Fiz todos os procedimentos e não estou conseguindo entrar por telnet na porta 25 de outra maquina, somente acessando pelo localhost. Já verifiquei as configurações do firewall, que está liberado para acesso da rede interna. Usei o comando 'netstat -nap | grep 25' e o unico IP que está ouvindo na porta 25 é o 127.0.0.1.
    Qual será o problema???
    Desde já agradeço.

    Abraço!
  • Vitorjc
    Olá fiz todos os passos do tutorial!!! mais quando executo telnet na porta 25 e coloco os comando para enviar uma email no log gera uma coisa diferente:
    Feb 17 09:25:32 mailserver postfix/smtpd[5889]: connect from mailserver.int.novamerica.com.br[127.0.0.1]
    Feb 17 09:26:07 mailserver postfix/smtpd[5889]: 63F9465FA1: client=mailserver.int.novamerica.com.br[127.0.0.1]
    Feb 17 09:26:18 mailserver postfix/cleanup[5895]: 63F9465FA1: message-id=
    Feb 17 09:26:18 mailserver postfix/qmgr[5362]: 63F9465FA1: from=, size=442, nrcpt=1 (queue active)
    Feb 17 09:26:18 mailserver postfix/local[5898]: 63F9465FA1: to=, relay=local, delay=23, delays=23/0.05/0/0.02, dsn=5.1.1, status=bounced (unknown user: "teste")
    Feb 17 09:26:18 mailserver postfix/cleanup[5895]: BFE2665FB5: message-id=
    Feb 17 09:26:18 mailserver postfix/qmgr[5362]: BFE2665FB5: from=, size=2376, nrcpt=1 (queue active)
    Feb 17 09:26:18 mailserver postfix/bounce[5899]: 63F9465FA1: sender non-delivery notification: BFE2665FB5
    Feb 17 09:26:18 mailserver postfix/qmgr[5362]: 63F9465FA1: removed
    Feb 17 09:26:18 mailserver postfix/local[5898]: BFE2665FB5: to=, relay=local, delay=0.13, delays=0.02/0/0/0.11, dsn=2.0.0, status=sent (delivered to command: /usr/bin/procmail -a "$EXTENSION" DEFAULT=$HOME/Maildir/ MAILDIR=$HOME/Maildir/)
    Feb 17 09:26:18 mailserver postfix/qmgr[5362]: BFE2665FB5: removed
    Feb 17 09:26:21 mailserver postfix/smtpd[5889]: disconnect from mailserver.int.novamerica.com.br[127.0.0.1]

    e quando eu tento dar um telnet na porta 110 do POP ele me dá o seguinte erro!!!
    root@mailserver:~# telnet localhost 110
    Trying 127.0.0.1...
    Connected to mailserver.int.novamerica.com.br.
    Escape character is '^]'.
    +OK Hello there.
    user teste@int.novamerica.com.br
    +OK Password required.
    pass vitor00
    -ERR chdir int.novamerica.com.br/teste/ failed
    Connection closed by foreign host.
    --- Log!!!
    Feb 17 09:28:33 mailserver pop3d: Connection, ip=[::ffff:127.0.0.1]
    Feb 17 09:28:58 mailserver pop3d: chdir int.novamerica.com.br/teste/: No such file or directory
blog comments powered by Disqus