# ======================== Default ====================================
# Defaults for procmail
#
# All delivary to Qmail style Maildir.  i.e. followed by /
# No lock needed

MAILDIR=$HOME/Mail
DEFAULT=$MAILDIR/Inbox/
LOGFILE=$MAILDIR/Maillog

# H Header (Default)
# B Body
# b feed body to the pipe (Default)
# D Case sensitive (Default=case insensitive)
# f filter throgh the pipe
# h Feed the header to the pipe (Default)
# w wait

# ======================== Touch-up ===========================================

## Add message length for Maildir(qmail)
:0 BHfw
* H ?? !^Lines:
* -1^0
*  1^1 ^.*$
| formail -i "Lines: $="

## Add a "Content-Type: application/pgp" header so Mutt will know the
## mail is encrypted.
:0 BHfw
* ^-----BEGIN PGP MESSAGE-----
* ! ^Content-type: multipart
| formail -i "Content-Type: application/pgp; format=text; x-action=encryptsign"

## Add a "Content-Type: application/pgp" header so Mutt will know the
## mail is signed.
:0 BHfw
* ^-----BEGIN PGP SIGNED MESSAGE-----
* ! ^Content-type: multipart
| formail -i "Content-Type: application/pgp; format=text; x-action=sign"

# ======================== Absolute white list ================================
# whitelist for closed list
:0
* 1^0 ^TO_.*bad@bad.debian.net
* 1^0 ^TO_.*bad@bad.debian.net
bad/

# whitelist for Debian BTS mail
:0
# offset
* -1^0
# BTS
* 1^0 ^Return-path:.*debbugs@master\.debian\.org
# to me
* 1^0 ^TO_.*osamu@debian\.org
Inbox/


# ======================== Drop bad SPAM immediately ==========================

## by from headr
:0
* 1^0 ^Return-path:.*noresponderdeco@
* 1^0 ^Return-path:.*<big@boss.com>
* 1^0 ^From:.*fsshl@centurytel.net
* 1^0 ^TO_.*@mail63\.csoft\.net
* 1^0 ^TO_.*undisclosed.*recipient
* 1^0 ^TO_.*Valued.*Customer
* 1^0 ^TO_.*freedisk@aokiconsulting\.com
* 1^0 ^TO_.*bogus@aokiconsulting\.com
* 1^0 ^TO_.*nospam@aokiconsulting\.com
* 1^0 ^TO_.*fsshl@centurytel.net
* 1^0   relay[0-9]*\.uu\.net
Xspam-address/

# ======================== Mark SPAM featurs ==================================

