empty-mail-boxes.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #!/usr/bin/env python3
  2. import os
  3. import sys
  4. import datetime
  5. HOME = os.environ['HOME']
  6. MAILDIR = HOME + '/.maildir/'
  7. PCMAIL = HOME + '/.procmail/'
  8. TRASH = MAILDIR + '.Trash/cur/'
  9. BOXES = {
  10. '.': 0,
  11. '.Archive': 0,
  12. '.Archivio': 0,
  13. '.Drafts': 0,
  14. '.Sent': 0,
  15. '.Junk': 0,
  16. '.Admins': 0,
  17. '.Root pcteor1': 3,
  18. '.Fail2Ban Logs': 3,
  19. '.Backup Newborg': 5,
  20. '.Backup Born': 5,
  21. '.Condor': 3,
  22. '.Log150': 0,
  23. '.LogAdmin': 0,
  24. '.Cluster Logwatch I': 3,
  25. '.Cluster Logwatch II': 1,
  26. '.Nagios Farm Born': 3,
  27. '.Nagios Cluster Newborg': 3,
  28. '.Farm Logs': 3,
  29. '.Farm Logwatch I': 3,
  30. '.Farm Logwatch II': 1,
  31. '.LCM Accounts': 3,
  32. '.Motion': 3,
  33. '.Quota Farm': 3,
  34. '.Gogs': 1
  35. }
  36. def cdate(filename):
  37. # return creation datetime
  38. t = os.path.getctime(filename)
  39. return datetime.datetime.fromtimestamp(t)
  40. def ddate(filename):
  41. # return difference between creation date and nowdate in days
  42. return abs((datetime.datetime.now() - cdate(filename)).days)
  43. def empty_boxes(debug=False):
  44. os.chdir(MAILDIR)
  45. for BOX in BOXES:
  46. if BOXES[BOX] != 0:
  47. os.chdir(BOX + '/cur')
  48. for mail in os.listdir('.'):
  49. if ddate(mail) >= BOXES[BOX]:
  50. if debug:
  51. print(mail, ddate(mail), BOXES[BOX], 'OK', BOX)
  52. else:
  53. os.rename(mail, TRASH + mail)
  54. else:
  55. None
  56. else:
  57. None
  58. os.chdir(MAILDIR)
  59. def empty_logs(debug=False):
  60. # empty PROCMAIL LOGS if too older
  61. os.chdir(PCMAIL + 'log')
  62. for log in os.listdir('.'):
  63. if ddate(log) >= 3:
  64. if debug:
  65. print(log, ddate(log), '3', 'OK')
  66. else:
  67. os.remove(log)
  68. else:
  69. None
  70. if __name__ == '__main__':
  71. if len(sys.argv) == 1:
  72. empty_boxes()
  73. empty_logs()
  74. elif len(sys.argv) == 2:
  75. if sys.argv[1] == 'debug':
  76. empty_boxes(debug=True)
  77. empty_logs(debug=True)
  78. else:
  79. sys.exit(1)
  80. else:
  81. sys.exit(1)