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) 


Configurando férias no PostfixAdmin

Existem uma porção de boas razões para não usar uma resposta automática. Um dos motivos é que a maior parte da correspondência que recebemos é spam e os remetentes usam endereços forjados. Neste caso você estará enviando notícias para remetentes que não enviaram a mensagem ou você entope sua fila (queue) de deferidos com mensagens que não podem ser entregues. Com frequência existem outros problemas como entregas múltiplas ou o perigo de loops infinitos. O uso de avisos de férias apresenta riscos...

apt-get install libdbi-perl libdbd-mysql-perl libmail-sendmail-perl libemail-valid-perl libmime-perl libmime-charset-perl libmime-encwords-perl
addgroup --gid 65501 vacation
useradd -c "Virtual Vacation" -d /nonexistent -u 65501 -g 65501 -s /sbin/false vacation
mkdir /var/spool/vacation
cd /var/spool/vacation/
cp /usr/share/doc/postfixadmin/VIRTUAL_VACATION/vacation.pl.gz .
gunzip vacation.pl.gz
cp vacation.pl vacation.pl.original
wget -U NoSuchBrowser/1.0 http://www.numaboa.com/debian/vacation.2211.patch.txt
patch -p0 < vacation.2211.patch.txt
sed -i "s/my \$db_type = 'Pg/#my \$db_type = 'Pg/" vacation.pl
sed -i "s/#my \$db_type = 'mysql/my \$db_type = 'mysql/" vacation.pl
sed -i "s/db_host = ''/db_host = 'localhost'/" vacation.pl
sed -i "s/db_username = 'vacation/db_username = 'postfix/" vacation.pl
sed -i "s/db_password = ''/db_password = 'pfix_senha'/" vacation.pl
sed -i "s/smtp_server = 'localhost'/smtp_server = 'localhost:10025'/" vacation.pl
chown -R vacation:vacation /var/spool/vacation
chmod 750 vacation.pl

info Veja o patch baixado: vacation.2211.patch.

Colocamos uma entrada em /etc/postfix/transport que enviará a correspondência para o script de férias. Este é um nome de (sub)domínio fictício. Ele não precisa ser configurado no DNS:

vi /etc/postfix/transport

e insira:

autoreply.exemplo.com   vacation:
vi /etc/postfix/master.cf

e insira (logo abaixo do transporte do dovecot é um bom lugar):

vacation  unix  -       n       n       -       -       pipe 
     flags=Rq user=vacation argv=/var/spool/vacation/vacation.pl -f ${sender} -- ${recipient}

Depois:

postmap /etc/postfix/transport
postconf -e "transport_maps = hash:/etc/postfix/transport"
postconf -e "vacation_destination_recipient_limit = 1"
LINUX2

Agora vamos configurar o PostfixAdmin para usar esta facilidade:

sed -i "s/vacation'] = 'NO/vacation'] = 'YES/" /usr/share/postfixadmin/config.inc.php

Para mudar suas configurações de Auto Resposta, um usuário vai poder logar em:

https://nome_do_host.exemplo.com/postFixadmiNx/users

Entretanto, podemos evitar que usuários façam login no PostfixAdmin adicionando um plugin PostfixAdmin no SquirrelMail (pule para a próxima seção para instalá-lo e depois volte para cá). Chame https://nome_do_host.exemplo.com/mail. Enquanto estiver testando não se preocupe se receber respostas duplicadas de Out of Office (estou de férias) porque vamos arrumar isto um pouco mais tarde. Teste fazendo login na conta teste e configurando-a. Lembre-se de que a base de dados só registra os remetentes que já viu de modo que apenas uma mensagem seja enviada para cada remetente. Para limpar o cache e começar de novo, volte das suas férias escolhendo Auto Response->Coming Back e depois novamente Auto Response->Going Away. Use o phpMyAdmin para inspecionar a base de dados à medida em que for fazendo suas modificações.

