O Dovecot usa vários arquivos para dividir as operações, porém, usaremos uns 4. Execute os comandos abaixo e cole o conteúdo da config no arquivo principal do Dovecot:
# mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.save
# vim /etc/dovecot/dovecot.conf
##
## Dovecot config file
##
protocols = imap pop3 lmtp sieve
auth_mechanisms = plain login
passdb {
driver = sql
args = /etc/dovecot/dovecot_mysql.conf
}
userdb {
driver = prefetch
}
userdb {
driver = sql
args = /etc/dovecot/dovecot_mysql.conf
}
mail_location = maildir:/home/vmail/%d/%n
first_valid_uid = 101
#last_valid_uid = 0
first_valid_gid = 12 # Se o grupo mail tiver um GID diferente de 12 mude esse valor aqui.#last_valid_gid = 0
#mail_plugins =
mailbox_idle_check_interval = 30 secs
maildir_copy_with_hardlinks = yes
service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
port = 993
ssl = yes
}
}
service pop3-login {
inet_listener pop3 {
port = 110
}
inet_listener pop3s {
port = 995
ssl = yes
}
}
service lmtp {
unix_listener lmtp { #mode = 0666
}
}
service imap {
vsz_limit = 256M
}
service pop3 {
}
service auth {
unix_listener auth-userdb {
mode = 0666
user = vmail
group = mail
}
# Tudo isso abaixo deve estar em apenas uma linha:
password_query = SELECT username as user, password, concat('/home/vmail/', maildir) as userdb_home, concat('maildir:/home/vmail/', maildir) as userdb_mail, 101 as userdb_uid, 12 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
# Tudo isso abaixo deve estar em apenas uma linha. Se o grupo mail for diferente de 12 troque no trecho "12 AS gid,":
user_query = SELECT concat('/home/vmail/', maildir) as home, concat('maildir:/home/vmail/', maildir) as mail, 101 AS uid, 12 AS gid, CONCAT('*:messages=10000:bytes=', quota) as quota_rule FROM mailbox WHERE username = '%u' AND active = '1'
Criando o arquivo para tratar os e-mails marcados como SPAM. Este arquivo é um filtro que pode ser usado com um antispam configurado em um proxy de e-mail ou uma solução paga:
# mkdir /home/sieve
# vim /home/sieve/globalfilter.sieve
require "fileinto";
if exists "X-Spam-Flag" {
if header :contains "X-Spam-Flag" "NO" {
} else {
fileinto "Spam";
stop;
}
}
if header :contains "subject" ["***SPAM***"] {
fileinto "Spam";
stop;
}
Por fim, execute:
# chown -R vmail:mail /home/sieve
# service dovecot restart
# chkconfig dovecot on
Testando o servidor
Restarte o Postfix e Dovecot e configure o seu cliente de e-mail, ou Webmail (não coloquei Webmail aqui no tutorial, porque há vários tutorias sobre isso aqui mesmo no VOL).
Execute o comando:
# tail -f /var/log/maillog
E verifique se está tudo bem.
É necessário configurar um reverso para que alguns servidores não rejeitem a sua mensagem ou marquem como spam.
- Como configuro um reverso?
Não perca tempo, ligue para sua operadora do link e peça.
Configurei o meu reverso e depois fui avisado pelo registro.br que o reverso não seria publicado caso eu não cadastrasse meu bloco. Então, é mais fácil ligar para a sua operadora.
Acesse o site http://www.mxtoolbox.com/ e faça um teste no seu servidor de e-mail se ele estiver acessível via Internet.
[5] Comentário enviado por ronilson em 30/11/2012 - 15:17h
Pessoal, um amigo executou essa mesma instalação, porém o dele os email não eram recebidos pelos usuários, nos logs peguei o seguinte:
dovecot: dict: Error: Can't open configuration file /etc/dovecot/dovecot-dict-quota.conf: Permission denied
O Dovecot não tinha permissão para ler o arquivo, no caso dele foi apenas dar permissão para isso e o server funcionou perfeitamente.
[7] Comentário enviado por ronilson em 02/12/2012 - 22:55h
No caso do apache pode ser o configuração do Directory , verifique se na configuração do apache tem algo assim:
<Directory ...
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
Assim ele está negando para todos, troque o Deny na última linha para Allow.
[8] Comentário enviado por mineiro3555 em 03/12/2012 - 12:28h
[7] Comentário enviado por ronilson em 02/12/2012 - 22:55h:
No caso do apache pode ser o configuração do Directory , verifique se na configuração do apache tem algo assim:
<Directory ...
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
Assim ele está negando para todos, troque o Deny na última linha para Allow
Ja esta com permissao liberada mas mesmo assim continua dando o erro.
[10] Comentário enviado por mineiro3555 em 03/12/2012 - 13:06h
Galera consegui entrar no postfixadmin.Tive que desativar o SElinux.
Soh que agora quando vou entrar no postfixadmin da este erro:
Running software:
PHP version 5.3.3
Apache/2.2.15 (CentOS)
Checking for dependencies:
Magic Quotes: Disabled - OK
Depends on: presence config.inc.php - OK
Checking $CONF['configured'] - OK
Depends on: MySQL 3.23, 4.0 - OK
Depends on: MySQL 4.1 - OK (change the database_type to 'mysqli' in config.inc.php!!)
Depends on: PostgreSQL - OK (change the database_type to 'pgsql' in config.inc.php!!)
Testing database connection - OK - mysql://postfix:xxxxx@localhost/postfix
Depends on: session - OK
Depends on: pcre - OK
Error: Depends on: multibyte string - NOT FOUND
To install multibyte string support, install php5-mbstring
Depends on: IMAP functions - OK
Please fix the errors listed above.
O que pode ser? ja tentei instalar esse php5-mbstring
[11] Comentário enviado por ronilson em 03/12/2012 - 13:22h
Você executou o yum install php-mbstring e ele ainda está pedindo? Sé já estiver instalado reinicia o apache. Executa o comando rpm -qa php-mbstring e vê o que o rpm retorna.
[14] Comentário enviado por ronilson em 03/12/2012 - 15:27h
Criou todos os arquivos para o banco mysql? Faz o seguinte, dá um tail -f /var/log/maillog e reinicia o postfix, pega os erros que o log exibir e cola aqui.
[15] Comentário enviado por ronilson em 03/12/2012 - 16:11h
Pessoal, a formatação da página quebrou a configuração do /etc/postfix/master.cf
Reparem que tem um espaço no começo da linha abaixo de "dovecot unix" e "vacation unix"
## DOVECOT ##
dovecot unix - n n - - pipe
"Espaço aqui"flags=DRhu user=vmail:mail argv=/usr/libexec/dovecot/deliver -d $(recipient)
#VACATION MAIL
vacation unix - n n - - pipe
"Espaço aqui"flags=Rq user=vacation argv=/var/spool/vacation/vacation.pl -f ${sender} -- ${recipient}
[16] Comentário enviado por mineiro3555 em 03/12/2012 - 17:19h
Esse arquivo do postfix main,cf e master.cf eu posso soh tirar o que ta no original e colocar do jeito que ta?
pq to fazendo isso e ta dando o erro.
no meu dovecot tbm quando altero e coloco igual do que esta no tutorial na hora de reiniciar o serviço tambem da erro.
[17] Comentário enviado por ronilson em 03/12/2012 - 17:27h
Dá uma olhada nos logs e posta aqui, pode só adicionar o que está no postfix também, o master.cf é para adicionar e não substituir.
para pegar o que está acontecendo, abra um terminal e digite o comando tail -f /var/log/maillog em outro terminal reinicie o postfix, copie e cole aqui o que for exibido pelo log
[19] Comentário enviado por mineiro3555 em 03/12/2012 - 19:55h
Ja no dovecot substitui o arquivo como no tutorial e na hora de reinicar da isso:
Stopping Dovecot Imap: [FAILED]
Starting Dovecot Imap: doveconf: Fatal: Error in configuration file /etc/dovecot/dovecot.conf line 87: ssl_cert: Can't open file /etc/pki/tls/certs/mail.seu_dominio.com.br.crt: No such file or directory
[FAILED]
[21] Comentário enviado por mineiro3555 em 03/12/2012 - 20:21h
Agora quando entro no postfixadmin e vou criar a conta de usuario, a conta eh criada mas da a mensagem que Nao foi possivel enviar a mensagem e Conta de email criada, mas nenhum (ou apenas alguns) dos subdiretórios pré-definidos puderam ser criados
[22] Comentário enviado por ronilson em 03/12/2012 - 20:26h
O artigo perdeu a formatação de espaços, deve ser por isso que está apresentando problemas, na linha debugging no main.cf coloque nessa formatação retirando as aspas.
[23] Comentário enviado por mineiro3555 em 03/12/2012 - 20:47h
Comentei essas linhas e os serviços tao rodando..soh na hora que crio as contas no postfixadmin que da que a mensagem nao pode ser enviada e que Nao foi possivel enviar a mensagem e Conta de email criada, mas nenhum (ou apenas alguns) dos subdiretórios pré-definidos puderam ser criados
[24] Comentário enviado por ronilson em 03/12/2012 - 21:53h
Estranho, me passa o log de quando vc tenta criar uma conta, me passa seu email também que irei mandar os arquivos de conf (main.cf, master.cf e dovecot mais o filtro)
[31] Comentário enviado por will__m em 09/08/2013 - 16:56h
Muito bom seu artigo Ronilson, gostei muito.
Eu estou configurando um novo servidor de e-mails e to fazendo alguns testes aqui.
A diferença é q estou autenticando no AD, ta tudo funcionando, só estou tendo um problema para utilizar o Plugin do Dovecot Sieve.
Quando uso o dovecot-lda, ou deliver, se utilizar ele direto /usr/libexec/dovecot/deliver -d "usuário" envia normal as msgs, mas quando envio pelo postfix, dá este erro no log:
sender non-delivery notification : msgID
From=<>, size=2530. .....
Fatal: destination user parameter (-d user) not given.
A msg é removida da fila e não entregue.
Verifiquei inclusive no seu artigo como deve ficar o master.cf, deixei igual, mas continua dando erro, tentei de várias outras formas, mas não consegui resolver.
O estranho é que só acontece quando envio msg do meu domínio para o meu domínio, quando envio p/ domínios externos, vai normal.
Vc poderia me dar alguma ideia do que poderia estar acontecendo.
[32] Comentário enviado por ronilson em 09/08/2013 - 19:24h
Will, está utilizando que comando para enviar via postfix? Tentou conectar um cliente de email?
Ele recebe emails de outros dominios?
Coloca o log de envio para seu proprio dominio e para outro dominio.
[33] Comentário enviado por will__m em 12/08/2013 - 10:46h
Bom dia Ronilson,
Desculpe não resp. antes, só consegui abrir aqui hj.
Estou montando por enquanto um servidor somente para testes, antes da instalação de produção, não está publicado no dns externo, vou colocar outro domínio dpois.
Segue logs:
Domínios externo, "ta dando time out pq não ta on, mas tenta mandar":
Aug 12 10:21:39 mail postfix/smtpd[29563]: connect from mail.foobar.br[1.1.2.3]
Aug 12 10:21:39 mail postfix/smtpd[29563]: B3B1712E93: client=mail.foobar.br[1.1.2.3], sasl_method=PLAIN, sasl_username=teste
Aug 12 10:21:39 mail postfix/cleanup[29567]: B3B1712E93: message-id=<5208E163.50002@foobar.br>
Aug 12 10:21:39 mail postfix/qmgr[28640]: B3B1712E93: from=<teste@foobar.br>, size=537, nrcpt=1 (queue active)
Aug 12 10:21:40 mail postfix/smtpd[29563]: disconnect from mail.foobar.br[1.1.2.3]
Aug 12 10:22:20 mail postfix/smtp[29568]: connect to example.com[93.184.216.119]:25: Connection timed out
Aug 12 10:22:20 mail postfix/smtp[29568]: B3B1712E93: to=<tst@example.com>, relay=none, delay=41, delays=0.19/0.03/41/0, dsn=4.4.1, status=deferred (connect to example.com[93.184.216.119]:25: Connection timed out)
Aug 12 10:24:09 mail postfix/smtpd[29616]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
Aug 12 10:24:09 mail postfix/smtpd[29616]: connect from mail.foobar.br[1.1.2.3]
Aug 12 10:24:10 mail postfix/smtpd[29616]: 262C812EF1: client=mail.foobar.br[1.1.2.3], sasl_method=PLAIN, sasl_username=teste
Aug 12 10:24:10 mail postfix/cleanup[29620]: 262C812EF1: message-id=<5208E1F9.20901@foobar.br>
Aug 12 10:24:10 mail postfix/qmgr[28640]: 262C812EF1: from=<teste@foobar.br>, size=543, nrcpt=1 (queue active)
Domínio local "de teste@foobar.br, p/ joao@foobar.br":
Aug 12 10:24:10 mail postfix/local[29621]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
Aug 12 10:24:10 mail postfix/local[29621]: 262C812EF1: to=<joao@foobar.br>, relay=local, delay=0.27, delays=0.15/0.03/0/0.09, dsn=5.3.0, status=bounced (command line usage error. Command output: lda(joao): Fatal: destination user parameter (-d user) not given )
Aug 12 10:24:10 mail postfix/cleanup[29620]: 5F6F212EF4: message-id=<20130812132410.5F6F212EF4@mail.foobar.br>
Aug 12 10:24:10 mail postfix/smtpd[29616]: disconnect from mail.foobar.br[1.1.2.3]
Aug 12 10:24:10 mail postfix/qmgr[28640]: 5F6F212EF4: from=<>, size=2401, nrcpt=1 (queue active)
Aug 12 10:24:10 mail postfix/bounce[29623]: 262C812EF1: sender non-delivery notification: 5F6F212EF4
Aug 12 10:24:10 mail postfix/qmgr[28640]: 262C812EF1: removed
Aug 12 10:24:10 mail postfix/local[29621]: 5F6F212EF4: to=<teste@foobar.br>, relay=local, delay=0.21, delays=0.11/0/0/0.09, dsn=5.3.0, status=bounced (command line usage error. Command output: lda(teste): Fatal: destination user parameter (-d user) not given )
Aug 12 10:24:10 mail postfix/qmgr[28640]: 5F6F212EF4: removed
Em ambos utilizo um cliente local, thunderbird, testo também com webmail que ao enviar dá o mesmo problema, na linha de comando quando coloco ./deliver -f user -d destinatário, a msg chega mas sem o remetente. Estranho pq sem o deliver no main.cf, ele envia e recebe normal.
[34] Comentário enviado por ronilson em 12/08/2013 - 13:25h
Fala Will, blz?
Cara, aparentemente o postfix não encontra os usuários, quando vc tenta enviar por smtp autenticado ele deve retornar erro ao procurar usuário e senha, faz esse teste, cria 2 usuários locais no Linux e tenta enviar e receber por esses usuários, se conseguir o problema é esse mesmo.
Teste de a autenticação no AD está OK. O system-config-authentication pode te dar uma ajuda com isso.
Outra coisa Will, o tuto é em cima de autentica via mysql, no caso é melhor seguir para autenticação em AD direto pelo sistema ou autenticar o Mysql no AD.
Abraço
[35] Comentário enviado por will__m em 12/08/2013 - 17:49h
Opa, blz Ronilson.
Acho que é isso msm, tava lendo no site do postfix: http://www.postfix.org/VIRTUAL_README.html
e tenho q fazer algumas adequações no main.cf p/ poder utilizar o AD.
Vou pelejar um pouco mais aqui e te falo se deu certo.
[36] Comentário enviado por ronilson em 12/08/2013 - 22:24h
Will, esse tuto geralmente que usa vai utilizar virtual mail host, se esse não for o seu caso abandona a autenticação via mysql e mata metade da configuração com o system-config-authentication.
[37] Comentário enviado por will__m em 13/08/2013 - 11:52h
Bom dia Ronilson,
Funcionou a entrega com o deliver, graças a Deus, nossa já tava quase desistindo msm, o problema é q no meu caso o pessoal quer como pré-requisito de instalação, o uso do AD para autenticar, por isso estou penando para configurar.
Agora estou com outro problema adaptar o plugin do Dovecot, Sieve para poder funcionar com os clientes que utilizam POP3, mas o pior já passou, até terminar os testes devo ter alguns desafios como este até chegar no ponto que a empresa quer, fico grato pela ajuda.
Obrigado mesmo seu artigo está me ajudando muito com algumas configurações importantes, é pq no meu casos estou utilizando várias referências para poder chegar no produto final que a empresa precisa, tanto que a referência do Postifix não bastou para que eu terminasse a configuração de Virtual users, sempre fica faltando algo que acaba sendo complementado por outros que assim como vc ajudam a esclarecer as dúvidas, e divulgar ainda mais os serviços Linux.