Configuração · 5 min read · Sep 28, 2025

O SpamSnake Perfeito - Ubuntu Jaunty Jackalope - Página 5

17.11 Defina permissões para juntar tudo

chown -R postfix:www-data /var/spool/MailScanner   
chown -R postfix:www-data /var/lib/MailScanner   
chown -R postfix:www-data /var/spool/postfix/hold   
chmod -R ug+rwx /var/spool/postfix/hold   
chmod -R u+rwx,g+rx /var/spool/MailScanner/quarantine

Finalmente, certifique-se de reiniciar o MailScanner:

killall mailscanner
check_mailscanner

Teste a configuração:

spamassassin -x -D -p /opt/MailScanner/etc/spam.assassin.prefs.conf --lint

Verifique se há linhas como:

debug: bayes: Database connection established   
debug: bayes: found bayes db version 3   
debug: bayes: Using userid: 2

Você deve ver linhas aparecerem com DCC, Pyzor e Razor que dizem carregando plugin e, esperançosamente, sem erros.

Finalizando esta parte, precisamos adicionar tarefas cron que farão a limpeza/atualização, você provavelmente viu a mensagem sobre isso após o script de instalação do MailScanner terminar.

Primeiro, edite conf.php e defina ‘QUARANTINE_DAYS_TO_KEEP’ em conf.php e altere a seguinte linha em /usr/src/mailwatch-1.0.4/tools/db_clean para:

#!/usr/bin/php -q
require('/var/www/mailscanner/functions.php');

Instale o script de limpeza de quarentena:

cp /usr/src/mailwatch-1.0.4/tools/quarantine_maint.php /usr/bin/quarantine_maint.php   
cp /usr/src/mailwatch-1.0.4/tools/db_clean.php /usr/bin/db_clean.php   
chmod +x /usr/bin/quarantine_maint.php   
chmod +x /usr/bin/db_clean.php

Execute

crontab -e

e adicione o seguinte:

15 10 * * 2 /usr/bin/quarantine_maint.php --clean &> /dev/null
58 23 * * * /usr/bin/db_clean.php &> /dev/null

Desative o script cron instalado do mailscanner /etc/cron.daily/clean.quarantine (nota: faça isso apenas se o script clean.quarantine existir).

$disabled = 1; 

17.12 Reinicie o sistema

reboot

Verifique seu mail.log ( tail –f /var/log/mail.log) e você deve ver o seguinte:

Jun 13 12:18:23 hoshi MailScanner[26388]: MailScanner E-Mail Virus Scanner version 4.20-3 starting...   
Jun 13 12:18:24 hoshi MailScanner[26388]: Config: calling custom init function MailWatchLogging   
Jun 13 12:18:24 hoshi MailScanner[26388]: Initialising database connection   
Jun 13 12:18:24 hoshi MailScanner[26388]: Finished initialising database connection

Parabéns - agora você tem o MailScanner registrando no MySQL.

17.13 Teste a interface do MailWatch

Aponte seu navegador para http:///mailscanner/ - você deve ser solicitado a inserir um nome de usuário e senha - insira os detalhes do usuário da web do MailWatch que você criou anteriormente, e você deve ver uma lista das últimas 50 mensagens processadas pelo MailScanner.

Se você não conseguir ver os e-mails, pode ser necessário definir as seguintes permissões:

chgrp -R www-data /var/spool/MailScanner

Você pode ter que criar o seguinte para evitar um erro em um teste de lint:

mkdir /var/www/.spamassassin

17.14 Atualize a tabela de regras do SpamAssassin

O MailWatch mantém uma lista de todas as regras e descrições do SpamAssassin que são exibidas na página ‘Detalhe da Mensagem’ - para mostrar as descrições, você precisa executar o atualizador toda vez que adicionar novas regras ou atualizar o SpamAssassin. Clique no menu ‘Ferramentas/Links’ e selecione ‘Atualizar Descrições das Regras do SpamAssassin’ e clique em ‘Executar Agora’.

17.15 Atualize o banco de dados GeoIP

Altere esta linha em /var/www/mailscanner/geoip_update.php para ficar assim:

