Advertisement
Guest User

Untitled

a guest
Aug 19th, 2017
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. #!/bin/bash
  2. #
  3. # Teach SpamAssassin from Maildirs
  4. # Junk and Inbox folders.
  5. #
  6.  
  7. MYSQL_HOST="localhost"
  8. MYSQL_DATABASE="mail"
  9. MYSQL_USERNAME="username"
  10. MYSQL_PASSWORD="password"
  11. MYSQL_BIN="/usr/bin/mysql"
  12. SALEARNBIN="/usr/bin/sa-learn"
  13. MAILDIR="/var/mail/virtual"
  14. JUNKDIR=".Junk"
  15.  
  16. echo "Updating SpamAssassin Bayesian spam/ham filter"
  17.  
  18. # Get all enabled domains from the MySQL database
  19. ${MYSQL_BIN} --skip-column-names -u${MYSQL_USERNAME} -p${MYSQL_PASSWORD} -h${MYSQL_HOST} ${MYSQL_DATABASE} -e "SELECT domain FROM domain WHERE enabled='1'" | while read DOMAIN; do
  20. # Check if the domain exists and hold useraccounts.
  21. if [[ "$(ls -A ${MAILDIR}/${DOMAIN} 2>/dev/null)" ]]; then
  22. echo "Will go through all accounts in ${MAILDIR}/${DOMAIN}."
  23. ACCOUNTS=(`ls -A ${MAILDIR}/${DOMAIN}`)
  24. for USER in "${ACCOUNTS[@]}"; do
  25. # Check if ${USER} have a ${JUNKDIR} folder.
  26. if [[ -e "${MAILDIR}/${DOMAIN}/${USER}/${JUNKDIR}" ]]; then
  27. # Learning HAM and SPAM!
  28. echo "Will teach SpamAssassin from \"${USER}\" ${JUNKDIR}-folder!"
  29. HAM=${MAILDIR}/${DOMAIN}/${USER}/{cur,new}
  30. SPAM=${MAILDIR}/${DOMAIN}/${USER}/${JUNKDIR}/{cur,new}
  31.  
  32. ${SALEARNBIN} --no-sync --spam ${SPAM} | while read LINE; do
  33. echo "${LINE}"
  34. done
  35.  
  36. ${SALEARNBIN} --no-sync --ham ${HAM} | while read LINE; do
  37. echo "${LINE}"
  38. done
  39. else
  40. # Learning HAM only!
  41. echo "User \"${USER}\" does not have any ${JUNKDIR}-folder yet."
  42. HAM=${MAILDIR}/${DOMAIN}/${USER}/{cur,new}
  43.  
  44. ${SALEARNBIN} --no-sync --ham ${HAM} | while read LINE; do
  45. echo "${LINE}"
  46. done
  47. fi
  48. done
  49. else
  50. echo "Domain ${DOMAIN} exist, but doesn't seem to hold any useraccounts."
  51. fi
  52. done
  53. echo ""
  54. echo "Syncing..."
  55. ${SALEARNBIN} --sync | while read LINE; do
  56. echo "${LINE}"
  57. done
  58.  
  59. echo ""
  60. echo "Statistics:"
  61. sa-learn --dump magic | while read LINE; do
  62. echo "${LINE}"
  63. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement