Иллюстрированный самоучитель по электронной почте

Настройка программы sendmail

При получении почтового сообщения адреса, указанные в полях То, From, Cc преобразуются в соответствии с правилами преобразования.

#####################################
#####
##### REWRITING RULES
#####
#####################################
### Rulset 3 - Name Canonicalization
#####################################
S3
# handle null input (translate to <@> special case)
R$@ $@ <a>
# basic textual canonicalization - note RFC733
heuristic here
R$*<$*>$*<$*>$* $2$3<$4>$5 strip multiple <> <>
R$*<$*<$+>$*>$* <$3>$5 2-level о nesting
R$*<>$* $@ <a> MAIL FROM:<> case
R$*<$+>$* $2 basic RFC821/822 parsing
# handle list:; syntax as special case
R$*:;$* $@ $1:; "g"
# make sure <@a,@b,@c: user@d> syntax is easy to
parse - undone later
R@ $+, $+ @ $1: $2 change all "," to ":"
# localize and dispose of route-based addresses
R@ $+: $+ $@ $>96 < @$1 >: $2 handle
<route-addr>
# find focus for list syntax
R $+: $* @ $+ $@ $>96 $1: $2 < @ $3 >
list syntax
R $+:$*; $@ $1: $2; list syntax
# find focus for @ syntax addresses
R$+ @ $+ $: $1 < @ $2 > focus on domain
R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze
right
R$+ < @ $+ > $@ $>96 $1 < @ $2 > already
canonical
# do some sanity checking
R$* < @ $*: $* > $* $1 < @ $2 $3 > $4 nix
colons in addrs
" convert old-style addresses to a domain-based
address
R$-! $+ $@ $>96 $2 < @ $1.UUCP > resolve uucp
names
R$+.$-!$+ $@ $>96 $3 < @ $1. $2 >
domain uucps
R$+! $+ $@ $>96 $2 < @ $*1.UUCP > uucp subdo-
mains
# if we have X signs, take the rightmost one R$* X $* $1 @ $2
First make them all @s. R$* @.$* @ $* $1 X $2 @ $3 Undo all but the last.
R$* @ $* $@ $>96 $1 < @ $2 > Insert < > and finish
# else we must be a local name
##########################################
### Ruleset 96 - bottom half of ruleset 3
##########################################
# At this point, everything should be in a "local_part<@domain>extra" format.
S96
# handle special cases for local names
R$* < @ localhost > $* $: $1 < @ $j. > $2
no domain at all
R$* < @ localhost. $m > $* $: $1 < @ $j. >
$2 local domain
R$* < @ localhost. UUCP > $* $: $1 < @ $j. >
$2.UUCP domain
R$* < @ [$+]>$* $: $1 < @@ [ $2 ] > $3
mark [a.b.c.d]
R$* < @@ $=w > $* $: $1 < @ $j. > $3
self-literal
R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP
addr
# pass UUCP addresses straight through
R$* < @ $+. UUCP > $* $@ $1 < <s> $2. UUCP. > $3
# pass to name server to make hostname canonical R$* < @ $* $-p > $* $: $1 < @ $[ $2 $3 $] > $4
# local host aliases and pseudo-domains are always
canonical
R$* < @ $=w > $* $: $1 < @ $2. > $3
R$* < @ $* $=p > $* $: $1 < @ $2 $3. > $4
R$* < @ $*..>$* $1 < @ $2. > $3
tf if this is the local hostname, make sure we
treat is as canonical
R$* < @ $j > $* $: $1 < § $j. > $2
#############################################
### Ruleset 4 Final Output Post-rewriting ###
#############################################
S4
R$*<@> $@ $1 handle <> and list:;
# strip trailing dot off possibly canonical name R$* < @ $+. > $* $1 < @ $2 > $3
# externalize local domain info
R$* <$+>$* $1 $2 $3 defocus R@ $+: § $+: $+ @ $1, @ $2: $3 <route-addr>
canonical R§ $* $@ @ $1...and exit
# UUCP must always be presented in old form R$+ @ $-. UUCP $2!$1 u@h.UUCP › h!u
# delete duplicate local names
R$+ % $=w @ $=w $1 @ $j u%host@host ›
u@host
#######################################################
### Ruleset 97 - recanonicalize and call ruleset
### zero (used for recursive calls)
#######################################################
S97
R$* $: $>3 $1
R$* $@ $>0 $1
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.