dbquery("LOAD DATA LOCAL INFILE 

*Nota: Certifique-se de que allow_url_fopen = On está definido em seu php.ini.

Clique no menu ‘Ferramentas/Links’ e selecione ‘Atualizar banco de dados GeoIP’ e clique em ‘Executar Agora’.

17.16 Correção para permitir curingas na Lista Branca/Lista Negra

Adicione o seguinte ao final da seção return 1 em seu /opt/MailScanner/lib/MailScanner/CustomFunctions/SQLBlackWhiteList.pm:

return 1 if $BlackWhite->{$to}{'*@'.$fromdomain};
return 1 if $BlackWhite->{$to}{'*@*.'.$fromdomain};
return 1 if $BlackWhite->{$todomain}{'*@'.$fromdomain};
return 1 if $BlackWhite->{$todomain}{'*@*.'.$fromdomain};
return 1 if $BlackWhite->{'default'}{'*@'.$fromdomain};
return 1 if $BlackWhite->{'default'}{'*@*.'.$fromdomain};

17.17 Correção para Operações de Mensagens Não Encontrarem Mensagens

Altere o seguinte no arquivo /var/www/mailscanner/do_message_ops.php:

$id = $Regs[1]; 

para

$id = str_replace("_", ".",$Regs[1]); 

17.18 Liberando Mensagens de Spam

Para permitir que o MailWatch libere mensagens de Spam sem que elas sejam processadas novamente, adicione 127.0.0.1 como um item da lista branca na interface MailWatch/List. Certifique-se de reiniciar o MailScanner após configurar essas opções. Abaixo está como minha entrada se parece.

| 127.0.0.1 | default | Delete |

17.19 Correção para Permitir Múltiplas Liberações de Mensagens em Operações de Mensagens

Edite /var/www/mailscanner/do_message_ops.php e faça as seguintes alterações:

   case 'F':
    $type='forget';
    break;
   case 'R':
    $type='release';
    break;
   default:
    continue;
    break;

Em seguida, encontre a seguinte seção e altere-a para ficar assim:

$itemnum = array($num);
   if ($type == 'release'){
      if($quarantined = quarantine_list_items($id,RPC_ONLY)) {
         $to = $quarantined[0]['to'];
       }
       echo "$id$type" . quarantine_release($quarantined, $itemnum, $to, RPC_ONLY) . "\n";
    } else {
     echo "$id$type" . quarantine_learn($items, $itemnum, $type, RPC_ONLY) . "\n";
     }
   }
  echo "\n";
      }
    }
  }
}
echo "  \n";

Em seguida, editamos o arquivo /var/www/mailscanner/functions.php e alteramos:

$fieldname[$f] = "Ops
S  H  F";

para

$fieldname[$f] = "Ops
S  H  F  R";

Em seguida, altere:

array_unshift($row, "  " ); 

Para:

array_unshift($row, "    "); 

Em seguida, encontre o bloco com a função javascript para lidar com botões de rádio. Adicione um terceiro valor assim:

echo "function SetRadios(p) {\n";
echo " var val;\n";
echo " if (p == 'S') {\n";
echo "  val = 0;\n";
echo " } else if (p == 'H') {\n";
echo "  val = 1;\n";
echo " } else if (p == 'F') {\n";
echo "  val = 2;\n";
echo " } else if (p == 'R') {\n";
echo "  val = 3;\n";
echo " } else if (p == 'C') {\n";
echo "  ClearRadios();\n";

Agora, adicione o texto para os rádios:

echo "  S";
echo "  H";
echo "  F";
echo "  R";

Finalmente, altere:

echo "

S = Spam   H = Ham   F = Forget\n";

para:

echo "

S = Spam   H = Ham   F = Forget   R = Release\n";

17.20 Patch para corrigir erro de autocommit ao parar o MailScanner

Edite a linha 80 do MailWatch.pm para ficar assim:

$dbh = DBI->connect("DBI:mysql:database=$db_name;host=$db_host", $db_user, $db_pass, {PrintError => 0, AutoCommit => 0}); 

*Nota: Isso desativa o autocommit quando se conecta, para que a linha de commit ao fechar não lance um erro.

18. Instale e Configure SPF

O pacote postfix-policyd-spf-perl depende dos módulos Perl Mail::SPF e NetAddr::IP.

Precisamos baixar o postfix-policyd-spf-perl de http://www.openspf.org/Software para o diretório /usr/src/ e instalá-lo no diretório /usr/lib/postfix/ assim:

cd /usr/src   
wget http://www.openspf.org/blobs/postfix-policyd-spf-perl-2.005.tar.gz   
tar xvfz postfix-policyd-spf-perl-2.005.tar.gz   
cd postfix-policyd-spf-perl-2.005   
cp postfix-policyd-spf-perl /usr/lib/postfix/policyd-spf-perl

Em seguida, editamos /etc/postfix/master.cf e adicionamos a seguinte estrofe no final:

policy unix - n n - - spawn
   user=nobody argv=/usr/bin/perl /usr/lib/postfix/policyd-spf-perl

(Os espaços iniciais antes de user=nobody são importantes para que o Postfix saiba que esta linha pertence à anterior!)

Então, abra /etc/postfix/main.cf e procure pela diretiva smtpd_recipient_restrictions. Você deve ter reject_unauth_destination nessa diretiva, e logo após reject_unauth_destination você adiciona check_policy_service unix:private/policy assim:

[...]
smtpd_recipient_restrictions =
[...]
   reject_unauth_destination
   check_policy_service unix:private/policy
[...]

É importante que você especifique check_policy_service DEPOIS de reject_unauth_destination ou seu sistema pode se tornar um relay aberto!

Então reinicie o Postfix:

/etc/init.d/postfix restart

É isso já.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.