rp

simple email tools
git clone https://git.parazyd.org/rp
Log | Files | Refs | README | LICENSE

rpsieve (1327B)


      1 #!/bin/sh
      2 #
      3 # Copy me if you can
      4 # by parazyd
      5 #
      6 
      7 profile="${RPPROFILE:-$HOME/.rp/default}"
      8 
      9 usage() {
     10 	cat <<EOF
     11 * Usage: $(basename $0) [-e] [-u] [-v]
     12   -e: edit filters.txt before continuing
     13   -u: upload filters.sieve when done
     14   -v; be verbose
     15 EOF
     16 	exit 1
     17 }
     18 
     19 while getopts "euvh" opt; do
     20 	case "$opt" in
     21 	e)
     22 		ed=true
     23 		;;
     24 	u)
     25 		upload=true
     26 		;;
     27 	v)
     28 		verbose="-v"
     29 		;;
     30 	*)
     31 		usage
     32 		;;
     33 	esac
     34 done
     35 
     36 ft="$profile/filters.txt"
     37 fs="$profile/filters.sieve"
     38 ab="$profile/whitelist.abook"
     39 
     40 [ -n "$ed" ] && vim "$ft"
     41 
     42 [ -f "$ft" ] || {
     43 	echo "* No filters.txt file"
     44 	exit 1
     45 }
     46 [ -f "$ab" ] || {
     47 	echo "* No whitelist.abook file"
     48 	exit 1
     49 }
     50 
     51 echo "* Generating sieve rules"
     52 cat > "$fs" << EOF
     53 # mailbox supports fileinto :create
     54 require ["fileinto","mailbox","variables"];
     55 
     56 # bounces
     57 if header :contains "Sender" "mailman-bounce" {
     58 	fileinto :create "zz.bounces";
     59 	stop;
     60 }
     61 
     62 # own filters
     63 EOF
     64 
     65 {
     66 	rohrpost rpsieve $verbose < "$ft"
     67 	rohrpost rpsieve $verbose < "$ab"
     68 }  >> "$fs"
     69 
     70 cat >> "$fs" << EOF
     71 # spam
     72 if header :is "X-Spam-Flag" "YES" { fileinto :create "zz.spam"; stop; }
     73 
     74 # everything else
     75 fileinto :create "unsorted";
     76 EOF
     77 
     78 if [ -n "$upload" ]; then
     79 	echo "* Uploading filters.sieve"
     80 	host=t3.dyne.org
     81 	path=/var/vmail/sieve-scripts/"$(readlink "$profile")"
     82 	scp "$fs" "$host:$path" || {
     83 		echo "* Upload failed"
     84 		exit 1
     85 	}
     86 fi