Add sender rewriting scheme (SRS).
This commit is contained in:
parent
f24ce8295d
commit
43fd2da518
4 changed files with 116 additions and 15 deletions
|
|
@ -1,5 +1,11 @@
|
|||
# THIS FILE IS CONTROLLED BY ANSIBLE - DO NOT CHANGE IN DEPLOYMENT!
|
||||
|
||||
# Rewrite (envelope and header) recipient addresses:
|
||||
# - if the recipient address has a local domain and does
|
||||
# not begin with SRS0 or SRS1, then strip our verp_marker
|
||||
# - if the recipient address has a local domain and does
|
||||
# begin with SRS0 or SRS1, try to extract our srs_id
|
||||
# and lookup the corresponding original address
|
||||
|
||||
# man pgsql_table
|
||||
|
||||
|
|
@ -7,4 +13,35 @@ user = {{ mailserver.postgresql.username }}
|
|||
password = {{ mailserver.postgresql.password }}
|
||||
dbname = {{ mailserver.postgresql.dbname }}
|
||||
hosts = {{ mailserver.postgresql.host }}
|
||||
query = select regexp_replace('%s', '\+(.*){{ mailserver.postfix.verp_marker }}-\d+@', '+\1@')
|
||||
query =
|
||||
with
|
||||
mydomains as (select regexp_replace('%s', '.*@([^@]+)$', '\1') in (select name from domains) v),
|
||||
srs0 as (select lower(substr('%s', 1, 4)) = 'srs0' v),
|
||||
srs1 as (select lower(substr('%s', 1, 4)) = 'srs1' v)
|
||||
select
|
||||
case
|
||||
when mydomains.v and not srs0.v and not srs1.v
|
||||
then regexp_replace('%s', '^(.*)\+{{ mailserver.postfix.verp_marker }}-\d+@', '\1@')
|
||||
else
|
||||
case
|
||||
when mydomains.v
|
||||
then
|
||||
case
|
||||
when srs0.v
|
||||
then
|
||||
case
|
||||
when '%s' ~* '^SRS0=\d+@[^@]+$'
|
||||
then (select original from mail_from
|
||||
where srs_id = regexp_replace('%s', '^.....(\d+)@[^@]+$', '\1')::bigint
|
||||
and original<>rewritten)
|
||||
else '%s'
|
||||
end
|
||||
else (with t2 as (select regexp_replace('%s', '^(.*)@[^@]+$', '\1') v)
|
||||
select original from mail_from, t2
|
||||
where lower(substr(rewritten, 1, length(t2.v))) = lower(t2.v)
|
||||
and lower(substr(original, 1, 4)) = 'srs0')
|
||||
end
|
||||
else '%s'
|
||||
end
|
||||
end
|
||||
from mydomains, srs0, srs1
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue