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) 


Quando adicionamos um usuário no PostfixAdmin, também precisamos criar um perfil no SquirrelMail. Além disto, queremos poder criar e manipular o limite de espaço (quota) quando necessário. Estes dois patches nos permitem fazer isto:

cd /usr/share/postfixadmin/
wget -U NoSuchBrowser/1.0 http://www.numaboa.com/debian/edit-mailbox.patch.v2.txt
wget -U NoSuchBrowser/1.0 http://www.numaboa.com/debian/create-mailbox.v2.patch.txt

cp create-mailbox.php create-mailbox.php.original
cp edit-mailbox.php edit-mailbox.php.original
patch -p0 < edit-mailbox.patch.v2.txt
patch -p0 < create-mailbox.v2.patch.txt

cd /usr/sbin
wget -U NoSuchBrowser/1.0 http://www.numaboa.com/debian/mail_profile.sh.txt
mv mail_profile.sh.txt mail_profile.sh
chmod +x mail_profile.sh
wget -U NoSuchBrowser/1.0 http://www.numaboa.com/debian/quotaedit.sh.txt
mv quotaedit.sh.txt quotaedit.sh
chmod +x quotaedit.sh

info Veja os scripts baixados: edit mailbox, create mailbox, mail profile e quota edit.

Para permitir que o usuário www-data possa executar estes scripts, você precisa rodar

visudo

e, no fim da página, adicionar o seguinte (observe nosso nome de host):

www-data nome_do_host=NOPASSWD: /usr/sbin/mail_profile.sh
www-data nome_do_host=NOPASSWD: /usr/sbin/quotaedit.sh

Este é um outro patch que resolve um problema onde itens do menu drop down desaparecem. Ele simplesmente adiciona umas poucas quebras de linha nos lugares certos.

cd /usr/share/postfixadmin/templates
wget -U NoSuchBrowser/1.0 http://www.numaboa.com/debian/postfixadmin.menu.patch.txt
cp menu.php menu.php.original
patch -p0 < postfixadmin.menu.patch.txt

info Veja o patch baixado.

Se tudo estiver OK, chame https://nome_do_host.exemplo.com/postFixadmiNx/setup.php no browser e se adicione como Super Admin. Você não está adicionando uma caixa de correio para você mesmo, apenas um login. Executando este script, a estrutura inicial da base de dados é criada. Feche esta página web assim que o Super Admin for criado. Agora vamos mudar as tabelas para InnoDB, deletar um index redundante e adicionar um campo onde senhas em texto claro (não criptografadas) possam ser guardadas (isto é necessário se o cram-md5 for usado):

cd /usr/share/postfixadmin
wget -U NoSuchBrowser/1.0 http://www.numaboa.com/debian/convert.postfixadmin.tables.sql.v2211
mysql -u root -p < convert.postfixadmin.tables.sql.v2211

info Veja o patch baixado.

Entre senha_do_root para completar o último comando. Não queremos visitar o setup.php novamente:

mv setup.php setup.php.txt

Agora podemos logar como Super Admin em https://nome_do_host.exemplo.com/postFixadmiNx/. Ainda temos que fazer mais configurações no Postfix antes de poder testar a entrega de emails. Passe pela segurança do apache com pfadmin_nome_usuário e pfadmin_senha. Clique em Domain List->New Domain e adicione o domínio primário (exemplo.com). Deixe as opções "Add default mail aliases:" e "Mail server is backup MX:" desmarcadas. Todos os domínios que você adicionar precisam ter um registro A ou um registro MX no DNS para o PostfixAdmin considerá-los válidos. No entanto, existe uma configuração no config.inc.php que permite desabilitar esta exigência (emailcheck_resolve_domain). Adicione qualquer outro domínio que você precisar. Apenas adicione domínios que guardarão mensagens localmente (falaremos sobre domínios de relay mais tarde). Se você clicar em Admin List->New Admin você pode adicionar admins 'normais' que apenas controlam domínios que você designar para eles, ou seja, não têm um controle completo sobre todos os domínios.

Você deve criar um admin 'normal' para você mesmo para usá-lo no dia a dia. Admins 'normais' vêem opções de menu diferentes. O link https://nome_do_host.exemplo.com/posFixadminx/ será usados pelos administradores. Os usuários podem alterar suas informações de encaminhamento (forward) e senhas em https://nome_do_host.exemplo.com/postFixadmiNx/users; no entanto, isto não será necessário depois que instalarmos um plugin no SquirrelMail.

