Re: Checking from an external file?

Philip Rhoades via Courier-maildrop <[email protected]> Mon, 19 May 2025 14:09:13 +1000
Newsgroups gmane.mail.maildrop
Message-ID <[email protected]>
--=_b37ca558c6a8f00d53ab4d7fd2084cf1
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=US-ASCII;
 format=flowed

Milan,


On 2025-05-18 18:44, Milan Obuch wrote:
> Maybe a bit more explanation could help you...
> 
>> >   if (/^List-Id: *(.*)/)
> 
> This tests for existence of List-Id mail header, commonly used by
> mailing list software to mark mail as being sent via mailing list, and
> record which one it was.
> 
> For your use case, substitute ^List-Id: with ^Subject:
> 
>> >    {ListId = $MATCH1
> 
> This way, ListId value is being set to List-Id header value, so it can
> be processed below.
> 
>> >     if ($ListId =~ /.*\<(.*)\>/)
> 
> List-Id mail header commonly contains some free text human readable
> description and list identifier, the later enclosed in angle brackets
> (<>).
> 
>> >      ListId = $MATCH1
> 
> Extract true list identifier.
> 
>> >     if (gdbmopen('.list.db','R'))
> 
> Open db file for reading.
> 
>> >      echo 'gdbmopen error R1'
> 
> Report problem in log.
> 
>> >     else
>> >      {MAILDIR = gdbmfetch($ListId)
> 
> Extract desired folder for given list identifier.
> 
>> >       gdbmclose
> 
> Close database.
> 
>> >       if ($MAILDIR)
> 
> Folder for given identifier found, use it below.
> 
>> >        {exception {to "$HOME/Maildir/$MAILDIR/"
> 
> Put mail in designated folder if it exist, use default folder in case
> of any error, so the mail does not get lost.
> 
> I hope my detailed notes (maybe too detailed for you, but I have no
> idea about level of your experience, so I went rather to detail here)
> help you in your experiments.
> 
>> Right - I am a bit anxious about a db - I guess I preferred just text
>> files for simplicity etc but this might work . .
>> 
> 
> I think the same. When I wrote those recipes, years ago, I do no longer
> remember how much years, I found the database functions in maildrop are
> simpler actually, and probably more efficient than sequential tests.


Right.


> Think of it as some kind of cache - file parsing occurs once, when file
> is changed, and then quick lookup is done on mail delivery.


Right.


> Actually, if you need just some string presence test for your use case,
> there is lookup function in maildrop, which could be just the right one
> for you, but my first response was based on what I actually use, and my
> use case requires not only presence test, but some associated value for
> the string found as well.


OK, first steps for me - maybe I can look at that later . .


>> > I have 101 lines in my .list file, so while its handling looks
>> > somewhat complex, it is simpler to maintain long-term... and when I
>> > created this, I was willing to spend some time to learn things and
>> > automatize mail processing when possible.
>> 
>> 
>> Yes, I am too - however one reason for looking into this idea was
>> because when I added 2,534 lines to my .mailfilter file, I got a core
>> dump . . even with verbose = 5 I can't see why . . I thought looking
>> up a separate file might help sort out problems.
>> 
> 
> Ah, yes, using some kind of lookup for grouping similar case greatly
> reduces complexity of maildrop recipe, which in turn makes it easier to
> look for some syntax problem or anything weird you may have 
> encountered.


OK, I have:

- Created a new usr "tst"

- Copied .mailfilter from "phr" and deleted all of phr's custom stuff

- Successfully mailed from GMail to tst and done local maildrop emails 
to tst.

However, after having added your code (and admittedly still not been 
100% sure of what I am doing) . . for the attached new .mailfilter file 
(I have changed the ownership to phr so I can upload it) I am getting:

[tst@pricom ~]$ maildrop ~tst/.mailfilter < ~tst/Maildir/tmd_00.txt # 
which usually works
/home/tst/.mailfilter(151): Syntax error.

So I must have syntax errors or I am still missing stuff . .

Regards,

Phil.
-- 
Philip Rhoades

PO Box 896
Cowra  NSW  2794
Australia
E-mail:  [email protected]
--=_b37ca558c6a8f00d53ab4d7fd2084cf1
Content-Transfer-Encoding: base64
Content-Type: text/plain;
 name=.mailfilter
Content-Disposition: attachment;
 filename=.mailfilter;
 size=3736

ZXRlbyBHbG9iYWwgbWFpbGRyb3AgZmlsdGVyIGZpbGUgLSBzZWUgIiMjIFBIUiIgYmVsb3cKCiMg
SW4gVmltIHVzZSAoRjggd2l0aCBsaW5lIHVuZGVyIGN1cnNvcik6CiMgCiMgCTpzZSBmb2xkbWV0
aG9kPW1hcmtlcgojCVZvb20KIyAKIyAJOi4sJFZvb21Tb3J0CiMgCQojIAktIHRvIHNvcnQgbm9k
ZXMKIyAKIyAJQ1RSTC9bdXB8ZG93bl0KIyAJCiMgCS0gdG8gbW92ZSBub2RlcwoKIyBUbyBhZGQg
dGhlIE1haWxkaXIgdGVybSB3aGlsZSBpbiB0aGUgVm9vbSByaWdodCB3aW5kb3c6CiMKIwk6c2V0
IHNwbGl0cmlnaHQKIwk6dmVydCB0ZXIKCiMgaHR0cHM6Ly9tYWlsZmlsdGVyLnNvdXJjZWZvcmdl
LmlvL2NvbmZpZy5odG1sCiMKIyBEZWZpbmUgdmFyaWFibGVzCiMKU0hFTEw9Ii9iaW4vYmFzaCIK
REVGQVVMVCA9ICIkSE9NRS9NYWlsZGlyIgpNQUlMRElSID0gIiRIT01FL01haWxkaXIiCgojCiMg
TG9nZmlsZSBkZXN0aW5hdGlvbgojIEFmdGVyIHlvdXIgc2F0aXNpZmVkIHRoYXQgdGhpcyBpcyB3
b3JraW5nIHByb3Blcmx5LAojIGNvbW1lbnQgb3V0IGFsbCB0aGUgbGluZXMgdGhhdCBzdGFydCB3
aXRoICJsb2ciCiMKbG9nZmlsZSAiJEhPTUUvLmdldG1haWwvLm1haWxkcm9wLmxvZyIKIwojIE1h
cmtlcnMgZm9yIHRoZSBsb2cgZmlsZQojCmxvZyAiTWFya2VyczogICAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCmxvZyAiICgqKikgZnJvbSBjb25maWcgZmls
ZSwgKElJKSBpbmZvcm1hdGlvbmFsLCAoV1cpIHdhcm5pbmciCmxvZyAiLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCmxvZyAiIgoKIyBWRVJC
T1NFID0gMQpWRVJCT1NFID0gNQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIwojIEFkZGluZyBtaXNzaW5nIGhlYWRlcnMgZm9y
IFBHUC9NSU1FCiMKCkJQTT0iLS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tIgpFUE09Ii0tLS0t
RU5EIFBHUCBNRVNTQUdFLS0tLS0iCkJQUz0iLS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0i
CkVQUz0iLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0tLS0tIgoKaWYgKCAhL15Db250ZW50LVR5cGU6
IG1lc3NhZ2UvICYmICEvXkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0LyBcCgkmJiAhL15Db250ZW50
LVR5cGU6IGFwcGxpY2F0aW9uXC9wZ3AvICkKCQl7CgkJaWYoIC9eJEJQTS86YiAmJiAvXiRFUE0v
OmIgKQoJCXhmaWx0ZXIgInJlZm9ybWFpbCAtQSAnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9w
Z3A7IGZvcm1hdD10ZXh0OyBcCgkJCXgtYWN0aW9uPWVuY3J5cHQnIgoKCQlpZiggL14kQlBTLzpi
ICYmIC9eJEVQUy86YiApCgkJeGZpbHRlciAicmVmb3JtYWlsIC1BICdDb250ZW50LVR5cGU6IGFw
cGxpY2F0aW9uL3BncDsgZm9ybWF0PXRleHQ7IFwKCQkJeC1hY3Rpb249c2lnbiciCgkJfQoKIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCiMKIyBDb3JyZWN0aW5nIHdyb25nIHNpZ25hdHVyZSBkYXNoZXMKIyAKCmlmICgg
L14tLSgkfFsgXXsyLH1eICkvOmIgKQoJewoJeGZpbHRlciAic2VkIC1yICdzL14tLSggJHxbIF17
Mix9XiApLy0tIC8nIgoJbG9nICIoSUkpIFNpZyBEYXNoZXMgY29ycmVjdGVkIgoJfQoKIyBJbmNs
dWRlIGFueSBydWxlcyBzZXQgdXAgZm9yIHRoZSB1c2VyIC0gdGhpcyBnaXZlcyB0aGUKIyBhZG1p
bmlzdHJhdG9yIGEgd2F5IHRvIG92ZXJyaWRlIHRoZSBkb21haW4ncyBtYWlsZmlsdGVyIGZpbGUK
IwojIHRoaXMgaXMgYWxzbyB0aGUgInN1Z2dlc3RlZCIgd2F5IHRvIHNldCBpbmRpdmlkdWFsIHZh
bHVlcwojIGZvciBtYWlsZHJvcCBzdWNoIGFzIHF1b3RhLiAod2h5IGRvIHlvdSBuZWVkIHF1b3Rh
IG9uIHlvdXIgb3duIFBDPykKCiMjIFBIUiAtIGRvbid0IG5lZWQgdGhpcyBpZiBpbmNsdWRlZCBk
aXJlY3RseSBpbiAubWFpbGZpbHRlcgojIGB0ZXN0IC1yICRIT01FLy5tYWlsZmlsdGVyYAojIGlm
KCAkUkVUVVJOQ09ERSA9PSAwICkKIyAJewojIAlsb2cgIig9PSkgSW5jbHVkaW5nICRIT01FLy5t
YWlsZmlsdGVyIgojIAkJCWluY2x1ZGUgJEhPTUUvLm1haWxmaWx0ZXIKIyAJCX0KIyAJfQojCiMK
IyAtIG1haWxkcm9wIG1haWxpbmdsaXN0LgojIGh0dHA6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQv
bGlzdHMvbGlzdGluZm8vY291cmllci1tYWlsZHJvcAojCiMKIyAtIFBsZWFzZSBicm93c2UgdGhl
IG1haWxpbmdsaXN0IGFyY2hpdmVzIGZvciBtb3JlIGV4YW1wbGVzLgojIGh0dHA6Ly9zb3VyY2Vm
b3JnZS5uZXQvbWFpbGFyY2hpdmUvZm9ydW0ucGhwP2ZvcnVtPWNvdXJpZXItbWFpbGRyb3AKIwoj
CiMgLSBTYXZlIHRoaXMgZmlsZSBhcyAubWFpbGZpbHRlciBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5
IGFuZCBkbwojIGNobW9kIDYwMCAubWFpbGZpbHRlcgojCiMKIyAtIERvIG5vdCBlZGl0IHlvdXIg
Lm1haWxmaWx0ZXIgZmlsZSB3aXRoIGEgRE9TIG9yIFdJTkRPV1MKIyB0ZXh0ZWRpdG9yISEKIwoj
CiMgLSBMaW5lYnJlYWtpbmcgZG9lc24ndCB3b3JrIGluc2lkZSBhIHBhdHRlcm4uIFNvIHRoZSBm
b2xsb3dpbmcKIyBydWxlIGNhbm5vdCB3b3JrOgojCiNpZiggL15TdWJqZWN0Oi4qKGV4aW18c2Vu
ZG1haWx8IFwKIwlnZG18eGRtfGltYXB8Y2dpICkvICkKIwojIGFuZCBtdXN0IGJlIGluIG9uZSBs
aW5lOgojCiMgaWYoIC9eU3ViamVjdDouKihleGltfHNlbmRtYWlsfGdkbXx4ZG18aW1hcHxjZ2kg
KS8gKQojCiMKIyAtIExpbmVicmVha2luZyBvbmx5IHdvcmtzIGZvciBxdW90ZWQgdGV4dCBhbmQg
YmV0d2VlbiBwYXR0ZXJuczoKIwojICJJbWFnaW5lIHRoaXMgaXMgYXMgYSBcCiMJCQkJbG9uZyB0
ZXh0IHN0cmluZyIKIwojCiNpZiggL15UbzouKjNtdXR0LyBcCiMJfHwgL15bQ2NdW0NjXTouKm11
dHQvICkKIwojJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycn
JycnJycnJycnJycnJycnJycnJycKCiAgaWYgKC9eU3ViamVjdDogKiguKikvKQogICB7TGlzdElk
ID0gJE1BVENIMQogICAgaWYgKCRMaXN0SWQgPX4gLy4qXDwoLiopXD4vKQogICAgIExpc3RJZCA9
ICRNQVRDSDEKICAgIGlmIChnZGJtb3BlbignLmxpc3QuZGInLCdSJykpCiAgICAgZWNobyAnZ2Ri
bW9wZW4gZXJyb3IgUjEnCiAgICBlbHNlCiAgICAge01BSUxESVIgPSBnZGJtZmV0Y2goJExpc3RJ
ZCkKICAgICAgZ2RibWNsb3NlCiAgICAgIGlmICgkTUFJTERJUikKICAgICAgIHtleGNlcHRpb24g
e3RvICIkSE9NRS9NYWlsZGlyLyRNQUlMRElSLyIKICAgICAgICAgICAgICAgICAgfQogICAgICAg
fQogICAgIH0KICAgfQogCiAgKGdkYm1vcGVuKCcubGlzdC5kYicsJ04nKSkKICAgICBlY2hvICdn
ZGJtb3BlbiBlcnJvciBOMScKICAgIGVsc2UKICAgICB7Zm9yZWFjaCAoYGNhdCAkSE9NRS8ubGlz
dGApID1+IC9cUytccytcUysvCiAgICAgICB7JE1BVENIID1+IC8oXFMrKVxzKyhcUyspLzsKICAg
ICAgICBpZiAoZ2RibXN0b3JlKCRNQVRDSDEsJE1BVENIMikpCiAgICAgICAgIGVjaG8gImdkYm0g
JE1BVENIMSA9PiAkTUFUQ0gyIHByb2JsZW0hIgogICAgICAgfQogICAgICBnZGJtY2xvc2UKICAg
ICB9CgovXlRvOiguKikvCmxvZyAkTUFUQ0gKL15DYzooLiopLwpsb2cgJE1BVENICiMgL15CY2M6
KC4qKS8KIyBsb2cgJE1BVENICnRvICRERUZBVUxUCg==
--=_b37ca558c6a8f00d53ab4d7fd2084cf1
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--=_b37ca558c6a8f00d53ab4d7fd2084cf1
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Courier-maildrop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/courier-maildrop

--=_b37ca558c6a8f00d53ab4d7fd2084cf1--