# check header
:0 fw
# safety offset
* -10^0
* -100^0 ^Return-path:.*debbugs@master\.debian\.org
# Mail servers
#* 5^0 ^Received: from unknown
#* -5^0 ^Received:.*debian\.org
# list of non-unix mailers
* 10^0 ^X-Mailer: The Bat!
* 5^0 ^X-Mailer: Microsoft
* 5^0 ^X-Mailer: AOL
* 5^0 ^User-Agent: QUALCOMM
* 5^0 ^X-Mailer: Foxmail
* 5^0 ^X-Mailer: Internet Mail Service
* 5^0 ^X-Mailer: iPlanet
* 5^0 ^X-Mailer: <IMail
* 5^0 ^X-Mailer: CommuniGate
* 5^0 ^X-Mailer: eGroups Message Poster
# list of unix mailers
* -20^0 ^User-Agent:.*Mutt
* -20^0 ^X-Mailer:.*reportbug
* -20^0 ^User-Agent:.*Emacs
* -20^0 ^X-Mailer:.*emacs
* -10^0 ^X-Mailer:.*Evolution
* -10^0 ^User-Agent:.*KMail
# Bad source address
* 20^0 ^From: *$
* 5^0 ^From:.*@yahoo\.
* 5^0 ^From:.*@netscape\.
* 5^0 ^From:.*@hotmail\.
* 5^0 ^From:.*@korea\.com
* 5^0 ^From:.*@msn\.com
* 5^0 ^From:.*DR\.
# very very bad subject key words
* 25^0 ^Subject:[ 	]*subscribe
* 25^0 ^Subject:[ 	]*unsubscribe
* 25^0 ^Subject:[ 	]*ADV(ERTI|[^a-zA-Z])
* 25^0 ^X-Advertisement
# very bad subject key words
* 20^0 ^Subject: *$
* 20^0 ^Subject:[ 	]*As*istance
* 20^0 ^Subject:[ 	]*Automated reply from
# bad subject key words
* 10^0 ^Subject:.*Never pay
* 10^0 ^Subject:.*Lose Weight
* 10^0 ^Subject:.*Virus Alert
* 10^0 ^Subject:.*Please Respond
* 10^0 ^Subject:.*increase business
* 10^0 ^Subject:.*Visa Card
* 10^0 ^Subject:.*Your help
* 10^0 ^Subject:.*Get Your
* 10^0 ^Subject:.*adult channel
* 10^0 ^Subject:.*ADULT MOVIE
* 10^0 ^Subject:.*FREE.*Cable
* 5^0 ^Subject:.*!
* 5^0 ^Subject:.*\$
* 5^0 ^Subject:.*confidential
* 5^0 ^Subject:.*Greetings
* 5^0 ^Subject:.*Viagra
* 5^0 ^Subject:.*Prozac
* 5^0 ^Subject:.*Hello
* 5^0 ^Subject:.*Thank
* 5^0 ^Subject:.*Need
* 5^0 ^Subject:.*Private
* 5^0 ^Subject:.*URGENT
* 5^0 ^Subject:.*Horny
* 5^0 ^Subject:.*Fuck
* 5^0 ^Subject:.*good day
* 5^0 ^Subject:.*BLESSED
* 5^0 ^Subject:.*Vital
* 5^0 ^Subject:.*MORTGAGES
* 5^0 ^Subject:.*Diet
* 5^0 ^Subject:.*DIVIDEND
* 5^0 ^Subject:.*prescription
* 5^0 ^Subject:.*Prescribe
* 5^0 ^Subject:.*drug
* 5^0 ^Subject:.*seduction
* 5^0 ^Subject:.*Product
* 5^0 ^Subject:.*hahaha
* 1^0 ^Subject:.*very
* 1^0 ^Subject:.*value
* 1^0 ^Subject:.*china
* 1^0 ^Subject:.*important
* 1^0 ^Subject:.*export
* 1^0 ^Subject:.*Application
| formail -A "X-SPAM: HEADER $="

## no korean html
:0 Hfw
* ^Content-Type: text/.*ks_c_5601
| formail -A "X-SPAM: MIME HTML Korean $=" 

## no html
:0 BHfw
* ^Content-Type:.*html
| formail -A "X-SPAM: MIME HTML"

## no msword
:0 BHfw
* ^Content-Type:.*msword
| formail -A "X-SPAM: MIME MSWORD"

## no jpeg
:0 BHfw
* ^Content-Type:.*jpeg
| formail -A "X-SPAM: MIME JPEG"

## no zip
:0 BHfw
* ^Content-Type:.*zip
| formail -A "X-SPAM: MIME ZIP"

## no base64
:0 BHfw
* ^Content-Type:
* ^Content-Transfer-Encoding:[ 	][ 	]*base64
| formail -A "X-SPAM: MIME BASE64"

## no exe
:0 BHfw
* ^Content-Type:.*exe
| formail -A "X-SPAM: MIME EXE"

## no pif
:0 BHfw
* ^Content-Type:.*pif
| formail -A "X-SPAM: MIME PIF"

## Asian codings Check body(B) and case sensitive(D)
# if 5% are high bit characters
# http://www3.sympatico.ca/walter.dnes/email/chinese/
:0 BDfw
# safety offset
* -100^0
# Maybe Japanese
* -1000^1 ^TO_.*debian-japanese@debian.org
* -1000^1 ^TO_.*@debian.or.jp
* -10000^1 ^TO_.*osamu@aokiconsulting.com
# char counter
* -1^1 .
# bad char counter
*  2^1 =[0-9A-F][0-9A-F]
* 20^1 []
* 20^1 []
* 20^1 []
* 20^1 =[A-F][0-9A-F]
| formail -A "X-SPAM: ASIA 8B $="