Quando tivermos criado pelo menos um domínio, o próximo passo é adicionar uma caixa de correio para você mesmo. Se estiver logado como Super Admin, clique em 'Domain List', selecione um domínio e depois clique em 'Add Mailbox' no fim desta página. Isto pode ser trabalhoso se você tiver muitos usuários por que você teria que rolar até o fim da página para encontrar o link 'Add Mailbox'. Se você não for um Super Admin você simplesmente clica em 'Main' e depois em 'Add Mailbox'. Os check boxes "Active" e "Create Mailbox" precisam ser marcados. Observe que Username é apenas a parte local - você deve escolher @domínio da caixa drop down.

Crie um nome de usuário em letra minúscula. Esta será sua conta IMAP (e/ou POP3). É imperativo que nosso script mail_profile.sh rode perfeitamente quando uma caixa de correio for criada no PostfixAdmin; caso contrário, os usuários vão obter erros quando logarem no SquirrelMail, eles não serão inscritos na pasta Spam e as quotas não vão funcionar. Cheque para ver se sua caixa postal e um perfil no SquirrelMail foram criados:

ls -l /var/vmail/exemplo.com
ls -l /var/lib/squirrelmail/data

Saiba que, quando uma caixa postal for deletada através do PostfixAdmin, como precaução de segurança nós NÃO vamos deletar automaticamente os diretórios e os emails deste usuário. Você terá que remover tudo manualmente.

Agora você deveria criar um usuário comum "teste@exemplo.com" para usar nos testes de envio e recebimento de mensagens como usuário comum e não como admin. Neste ponto ainda precisamos configurar o Postfix para enviar emails para nossas caixas postais virtuais usando informação guardada na base de dados do PostfixAdmin. Comece fazendo o download e modificando os arquivos de dados de acesso do Postfix:

cd /etc/postfix
wget -U NoSuchBrowser/1.0 http://www.numaboa.com/debian/mysql_virtual_alias_maps.cf
wget -U NoSuchBrowser/1.0 http://www.numaboa.com/debian/mysql_virtual_domains_maps.cf
wget -U NoSuchBrowser/1.0 http://www.numaboa.com/debian/mysql_virtual_mailbox_maps.cf
sed -i 's/password = postfix/password = pfix_password/' mysql_virtual_alias_maps.cf
sed -i 's/password = postfix/password = pfix_password/' mysql_virtual_domains_maps.cf
sed -i 's/password = postfix/password = pfix_password/' mysql_virtual_mailbox_maps.cf
chmod 640 mysql_*
chown root:postfix mysql_*

info Veja os scripts baixados: mysql virtual alias maps, mysql virtual domains maps e mysql virtual mailbox maps.

Precisamos tirar nosso nome de domínio de $mydestination por que nosso domínio será listado logo mais como um domínio de caixa postal virtual - você não pode ter um domínio em mais de uma classe de endereço:

cp /etc/postfix/main.cf /etc/postfix/main.cf-domain
postconf -e "mydestination = nome_do_host.exemplo.com, localhost.exemplo.com, localhost"

Agora faça com que o Postfix use os arquivos de dados MySQL (assim como a entrega Dovecot - que ainda precisa de configuração):

touch /etc/postfix/virtual
postmap /etc/postfix/virtual
cp /etc/postfix/virtual /etc/postfix/amavis_virtual
postmap /etc/postfix/amavis_virtual
postconf -e "virtual_minimum_uid = 6060"
postconf -e "virtual_gid_maps = static:6060"
postconf -e "virtual_uid_maps = static:6060"
postconf -e "virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf, hash:/etc/postfix/virtual"
postconf -e "virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf"
postconf -e "virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf"
postconf -e "virtual_transport = dovecot"
postconf -e "virtual_mailbox_base = /var/vmail/"
postconf -e "dovecot_destination_concurrency_limit = 2"
postconf -e "dovecot_destination_recipient_limit = 1"

Note que foi usado proxy:mysql, o proxymap(8). Quando o proxymap(8) é usado, as alterações feitas nas tabelas do MySQL podem não ser reconhecidas imediatamente. Durante os testes, se quiser, você pode tirar proxy: para evitar frustrações e confusões. Se não fizer isto, você pode alternativamente recarregar o Postfix para que as alterações sejam reconhecidas mais cedo.

Informações adicionais