Spam Management · 14 min read · Dec 25, 2025

O SpamSnake Perfeito - Ubuntu Jeos 10.10 Maverick Meerkat - Página 3

8. Baruwa

Baixe o pacote deb personalizado do baruwa:

cd /usr/src  
wget baruwa_1.0.1-2sn_all.deb Atualizado 021811  
wget baruwa-doc_1.0.1-2_all.deb  
gdebi baruwa*.deb

Você será solicitado a configurar o banco de dados do baruwa para registro, incluindo um nome de usuário e senha de acesso, que serão usados pelos scripts do Baruwa. Você também será solicitado a configurar as informações do usuário administrador para a interface do Baruwa.

vi /usr/share/pyshared/baruwa/settings.py

Altere o hosturl de Quarantine conforme sua preferência:

QUARANTINE_REPORT_HOSTURL = 'http://baruwa-alpha.local'
vi /opt/MailScanner/etc/MailScanner.conf

Você precisa garantir que as seguintes opções estejam definidas:

Always Looked Up Last = &BaruwaSQL
Is Definitely Not Spam = &BaruwaWhitelist
Is Definitely Spam = &BaruwaBlacklist
Required SpamAssassin Score = &BaruwaLowScore
High SpamAssassin Score = &BaruwaHighScore 

Atualizando Baruwa

*Nota: Esta seção é apenas para aqueles que estão executando uma versão mais antiga do Baruwa. Pule isso se você estiver fazendo uma instalação limpa.

Baixe o pacote deb mais recente do baruwa:

cd /usr/src  
wget baruwa_1.0.2-4sn_all.deb Atualizado 052011  
wget baruwa-doc_1.0.2-4_all.deb  
gdebi baruwa*.deb

Quando solicitado a configurar o banco de dados mysql, selecione não. Vamos reutilizar o banco de dados e as configurações atuais.

Certifique-se de que /usr/share/pyshared/baruwa/settings.py esteja configurado com as informações corretas do banco de dados antes de se conectar, caso contrário, sua conexão falhará.

vi /usr/share/pyshared/baruwa/settings.py
DATABASE_ENGINE = 'mysql'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' ou 'oracle'.
DATABASE_NAME = 'baruwa'             # Ou caminho para o arquivo do banco de dados se estiver usando sqlite3.
DATABASE_USER = 'baruwa'             # Não usado com sqlite3.
DATABASE_PASSWORD = 'password'         # Não usado com sqlite3.
DATABASE_HOST = ''             # Defina como string vazia para localhost. Não usado com sqlite3.
DATABASE_PORT = ''             # Defina como string vazia para padrão. Não usado com sqlite3.

*Nota: Devido a alguns conflitos menores de atualização, esses passos podem ter que ser seguidos para atualizar corretamente o baruwa.

Se /opt/MailScanner foi removido:

ln -s /opt/MailScanner-version /opt/MailScanner  
rm -r /etc/MailScanner  
ln -s /opt/MailScanner/etc /etc/MailScanner  
ln -s /opt/MailScanner/lib/MailScanner/CustomFunctions /etc/MailScanner

