Spamassassim + qmail + qmailscanner + maildrop + squirrelmail
Objetivo: Os spams recebidos devem ser encaminhados para a pasta .spam para que o usuário decida o que é realmente spam e o que não é. Isto porque o spamassassim considera como spam todo e-mail que ultrapasse a pontuação em 6 (setado no arquivo local.cf).
A configuração adotada foi:
- Todo e-mail que tiver pontuação até 6 é enviado para Inbox.
- Todo e-mail que for maior que 6 e menor que 10 será encaminhado para a pasta inbox.spam.
- Todo e-mail que for maior que 10 até 16 será enviado para quarentena e o restante será removido.
O spamassassim somente marca o e-mail como spam, caso tenha pontuação superior a 6.
required_hits 6
O qmailscanner é quem deleta ou não o spam.
sa-quarantine=4
sa-delete=10
--sa-quarantine [num] (default: 0)
Spam messages with a score higher than (required_hits + sa_quarantine) should be quarantined. Only relevant if SpamAssassin is used. Score of 0 means deliver all messages.
--sa-delete [num] (default: 0)
Spam messages with a score higher than (required_hits + sa_delete) should be deleted. Only relevant if SpamAssassin is used. Score of 0 means deliver all messages.
Isto quer dizer que todo e-mail que tiver pontuação de 6 até 10 será encaminhado para a pasta .spam (configurado pelo maildrop) e todo e-mail que tiver pontuação de 10.1 até 16 será enviado para quarentena e o que for maior que isso será deletado.
O maildrop é quem vai encaminhar para a pasta .spam se ela existir, ou então será criada.
Configuração do maildrop:
Deve ser criado um arquivo chamado mailfilter com a seguinte configuração:
1 - Deve ter permissão:
# chmod 600 mailfilter
# chown vpopmail.vchkpw mailfilter
-rw------- 1 vpopmail vchkpw 786 2007-11-05 16:19 mailfilter
2 - Configuração do arquivo mailfilter:
import EXT
import HOST
SHELL="/bin/sh"
VHOME=`/home/vpopmail/bin/vuserinfo -d $EXT@$HOST`
SPAMDIR="$VHOME/Maildir/.Spam"
VPOP="| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox"
logfile "/var/log/maildrop.log"
TIMESTAMP=`date "+%d %b %H:%M:%S"`
DUMMY=`test -d $VHOME/Maildir`
if ( $RETURNCODE == 1 )
{
log "conta inexistente: $EXT@$HOST em $TIMESTAMP"
EXITCODE=100
exit
}
#if (/^X-Spam-Flag: *YES/)
if (/^X-Spam-Status: YES/)
{
RETURNCODE=`[ -d $SPAMDIR ] || echo 1`
if ( $RETURNCODE == 1 )
{
log "pasta $SPAMDIR ainda nao existia na conta $EXT@$HOST, criando..."
`/usr/local/bin/maildirmake $SPAMDIR`
`chown -R vpopmail:vchkpw $SPAMDIR`
`echo "INBOX.Spam >> $VHOME/Maildir/courierimapsubscribed"`
`/usr/local/sbin/subscribeIMAP.sh Spam $VHOME`
## este arquivo é que faz a pasta Spam ser visível no squirrelmail
}
to "$SPAMDIR"
}
to "$VPOP"
OBS: Observe que o arquivo /usr/local/sbin/subscribeIMAP.sh é quem diz para o squirrelmail que a pasta Spam deve ser visível.
3 - Arquivo /usr/local/sbin/subscribeIMAP.sh.
Páginas pesquisadas:
#!/bin/sh
#
# This subscribes the folder passed as $1 to courier imap
# so that Maildir reading apps (Sqwebmail, Courier-IMAP) and
# IMAP clients (squirrelmail, Mailman, etc) will recognize the
# extra mail folder.
# Matt Simerson - 12 June 2003
LIST="$2/Maildir/courierimapsubscribed"
if [ -f "$LIST" ]; then
# if the file exists, check it for the new folder
TEST=`cat "$LIST" | grep "INBOX.$1"`
# if it is not there, add it
if [ "$TEST" = "" ]; then
echo "INBOX.$1" >> $LIST
fi
else
FULL="INBOX\nINBOX.Sent\nINBOX.Trash\nINBOX.Drafts\nINBOX.$1"
echo -e $FULL > $LIST
/bin/chown vpopmail:vchkpw $LIST
/bin/chmod 644 $LIST
fi
# chmod 755 /usr/local/sbin/subscribeIMAP.sh
# qmailctl stop
# qmailctl start
# qmailctl stat
4 - Arquivo de log:
# touch /var/log/maildrop.log
# chown vpopmail:vchkpw /var/log/maildrop.log
# chmod 774 /var/log/maildrop.log
5 - Arquivo .qmail-default:
# chown vpopmail:vchkpw .qmail-default
| /usr/local/bin/maildrop /home/vpopmail/domains/ipec.fiocruz.br/mailfilter