File: pm-jabup.rc

package info (click to toggle)
procmail-lib 1%3A2009.1202-4
  • links: PTS, VCS
  • area: main
  • in suites: buster, jessie, jessie-kfreebsd, stretch
  • size: 2,376 kB
  • ctags: 542
  • sloc: perl: 294; makefile: 177; sh: 4
file content (140 lines) | stat: -rw-r--r-- 4,861 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# pm-jabup.rc --  Keeep N arriving message backup in separate directory
#
#   File id
#
#       Copyright (C) 1997-2010 Jari Aalto
#
#       This program is free software; you can redistribute it and/or
#       modify it under the terms of the GNU General Public License as
#       published by the Free Software Foundation; either version 2 of the
#       License, or (at your option) any later version
#
#       This program is distributed in the hope that it will be useful, but
#       WITHOUT ANY WARRANTY; without even the implied warranty of
#       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
#       General Public License for more details
#       <http://www.gnu.org/copyleft/gpl.html>.
#
#   Description
#
#	Preserve last N arriving messages in a separate sub-directory.
#	This should be your safety-belt recipe that you put to the beginning
#	of your .procmailrc.
#
#	Procmail saves the backup files with names like: msg.rcG  msg.scG
#	msg.3YS1, msg.4YS1, msg.VYS1, msg.fYS1 to the backup directory.
#
#	Note: this recipe will alawys call shell commands for each message
#       you recive. That is needed because cleaning of the backup directory.
#       If you receive only small number of messages per day, the performance
#       drop of your .procmailrc is not crucial. But if you store many messages
#       per day, then the shell calls may be a performance problem.
#
#       In that case, consider moving the cleanup to the pm-jacron.rc
#       module (The cleanup is run only once a day, not for every message)
#
#       John Gianni send his simple bsckup script to Jari, who packaged
#       and generalized the code. The code is reused with John's permission
#       and maintaining responsibility was transferred to Jari
#
#   Required settings
#
#       (none)
#
#   Call arguments (variables to set before calling)
#
#       o   JA_BUP_MAX, How many messages to keep at maximum. 32 is default
#       o   JA_BUP_DIR, Where to store the messages. $HOME/Mail/bup by default
#       o   JA_BUP_FILES, regexp to match the saved files. Procmail default.
#       o   JA_BUP_CHECK_DIR. Once you have verified that this recipe works,
#           that directories are ok, please set this flag to "no" to prevent
#           running unnecessary `test' command for each email.
#
#   Usage example
#
#       You only want to keep backup of messages that are not from mailing
#       lists. You may want to use TO_ macro to detect addresses better,
#       this example matches against all headers
#
#           LISTS          = "(procmail|list-1|list-2)"
#           JA_BUP_DIR     = $HOME/Mail/backup/.        # Create the path too
#           JA_BUP_MAX     = 42                         # this should be enough
#
#           :0
#           *$ ! $LISTS
#           {
#               INCLUDERC = $PMSRC/pm-jabup.rc
#           }
#
#       If you get many messages, please don't use this module. Instead
#       see pm-jacron.rc where similar backup work is done better.
#
#   Change Log (none)

# .................................................... &initialising ...
id    = " pm-jabup.rc"
dummy = "subroutine: $id start"

# .......................................................... &public ...

default             = "$HOME/Mail/bup"
JA_BUP_DIR          = ${JA_BUP_DIR:-$default}
JA_BUP_MAX          = ${JA_BUP_MAX:-32}
JA_BUP_FILES        = ${JA_BUP_FILES:-"msg.*"}
JA_BUP_CHECK_DIR    = $JA_BUP_CHECK_DIR:-"yes"}

# ........................................................... &check ...

:0
* JA_BUP_CHECK_DIR ?? yes
{
    #   - If we're using the default directory, check that it exists.
    #   - Create one if needed and exit if create was unsuccessfull

    :0
    *$      JA_BUP_DIR ?? $default
    *$ ! ?  $IS_DIR $default || $MKDIR $default
    {
        EXITCODE = 217			# just some code, doesn't mean anything
        HOST				# stop immediately
    }


    :0
    *$ ! ? $IS_DIR $JA_BUP_DIR
    {
        dummy = "$id: $JA_MSG_ERROR $JA_BUP_DIR is not a directory"
        EXITCODE = 217
        HOST
    }
}

# ........................................................... &do-it ...

dummy = "subroutine: pm-jabup.rc delivering backup."

:0 c:
$JA_BUP_DIR

#   i = ignore write errors
#
#   - The 'rm -f dummy' makes sure that rm always has at least one argument,
#     because there may not be files in the directory.
#   - 'ls -t' returns files sorted by date, newest first
#   - 'sed' just chops first N files from the ls listing, leaving list
#     of old files
#
#   NOTE
#
#   - If you get lot of mail, it is too expensive to run this after
#     every message. Plese use cron(1) or pm-jacron.rc module to run something
#     only once a day.

:0 hwic
| cd $JA_BUP_DIR \
  && $RM -f dummy `$LS_BY_DATE $JA_BUP_FILES | $SED -e 1,${JA_BUP_MAX}d`


dummy = "subroutine: $id end."

# end of file pm-jadate.rc