maildroprc 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. # Global maildrop filter file
  2. # Uncomment this line to make maildrop default to ~/Maildir for
  3. # delivery- this is where courier-imap (amongst others) will look.
  4. #DEFAULT="$HOME/Maildir"
  5. SHELL="/bin/bash"
  6. SENDMAIL="/home/pi/cropswap-sendmail.sh"
  7. REPLYMAIL="/home/pi/cropswap-replymail.sh"
  8. MLIST="/home/pi/mlist"
  9. SLIST="/home/pi/slist"
  10. SUBUNSUB="/home/pi/cropswap-subunsub.sh"
  11. SUFFIX=0
  12. HANDLE=0
  13. FORWARD=0
  14. SUBSCRIBE=""
  15. CONTINUE=0
  16. UNHANDLED=5
  17. BADREQUEST=4
  18. UNREGISTERED=3
  19. UNSUBSCRIBED=2
  20. FATAL=1
  21. foreach /^(To|Cc):.*/
  22. {
  23. ADDR=getaddr($MATCH)
  24. foreach $ADDR =~ /^postmaster@localhost$/
  25. {
  26. CONTINUE=1
  27. HANDLE=1
  28. }
  29. foreach $ADDR =~ /^cropswap@shandan\.one$/
  30. {
  31. CONTINUE=1
  32. }
  33. }
  34. if (!$CONTINUE)
  35. {
  36. EXITCODE=$UNHANDLED
  37. exit
  38. }
  39. if ($HANDLE)
  40. {
  41. if (/^Subject:\s*\[SIGNUP\]\s*$/)
  42. {
  43. if (/^X-MEMBER-ALIAS:\s*(.*)\s*$/)
  44. {
  45. gdbmopen($MLIST, "W")
  46. ALIAS=$MATCH1
  47. KEY=$ALIAS
  48. EXISTS=gdbmfetch($ALIAS)
  49. while ($EXISTS ne "" && $EXISTS ne gdbmfetch(tolower($FROM)))
  50. {
  51. SUFFIX=($SUFFIX + 1)
  52. KEY="$ALIAS $SUFFIX"
  53. EXISTS=gdbmfetch($KEY)
  54. }
  55. if (gdbmstore(tolower($FROM), $ALIAS) == 0 && gdbmstore($ALIAS, tolower($FROM)) == 0)
  56. {
  57. gdbmclose
  58. #TODO: mailbot - You have been registered as $ALIAS
  59. exit
  60. }
  61. else
  62. {
  63. gdbmclose
  64. EXITCODE=$FATAL
  65. exit
  66. }
  67. }
  68. EXITCODE=$BADREQUEST
  69. # No response to unregistered users
  70. exit
  71. }
  72. #cc "|$REPLYMAIL"
  73. EXITCODE=$UNHANDLED
  74. # No response to unregistered users
  75. exit
  76. }
  77. gdbmopen($MLIST, "R")
  78. ALIAS=gdbmfetch(tolower($FROM))
  79. if ($ALIAS eq "")
  80. {
  81. gdbmclose
  82. EXITCODE=$UNREGISTERED
  83. exit
  84. }
  85. gdbmclose
  86. #
  87. # REGISTERED USERS ONLY
  88. #
  89. if (/^Subject:\s*\[(SUBSCRIBE|UNSUBSCRIBE)\]\s*$/)
  90. {
  91. SUBSCRIBE=$MATCH1
  92. }
  93. if ($SUBSCRIBE ne "")
  94. {
  95. gdbmopen($SLIST, "W")
  96. if (gdbmstore(tolower($FROM), $SUBSCRIBE) == 0)
  97. {
  98. gdbmclose
  99. system "$SUBUNSUB '$SUBSCRIBE' '$ALIAS' '$FROM'"
  100. exit
  101. }
  102. else
  103. {
  104. gdbmclose
  105. EXITCODE=$FATAL
  106. exit
  107. }
  108. }
  109. gdbmopen($SLIST, "R")
  110. FORWARD=(gdbmfetch(tolower($FROM)) eq "SUBSCRIBE")
  111. gdbmclose
  112. if (!$FORWARD)
  113. {
  114. EXITCODE=$UNSUBSCRIBED
  115. exit
  116. }
  117. #
  118. # SUBSCRIBED USERS ONLY
  119. #
  120. NOFORWARD=$FROM
  121. FROM=$ALIAS
  122. to "!"