A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Linux

Debian + Postfix + PostfixAdmin + SquirrelMail

Sab

16

Mai

2009


01:19

(19 votos, média 4.53 de 5) 


Para configurar a 'entrega' Dovecot, pegue primeiro o arquivo global.sieve que contém instruções de como entregar spam na pasta Spam do usuário. Também precisamos criar um arquivo de log dovecot-deliver.log para podermos acompanhar como a entrega de emails está sendo feita:

mkdir /var/sieve
cd /var/sieve
wget -U NoSuchBrowser/1.0 http://www.numaboa.com/debian/global.sieve.txt
mv global.sieve.txt global.sieve
chown -R vmail:vmail /var/sieve
chmod -R 0700 /var/sieve
touch /var/log/dovecot-deliver.log
chown vmail:vmail /var/log/dovecot-deliver.log
cd /etc/logrotate.d/
wget -U NoSuchBrowser/1.0 http://www.numaboa.com/debian/deliver.logrotate.txt
mv deliver.logrotate.txt dovecot-deliver

info Veja os scripts baixados: global sieve e deliver logrotate.

Agora é preciso editar a entrada dovecot em master.cf. Também faremos um backup do master.cf original:

cp -i /etc/postfix/master.cf /etc/postfix/master.cf-17mai2009
vi /etc/postfix/master.cf

Localize o transporte maildrop atual e depois insira o transporte dovecot como mostrado:

maildrop  unix  -       n       n       -       -       pipe
  flags=ODRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}

dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient} -e
Depois recarregue o Postfix:

postfix stop
postfix start

Você deve receber uma mensagem de erro dizendo que os arquivos diferem (files differ). Execute o LINUX2 para corrigir isto. Neste ponto, precisamos configurar o Dovecot. Vamos fazer muitas alterações nos arquivos /etc/dovecot/dovecot.conf e /etc/dovecot/dovecot-sql.conf para que trabalhem adequadamente no nosso ambiente atual, por isto, ao invés de editá-los, baixe arquivos novos:

cd /etc/dovecot
mv dovecot.conf dovecot.conf.original
wget -U NoSuchBrowser/1.0 http://www.numaboa.com/debian/dovecot.conf.txt
mv dovecot.conf.txt dovecot.conf
sed -i 's/postmaster@example.tld/postmaster@exemplo.com/' dovecot.conf
chmod 0644 dovecot.conf
mv dovecot-sql.conf dovecot-sql.conf.original
wget -U NoSuchBrowser/1.0 http://www.numaboa.com/debian/dovecot-sql.conf.txt
mv dovecot-sql.conf.txt dovecot-sql.conf
sed -i 's/password=password/password=pfix_senha/' dovecot-sql.conf
chmod 0600 dovecot-sql.conf
wget -U NoSuchBrowser/1.0 http://www.numaboa.com/debian/dovecot-crammd5.conf.txt
mv dovecot-crammd5.conf.txt dovecot-crammd5.conf
sed -i 's/password=password/password=pfix_senha/' dovecot-crammd5.conf
chmod 0600 dovecot-crammd5.conf
/etc/init.d/dovecot restart

info Veja os scripts baixados: dovecot.conf, dovecot-sql.conf e dovecot-crammd5.conf.

Vamos recomeçar com tudo limpinho por que, de qualquer modo, precisamos nos certificar de que algumas coisas estejam funcionando depois de um reboot:

reboot
exit

Assim que o sistema estiver de volta, faça login e:

tail -f /var/log/mail.log

Agora vamos mandar uma mensagem através do sistema para ver se ela chega no nosso maildir. A esta altura você já deve ter um MUA configurado para usar este servidor como seu servidor de saída. Você também deve ser capaz de configurá-lo para que se conecte com o servidor IMAP usando seu nome de usuário (o endereço de email completo) e uma senha. Por padrão, o Dovecot não vai permitir que você se autentique no servidor IMAP passando uma senha em texto claro (não criptografada) via rede, por isto você precisa configurar seu MUA para usar SSL (TLS) na porta 993 (IMAP seguro). Acontece que ainda não configuramos o Postfix para usar SASL, por isto, no momento, será preciso usar a porta 25 como porta de saída do seu SMTP. Assumindo que você tenha tido sucesso ao criar um maildir para você mesmo (via interface do PostfixAdmin), envie uma mensagem para você mesmo e verifique se ela foi recebida. Use um tail no arquivo mail.log enquanto a mensagem é processada (chame o tail antes de enviar a mensagem e fique observando). Faça também um grep fatal /var/log/mail.log. Um sucesso deve ter o seguinte aspecto:

Mai 17 14:02:08 ns2 postfix/pipe[12517]: C2506E99C5: to=<teste@exemplo.com>, relay=dovecot, delay=0.19, delays=0.11/0.02/0/0.06, dsn=2.0.0, status=sent (delivered via dovecot service)

Se houver erro, ele precisa ser corrigido antes de continuar. Fizemos uma porção de alterações numa porção de arquivos. A probabilidade de algum detalhe ter escapado é grande, o que pode impedir a entrega de mensagens. É preciso conhecer os arquivos envolvidos e procurar identificar a ou as configurações incorretas. Alguma familiaridade com o Postfix também é muito bom, assim como conhecer comandos básicos do mailq, postsuper, qshape e postqueue. Lembre-se também que você tem o phpMyAdmin para analisar as bases de dados e para eventualmente fazer algumas alterações diretamente. Analise a base de dados 'postfix' para se acostumar com a estrutura dos dados. Talvez também seria conveniente criar uma conta IMAP para o usuário teste@exemplo.com e enviar uma mensagem para este endereço e depois verificar se ela foi recebida no maildir:

