1da7d7b9cSGregory Neil Shapirodivert(-1) 2da7d7b9cSGregory Neil Shapiro# 3da7d7b9cSGregory Neil Shapiro# Copyright (c) 2014 Proofpoint, Inc. and its suppliers. 4da7d7b9cSGregory Neil Shapiro# All rights reserved. 5da7d7b9cSGregory Neil Shapiro# 6da7d7b9cSGregory Neil Shapiro# By using this file, you agree to the terms and conditions set 7da7d7b9cSGregory Neil Shapiro# forth in the LICENSE file which can be found at the top level of 8da7d7b9cSGregory Neil Shapiro# the sendmail distribution. 9da7d7b9cSGregory Neil Shapiro# 10da7d7b9cSGregory Neil Shapiro# 11da7d7b9cSGregory Neil Shapiro 12da7d7b9cSGregory Neil Shapirodivert(-1) 13da7d7b9cSGregory Neil Shapiro# Arguments: 14da7d7b9cSGregory Neil Shapiro# 1: Map to use 15da7d7b9cSGregory Neil Shapiro# - empty/none: default map bcctable 16da7d7b9cSGregory Neil Shapiro# - `access': to use access_db (with bcc: as tag) 17da7d7b9cSGregory Neil Shapiro# - map definition 18da7d7b9cSGregory Neil Shapiro# The map contains domain names and the RHS should be simply "ok". 19da7d7b9cSGregory Neil Shapiro# If the access map is used, then its lookup algorithm is used. 20da7d7b9cSGregory Neil Shapiro# Otherwise: 21da7d7b9cSGregory Neil Shapiro# domain ok 22da7d7b9cSGregory Neil Shapiro# matches anything@domain 23da7d7b9cSGregory Neil Shapiro# .domain ok 24da7d7b9cSGregory Neil Shapiro# matches any subdomain, e.g., l@sub.domain and l@sub.dom.domain 25da7d7b9cSGregory Neil Shapiro# On a match, the original address will be used as bcc address unless 26da7d7b9cSGregory Neil Shapiro# argument 3 is set. 27da7d7b9cSGregory Neil Shapiro# 2: Name of host ([mailer:]host) 28da7d7b9cSGregory Neil Shapiro# 3: Default bcc address: if set, this will be always used. 29da7d7b9cSGregory Neil Shapiro# Only one of 2/3 can be empty. 30da7d7b9cSGregory Neil Shapiro# Note: if Bcc address is used then only one copy will be sent! 31da7d7b9cSGregory Neil Shapiro# (due to duplicate elimination) 32da7d7b9cSGregory Neil Shapiro# 4: Map definition for canonicalRcpt map of address rewriting to 33da7d7b9cSGregory Neil Shapiro# apply to the added bcc envelope recipients. 34da7d7b9cSGregory Neil Shapiro# The option -T<TMPF> is required to handle temporary map failures. 35da7d7b9cSGregory Neil Shapiro# 36da7d7b9cSGregory Neil Shapiro# The ruleset must return either 37da7d7b9cSGregory Neil Shapiro# - an e-mail address (user@dom.ain) which is then added as "bcc" recipient. 38da7d7b9cSGregory Neil Shapiro# - an empty string: do not add a "bcc" recipient, or 39da7d7b9cSGregory Neil Shapiro# - $#error: fail the SMTP transaction (e.g., temporary lookup failure) 40da7d7b9cSGregory Neil Shapiro# 41da7d7b9cSGregory Neil Shapiro# This feature sets O AddBcc=true 42da7d7b9cSGregory Neil Shapiro 43da7d7b9cSGregory Neil Shapiroifelse(lower(_ARG_),`access',`define(`_BCC_ACCESS_', `1')') 44da7d7b9cSGregory Neil Shapirodefine(`_ADD_BCC_', `1') 45da7d7b9cSGregory Neil Shapiro 46da7d7b9cSGregory Neil Shapiroifdef(`_BCC_ACCESS_', `dnl 47da7d7b9cSGregory Neil Shapiroifdef(`_ACCESS_TABLE_', `', 48da7d7b9cSGregory Neil Shapiro `errprint(`*** ERROR: FEATURE(`bcc') requires FEATURE(`access_db') 49da7d7b9cSGregory Neil Shapiro')')') 50da7d7b9cSGregory Neil Shapiro 51da7d7b9cSGregory Neil Shapiroifdef(`_BCC_ACCESS_', `', ` 52da7d7b9cSGregory Neil ShapiroLOCAL_CONFIG 53da7d7b9cSGregory Neil ShapiroKbcctable ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`bcctable', `_ARG_')') 54da7d7b9cSGregory Neil Shapiro 55da7d7b9cSGregory Neil ShapiroLOCAL_CONFIG 56da7d7b9cSGregory Neil ShapiroO AddBcc=true 57da7d7b9cSGregory Neil Shapiroifelse(len(X`'_ARG2_),`1', `', ` 58da7d7b9cSGregory Neil ShapiroDA`'_ARG2_') 59da7d7b9cSGregory Neil Shapiro 60da7d7b9cSGregory Neil Shapiroifelse(len(X`'_ARG4_), `1', `', 61da7d7b9cSGregory Neil Shapiro`define(`_CANONIFY_BCC_', `1')dnl 62da7d7b9cSGregory Neil Shapirodefine(`_NEED_SMTPOPMODES_', `1')dnl 63da7d7b9cSGregory Neil Shapiro# canonical address look up for AddBcc recipients 64da7d7b9cSGregory Neil ShapiroKcanonicalRcpt _ARG4_ 65da7d7b9cSGregory Neil Shapiro')dnl 66da7d7b9cSGregory Neil Shapiro 67da7d7b9cSGregory Neil ShapiroLOCAL_RULESETS 68da7d7b9cSGregory Neil ShapiroSbcc 69da7d7b9cSGregory Neil ShapiroR< $+ > $1 70da7d7b9cSGregory Neil Shapiroifdef(`_BCC_ACCESS_', `dnl 71da7d7b9cSGregory Neil ShapiroR$+ @ $+ $: $1@$2 $| $>SearchList <! bcc> $| <D:$2> <>', 72da7d7b9cSGregory Neil Shapiro`R$+ @ $+ $: $1@$2 $| $>BCC $2') 73da7d7b9cSGregory Neil ShapiroR$* $| <?> $@ 74da7d7b9cSGregory Neil ShapiroR$* $| $* $: ifelse(len(X`'_ARG3_),`1', `$1', `_ARG3_') 75da7d7b9cSGregory Neil Shapiro 76da7d7b9cSGregory Neil Shapiroifdef(`_CANONIFY_BCC_', `dnl 77da7d7b9cSGregory Neil ShapiroR$+ @ $+ $: $1@$2 $| <$(canonicalRcpt $1 @ $2 $: $)> 78da7d7b9cSGregory Neil ShapiroR$* $| <> $@ 79*5b0945b5SGregory Neil ShapiroR$* $| <$* <TMPF>> $#error $@ 4.3.0 $: _TMPFMSG_(`BCC') 80da7d7b9cSGregory Neil ShapiroR$* $| <$+> $@ $2 map matched? 81da7d7b9cSGregory Neil Shapiro') 82da7d7b9cSGregory Neil Shapiro 83da7d7b9cSGregory Neil Shapiro 84da7d7b9cSGregory Neil Shapiroifdef(`_BCC_ACCESS_', `', ` 85da7d7b9cSGregory Neil ShapiroSBCC 86da7d7b9cSGregory Neil ShapiroR$+ $: $1 < $(bcctable $1 $: ? $) > 87da7d7b9cSGregory Neil ShapiroR$- . $+ <?> $: $2 < $(bcctable .$2 $: ? $) > 88da7d7b9cSGregory Neil ShapiroR$- . $+ <?> $: $>BCC $2 89da7d7b9cSGregory Neil ShapiroR$* <$*> $: <$2> 90da7d7b9cSGregory Neil Shapiro') 91