mail/bogofilter

出自CNMC Wiki
跳轉到: 導覽搜尋


bogofilter 是一套基於貝式演算法實作的垃圾郵件過濾器。可以使用多種資料庫儲存關鍵字,在這邊我們使用 mail/bogofilter-tc ,這個 ports 會設定 bogofilter 使用 databases/tokyocabinet

Postfix 設定

master.cf:

smtp      inet  n       -       n       -       -       smtpd -o content_filter=bogofilter

# Start of mail/bogofilter-tc
bogofilter
         unix  -       n       n       -       -       pipe
 flags=Rq user=bogofilter argv=/home/bogofilter/bogofilter.sh -f ${sender} -- ${recipient}
# End of mail/bogofilter-tc

bogofilter.sh

#!/bin/sh
 
FILTER_DIR=/home/bogofilter
FILTER=/usr/local/bin/bogofilter
SENDMAIL="/usr/local/sbin/sendmail -G -i"
 
EX_TEMPFAIL=75
EX_UNAVAILABLE=69
 
EMAIL="$4"
USERNAME="${EMAIL%@*}"
DOMAIN="${EMAIL#*@}"
USER_DIR="$FILTER_DIR/$DOMAIN/$USERNAME"
 
if [ -r "$USER_DIR/wordlist.tc" ]; then
        BOGOFILTER_DIR="$USER_DIR"
else
        BOGOFILTER_DIR="$FILTER_DIR"
fi
 
[ "$DOMAIN" = "hs.ntnu.edu.tw" ] && LOG="-l"
 
STATS_DIR="/home/bogofilter/stats"
TOTAL=$(($(cat "$STATS_DIR/Total")))
[ "$DOMAIN" = "hs.ntnu.edu.tw" ] && TOTAL=$(($TOTAL + 1))
echo $TOTAL > "$STATS_DIR/Total"
 
cd $FILTER_DIR || {
        echo "Error: $FILTER_DIR does not exist";
        exit $EX_TEMPFAIL; }
 
trap "rm -f msg.$$; exit $EX_TEMPFAIL" 0 1 2 3 15
 
rm -f msg.$$ || exit $EX_TEMPFAIL
$FILTER -d $BOGOFILTER_DIR $LOG -p -e > msg.$$ || exit $EX_TEMPFAIL
 
exec < msg.$$ || exit $EX_TEMPFAIL
rm -f msg.$$
exec $SENDMAIL "$@"
exit $EX_TEMPFAIL

bogoutil

Bogofilter 的工具程式。

檢視資料庫內的關鍵字、頻率、加入日期:

bogoutil -d wordlist.tc