Agora que as férias estão funcionando, considere desligá-las para que ninguém possa usá-las. Primeiro use https://nome_do_host.exemplo.com/phpmyadmiNx para certificar-se de que não há entradas na tabela vacation (férias) e de que não há aliases que enviem mensagens para @autoreply.exemplo.com (em outras palavras, ninguém pode estar usando as férias), depois:

sed -i "s/vacation'] = 'YES/vacation'] = 'NO/" /usr/share/postfixadmin/config.inc.php
sed -i "s/Vacation = true/Vacation = false/" /usr/share/squirrelmail/plugins/postfixadmin/config.php

Instalar o plugin postfixadmin no SquirrelMail

Existem diversas versões deste plugin. Eu peguei o do CodePoets/Pale Purple. O plugin permite que os usuários alterem sua senha, editem forwarding e habilitem mensagens de férias através da interface SquirrelMail. No entanto, diferente do usuário do PostfixAdmin, usuários SquirrelMail não podem impedir a entrega para caixas postais locais quando fazem um forward. Uma vez instalado, você deveria dar uma olhada no config.php para se familiarizar com as opções.

pear channel-update pear.php.net
pear install MDB2-2.4.1
pear install MDB2_Driver_mysql-1.4.1
apt-get install subversion
cd /usr/local/src
svn -r 33 co http://squirrelmail-postfixadmin.palepurple.co.uk/svn postfixadmin-plugin
cd postfixadmin-plugin/tags
cp -r squirrelmail-postfixadmin-0.4.3/ /usr/share/squirrelmail/plugins/
mv /usr/share/squirrelmail/plugins/squirrelmail-postfixadmin-0.4.3 /usr/share/squirrelmail/plugins/postfixadmin
cd /usr/share/squirrelmail/plugins/
chown -R root:root postfixadmin
cd postfixadmin
cp config.php.sample config.php
sed -i "s/postgres/mysql/" config.php
sed -i "s/xxxxx/pfix_senha/" config.php
sed -i "s/autoreply.my.domain.com/autoreply.exemplo.com/" config.php
wget -U NoSuchBrowser/1.0 http://www.numaboa.com/debian/postfixadmin.wording.patch.txt
cp postfixadmin_forward.php postfixadmin_forward.php.original
patch -p0 < postfixadmin.wording.patch.txt
squirrelmail-configure

info Veja o patch baixado: postfixadmin.wording.patch.

Depois instale o plugin (os plugins podem estar em outra ordem):

8. Plugins
 Plugins
  Installed Plugins
   1. amavisnewsql
   2. quota_usage
   3. timeout_user
   4. postfixadmin

S Save data
Q Quit<

Agora os usuários não precisam mais se logar no PostfixAdmin para alterar a senha, indicar forwarding ou habilitar as férias. Agora eles possuem funções similares no SquirrelMail (na página de opções - Options).

Chame https://nome_do_host.exemplo.com/mail. Se você desligou as mensagens de férias no PostfixAdmin, então também precisa desligá-las no plugin postfixadmin do SquirrelMail. Você deve usar https://nome_do_host.exemplo.com/phpmyadmiNx para se assegurar de que NÃO HÁ entradas habilitadas na tabela vacation. Também não deve haver registros na tabela vacation_notification ou aliases na tabela alias que enviem mensagens para @autoreply.exemplo.com:

sed -i "s/vacation'] = 'YES/vacation'] = 'NO/" /usr/share/postfixadmin/config.inc.php
sed -i "s/Vacation = true/Vacation = false/" /usr/share/squirrelmail/plugins/postfixadmin/config.php

Para ligar novamente as férias:

sed -i "s/vacation'] = 'NO/vacation'] = 'YES/" /usr/share/postfixadmin/config.inc.php
sed -i "s/Vacation = false/Vacation = true/" /usr/share/squirrelmail/plugins/postfixadmin/config.php

Informações adicionais