ls -al /var/vmail/exemplo.com/teste/new
cat /var/log/dovecot-deliver.log

Se você pode entregar mensagens para um usuário, seria uma boa idéia se familiarizar com o PostfixAdmin agora. Adicione alguns aliases e alguns domínios. Brinque com o software. O Postfix não vai mais usar /etc/aliases para os domínios virtuais, assim:

Você precisa criar aliases (ou caixas postais) para root, abuse, postmaster, webmaster, clamav e logcheck em exemplo.com

root@exemplo.com deve ter seus emails encaminhados para um endereço de usuário real (ele não deve ser uma caixa de correio, deve ser um alias). Se você não conseguir criar aliases ou caixas postais para mensagens geradas pelo sistema, o Dovecot vai saltar mensagens ou você vai acabar com mensagens perdidas em /var/mail/. Seria uma boa idéia ver o que você tem lá agora.

Configure seu MUA para buscar mensagens do servidor de email via IMAP SSL (TSL) na porta 993. Se você precisar usar POP3, use POP3 SSL (TLS) na porta 995. Clientes POP3 só serão capazes de buscar emails da pasta /new, o que significa que eles nunca poderão ver a pasta Spam, a não ser que se use o SquirrelMail. Por padrão, senhas inseguras em texto claro nas portas 110 (POP3) e 143 (IMAP) não são permitidas. Se precisar usar o POP3 e IMAP padrão, então será preciso adicionar a configuração "disable_plaintext_auth = no" em dovecot.conf. Alguns clientes podem querer usar CRAM-MD5 para se autenticar. Se este for o caso, você vai precisar chamar o phpMyAdmin e inserir uma senha em texto claro no campo 'clear' para estes usuários - isto só vai funcionar se você estiver usando o esquema proposto para a base de dados onde o campo 'clear' foi adicionado. Se você ainda não o fez, instale o certificado CA que criamos anteriormente no cliente teste. Se o certificado raiz não foi instalado como deve, podemos ter todo tipo de dor de cabeça.

Existem três scripts (de contribuição) que vêm com o PostfixAdmin. Estão no diretório /usr/share/doc/postfixadmin/ADDITIONS que são usados para deletar maildirs órfãos (endereços de email que você deleta no PostfixAdmin, mas onde os arquivos permanecem no sistema). Como mencionado anteriormente, não deletamos os maildirs automaticamente quando um usuário é removido. Como sugestão, deixe os arquivos órfãos parados por algum tempo. Um dos scripts fornecidos poderia deletar tudo se deixássemos - e isto pode não ser bom. Um dos outros dois, cleanupdirs.pl, parece ser bom, mas ainda assim não vamos permitir que delete os maildirs - só vamos usá-lo para indicar os diretórios órfãos. Também vamos trocar seu nome para maildircheck.

cp -i /usr/share/doc/postfixadmin/ADDITIONS/cleanupdirs.pl /usr/sbin/maildircheck
touch /var/log/maildircheck.log
sed -i "s|/home/vmail|/var/vmail|" /usr/sbin/maildircheck
sed -i "s/removed_maildirs.log/maildircheck.log/" /usr/sbin/maildircheck
sed -i "s/someuser/postfix/" /usr/sbin/maildircheck
sed -i "s/somepass/pfix_senha/" /usr/sbin/maildircheck
sed -i "s/      rmtree/#     rmtree/" /usr/sbin/maildircheck
sed -i "s/'\$to_delete'/\$to_delete/" /usr/sbin/maildircheck
sed -i "s/Need to delete/Orphaned/" /usr/sbin/maildircheck
chmod 700 /usr/sbin/maildircheck
cd /etc/logrotate.d
wget -U NoSuchBrowser/1.0 http://www.numaboa.com/debian/maildircheck.txt
mv maildircheck.txt maildircheck

info Veja o script baixado: maildircheck.

Observe que no código acima a linha 'rmtree' está comentada (anulada). Este é um ponto importante. Para testar, você precisa deletar um usuário teste através da interface PostfixAdmin e depois executar:

maildircheck

Se você deletar teste@exemplo.com, confira e garanta que o diretório de email NÃO foi deletado. Por exemplo, rode ls -l /var/vmail/exemplo.com/teste. Depois, adicione novamente o usuário. Se você insisitir e quiser usar este script para deletar os diretórios, você vai precisar tirar o "#" para 'descomentar' e linha 'rmtree'. Espero que o script funcione e que você não acabe deletando todas as caixas postais do sistema smile

Agora tenho um script opcional que deleta automaticamente as mensagens deixadas na pasta Spam de todos os usuários por mais de 24 dias. Você pode testá-lo (com menos dias) mudando temporariamente o número de dias (-mtime 0 = 1 day).

cd /etc/cron.daily
wget -U NoSuchBrowser/1.0 http://www.numaboa.com/debian/rmmailboxspam.txt
mv rmmailboxspam.txt rmmailboxspam
chmod +x rmmailboxspam

info Veja o script baixado: rmmailboxspam.

Gosto de bloquear a possibilidade de super administradores deletarem domínios. Isto é opcional e remove o link para 'del' o domínio:

sed -i "s|$PALANG\['del'\]|$PALANG\[''\]|" /usr/share/postfixadmin/templates/admin_list-domain.php

Para voltar a permitir esta tarefa, ou seja, se você precisar deletar um domínio com todas as suas caixas postais e aliases:

sed -i "s|$PALANG\[''\]|$PALANG\['del'\]|" /usr/share/postfixadmin/templates/admin_list-domain.php

Informações adicionais