Certifique-se de atualizar sua string de conexão do banco de dados em /etc/MailScanner/CustomFunctions/*.pm.

Finalmente, execute

manage.py syncdb

Reinicie o Uwsgi e o Nginx

/etc/init.d/uwsgi-python2.6 restart && /etc/init.d/nginx restart

O Baruwa deve ser atualizado para 102-4sn.

Atualizando Baruwa 102-4 para 111-3sn

Instale Rabbitmq-Server 2.2.0 e configure db/usuário/senha:

cd /usr/src  
wget http://ppa.launchpad.net/drizzle-developers/ppa/ubuntu/pool/main/r/rabbitmq-server/rabbitmq-server_2.2.0-1~maverick0_all.deb  
gdebi rabbit*

vi /etc/rabbitmq/rabbitmq.conf para vincular ao localhost:

export RABBITMQ_NODENAME=rabbit@localhost  
export RABBITMQ_NODE_IP_ADDRESS=127.0.0.1  
export ERL_EPMD_ADDRESS=127.0.0.1

Adicione as credenciais do banco de dados:

rabbitmqctl add_user baruwa password  
rabbitmqctl add_vhost baruwa  
rabbitmqctl set_permissions -p baruwa baruwa ".*" ".*" ".*"

Reinicie o rabbitmq-server:

/etc/init.d/rabbitmq-server restart

Adicione fontes para Baruwa 1.1.1-3 e instale dependências:

wget -O - http://apt.baruwa.org/baruwa-apt-keys.gpg | apt-key add -

vi /etc/apt/sources.list

#baruwa  
deb http://apt.baruwa.org/ubuntu maverick main

Instale Dependências:

apt-get update  
apt-get install python-django-celery python-importlib

*Nota: O comando acima deve instalar todas as dependências para o Baruwa.

Baixe e instale Baruwa1.1.1-3sn:

mkdir /usr/src/baruwa1113 && cd /usr/src/baruwa1113  
wget https://docs.google.com/open?id=0B9cN15Q3pKnwY2YyMmMwOTQtNGJkMi00ZDc2LWFjMjMtY2UxMzFlYWY5Mzk2  
mv open* baruwa_1.1.1-3sn_all.deb  
wget https://docs.google.com/open?id=0B9cN15Q3pKnwODk2OGViYmMtMGZmYS00NmJjLTkwZWUtNTJjYTQ1YzAzOTg1  
mv open* baruwa-doc_1.1.1-3sn_all.deb  
gdebi baruwa_1.1.1-3sn_all.deb  
gdebi baruwa-doc_1.1.1-3sn_all.deb

*Nota: Instale a versão do mantenedor do pacote dos arquivos quando solicitado. Selecione não para configurar o mysql, pois estamos atualizando de uma versão anterior.

Corrija o link simbólico para settings.py:

rm –r /usr/share/pyshared/baruwa/settings.py && ln –s /etc/baruwa/settings.py /usr/share/pyshared/baruwa/

vi /etc/baruwa/settings.py e corrija a configuração do banco de dados do baruwa:

DATABASES = {
    'default': {
        # Adicione 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3'
        # ou 'oracle'.
        'ENGINE': 'django.db.backends.mysql',
        # Ou caminho para o arquivo do banco de dados se estiver usando sqlite3.
        'NAME': 'baruwa',
        # Não usado com sqlite3.
        'USER': 'baruwa',
        # Não usado com sqlite3.
        'PASSWORD': 'password',
        # Defina como string vazia para localhost. Não usado com sqlite3.
        'HOST': '',
        # Defina como string vazia para padrão. Não usado com sqlite3.
        'PORT': '',
    }
}

Atualize a estrutura do banco de dados do Baruwa:

baruwa-admin syncdb --noinput

Execute a migração falsa para iniciar uma atualização:

for name in $(echo "accounts messages lists reports status config"); do  
baruwa-admin migrate $name 0001 --fake;  
done

Execute a migração normal:

for name in $(echo "accounts messages lists reports status fixups config"); do  
baruwa-admin migrate $name;  
done

vi /etc/MailScanner/MailScanner.conf altere o seguinte:

Run As Group = celeryd  
Quarantine User = celeryd  
Quarantine Group = celeryd

vi /etc/MailScanner/conf.d/baruwa.conf:

Quarantine User = postfix #(Ou o que quer que seu `Run As User` esteja definido)  
DB DSN = DBI:mysql:database=baruwa;host=localhost;port=3306 #defina para DSN válido  
DB Username = baruwa # seu nome de usuário do DB  
DB Password = password # sua senha do DB

vi /etc/init.d/mailscanner e altere as entradas de grupo de www-data para celeryd:

check_dir /var/spool/MailScanner ${user:-postfix} ${group:-celeryd}  
check_dir /var/lib/MailScanner ${user:-postfix} ${group:-celeryd}  
check_dir /var/run/MailScanner ${user:-postfix} ${group:-celeryd}  
check_dir /var/lock/subsys ${user:-root} ${group:-root} #Necessário para Criar Pasta  
check_dir /var/lock/subsys/MailScanner ${user:-postfix} ${group:-celeryd}  
start-stop-daemon --start --quiet --nicelevel $run_nice --chuid postfix:celeryd --exec $DAEMON --name $NAME -- $DAEMON_ARGS \

Adicione o usuário celeryd ao grupo clamav:

usermod -a -G celeryd clamav

Altere a propriedade do grupo da pasta de quarentena e do conteúdo:

chgrp -R celeryd /var/spool/MailScanner/quarantine

Se você for usar assinaturas, inicialize executando:

baruwa-admin initconfig

Caso contrário, desative as opções em /etc/MailScanner/conf.d/baruwa.conf:

#Inline HTML Signature = htmlsigs.customize  
#Inline Text Signature = textsigs.customize  
#Signature Image Filename = sigimgfiles.customize  
#Signature Image ![](/files/f1a3d4ae-b9dd-4d8d-bef0-ce32003c43c2) Filename = sigimgs.customize

Reinicie seu sistema e aproveite o Baruwa 111-3sn.

9. Nginx com Uwsgi

Baixe e instale tanto o Nginx quanto o Uwsgi do Launchpad de Chris Lea:

wget https://launchpad.net/~chris-lea/+archive/nginx-devel/+files/nginx_1.0.0-1chl1%7Emaverick1_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/i686/i386/').deb  
wget https://launchpad.net/~chris-lea/+archive/uwsgi/+files/uwsgi-common_0.9.6.6-1chl1%7Emaverick1_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/i686/i386/').deb  
wget https://launchpad.net/~chris-lea/+archive/uwsgi/+files/uwsgi-extra_0.9.6.6-1chl1%7Emaverick1_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/i686/i386/').deb  
wget https://launchpad.net/~chris-lea/+archive/uwsgi/+files/uwsgi-python2.6_0.9.6.6-1chl1%7Emaverick1_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/i686/i386/').deb  
wget https://launchpad.net/~chris-lea/+archive/uwsgi/+files/uwsgi_0.9.6.6-1chl1%7Emaverick1_all.deb  
apt-get install libsctp1  
dpkg -i nginx*  
dpkg -i uwsgi*

Use os seguintes arquivos de configuração para uwsgi e nginx:

vi /etc/uwsgi/uwsgi-python2.6/baruwa.ini
[uwsgi]
   socket = /var/run/uwsgi/uwsgi-python2.6/baruwa/baruwa.sock
   pythonpath = /usr/share/pyshared/baruwa/
   master = true
   processes = 2
   env = DJANGO_SETTINGS_MODULE=baruwa.settings
   module = django.core.handlers.wsgi:WSGIHandler()
vi /etc/nginx/sites-available/baruwa.conf
   server {
      listen 80;
      server_name example.com;
      root /usr/share/pyshared/baruwa;
      #log de acesso principal
      access_log  /var/log/nginx/access.log;
      #log de erro principal
      error_log /var/log/nginx/error.log;
   location /static {
      root  /usr/share/pyshared/baruwa/static/;
      }
   # recursos estáticos
   location ~* ^.+\.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$
      {
      expires 30d;
      break;
      }
   location / {
      uwsgi_pass unix:///var/run/uwsgi/uwsgi-python2.6/baruwa/baruwa.sock;
      include uwsgi_params;
      }
   }

*Nota: Certifique-se de alterar example.com para um FQDN que corresponda à sua configuração.

Remova o host virtual padrão e copie os uwsgi_params:

rm -r /etc/nginx/sites-enabled/default  
cp /usr/share/doc/uwsgi-extra/nginx/uwsgi_params /etc/nginx/uwsgi_params  
ln -s /etc/nginx/sites-available/baruwa.conf /etc/nginx/sites-enabled/baruwa.conf

Reinicie os serviços:

/etc/init.d/uwsgi-python2.6 restart && /etc/init.d/nginx restart

Você deve estar tudo pronto.

Configure tarefas Cron

Crie um link simbólico para manage.py:

ln -s /usr/share/pyshared/baruwa/manage.py /usr/bin/manage.py  
chmod +x /usr/bin/manage.py

Adicione tarefas cron:

@daily  manage.py cleanquarantine &> /dev/null  #Limpar quarentena
@daily  manage.py sendquarantinereports &> /dev/null  #Enviar relatórios de quarentena
@monthly manage.py  dbclean &> /dev/null  #Limpar maillog
@weekly  manage.py updatesarules &> /dev/null  #Atualizar regras do spamassassin
@daily  manage.py sendpdfreports &> /dev/null #Enviar relatórios em PDF

Inicie o MailScanner:

/etc/init.d/mailscanner start

Aponte seu navegador para http://hostname_used faça login com o usuário administrador e senha e comece a trabalhar. Agora você pode usar a interface para adicionar usuários e processar mensagens, etc.

Instruções de Configuração para Baruwa

Faça login no Baruwa como administrador –> Configurações –> Contas –> Criar Conta

Depois de criar a conta de usuário, você verá duas novas abas nessa página, Configurações de Perfil e Endereços Associados.

Preencha as Configurações de Perfil escolhendo Administrador de Domínio e defina uma pontuação baixa de 6 e uma pontuação alta de 9 e marque escanear e-mail.

Clique no sinal de + abaixo de Endereços Associados e insira um domínio para o qual o usuário é o administrador, por exemplo, domain.com. domain.com aparecerá sob Endereços Associados.

Clique em domain.com e você será levado às Informações do Domínio, onde poderá configurar as informações de entrega SMTP. Vá em frente e adicione o servidor smtp de recebimento, ou o ip do servidor smtp de recebimento. Selecione habilitar e, se você usar uma porta não padrão, defina-a, caso contrário, use 25. Depois de fazer isso, você pode clicar no botão de teste ao lado do lápis, para ver se seu servidor de recebimento aceitará a conexão.

Agora, você pode sair como administrador e fazer login como o usuário que acabou de configurar e os e-mails devem começar a fluir.

As configurações relay_recipients, relay_domains e transports em /etc/postfix/main.cf usarão as entradas que você forneceu no Baruwa. Portanto, nenhum arquivo hash é necessário.
As consultas associadas nos arquivos cf do mysql puxarão o resultado no formato adequado e o alimentarão ao postfix para uso.

No entanto, se você quiser usar um hash para qualquer um de seus arquivos de configuração, use o seguinte como exemplo de como configurar /etc/postfix/main.cf:

relay_recipient_maps = hash:/etc/postfix/relay_recipients

Claro, você teria que criar o(s) arquivo(s) hash, preenchê-lo e postmap para que o postfix o utilizasse.

*Nota: Se você acabar usando hash para relay_recipients para domínios específicos, você terá que remover esse domínio de /etc/postfix/access. Todos os outros usuários de domínio ainda podem ser verificados usando look_ahead

Além disso, se você precisar fazer buscas mx, você terá que editar /etc/postfix/mysql-transports.cf query para ficar assim:

concat('smtp:', mail_hosts.address, ':', port) 'transport'

Os [ e ] foram removidos para permitir buscas MX.

Aproveite o Baruwa!

10. Instalar e Configurar SPF

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

Precisamos baixar 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.007.tar.gz  
tar xvfz postfix-policyd-spf-perl-2.007.tar.gz  
cd postfix-policyd-spf-perl-2.007  
cp postfix-policyd-spf-perl /usr/lib/postfix/policyd-spf-perl

Então editamos /etc/postfix/master.cf e adicionamos a seguinte estrofe no final:

vi /etc/postfix/master.cf
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!)

*Nota: Já adicionamos a entrada para main.cf usando o script de configuração do postfix.

Então reinicie o Postfix:

/etc/init.d/postfix restart

É isso já.

11. Instalar e Configurar FuzzyOcr

FuzzyOCR tem alguns pré-requisitos como ocrad e gocr que podemos instalar assim:

apt-get install fuzzyocr netpbm gifsicle libungif-bin gocr ocrad libstring-approx-perl libmldbm-sync-perl libdigest-md5-perl libdbd-mysql-perl imagemagick tesseract-ocr  
wget http://users.own-hero.net/~decoder/fuzzyocr/fuzzyocr-3.6.0.tar.gz  
tar xvfz fuzzyocr-3.6.0.tar.gz  
cd FuzzyOcr-3.6.0/

Então o FuzzyOCR está agora instalado, agora precisamos configurá-lo. O arquivo de configuração do FuzzyOCR é /etc/spamassassin/FuzzyOcr.cf. Nesse arquivo quase tudo está comentado. Abrimos esse arquivo agora e fazemos algumas modificações:

vi /etc/spamassassin/FuzzyOcr.cf

Descomente as seguintes linhas:

focr_global_wordlist /etc/spamassassin/FuzzyOcr.words
focr_preprocessor_file /etc/spamassassin/FuzzyOcr.preps
focr_scanset_file /etc/spamassassin/FuzzyOcr.scansets<
focr_enable_image_hashing 3
focr_digest_db /etc/spamassassin/FuzzyOcr.hashdb
focr_db_hash /etc/spamassassin/FuzzyOcr.db
focr_db_safe /etc/spamassassin/FuzzyOcr.safe.db
focr_bin_helper convert, tesseract

Comente o caminho:

#focr_path_bin /usr/local/netpbm/bin:/usr/local/bin:/usr/bin

Armazenaremos os hashes de imagem em um banco de dados mysql para melhorar o desempenho, de modo que imagens que já escaneamos não sejam escaneadas novamente, pois OCR é uma atividade que consome recursos.

Crie o Banco de Dados MySQL:

O script sql cria o banco de dados para fuzzyocr:

mysql -p <  FuzzyOcr.mysql

Conceda privilégios:

mysql –u root –p  
GRANT ALL ON FuzzyOcr.* TO fuzzyocr@localhost IDENTIFIED BY ‘password’;

Atualize FuzzyOcr.cf

vi /etc/spamassassin/FuzzyOcr.cf

Ative as seguintes linhas:

focr_mysql_db FuzzyOcr  
focr_mysql_hash Hash  
focr_mysql_safe Safe  
focr_mysql_user fuzzyocr  
focr_mysql_pass fuzzyocr  
focr_mysql_host localhost  
focr_mysql_port 3306  
focr_mysql_socket /var/run/mysqld/mysqld.sock

*Nota: Certifique-se de alterar as linhas em vermelho.

Configuração do Limpador de Banco de Dados FuzzyOcr

vi /usr/sbin/fuzzy-cleanmysql
#!/usr/bin/perl
#Script para limpar tabelas mysql de dados. O padrão é deixar dados em Safe por 1 dia e Hash por 10 dias.
#Fuzzyocr-cleanmysql
use Getopt::Long;
use DBI;
use MLDBM qw(DB_File Storable);
my %Files = (
    db_hash => '/var/lib/fuzzyocr/FuzzyOcr.db',
    db_safe => '/var/lib/fuzzyocr/FuzzyOcr.safe.db',
    );
use DBI;
$database = "FuzzyOcr";
$hostname = "localhost";
$socket = "/var/run/mysqld/mysqld.sock";
$port = "3306";
$username = "fuzzyocr";
$password = 'password';
# padrões
my $cfgfile = "/etc/spamassassin/FuzzyOcr.cf";
my %App;
my %age;
$age{'age'} = 10*24;  # 10 dias
$age{'hash'} = $age{'age'};
$age{'safe'} = 0;
my $help = 0;
my $verbose = 0;
GetOptions( \%age,
    'age=i',
    'config=s' => \$cfgfile,
    'hash=i',
    'help' => \$help,
    'safe=i',
    'verbose' => \$verbose,
);
if ($help) {
    print "Uso: fuzzy-cleanmysql [Opções]\n";
    print "\n";
    print "Opções disponíveis:\n";
    print "--age=i      Idade global em horas para manter no db\n";
    print "--config=s   Especificar localização de FuzzyOcr.cf\n";
    print "             Padrão: /etc/spamassassin/FuzzyOcr.cf\n";
    print "--hash=i     Número de horas antigas para manter no banco de dados Hash\n";
    print "--safe=i     Número de horas antigas para manter no banco de dados Safe\n";
    print "--verbose    Mostrar mais informações\n";
    print "\n";
    exit 1;
}
# Converter horas em segundos
$age{'age'} *= 60 * 60;
$age{'hash'} *= 60 * 60;
$age{'safe'} *= 60 * 60;
$age{'safe'} = $age{'safe'} ? $age{'safe'} : $age{'age'};
# Ler caminhos personalizados de FuzzyOcr.cf
my $app_path = q(/usr/local/netpbm/bin:/usr/local/bin:/usr/bin);
open CONFIG, "< $cfgfile" or warn "Não é possível ler o arquivo de configuração, usando padrões...\n";
while () {
    chomp;
    if ($_ =~ m/^focr_bin_(\w+) (.+)/) {
        $App{$1} = $2;
        printf "Encontrado caminho personalizado \"$2\" para o aplicativo \"$1\"\n" if $verbose;
    }
    if ($_ =~ m/^focr_path_bin (.+)/) {
        $app_path = $1;
        printf "Encontrado novo caminho: \"$1\"\n" if $verbose;
    }
    if ($_ =~ m/^focr_enable_image_hashing (\d)/) {
        $App{hashing_type} = $1;
        printf "Encontrado Hashing DB\n" if ($verbose e $1 == 2);
        printf "Encontrado Hashing MySQL\n" if ($verbose e $1 == 3);
    }
    if ($_ =~ m/^focr_mysql_(\w+) (.+)/) {
        $MySQL{$1} = $2;
        printf "Encontrada opção MySQL $1 => '$2'\n" if $verbose;
    }
    if ($_ =~ m/^focr_threshold_max_hash (.+)/) {
        $App{max_hash} = $1;
        printf "Atualizado Thresold{max_hash} = $1\n" if $verbose;
    }
}
close CONFIG;
# certifique-se de que temos esse limite definido
$App{max_hash} = 5 a menos que definido $App{max_hash};
# caminho de busca para bin_util a menos que já especificado no arquivo de configuração
foreach my $app (@bin_utils) {
    next if definido $App{$app};
    foreach my $d (split(':',$app_path)) {
        if (-x "$d/$app") {
            $App{$app} = "$d/$app";
            last;
        }
    }
}
sub get_ddb {
    my %dopts = ( AutoCommit => 1 );
    my $dsn = "DBI:mysql:database=$database";
    if (definido $socket) {
        $dsn .= ";mysql_socket=$socket";
    } else {
        $dsn .= ";host=$hostname";
        $dns .= ";port=$port" a menos que $port == 3306;
    }
    printf "Conectando a: $dsn\n" if $verbose;
    return DBI->connect($dsn, $username, $password,\%dopts) or die("Não foi possível conectar!");
}
if ($App{hashing_type} == 3) {
 my $ddb = get_ddb();
  if ($ddb) {
    my $sql;
    foreach my $ff (sort keys %Files) {
      $ff =~ s/db_//;
      $sqlbase = "FROM $MySQL{$ff} WHERE $MySQL{$ff}.\`check\` < ?";
      my $timestamp = time;
      $timestamp = $timestamp - $age{$ff};
      $sql = "DELETE $sqlbase";
      if ( $verbose ) {
        printf "Excluir da Tabela $MySQL{$ff}\n";
        print "$sql,  $timestamp\n";
        print "Timestamp é ", scalar(localtime($timestamp)), "\n";
        print "Isso é $age{$ff} segundos antes de agora.\n";
        print "\n";
      }
      $ddb->do($sql,undef,$timestamp);
    }
    $ddb->disconnect;
  }
}
chmod +x /usr/sbin/fuzzy-cleanmysql

Adicione-o ao cron

crontab -e
@weekly /usr/sbin/fuzzy-cleanmysql &> /dev/null  #Limpador de DB FuzzyOcr

É isso já para a configuração do FuzzyOCR. Agora vamos ver se funciona como esperado.

Podemos alimentar cada um desses e-mails ao SpamAssassin agora para ver se o FuzzyOCR está vinculado corretamente ao SpamAssassin.

spamassassin --debug FuzzyOcr < /usr/src/FuzzyOcr-3.6.0/samples/ocr-gif.eml > /dev/null

Você deve agora ver uma saída grande, o final deve parecer assim:

[...]  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: Sexta-feira 4 de agosto, 16:01 ET  
[10025] dbg: FuzzyOcr: LAS VEGAS, NEVADA--(MARKET WIRE)--4 de agosto de 2006 -- a energia quântica, lnc. (OTC  
[10025] dbg: FuzzyOcr: BB:aEGY.oB-_-  
[10025] dbg: FuzzyOcr: a energia quântica, lnc. tem o prazer de anunciar que solicitou a listagem de suas ações na  
[10025] dbg: FuzzyOcr: Frankfurt Stock Exchange. A empresa contratou os serviços do Baltic  
[10025] dbg: FuzzyOcr: Investment Group de Hamburgo, Alemanha, para ajudar com a aplicação.  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: _ qEGY,OB "

12. Filtrando PDF, XLS e Spam de Phishing com ClamAV (Assinaturas Sanesecurity)

Atualmente, há muito spam onde as “informações” de spam estão anexadas como arquivos .pdf ou .xls, às vezes também ocultas dentro de um arquivo .zip. Embora esses e-mails de spam não sejam fáceis de capturar com, por exemplo, SpamAssassin ou um filtro Bayes, o scanner de vírus ClamAV pode capturá-los facilmente quando alimentado com as assinaturas corretas, pois o ClamAV é construído para escanear anexos de e-mail.

Crie uma pasta para sanesecurity e baixe e dê ao script a permissão adequada.

apt-get install curl rsync
mkdir /usr/src/sanesecurity && cd /usr/src/sanesecurity
wget http://www.inetmsg.com/pub/clamav-unofficial-sigs.tar.gz
tar -zxf clamav-unofficial-sigs.tar.gz && cd clamav-unofficial-sigs-3.7.1
mv clamav-unofficial-sigs.sh /usr/sbin
mv clamav-unofficial-sigs.conf /etc/
chmod +x /usr/sbin/clamav-unofficial-sigs.sh

vi clamav-unofficial-sigs.conf

e altere as seguintes variáveis para corresponder à sua instalação:

clam_dbs="/var/lib/clamav"

A variável clamav_dbs contém o caminho para o diretório onde suas assinaturas ClamAV estão armazenadas.

Caminho para clamd.pid:

clamd_pid="/var/run/clamav/clamd.pid"

Recarregar após atualização:

reload_dbs="yes"
reload_opt="kill -USR2 `cat $clamd_pid`" #Sinaliza PID para recarregar dbs

Diretório de Trabalho:

work_dir="/var/lib/clamav"

E uma vez que você tenha terminado a configuração, defina o seguinte como sim:

user_configuration_complete="yes" 

Agora executamos o script de atualização para verificar se o download funciona:

clamav-unofficial-sigs.sh

Adicione-o ao cron:

00 04 * * * /usr/sbin/clamav-unofficial-sigs.sh -c /etc/clamav-unofficial-sigs.conf &> /dev/null 

Por favor, edite /etc/clamav-unofficial-sigs.conf e comente a seção do banco de dados MalwarePortal. Tem havido toneladas de falsos positivos ao usar suas definições.

13. Greylisting com Greyfix

Greyfix é um pequeno daemon de greylisting que funciona extremamente bem e é leve em recursos.

Instale:

cd /usr/src && wget http://www.kim-minh.com/pub/greyfix/greyfix-0.3.9.tar.gz  
tar -xf greyfix-0.3.9.tar.gz && cd greyfix-0.3.9  
./configure --localstatedir=/var  
make  
make install
vi /etc/postfix/master.cf

e adicione o seguinte:

greyfix    unix  -        n       n       -        -       spawn
   user=nobody  argv=/usr/local/sbin/greyfix   --greylist-delay 60  -/ 24

Já adicionamos a entrada para main.cf usando o script de configuração do postfix.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.