]>
git.immae.eu Git - perso/Immae/Config/Nix.git/blob - modules/private/mail/filter-rewrite-from.py
1 #! /usr/bin/env python3
4 sys
.stdin
.reconfigure(encoding
='utf-8')
5 sys
.stdout
.reconfigure(encoding
='utf-8')
12 # Change to actual file for logging
13 logfile
= open("/dev/null", "a")
16 logfile
.write("{} {}\n".format(i
, l
))
21 stdout
.write("{}\n".format(l
))
24 def token_and_sid(version
, sid
, token
):
26 return "{}|{}".format(token
, sid
)
28 return "{}|{}".format(sid
, token
)
32 line
= stdin
.readline().strip()
37 splitted
= line
.split("|")
38 if line
== "config|ready":
39 log("in config ready", "l")
40 send("register|filter|smtp-in|mail-from")
41 send("register|filter|smtp-in|data-line")
42 send("register|ready")
43 if splitted
[0] != "filter":
46 send("invalid filter command: expected >6 fields!")
52 token_sid
= token_and_sid(version
, sid
, token
)
53 rest
= "|".join(splitted
[7:])
54 if action
== "mail-from":
56 send("filter-result|{}|rewrite|<{}>".format(token_sid
, mailaddr
))
58 if action
== "data-line":
59 if rest
== "" and inheader
.get(sid
, False):
61 if rest
== "." and not inheader
.get(sid
):
63 if inheader
.get(sid
, False) and rest
.upper().startswith("FROM:"):
64 send("filter-dataline|{}|From: {}".format(token_sid
, mailaddr
))
66 send("filter-dataline|{}|{}".format(token_sid
, rest
))
68 send("filter-result|{}|proceed".format(token_sid
))