# If 50% of line contains asian 7 bit encoded
:0 BDfw
# safety offset
* -10^0
# Maybe Japanese
* -10000^1 ^TO_.*debian-japanese@debian.org
* -10000^1 ^TO_.*@debian.or.jp
* -10000^1 ^TO_.*osamu@aokiconsulting.com
# line counter
* -10^1 ^.+$
# 7 bit escape counter
* 10^1 \$|\(
# suspicious char counter (optional)
* 2^1 [\$%!]
| formail -A "X-SPAM: ASIA 7B $="

# If 90% of line contains CAPITAL
:0 BDfw
# safety offset
* -10^0
# upper case
* 1^1 [QWERTYUIOPASDFGHJKLZXCVBNM<>]
# lower case
* -10^1 [qwertyuiopasdfghjklzxcvbnm]
| formail -A "X-SPAM: CAPITAL"

# ======================= Mailing List ========================================

# Mailing list
:0
* 1^0 ^Precedence: list
* 1^0 ^Precedence: bulk
* 1^0 ^List-
* 1^0 ^X-Distribution:.*bulk
{

# White list

:0
* 1^0 ^Sender: owner-lsec@Linux-Consulting.com
* 1^0 ^Sender: owner-sec@Linux-sec.net
lsec/

# ML ======================== Drop SPAM =======================================

# If new post is with empty From/To/Subject, we may skip it.
# Also we may skip autoresponders
:0
* ^X-SPAM: NOTME
Xspam-ML-NOTME/

:0
* ^X-SPAM: MIME
Xspam-ML-MIME/

:0
* ^X-SPAM: CAPITAL
Xspam-ML-CAP/

:0
* ^X-SPAM: HEADER
Xspam-ML-HEADER/

# ML ======================== Delivary for Japanese list ======================

:0
* 1^0 ^TO_.*debian-devel@debian.or.jp
* 1^0 ^Delivered-To:.*debian-devel@debian.or.jp
jp-debian-devel/

:0
* 1^0 ^TO_.*debian-private@debian.or.jp
* 1^0 ^TO_.*debian-private-emergency@hp.debian.or.jp
* 1^0 ^Delivered-To:.*debian-private@debian.or.jp
jp-debian-private/

:0
* 1^0 ^TO_.*debian-users@debian.or.jp
* 1^0 ^Delivered-To:.*debian-users@debian.or.jp
jp-debian-users/

:0
* 1^0 ^TO_.*@debian.or.jp
* 1^0 ^Delivered-To:.*@debian.or.jp
jp-debian-something/

:0
* 1^0 ^TO_.*debian-japanese@debian.org
* 1^0 ^Resent-Sender.*debian-japanese-request@lists.debian.org
debian-japanese/

# ML ======================== Block ASIAN characters ==========================

:0
* ^X-SPAM: ASIA
Xspam-ML-ASIA/

:0
* ^X-SPAM:
Xspam-ML/

# ML ======================== Delivary for non-Japanese list ==================

:0
* ^Resent-Sender.*debian-user-request@lists.debian.org
debian-user/

:0
* ^Resent-Sender.*debian-devel-request@lists.debian.org
* ^Subject:.*\[desktop\]
debian-devel-desktop/

:0
* ^Resent-Sender.*debian-devel-request@lists.debian.org
debian-devel/

:0
* ^Resent-Sender.*debian-devel-announce-request@lists.debian.org
debian-devel-announce/

:0
* ^Resent-Sender.*debian-testing-request@lists.debian.org
debian-testing/

:0
* ^Resent-Sender.*debian-security-announce-request@lists.debian.org
debian-security-announce/

:0
* ^Resent-Sender.*debian-laptop@lists.debian.org
#/dev/null
debian-laptop/

:0
* ^Resent-Sender.*debian-mentors-request@lists.debian.org
debian-mentors/

:0
* ^Resent-Sender.*debian-newmaint-request@lists.debian.org
debian-newmaint/

:0
* ^Resent-Sender.*debian-legal-request@lists.debian.org
debian-legal/

:0
* ^Resent-Sender.*debian-policy-request@lists.debian.org
debian-policy/

:0
* ^Resent-Sender.*debian-private-request@lists.debian.org
debian-private/

:0
* ^Resent-Sender.*debian-news-request@lists.debian.org
debian-news/

:0
* ^Resent-Sender.*debian-announce-request@lists.debian.org
debian-announce/

:0
* ^Resent-Sender.*debian-doc-request@lists.debian.org
* ^Subject:.*cvs commit to ddp
debian-doc-cvs/

:0
* ^Resent-Sender.*debian-doc-request@lists.debian.org
* ^Subject:.*DDP CVS commit
debian-doc-cvs/

:0
* ^Resent-Sender.*debian-doc-request@lists.debian.org
debian-doc/

:0
* ^Resent-Sender.*debian-vote-request@lists.debian.org
debian-vote/

:0
* ^Resent-Sender.*debian-firewall-request@lists.debian.org
#/dev/null
debian-firewall/

:0
* ^Resent-Sender.*debian-policy-request@lists.debian.org
debian-policy/

:0
* ^Resent-Sender.*debian-laptop-request@lists.debian.org
#/dev/null
debian-laptop/

:0
* ^Resent-Sender.*debian-sgml-request@lists.debian.org
debian-sgml/

:0
* ^Resent-Sender.*debian-www-request@lists.debian.org
debian-www/

:0
* ^Resent-Sender.*debian-boot-request@lists.debian.org
debian-boot/

:0
* ^Resent-Sender.*debian-testing-request@lists.debian.org
debian-testing/

:0
* ^Resent-Sender.*debian-i18n-request@lists.debian.org
debian-i18n/

:0
* ^Sender:.*spi-announce-admin@lists.spi-inc.org
spi-announce/

:0
* ^Sender:.*spi-private-admin@lists.spi-inc.org
spi-private/

:0
* ^Sender:.*spi-bylaws-admin@lists.spi-inc.org
spi-bylaws/

:0
* ^Sender.*newbiedoc-discuss-admin@lists.sourceforge.net
newbiedoc-discuss/

:0
* 1^0 ^Sender.*qref-developers-admin@lists.sourceforge.net
* 1^0 ^From:.*qref-developers-admin@lists.sourceforge.net
* 1^0 ^TO_.*qref-developers-admin@lists.sourceforge.net
qref-dev/

:0
* ^Sender.*@list.csoft.net
csoft/

:0
* ^Sender.*owner-mutt-users@mutt.org
mutt-users/

:0
* ^Sender: help-gnu-emacs-admin@gnu.org
emacs/

:0
* ^Sender: torture-admin@gnu.org
emacs/

:0
* ^Sender: private-admin@mentors.debian.net 
dm-opers/

:0
* ^Delivered-To:.*vim@vim.org
vim/

:0
mailing-list/
}

# ======================== Normal Mails ===============================

# Whitelist address to accept
:0
* 1^0 ^TO_.*@bugs.debian.org
* 1^0 ^TO_.*@packages.qa.debian.org
* 1^0 ^Resent-Sender:.*master.debian.org
Inbox/

# local condition - If not to me, then just assume spam
:0BHfw
* ! ^TO_(.*aokiconsulting\.com|.*@csoft\.net|.*osamu@users\.sourceforge\.net|.*osamu@debian\.org|osa@leary\.csoft\.net)
| formail -A "X-SPAM: NOTME"

# =========================== Drop SPAM =======================================

# If new post is with empty From/To/Subject, we may skip it.
# Also we may skip autoresponders
:0
* ^X-SPAM: NOTME
Xspam-In-NOTME/

:0
* ^X-SPAM: CAPITAL
Xspam-In-CAP/

:0
* ^X-SPAM: HEADER
* ^X-SPAM: MIME
Xspam-In-HEADMIME/

:0
* ^X-SPAM: HEADER
Xspam-In-HEADER/

:0
* ^X-SPAM: MIME
Xspam-In-MIME/

# =========================== Deliver Japanese ================================

:0
* 1^0 ^TO_.*osamu@aokiconsulting\.com
* 1^0 ^Delivered-To:.*osamu@aokiconsulting\.com
Inbox-jp/

# =========================== Block ASIAN characters ==========================

:0
* ^X-SPAM: ASIA
Xspam-In-ASIA/

:0
* ^X-SPAM:
Xspam-In/

# =========================== Deliver non-Japanese ============================

:0
* 1^0 ^FROM_MAILER
* 1^0 ^FROM_DAEMON
Inbox-daemon/


:0
* 1^0 ^TO_.*debian.org
* 1^0 ^TO_.*debian@aokiconsulting.com
* 1^0 ^Delivered-To:.*debian@aokiconsulting.com
* 1^0 ^TO_.*@csoft\.net
* 1^0 ^Delivered-To:.*@leary\.csoft\.net
* 1^0 ^TO_.*@leary\.csoft\.net
* 1^0 ^TO_.*osamu@debian\.org
* 1^0 ^TO_.*aokiconsulting\.com
* 1^0 ^TO_.*osamu@debian\.org
* 1^0 ^TO_.*osamu@users\.sourceforge\.net
Inbox/

:0
In-thru/
