140266059SGregory Neil Shapiro# 25dd76dd0SGregory Neil Shapiro# Copyright (c) 1998-2004, 2009, 2010 Proofpoint, Inc. and its suppliers. 340266059SGregory Neil Shapiro# All rights reserved. 440266059SGregory Neil Shapiro# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. 540266059SGregory Neil Shapiro# Copyright (c) 1988, 1993 640266059SGregory Neil Shapiro# The Regents of the University of California. All rights reserved. 740266059SGregory Neil Shapiro# 840266059SGregory Neil Shapiro# By using this file, you agree to the terms and conditions set 940266059SGregory Neil Shapiro# forth in the LICENSE file which can be found at the top level of 1040266059SGregory Neil Shapiro# the sendmail distribution. 1140266059SGregory Neil Shapiro# 1240266059SGregory Neil Shapiro# 1340266059SGregory Neil Shapiro 1440266059SGregory Neil Shapiro###################################################################### 1540266059SGregory Neil Shapiro###################################################################### 1640266059SGregory Neil Shapiro##### 1740266059SGregory Neil Shapiro##### SENDMAIL CONFIGURATION FILE 1840266059SGregory Neil Shapiro##### 19d39bd2c1SGregory Neil Shapiro##### built by xbuild@xenon14.us.proofpoint.com on Tue Jan 30 22:39:25 PST 2024 20d39bd2c1SGregory Neil Shapiro##### in /export/jenkins/jenkins3/workspace/pps-sendmail/OpenSource/sendmail-8.18.1/cf/cf 21e92d3f3fSGregory Neil Shapiro##### using ../ as configuration include directory 2240266059SGregory Neil Shapiro##### 2340266059SGregory Neil Shapiro###################################################################### 2440266059SGregory Neil Shapiro##### 2540266059SGregory Neil Shapiro##### DO NOT EDIT THIS FILE! Only edit the source .mc file. 2640266059SGregory Neil Shapiro##### 2740266059SGregory Neil Shapiro###################################################################### 2840266059SGregory Neil Shapiro###################################################################### 2940266059SGregory Neil Shapiro 304313cc83SGregory Neil Shapiro##### $Id: cfhead.m4,v 8.122 2013-11-22 20:51:13 ca Exp $ ##### 314313cc83SGregory Neil Shapiro##### $Id: cf.m4,v 8.33 2013-11-22 20:51:13 ca Exp $ ##### 324313cc83SGregory Neil Shapiro##### $Id: submit.mc,v 8.15 2013-11-22 20:51:08 ca Exp $ ##### 334313cc83SGregory Neil Shapiro##### $Id: msp.m4,v 1.34 2013-11-22 20:51:11 ca Exp $ ##### 3440266059SGregory Neil Shapiro 354313cc83SGregory Neil Shapiro##### $Id: no_default_msa.m4,v 8.3 2013-11-22 20:51:11 ca Exp $ ##### 3640266059SGregory Neil Shapiro 3740266059SGregory Neil Shapiro 384313cc83SGregory Neil Shapiro##### $Id: proto.m4,v 8.762 2013-11-22 20:51:13 ca Exp $ ##### 3940266059SGregory Neil Shapiro 4040266059SGregory Neil Shapiro# level 10 config file format 4140266059SGregory Neil ShapiroV10/Berkeley 4240266059SGregory Neil Shapiro 4340266059SGregory Neil Shapiro# override file safeties - setting this option compromises system security, 4440266059SGregory Neil Shapiro# addressing the actual file configuration problem is preferred 4540266059SGregory Neil Shapiro# need to set this before any file actions are encountered in the cf file 4640266059SGregory Neil Shapiro#O DontBlameSendmail=safe 4740266059SGregory Neil Shapiro 4840266059SGregory Neil Shapiro# default LDAP map specification 4940266059SGregory Neil Shapiro# need to set this now before any LDAP maps are defined 5040266059SGregory Neil Shapiro#O LDAPDefaultSpec=-h localhost 5140266059SGregory Neil Shapiro 5240266059SGregory Neil Shapiro################## 5340266059SGregory Neil Shapiro# local info # 5440266059SGregory Neil Shapiro################## 5540266059SGregory Neil Shapiro 5640266059SGregory Neil Shapiro# my LDAP cluster 5740266059SGregory Neil Shapiro# need to set this before any LDAP lookups are done (including classes) 5840266059SGregory Neil Shapiro#D{sendmailMTACluster}$m 5940266059SGregory Neil Shapiro 6040266059SGregory Neil ShapiroCwlocalhost 6140266059SGregory Neil Shapiro 6240266059SGregory Neil Shapiro# my official domain name 6340266059SGregory Neil Shapiro# ... define this only if sendmail cannot automatically determine your domain 6440266059SGregory Neil Shapiro#Dj$w.Foo.COM 6540266059SGregory Neil Shapiro 66323f6dcbSGregory Neil Shapiro# host/domain names ending with a token in class P are canonical 6740266059SGregory Neil ShapiroCP. 6840266059SGregory Neil Shapiro 6940266059SGregory Neil Shapiro# "Smart" relay host (may be null) 7040266059SGregory Neil ShapiroDS 7140266059SGregory Neil Shapiro 7240266059SGregory Neil Shapiro 7340266059SGregory Neil Shapiro# operators that cannot be in local usernames (i.e., network indicators) 7440266059SGregory Neil ShapiroCO @ % ! 7540266059SGregory Neil Shapiro 7640266059SGregory Neil Shapiro# a class with just dot (for identifying canonical names) 7740266059SGregory Neil ShapiroC.. 7840266059SGregory Neil Shapiro 7940266059SGregory Neil Shapiro# a class with just a left bracket (for identifying domain literals) 8040266059SGregory Neil ShapiroC[[ 8140266059SGregory Neil Shapiro 8240266059SGregory Neil Shapiro 8340266059SGregory Neil Shapiro# Resolve map (to check if a host exists in check_mail) 8440266059SGregory Neil ShapiroKresolve host -a<OKR> -T<TEMP> 8540266059SGregory Neil ShapiroC{ResOk}OKR 8640266059SGregory Neil Shapiro 8740266059SGregory Neil Shapiro 8840266059SGregory Neil Shapiro# Hosts for which relaying is permitted ($=R) 8940266059SGregory Neil ShapiroFR-o /etc/mail/relay-domains 9040266059SGregory Neil Shapiro 912fb4f839SGregory Neil Shapiro 9240266059SGregory Neil Shapiro# arithmetic map 9340266059SGregory Neil ShapiroKarith arith 9440266059SGregory Neil Shapiro 9540266059SGregory Neil Shapiro 9640266059SGregory Neil Shapiro 9740266059SGregory Neil Shapiro 9840266059SGregory Neil Shapiro 9940266059SGregory Neil Shapiro# dequoting map 10040266059SGregory Neil ShapiroKdequote dequote 10140266059SGregory Neil Shapiro 10240266059SGregory Neil Shapiro# class E: names that should be exposed as from this host, even if we masquerade 10340266059SGregory Neil Shapiro# class L: names that should be delivered locally, even if we have a relay 10440266059SGregory Neil Shapiro# class M: domains that should be converted to $M 10540266059SGregory Neil Shapiro# class N: domains that should not be converted to $M 10640266059SGregory Neil Shapiro#CL root 10740266059SGregory Neil Shapiro 10840266059SGregory Neil Shapiro 10940266059SGregory Neil Shapiro 11040266059SGregory Neil Shapiro# my name for error messages 11140266059SGregory Neil ShapiroDnMAILER-DAEMON 11240266059SGregory Neil Shapiro 11340266059SGregory Neil Shapiro 114d39bd2c1SGregory Neil Shapiro 11513bd1963SGregory Neil ShapiroD{MTAHost}[127.0.0.1] 11640266059SGregory Neil Shapiro 117d39bd2c1SGregory Neil ShapiroEOPENSSL_CONF=/etc/mail/sendmail.ossl 11840266059SGregory Neil Shapiro 11940266059SGregory Neil Shapiro# Configuration version number 120d39bd2c1SGregory Neil ShapiroDZ8.18.1/Submit 12140266059SGregory Neil Shapiro 12240266059SGregory Neil Shapiro 12340266059SGregory Neil Shapiro############### 12440266059SGregory Neil Shapiro# Options # 12540266059SGregory Neil Shapiro############### 12640266059SGregory Neil Shapiro 12740266059SGregory Neil Shapiro# strip message body to 7 bits on input? 12840266059SGregory Neil ShapiroO SevenBitInput=False 12940266059SGregory Neil Shapiro 13040266059SGregory Neil Shapiro# 8-bit data handling 13140266059SGregory Neil Shapiro#O EightBitMode=pass8 13240266059SGregory Neil Shapiro 13340266059SGregory Neil Shapiro# wait for alias file rebuild (default units: minutes) 13440266059SGregory Neil ShapiroO AliasWait=10 13540266059SGregory Neil Shapiro 13640266059SGregory Neil Shapiro# location of alias file 137605302a5SGregory Neil Shapiro#O AliasFile=/etc/mail/aliases 13840266059SGregory Neil Shapiro 13940266059SGregory Neil Shapiro# minimum number of free blocks on filesystem 14040266059SGregory Neil ShapiroO MinFreeBlocks=100 14140266059SGregory Neil Shapiro 14240266059SGregory Neil Shapiro# maximum message size 143e92d3f3fSGregory Neil Shapiro#O MaxMessageSize=0 14440266059SGregory Neil Shapiro 14540266059SGregory Neil Shapiro# substitution for space (blank) characters 14640266059SGregory Neil ShapiroO BlankSub=. 14740266059SGregory Neil Shapiro 14840266059SGregory Neil Shapiro# avoid connecting to "expensive" mailers on initial submission? 14940266059SGregory Neil ShapiroO HoldExpensive=False 15040266059SGregory Neil Shapiro 15140266059SGregory Neil Shapiro# checkpoint queue runs after every N successful deliveries 15240266059SGregory Neil Shapiro#O CheckpointInterval=10 15340266059SGregory Neil Shapiro 15440266059SGregory Neil Shapiro# default delivery mode 15540266059SGregory Neil ShapiroO DeliveryMode=i 15640266059SGregory Neil Shapiro 15740266059SGregory Neil Shapiro# error message header/file 15840266059SGregory Neil Shapiro#O ErrorHeader=/etc/mail/error-header 15940266059SGregory Neil Shapiro 16040266059SGregory Neil Shapiro# error mode 16140266059SGregory Neil Shapiro#O ErrorMode=print 16240266059SGregory Neil Shapiro 16340266059SGregory Neil Shapiro# save Unix-style "From_" lines at top of header? 16440266059SGregory Neil Shapiro#O SaveFromLine=False 16540266059SGregory Neil Shapiro 16640266059SGregory Neil Shapiro# queue file mode (qf files) 16740266059SGregory Neil ShapiroO QueueFileMode=0660 16840266059SGregory Neil Shapiro 16940266059SGregory Neil Shapiro# temporary file mode 17040266059SGregory Neil ShapiroO TempFileMode=0600 17140266059SGregory Neil Shapiro 17240266059SGregory Neil Shapiro# match recipients against GECOS field? 17340266059SGregory Neil Shapiro#O MatchGECOS=False 17440266059SGregory Neil Shapiro 17540266059SGregory Neil Shapiro# maximum hop count 17640266059SGregory Neil Shapiro#O MaxHopCount=25 17740266059SGregory Neil Shapiro 17840266059SGregory Neil Shapiro# location of help file 17940266059SGregory Neil ShapiroO HelpFile=/etc/mail/helpfile 18040266059SGregory Neil Shapiro 18140266059SGregory Neil Shapiro# ignore dots as terminators in incoming messages? 18240266059SGregory Neil Shapiro#O IgnoreDots=False 18340266059SGregory Neil Shapiro 18440266059SGregory Neil Shapiro# name resolver options 18540266059SGregory Neil Shapiro#O ResolverOptions=+AAONLY 18640266059SGregory Neil Shapiro 18740266059SGregory Neil Shapiro# deliver MIME-encapsulated error messages? 18840266059SGregory Neil ShapiroO SendMimeErrors=True 18940266059SGregory Neil Shapiro 19040266059SGregory Neil Shapiro# Forward file search path 19140266059SGregory Neil ShapiroO ForwardPath 19240266059SGregory Neil Shapiro 19340266059SGregory Neil Shapiro# open connection cache size 19440266059SGregory Neil ShapiroO ConnectionCacheSize=2 19540266059SGregory Neil Shapiro 19640266059SGregory Neil Shapiro# open connection cache timeout 19740266059SGregory Neil ShapiroO ConnectionCacheTimeout=5m 19840266059SGregory Neil Shapiro 19940266059SGregory Neil Shapiro# persistent host status directory 20040266059SGregory Neil Shapiro#O HostStatusDirectory=.hoststat 20140266059SGregory Neil Shapiro 20240266059SGregory Neil Shapiro# single thread deliveries (requires HostStatusDirectory)? 20340266059SGregory Neil Shapiro#O SingleThreadDelivery=False 20440266059SGregory Neil Shapiro 20540266059SGregory Neil Shapiro# use Errors-To: header? 20640266059SGregory Neil ShapiroO UseErrorsTo=False 20740266059SGregory Neil Shapiro 208da7d7b9cSGregory Neil Shapiro# use compressed IPv6 address format? 209da7d7b9cSGregory Neil Shapiro#O UseCompressedIPv6Addresses 210da7d7b9cSGregory Neil Shapiro 21140266059SGregory Neil Shapiro# log level 21240266059SGregory Neil ShapiroO LogLevel=9 21340266059SGregory Neil Shapiro 21440266059SGregory Neil Shapiro# send to me too, even in an alias expansion? 21540266059SGregory Neil Shapiro#O MeToo=True 21640266059SGregory Neil Shapiro 21740266059SGregory Neil Shapiro# verify RHS in newaliases? 21840266059SGregory Neil ShapiroO CheckAliases=False 21940266059SGregory Neil Shapiro 22040266059SGregory Neil Shapiro# default messages to old style headers if no special punctuation? 22140266059SGregory Neil ShapiroO OldStyleHeaders=True 22240266059SGregory Neil Shapiro 22340266059SGregory Neil Shapiro# SMTP daemon options 22440266059SGregory Neil Shapiro 22540266059SGregory Neil ShapiroO DaemonPortOptions=Name=NoMTA, Addr=127.0.0.1, M=E 22640266059SGregory Neil Shapiro 22740266059SGregory Neil Shapiro# SMTP client options 22840266059SGregory Neil Shapiro#O ClientPortOptions=Family=inet, Address=0.0.0.0 22940266059SGregory Neil Shapiro 23040266059SGregory Neil Shapiro# Modifiers to define {daemon_flags} for direct submissions 23140266059SGregory Neil Shapiro#O DirectSubmissionModifiers 23240266059SGregory Neil Shapiro 23340266059SGregory Neil Shapiro# Use as mail submission program? See sendmail/SECURITY 23440266059SGregory Neil ShapiroO UseMSP=True 23540266059SGregory Neil Shapiro 23640266059SGregory Neil Shapiro# privacy flags 23740266059SGregory Neil ShapiroO PrivacyOptions=goaway,noetrn,restrictqrun 23840266059SGregory Neil Shapiro 23940266059SGregory Neil Shapiro# who (if anyone) should get extra copies of error messages 24040266059SGregory Neil Shapiro#O PostmasterCopy=Postmaster 24140266059SGregory Neil Shapiro 24240266059SGregory Neil Shapiro# slope of queue-only function 24340266059SGregory Neil Shapiro#O QueueFactor=600000 24440266059SGregory Neil Shapiro 24540266059SGregory Neil Shapiro# limit on number of concurrent queue runners 24640266059SGregory Neil Shapiro#O MaxQueueChildren 24740266059SGregory Neil Shapiro 24840266059SGregory Neil Shapiro# maximum number of queue-runners per queue-grouping with multiple queues 24940266059SGregory Neil Shapiro#O MaxRunnersPerQueue=1 25040266059SGregory Neil Shapiro 25140266059SGregory Neil Shapiro# priority of queue runners (nice(3)) 25240266059SGregory Neil Shapiro#O NiceQueueRun 25340266059SGregory Neil Shapiro 25440266059SGregory Neil Shapiro# shall we sort the queue by hostname first? 25540266059SGregory Neil Shapiro#O QueueSortOrder=priority 25640266059SGregory Neil Shapiro 25740266059SGregory Neil Shapiro# minimum time in queue before retry 25840266059SGregory Neil Shapiro#O MinQueueAge=30m 25940266059SGregory Neil Shapiro 260da7d7b9cSGregory Neil Shapiro# maximum time in queue before retry (if > 0; only for exponential delay) 261da7d7b9cSGregory Neil Shapiro#O MaxQueueAge 262da7d7b9cSGregory Neil Shapiro 26340266059SGregory Neil Shapiro# how many jobs can you process in the queue? 2644e4196cbSGregory Neil Shapiro#O MaxQueueRunSize=0 26540266059SGregory Neil Shapiro 26640266059SGregory Neil Shapiro# perform initial split of envelope without checking MX records 26740266059SGregory Neil Shapiro#O FastSplit=1 26840266059SGregory Neil Shapiro 26940266059SGregory Neil Shapiro# queue directory 27040266059SGregory Neil ShapiroO QueueDirectory=/var/spool/clientmqueue 27140266059SGregory Neil Shapiro 272d0cef73dSGregory Neil Shapiro# key for shared memory; 0 to turn off, -1 to auto-select 27340266059SGregory Neil Shapiro#O SharedMemoryKey=0 27440266059SGregory Neil Shapiro 275d0cef73dSGregory Neil Shapiro# file to store auto-selected key for shared memory (SharedMemoryKey = -1) 276d0cef73dSGregory Neil Shapiro#O SharedMemoryKeyFile 277605302a5SGregory Neil Shapiro 27840266059SGregory Neil Shapiro# timeouts (many of these) 27940266059SGregory Neil Shapiro#O Timeout.initial=5m 28040266059SGregory Neil Shapiro#O Timeout.connect=5m 28140266059SGregory Neil Shapiro#O Timeout.aconnect=0s 28240266059SGregory Neil Shapiro#O Timeout.iconnect=5m 28340266059SGregory Neil Shapiro#O Timeout.helo=5m 28440266059SGregory Neil Shapiro#O Timeout.mail=10m 28540266059SGregory Neil Shapiro#O Timeout.rcpt=1h 28640266059SGregory Neil Shapiro#O Timeout.datainit=5m 28740266059SGregory Neil Shapiro#O Timeout.datablock=1h 28840266059SGregory Neil Shapiro#O Timeout.datafinal=1h 28940266059SGregory Neil Shapiro#O Timeout.rset=5m 29040266059SGregory Neil Shapiro#O Timeout.quit=2m 29140266059SGregory Neil Shapiro#O Timeout.misc=2m 29240266059SGregory Neil Shapiro#O Timeout.command=1h 293e92d3f3fSGregory Neil Shapiro#O Timeout.ident=5s 29440266059SGregory Neil Shapiro#O Timeout.fileopen=60s 29540266059SGregory Neil Shapiro#O Timeout.control=2m 29640266059SGregory Neil ShapiroO Timeout.queuereturn=5d 29740266059SGregory Neil Shapiro#O Timeout.queuereturn.normal=5d 29840266059SGregory Neil Shapiro#O Timeout.queuereturn.urgent=2d 29940266059SGregory Neil Shapiro#O Timeout.queuereturn.non-urgent=7d 300e92d3f3fSGregory Neil Shapiro#O Timeout.queuereturn.dsn=5d 30140266059SGregory Neil ShapiroO Timeout.queuewarn=4h 30240266059SGregory Neil Shapiro#O Timeout.queuewarn.normal=4h 30340266059SGregory Neil Shapiro#O Timeout.queuewarn.urgent=1h 30440266059SGregory Neil Shapiro#O Timeout.queuewarn.non-urgent=12h 305e92d3f3fSGregory Neil Shapiro#O Timeout.queuewarn.dsn=4h 30640266059SGregory Neil Shapiro#O Timeout.hoststatus=30m 30740266059SGregory Neil Shapiro#O Timeout.resolver.retrans=5s 30840266059SGregory Neil Shapiro#O Timeout.resolver.retrans.first=5s 30940266059SGregory Neil Shapiro#O Timeout.resolver.retrans.normal=5s 31040266059SGregory Neil Shapiro#O Timeout.resolver.retry=4 31140266059SGregory Neil Shapiro#O Timeout.resolver.retry.first=4 31240266059SGregory Neil Shapiro#O Timeout.resolver.retry.normal=4 31340266059SGregory Neil Shapiro#O Timeout.lhlo=2m 31440266059SGregory Neil Shapiro#O Timeout.auth=10m 31540266059SGregory Neil Shapiro#O Timeout.starttls=1h 31640266059SGregory Neil Shapiro 31740266059SGregory Neil Shapiro# time for DeliverBy; extension disabled if less than 0 31840266059SGregory Neil Shapiro#O DeliverByMin=0 31940266059SGregory Neil Shapiro 32040266059SGregory Neil Shapiro# should we not prune routes in route-addr syntax addresses? 32140266059SGregory Neil Shapiro#O DontPruneRoutes=False 32240266059SGregory Neil Shapiro 32340266059SGregory Neil Shapiro# queue up everything before forking? 32440266059SGregory Neil ShapiroO SuperSafe=True 32540266059SGregory Neil Shapiro 32640266059SGregory Neil Shapiro# status file 32740266059SGregory Neil ShapiroO StatusFile=/var/spool/clientmqueue/sm-client.st 32840266059SGregory Neil Shapiro 32940266059SGregory Neil Shapiro# time zone handling: 33040266059SGregory Neil Shapiro# if undefined, use system default 33140266059SGregory Neil Shapiro# if defined but null, use TZ envariable passed in 33240266059SGregory Neil Shapiro# if defined and non-null, use that info 333605302a5SGregory Neil ShapiroO TimeZoneSpec= 33440266059SGregory Neil Shapiro 33540266059SGregory Neil Shapiro# default UID (can be username or userid:groupid) 33640266059SGregory Neil Shapiro#O DefaultUser=mailnull 33740266059SGregory Neil Shapiro 33840266059SGregory Neil Shapiro# list of locations of user database file (null means no lookup) 33940266059SGregory Neil Shapiro#O UserDatabaseSpec=/etc/mail/userdb 34040266059SGregory Neil Shapiro 34140266059SGregory Neil Shapiro# fallback MX host 34240266059SGregory Neil Shapiro#O FallbackMXhost=fall.back.host.net 34340266059SGregory Neil Shapiro 344e92d3f3fSGregory Neil Shapiro# fallback smart host 345e92d3f3fSGregory Neil Shapiro#O FallbackSmartHost=fall.back.host.net 346e92d3f3fSGregory Neil Shapiro 34740266059SGregory Neil Shapiro# if we are the best MX host for a site, try it directly instead of config err 34840266059SGregory Neil Shapiro#O TryNullMXList=False 34940266059SGregory Neil Shapiro 35040266059SGregory Neil Shapiro# load average at which we just queue messages 35140266059SGregory Neil Shapiro#O QueueLA=8 35240266059SGregory Neil Shapiro 35340266059SGregory Neil Shapiro# load average at which we refuse connections 35440266059SGregory Neil Shapiro#O RefuseLA=12 35540266059SGregory Neil Shapiro 356e92d3f3fSGregory Neil Shapiro# log interval when refusing connections for this long 357e92d3f3fSGregory Neil Shapiro#O RejectLogInterval=3h 358e92d3f3fSGregory Neil Shapiro 35940266059SGregory Neil Shapiro# load average at which we delay connections; 0 means no limit 36040266059SGregory Neil Shapiro#O DelayLA=0 36140266059SGregory Neil Shapiro 36240266059SGregory Neil Shapiro# maximum number of children we allow at one time 363739ac4d4SGregory Neil Shapiro#O MaxDaemonChildren=0 36440266059SGregory Neil Shapiro 36540266059SGregory Neil Shapiro# maximum number of new connections per second 36640266059SGregory Neil Shapiro#O ConnectionRateThrottle=0 36740266059SGregory Neil Shapiro 368e92d3f3fSGregory Neil Shapiro# Width of the window 369e92d3f3fSGregory Neil Shapiro#O ConnectionRateWindowSize=60s 370e92d3f3fSGregory Neil Shapiro 37140266059SGregory Neil Shapiro# work recipient factor 37240266059SGregory Neil Shapiro#O RecipientFactor=30000 37340266059SGregory Neil Shapiro 37440266059SGregory Neil Shapiro# deliver each queued job in a separate process? 37540266059SGregory Neil Shapiro#O ForkEachJob=False 37640266059SGregory Neil Shapiro 37740266059SGregory Neil Shapiro# work class factor 37840266059SGregory Neil Shapiro#O ClassFactor=1800 37940266059SGregory Neil Shapiro 38040266059SGregory Neil Shapiro# work time factor 38140266059SGregory Neil Shapiro#O RetryFactor=90000 38240266059SGregory Neil Shapiro 38340266059SGregory Neil Shapiro# default character set 384b6bacd31SGregory Neil Shapiro#O DefaultCharSet=unknown-8bit 38540266059SGregory Neil Shapiro 38640266059SGregory Neil Shapiro# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others) 38740266059SGregory Neil Shapiro#O ServiceSwitchFile=/etc/mail/service.switch 38840266059SGregory Neil Shapiro 38940266059SGregory Neil Shapiro# hosts file (normally /etc/hosts) 39040266059SGregory Neil Shapiro#O HostsFile=/etc/hosts 39140266059SGregory Neil Shapiro 39240266059SGregory Neil Shapiro# dialup line delay on connection failure 3934e4196cbSGregory Neil Shapiro#O DialDelay=0s 39440266059SGregory Neil Shapiro 39540266059SGregory Neil Shapiro# action to take if there are no recipients in the message 3964e4196cbSGregory Neil Shapiro#O NoRecipientAction=none 39740266059SGregory Neil Shapiro 39840266059SGregory Neil Shapiro# chrooted environment for writing to files 3994e4196cbSGregory Neil Shapiro#O SafeFileEnvironment 40040266059SGregory Neil Shapiro 40140266059SGregory Neil Shapiro# are colons OK in addresses? 40240266059SGregory Neil Shapiro#O ColonOkInAddr=True 40340266059SGregory Neil Shapiro 40440266059SGregory Neil Shapiro# shall I avoid expanding CNAMEs (violates protocols)? 40540266059SGregory Neil Shapiro#O DontExpandCnames=False 40640266059SGregory Neil Shapiro 40740266059SGregory Neil Shapiro# SMTP initial login message (old $e macro) 40840266059SGregory Neil ShapiroO SmtpGreetingMessage=$j Sendmail $v/$Z; $b 40940266059SGregory Neil Shapiro 41040266059SGregory Neil Shapiro# UNIX initial From header format (old $l macro) 41140266059SGregory Neil ShapiroO UnixFromLine=From $g $d 41240266059SGregory Neil Shapiro 41340266059SGregory Neil Shapiro# From: lines that have embedded newlines are unwrapped onto one line 41440266059SGregory Neil Shapiro#O SingleLineFromHeader=False 41540266059SGregory Neil Shapiro 41640266059SGregory Neil Shapiro# Allow HELO SMTP command that does not include a host name 41740266059SGregory Neil Shapiro#O AllowBogusHELO=False 41840266059SGregory Neil Shapiro 41940266059SGregory Neil Shapiro# Characters to be quoted in a full name phrase (@,;:\()[] are automatic) 42040266059SGregory Neil Shapiro#O MustQuoteChars=. 42140266059SGregory Neil Shapiro 42240266059SGregory Neil Shapiro# delimiter (operator) characters (old $o macro) 42340266059SGregory Neil ShapiroO OperatorChars=.:%@!^/[]+ 42440266059SGregory Neil Shapiro 42540266059SGregory Neil Shapiro# shall I avoid calling initgroups(3) because of high NIS costs? 42613bd1963SGregory Neil ShapiroO DontInitGroups=True 42740266059SGregory Neil Shapiro 42840266059SGregory Neil Shapiro# are group-writable :include: and .forward files (un)trustworthy? 42940266059SGregory Neil Shapiro# True (the default) means they are not trustworthy. 43040266059SGregory Neil Shapiro#O UnsafeGroupWrites=True 43140266059SGregory Neil Shapiro 43240266059SGregory Neil Shapiro 43340266059SGregory Neil Shapiro# where do errors that occur when sending errors get sent? 43440266059SGregory Neil Shapiro#O DoubleBounceAddress=postmaster 43540266059SGregory Neil Shapiro 436d0cef73dSGregory Neil Shapiro# issue temporary errors (4xy) instead of permanent errors (5xy)? 437d0cef73dSGregory Neil Shapiro#O SoftBounce=False 438d0cef73dSGregory Neil Shapiro 43940266059SGregory Neil Shapiro# where to save bounces if all else fails 44040266059SGregory Neil Shapiro#O DeadLetterDrop=/var/tmp/dead.letter 44140266059SGregory Neil Shapiro 44240266059SGregory Neil Shapiro# what user id do we assume for the majority of the processing? 44340266059SGregory Neil ShapiroO RunAsUser=smmsp 44440266059SGregory Neil Shapiro 44540266059SGregory Neil Shapiro# maximum number of recipients per SMTP envelope 446e92d3f3fSGregory Neil Shapiro#O MaxRecipientsPerMessage=0 44740266059SGregory Neil Shapiro 44840266059SGregory Neil Shapiro# limit the rate recipients per SMTP envelope are accepted 44940266059SGregory Neil Shapiro# once the threshold number of recipients have been rejected 450e92d3f3fSGregory Neil Shapiro#O BadRcptThrottle=0 45140266059SGregory Neil Shapiro 4529bd497b8SGregory Neil Shapiro 45340266059SGregory Neil Shapiro# shall we get local names from our installed interfaces? 45440266059SGregory Neil ShapiroO DontProbeInterfaces=True 45540266059SGregory Neil Shapiro 45640266059SGregory Neil Shapiro# Return-Receipt-To: header implies DSN request 45740266059SGregory Neil Shapiro#O RrtImpliesDsn=False 45840266059SGregory Neil Shapiro 45940266059SGregory Neil Shapiro# override connection address (for testing) 46040266059SGregory Neil Shapiro#O ConnectOnlyTo=0.0.0.0 46140266059SGregory Neil Shapiro 46240266059SGregory Neil Shapiro# Trusted user for file ownership and starting the daemon 46340266059SGregory Neil ShapiroO TrustedUser=smmsp 46440266059SGregory Neil Shapiro 46540266059SGregory Neil Shapiro# Control socket for daemon management 46640266059SGregory Neil Shapiro#O ControlSocketName=/var/spool/mqueue/.control 46740266059SGregory Neil Shapiro 46840266059SGregory Neil Shapiro# Maximum MIME header length to protect MUAs 469e92d3f3fSGregory Neil Shapiro#O MaxMimeHeaderLength=0/0 47040266059SGregory Neil Shapiro 47140266059SGregory Neil Shapiro# Maximum length of the sum of all headers 47240266059SGregory Neil Shapiro#O MaxHeadersLength=32768 47340266059SGregory Neil Shapiro 47440266059SGregory Neil Shapiro# Maximum depth of alias recursion 47540266059SGregory Neil Shapiro#O MaxAliasRecursion=10 47640266059SGregory Neil Shapiro 47740266059SGregory Neil Shapiro# location of pid file 47840266059SGregory Neil ShapiroO PidFile=/var/spool/clientmqueue/sm-client.pid 47940266059SGregory Neil Shapiro 48040266059SGregory Neil Shapiro# Prefix string for the process title shown on 'ps' listings 48140266059SGregory Neil Shapiro#O ProcessTitlePrefix=prefix 48240266059SGregory Neil Shapiro 48340266059SGregory Neil Shapiro# Data file (df) memory-buffer file maximum size 48440266059SGregory Neil Shapiro#O DataFileBufferSize=4096 48540266059SGregory Neil Shapiro 48640266059SGregory Neil Shapiro# Transcript file (xf) memory-buffer file maximum size 48740266059SGregory Neil Shapiro#O XscriptFileBufferSize=4096 48840266059SGregory Neil Shapiro 48940266059SGregory Neil Shapiro# lookup type to find information about local mailboxes 49040266059SGregory Neil Shapiro#O MailboxDatabase=pw 49140266059SGregory Neil Shapiro 492e92d3f3fSGregory Neil Shapiro# override compile time flag REQUIRES_DIR_FSYNC 493e92d3f3fSGregory Neil Shapiro#O RequiresDirfsync=true 494e92d3f3fSGregory Neil Shapiro 49540266059SGregory Neil Shapiro# list of authentication mechanisms 49640266059SGregory Neil Shapiro#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5 49740266059SGregory Neil Shapiro 498e92d3f3fSGregory Neil Shapiro# Authentication realm 499e92d3f3fSGregory Neil Shapiro#O AuthRealm 500e92d3f3fSGregory Neil Shapiro 50140266059SGregory Neil Shapiro# default authentication information for outgoing connections 50240266059SGregory Neil Shapiro#O DefaultAuthInfo=/etc/mail/default-auth-info 50340266059SGregory Neil Shapiro 50440266059SGregory Neil Shapiro# SMTP AUTH flags 50540266059SGregory Neil Shapiro#O AuthOptions 50640266059SGregory Neil Shapiro 50740266059SGregory Neil Shapiro# SMTP AUTH maximum encryption strength 50840266059SGregory Neil Shapiro#O AuthMaxBits 50940266059SGregory Neil Shapiro 51040266059SGregory Neil Shapiro# SMTP STARTTLS server options 51140266059SGregory Neil Shapiro#O TLSSrvOptions 51240266059SGregory Neil Shapiro 513da7d7b9cSGregory Neil Shapiro# SSL cipherlist 514da7d7b9cSGregory Neil Shapiro#O CipherList 515da7d7b9cSGregory Neil Shapiro# server side SSL options 516da7d7b9cSGregory Neil Shapiro#O ServerSSLOptions 517da7d7b9cSGregory Neil Shapiro# client side SSL options 518da7d7b9cSGregory Neil Shapiro#O ClientSSLOptions 5195b0945b5SGregory Neil Shapiro# SSL Engine 5205b0945b5SGregory Neil Shapiro#O SSLEngine 5215b0945b5SGregory Neil Shapiro# Path to dynamic library for SSLEngine 5225b0945b5SGregory Neil Shapiro#O SSLEnginePath 5235b0945b5SGregory Neil Shapiro# TLS: fall back to clear text after handshake failure? 5245b0945b5SGregory Neil Shapiro#O TLSFallbacktoClear 5259bd497b8SGregory Neil Shapiro 52640266059SGregory Neil Shapiro# Input mail filters 52740266059SGregory Neil Shapiro#O InputMailFilters 52840266059SGregory Neil Shapiro 52940266059SGregory Neil Shapiro 53040266059SGregory Neil Shapiro# CA directory 53113bd1963SGregory Neil Shapiro#O CACertPath 53240266059SGregory Neil Shapiro# CA file 53313bd1963SGregory Neil Shapiro#O CACertFile 53440266059SGregory Neil Shapiro# Server Cert 53540266059SGregory Neil Shapiro#O ServerCertFile 53640266059SGregory Neil Shapiro# Server private key 53740266059SGregory Neil Shapiro#O ServerKeyFile 53840266059SGregory Neil Shapiro# Client Cert 53940266059SGregory Neil Shapiro#O ClientCertFile 54040266059SGregory Neil Shapiro# Client private key 54140266059SGregory Neil Shapiro#O ClientKeyFile 542e92d3f3fSGregory Neil Shapiro# File containing certificate revocation lists 543e92d3f3fSGregory Neil Shapiro#O CRLFile 5445b0945b5SGregory Neil Shapiro# Directory containing hashes pointing to certificate revocation status files 5455b0945b5SGregory Neil Shapiro#O CRLPath 54640266059SGregory Neil Shapiro# DHParameters (only required if DSA/DH is used) 54740266059SGregory Neil Shapiro#O DHParameters 54840266059SGregory Neil Shapiro# Random data source (required for systems without /dev/urandom under OpenSSL) 54940266059SGregory Neil Shapiro#O RandFile 550da7d7b9cSGregory Neil Shapiro# fingerprint algorithm (digest) to use for the presented cert 551da7d7b9cSGregory Neil Shapiro#O CertFingerprintAlgorithm 5525b0945b5SGregory Neil Shapiro# enable DANE? 5535b0945b5SGregory Neil Shapiro#O DANE=false 55440266059SGregory Neil Shapiro 555d0cef73dSGregory Neil Shapiro# Maximum number of "useless" commands before slowing down 556d0cef73dSGregory Neil Shapiro#O MaxNOOPCommands=20 557d0cef73dSGregory Neil Shapiro 558d0cef73dSGregory Neil Shapiro# Name to use for EHLO (defaults to $j) 559d0cef73dSGregory Neil Shapiro#O HeloName 560d0cef73dSGregory Neil Shapiro 561da7d7b9cSGregory Neil Shapiro 562da7d7b9cSGregory Neil Shapiro 56340266059SGregory Neil Shapiro############################ 56440266059SGregory Neil Shapiro# QUEUE GROUP DEFINITIONS # 56540266059SGregory Neil Shapiro############################ 56640266059SGregory Neil Shapiro 56740266059SGregory Neil Shapiro 56840266059SGregory Neil Shapiro########################### 56940266059SGregory Neil Shapiro# Message precedences # 57040266059SGregory Neil Shapiro########################### 57140266059SGregory Neil Shapiro 57240266059SGregory Neil ShapiroPfirst-class=0 57340266059SGregory Neil ShapiroPspecial-delivery=100 57440266059SGregory Neil ShapiroPlist=-30 57540266059SGregory Neil ShapiroPbulk=-60 57640266059SGregory Neil ShapiroPjunk=-100 57740266059SGregory Neil Shapiro 57840266059SGregory Neil Shapiro##################### 57940266059SGregory Neil Shapiro# Trusted users # 58040266059SGregory Neil Shapiro##################### 58140266059SGregory Neil Shapiro 58240266059SGregory Neil Shapiro# this is equivalent to setting class "t" 58340266059SGregory Neil Shapiro#Ft/etc/mail/trusted-users 58440266059SGregory Neil ShapiroTroot 58540266059SGregory Neil ShapiroTdaemon 58640266059SGregory Neil ShapiroTuucp 58740266059SGregory Neil Shapiro 58840266059SGregory Neil Shapiro######################### 58940266059SGregory Neil Shapiro# Format of headers # 59040266059SGregory Neil Shapiro######################### 59140266059SGregory Neil Shapiro 59240266059SGregory Neil ShapiroH?P?Return-Path: <$g> 59340266059SGregory Neil ShapiroHReceived: $?sfrom $s $.$?_($?s$|from $.$_) 59440266059SGregory Neil Shapiro $.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.) 59540266059SGregory Neil Shapiro $.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version} 59640266059SGregory Neil Shapiro (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u 59740266059SGregory Neil Shapiro for $u; $|; 59840266059SGregory Neil Shapiro $.$b 59940266059SGregory Neil ShapiroH?D?Resent-Date: $a 60040266059SGregory Neil ShapiroH?D?Date: $a 60140266059SGregory Neil ShapiroH?F?Resent-From: $?x$x <$g>$|$g$. 60240266059SGregory Neil ShapiroH?F?From: $?x$x <$g>$|$g$. 60340266059SGregory Neil ShapiroH?x?Full-Name: $x 60440266059SGregory Neil Shapiro# HPosted-Date: $a 60540266059SGregory Neil Shapiro# H?l?Received-Date: $b 60640266059SGregory Neil ShapiroH?M?Resent-Message-Id: <$t.$i@$j> 60740266059SGregory Neil ShapiroH?M?Message-Id: <$t.$i@$j> 60840266059SGregory Neil Shapiro 60940266059SGregory Neil Shapiro# 61040266059SGregory Neil Shapiro###################################################################### 61140266059SGregory Neil Shapiro###################################################################### 61240266059SGregory Neil Shapiro##### 61340266059SGregory Neil Shapiro##### REWRITING RULES 61440266059SGregory Neil Shapiro##### 61540266059SGregory Neil Shapiro###################################################################### 61640266059SGregory Neil Shapiro###################################################################### 61740266059SGregory Neil Shapiro 61840266059SGregory Neil Shapiro############################################ 61940266059SGregory Neil Shapiro### Ruleset 3 -- Name Canonicalization ### 62040266059SGregory Neil Shapiro############################################ 62140266059SGregory Neil ShapiroScanonify=3 62240266059SGregory Neil Shapiro 62340266059SGregory Neil Shapiro# handle null input (translate to <@> special case) 62440266059SGregory Neil ShapiroR$@ $@ <@> 62540266059SGregory Neil Shapiro 62640266059SGregory Neil Shapiro# strip group: syntax (not inside angle brackets!) and trailing semicolon 62740266059SGregory Neil ShapiroR$* $: $1 <@> mark addresses 62840266059SGregory Neil ShapiroR$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr> 62940266059SGregory Neil ShapiroR@ $* <@> $: @ $1 unmark @host:... 63040266059SGregory Neil ShapiroR$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr 63140266059SGregory Neil ShapiroR$* :: $* <@> $: $1 :: $2 unmark node::addr 63240266059SGregory Neil ShapiroR:include: $* <@> $: :include: $1 unmark :include:... 63340266059SGregory Neil ShapiroR$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon 63440266059SGregory Neil ShapiroR$* : $* <@> $: $2 strip colon if marked 63540266059SGregory Neil ShapiroR$* <@> $: $1 unmark 63640266059SGregory Neil ShapiroR$* ; $1 strip trailing semi 63740266059SGregory Neil ShapiroR$* < $+ :; > $* $@ $2 :; <@> catch <list:;> 63840266059SGregory Neil ShapiroR$* < $* ; > $1 < $2 > bogus bracketed semi 63940266059SGregory Neil Shapiro 64040266059SGregory Neil Shapiro# null input now results from list:; syntax 64140266059SGregory Neil ShapiroR$@ $@ :; <@> 64240266059SGregory Neil Shapiro 64340266059SGregory Neil Shapiro# strip angle brackets -- note RFC733 heuristic to get innermost item 64440266059SGregory Neil ShapiroR$* $: < $1 > housekeeping <> 64540266059SGregory Neil ShapiroR$+ < $* > < $2 > strip excess on left 64640266059SGregory Neil ShapiroR< $* > $+ < $1 > strip excess on right 64740266059SGregory Neil ShapiroR<> $@ < @ > MAIL FROM:<> case 64840266059SGregory Neil ShapiroR< $+ > $: $1 remove housekeeping <> 64940266059SGregory Neil Shapiro 65040266059SGregory Neil Shapiro# strip route address <@a,@b,@c:user@d> -> <user@d> 65140266059SGregory Neil ShapiroR@ $+ , $+ $2 65240266059SGregory Neil ShapiroR@ [ $* ] : $+ $2 65340266059SGregory Neil ShapiroR@ $+ : $+ $2 65440266059SGregory Neil Shapiro 65540266059SGregory Neil Shapiro# find focus for list syntax 65640266059SGregory Neil ShapiroR $+ : $* ; @ $+ $@ $>Canonify2 $1 : $2 ; < @ $3 > list syntax 65740266059SGregory Neil ShapiroR $+ : $* ; $@ $1 : $2; list syntax 65840266059SGregory Neil Shapiro 65940266059SGregory Neil Shapiro# find focus for @ syntax addresses 66040266059SGregory Neil ShapiroR$+ @ $+ $: $1 < @ $2 > focus on domain 66140266059SGregory Neil ShapiroR$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right 66240266059SGregory Neil ShapiroR$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical 66340266059SGregory Neil Shapiro 66440266059SGregory Neil Shapiro 66540266059SGregory Neil Shapiro# convert old-style addresses to a domain-based address 66640266059SGregory Neil ShapiroR$- ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > resolve uucp names 66740266059SGregory Neil ShapiroR$+ . $- ! $+ $@ $>Canonify2 $3 < @ $1 . $2 > domain uucps 66840266059SGregory Neil ShapiroR$+ ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > uucp subdomains 66940266059SGregory Neil Shapiro 67040266059SGregory Neil Shapiro# convert node::user addresses into a domain-based address 67140266059SGregory Neil ShapiroR$- :: $+ $@ $>Canonify2 $2 < @ $1 .DECNET > resolve DECnet names 67240266059SGregory Neil ShapiroR$- . $- :: $+ $@ $>Canonify2 $3 < @ $1.$2 .DECNET > numeric DECnet addr 67340266059SGregory Neil Shapiro 67440266059SGregory Neil Shapiro# if we have % signs, take the rightmost one 67540266059SGregory Neil ShapiroR$* % $* $1 @ $2 First make them all @s. 67640266059SGregory Neil ShapiroR$* @ $* @ $* $1 % $2 @ $3 Undo all but the last. 677da7d7b9cSGregory Neil Shapiro 67840266059SGregory Neil ShapiroR$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish 67940266059SGregory Neil Shapiro 68040266059SGregory Neil Shapiro# else we must be a local name 68140266059SGregory Neil ShapiroR$* $@ $>Canonify2 $1 68240266059SGregory Neil Shapiro 68340266059SGregory Neil Shapiro 68440266059SGregory Neil Shapiro################################################ 68540266059SGregory Neil Shapiro### Ruleset 96 -- bottom half of ruleset 3 ### 68640266059SGregory Neil Shapiro################################################ 68740266059SGregory Neil Shapiro 68840266059SGregory Neil ShapiroSCanonify2=96 68940266059SGregory Neil Shapiro 69040266059SGregory Neil Shapiro# handle special cases for local names 69140266059SGregory Neil ShapiroR$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all 69240266059SGregory Neil ShapiroR$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain 69340266059SGregory Neil ShapiroR$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain 69440266059SGregory Neil Shapiro 69540266059SGregory Neil Shapiro# check for IPv4/IPv6 domain literal 69640266059SGregory Neil ShapiroR$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [addr] 69740266059SGregory Neil ShapiroR$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal 69840266059SGregory Neil ShapiroR$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr 69940266059SGregory Neil Shapiro 70040266059SGregory Neil Shapiro 70140266059SGregory Neil Shapiro 70240266059SGregory Neil Shapiro 70340266059SGregory Neil Shapiro 70440266059SGregory Neil Shapiro# if really UUCP, handle it immediately 70540266059SGregory Neil Shapiro 70640266059SGregory Neil Shapiro# try UUCP traffic as a local address 70740266059SGregory Neil ShapiroR$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3 70840266059SGregory Neil ShapiroR$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3 70940266059SGregory Neil Shapiro 71040266059SGregory Neil Shapiro# hostnames ending in class P are always canonical 71140266059SGregory Neil ShapiroR$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4 71240266059SGregory Neil ShapiroR$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4 71340266059SGregory Neil ShapiroR$* CC $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6 71440266059SGregory Neil ShapiroR$* CC $* $| $* $: $3 71540266059SGregory Neil Shapiro# pass to name server to make hostname canonical 71640266059SGregory Neil ShapiroR$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4 71740266059SGregory Neil ShapiroR$* $| $* $: $2 71840266059SGregory Neil Shapiro 71940266059SGregory Neil Shapiro# local host aliases and pseudo-domains are always canonical 72040266059SGregory Neil ShapiroR$* < @ $=w > $* $: $1 < @ $2 . > $3 72140266059SGregory Neil ShapiroR$* < @ $=M > $* $: $1 < @ $2 . > $3 72240266059SGregory Neil ShapiroR$* < @ $* . . > $* $1 < @ $2 . > $3 72340266059SGregory Neil Shapiro 72440266059SGregory Neil Shapiro 72540266059SGregory Neil Shapiro################################################## 72640266059SGregory Neil Shapiro### Ruleset 4 -- Final Output Post-rewriting ### 72740266059SGregory Neil Shapiro################################################## 72840266059SGregory Neil ShapiroSfinal=4 72940266059SGregory Neil Shapiro 73040266059SGregory Neil ShapiroR$+ :; <@> $@ $1 : handle <list:;> 73140266059SGregory Neil ShapiroR$* <@> $@ handle <> and list:; 73240266059SGregory Neil Shapiro 73340266059SGregory Neil Shapiro# strip trailing dot off possibly canonical name 73440266059SGregory Neil ShapiroR$* < @ $+ . > $* $1 < @ $2 > $3 73540266059SGregory Neil Shapiro 73640266059SGregory Neil Shapiro# eliminate internal code 73740266059SGregory Neil ShapiroR$* < @ *LOCAL* > $* $1 < @ $j > $2 73840266059SGregory Neil Shapiro 73940266059SGregory Neil Shapiro# externalize local domain info 74040266059SGregory Neil ShapiroR$* < $+ > $* $1 $2 $3 defocus 74140266059SGregory Neil ShapiroR@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical 74240266059SGregory Neil ShapiroR@ $* $@ @ $1 ... and exit 74340266059SGregory Neil Shapiro 74440266059SGregory Neil Shapiro# UUCP must always be presented in old form 74540266059SGregory Neil ShapiroR$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u 74640266059SGregory Neil Shapiro 74740266059SGregory Neil Shapiro# put DECnet back in :: form 74840266059SGregory Neil ShapiroR$+ @ $+ . DECNET $2 :: $1 u@h.DECNET => h::u 74940266059SGregory Neil Shapiro# delete duplicate local names 75040266059SGregory Neil ShapiroR$+ % $=w @ $=w $1 @ $2 u%host@host => u@host 75140266059SGregory Neil Shapiro 75240266059SGregory Neil Shapiro 75340266059SGregory Neil Shapiro 75440266059SGregory Neil Shapiro############################################################## 75540266059SGregory Neil Shapiro### Ruleset 97 -- recanonicalize and call ruleset zero ### 75640266059SGregory Neil Shapiro### (used for recursive calls) ### 75740266059SGregory Neil Shapiro############################################################## 75840266059SGregory Neil Shapiro 75940266059SGregory Neil ShapiroSRecurse=97 76040266059SGregory Neil ShapiroR$* $: $>canonify $1 76140266059SGregory Neil ShapiroR$* $@ $>parse $1 76240266059SGregory Neil Shapiro 76340266059SGregory Neil Shapiro 76440266059SGregory Neil Shapiro###################################### 76540266059SGregory Neil Shapiro### Ruleset 0 -- Parse Address ### 76640266059SGregory Neil Shapiro###################################### 76740266059SGregory Neil Shapiro 76840266059SGregory Neil ShapiroSparse=0 76940266059SGregory Neil Shapiro 77040266059SGregory Neil ShapiroR$* $: $>Parse0 $1 initial parsing 77140266059SGregory Neil ShapiroR<@> $#local $: <@> special case error msgs 77240266059SGregory Neil ShapiroR$* $: $>ParseLocal $1 handle local hacks 77340266059SGregory Neil ShapiroR$* $: $>Parse1 $1 final parsing 77440266059SGregory Neil Shapiro 77540266059SGregory Neil Shapiro# 77640266059SGregory Neil Shapiro# Parse0 -- do initial syntax checking and eliminate local addresses. 77740266059SGregory Neil Shapiro# This should either return with the (possibly modified) input 77840266059SGregory Neil Shapiro# or return with a #error mailer. It should not return with a 77940266059SGregory Neil Shapiro# #mailer other than the #error mailer. 78040266059SGregory Neil Shapiro# 78140266059SGregory Neil Shapiro 78240266059SGregory Neil ShapiroSParse0 78340266059SGregory Neil ShapiroR<@> $@ <@> special case error msgs 78440266059SGregory Neil ShapiroR$* : $* ; <@> $#error $@ 5.1.3 $: "553 List:; syntax illegal for recipient addresses" 78540266059SGregory Neil ShapiroR@ <@ $* > < @ $1 > catch "@@host" bogosity 78640266059SGregory Neil ShapiroR<@ $+> $#error $@ 5.1.3 $: "553 User address required" 78740266059SGregory Neil ShapiroR$+ <@> $#error $@ 5.1.3 $: "553 Hostname required" 78840266059SGregory Neil ShapiroR$* $: <> $1 78940266059SGregory Neil ShapiroR<> $* < @ [ $* ] : $+ > $* $1 < @ [ $2 ] : $3 > $4 79040266059SGregory Neil ShapiroR<> $* < @ [ $* ] , $+ > $* $1 < @ [ $2 ] , $3 > $4 79140266059SGregory Neil ShapiroR<> $* < @ [ $* ] $+ > $* $#error $@ 5.1.2 $: "553 Invalid address" 79240266059SGregory Neil ShapiroR<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3 79340266059SGregory Neil ShapiroR<> $* <$* : $* > $* $#error $@ 5.1.3 $: "553 Colon illegal in host name part" 79440266059SGregory Neil ShapiroR<> $* $1 79540266059SGregory Neil ShapiroR$* < @ . $* > $* $#error $@ 5.1.2 $: "553 Invalid host name" 79640266059SGregory Neil ShapiroR$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "553 Invalid host name" 79740266059SGregory Neil ShapiroR$* < @ $* @ > $* $#error $@ 5.1.2 $: "553 Invalid route address" 79840266059SGregory Neil ShapiroR$* @ $* < @ $* > $* $#error $@ 5.1.3 $: "553 Invalid route address" 79940266059SGregory Neil ShapiroR$* , $~O $* $#error $@ 5.1.3 $: "553 Invalid route address" 80040266059SGregory Neil Shapiro 80140266059SGregory Neil Shapiro 80240266059SGregory Neil Shapiro# now delete the local info -- note $=O to find characters that cause forwarding 80340266059SGregory Neil ShapiroR$* < @ > $* $@ $>Parse0 $>canonify $1 user@ => user 80440266059SGregory Neil ShapiroR< @ $=w . > : $* $@ $>Parse0 $>canonify $2 @here:... -> ... 80540266059SGregory Neil ShapiroR$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here 80640266059SGregory Neil ShapiroR< @ $+ > $#error $@ 5.1.3 $: "553 User address required" 80740266059SGregory Neil ShapiroR$* $=O $* < @ $=w . > $@ $>Parse0 $>canonify $1 $2 $3 ...@here -> ... 80840266059SGregory Neil ShapiroR$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo" 80940266059SGregory Neil ShapiroR< @ *LOCAL* > $#error $@ 5.1.3 $: "553 User address required" 81040266059SGregory Neil ShapiroR$* $=O $* < @ *LOCAL* > 81140266059SGregory Neil Shapiro $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ... 81240266059SGregory Neil ShapiroR$* < @ *LOCAL* > $: $1 81340266059SGregory Neil Shapiro 814da7d7b9cSGregory Neil Shapiro 81540266059SGregory Neil Shapiro# 81640266059SGregory Neil Shapiro# Parse1 -- the bottom half of ruleset 0. 81740266059SGregory Neil Shapiro# 81840266059SGregory Neil Shapiro 81940266059SGregory Neil ShapiroSParse1 82040266059SGregory Neil Shapiro 82140266059SGregory Neil Shapiro# handle numeric address spec 82240266059SGregory Neil ShapiroR$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec 8235ef517c0SGregory Neil ShapiroR$* < @ [ $+ ] > $* $: $1 < @ [ $2 ] : $S > $3 Add smart host to path 82440266059SGregory Neil ShapiroR$* < @ [ $+ ] : > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send 82540266059SGregory Neil ShapiroR$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer 82640266059SGregory Neil ShapiroR$* < @ [ $+ ] : $+ > $* $#esmtp $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer 82740266059SGregory Neil Shapiro 82840266059SGregory Neil Shapiro 82940266059SGregory Neil Shapiro# short circuit local delivery so forwarded email works 83040266059SGregory Neil Shapiro 83140266059SGregory Neil Shapiro 83240266059SGregory Neil ShapiroR$=L < @ $=w . > $#local $: @ $1 special local names 83340266059SGregory Neil ShapiroR$+ < @ $=w . > $#local $: $1 regular local name 83440266059SGregory Neil Shapiro 83540266059SGregory Neil Shapiro 83640266059SGregory Neil Shapiro# resolve remotely connected UUCP links (if any) 83740266059SGregory Neil Shapiro 83840266059SGregory Neil Shapiro# resolve fake top level domains by forwarding to other hosts 83940266059SGregory Neil Shapiro 84040266059SGregory Neil Shapiro 84140266059SGregory Neil Shapiro 84240266059SGregory Neil Shapiro# pass names that still have a host to a smarthost (if defined) 84340266059SGregory Neil ShapiroR$* < @ $* > $* $: $>MailerToTriple < $S > $1 < @ $2 > $3 glue on smarthost name 84440266059SGregory Neil Shapiro 84540266059SGregory Neil Shapiro# deal with other remote names 84640266059SGregory Neil ShapiroR$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain 84740266059SGregory Neil Shapiro 84840266059SGregory Neil Shapiro# handle locally delivered names 84940266059SGregory Neil ShapiroR$=L $#local $: @ $1 special local names 85040266059SGregory Neil ShapiroR$+ $#local $: $1 regular local names 85140266059SGregory Neil Shapiro 852da7d7b9cSGregory Neil Shapiro 853da7d7b9cSGregory Neil Shapiro 85440266059SGregory Neil Shapiro########################################################################### 85540266059SGregory Neil Shapiro### Ruleset 5 -- special rewriting after aliases have been expanded ### 85640266059SGregory Neil Shapiro########################################################################### 85740266059SGregory Neil Shapiro 85840266059SGregory Neil ShapiroSLocal_localaddr 85940266059SGregory Neil ShapiroSlocaladdr=5 86040266059SGregory Neil ShapiroR$+ $: $1 $| $>"Local_localaddr" $1 86140266059SGregory Neil ShapiroR$+ $| $#ok $@ $1 no change 86240266059SGregory Neil ShapiroR$+ $| $#$* $#$2 86340266059SGregory Neil ShapiroR$+ $| $* $: $1 86440266059SGregory Neil Shapiro 86540266059SGregory Neil Shapiro 86640266059SGregory Neil Shapiro 86740266059SGregory Neil Shapiro 86840266059SGregory Neil Shapiro# deal with plussed users so aliases work nicely 86940266059SGregory Neil ShapiroR$+ + * $#local $@ $&h $: $1 87040266059SGregory Neil ShapiroR$+ + $* $#local $@ + $2 $: $1 + * 87140266059SGregory Neil Shapiro 87240266059SGregory Neil Shapiro# prepend an empty "forward host" on the front 87340266059SGregory Neil ShapiroR$+ $: <> $1 87440266059SGregory Neil Shapiro 87540266059SGregory Neil Shapiro 87640266059SGregory Neil Shapiro 87740266059SGregory Neil ShapiroR< > $+ $: < > < $1 <> $&h > nope, restore +detail 87840266059SGregory Neil Shapiro 87940266059SGregory Neil ShapiroR< > < $+ <> + $* > $: < > < $1 + $2 > check whether +detail 88040266059SGregory Neil ShapiroR< > < $+ <> $* > $: < > < $1 > else discard 88140266059SGregory Neil ShapiroR< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part 88240266059SGregory Neil ShapiroR< > < $+ > + $* $#local $@ $2 $: @ $1 strip the extra + 88340266059SGregory Neil ShapiroR< > < $+ > $@ $1 no +detail 88440266059SGregory Neil ShapiroR$+ $: $1 <> $&h add +detail back in 88540266059SGregory Neil Shapiro 88640266059SGregory Neil ShapiroR$+ <> + $* $: $1 + $2 check whether +detail 88740266059SGregory Neil ShapiroR$+ <> $* $: $1 else discard 88840266059SGregory Neil ShapiroR< local : $* > $* $: $>MailerToTriple < local : $1 > $2 no host extension 88940266059SGregory Neil ShapiroR< error : $* > $* $: $>MailerToTriple < error : $1 > $2 no host extension 89040266059SGregory Neil Shapiro 89140266059SGregory Neil ShapiroR< $~[ : $+ > $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $2 > 89240266059SGregory Neil Shapiro 89340266059SGregory Neil ShapiroR< $+ > $+ $@ $>MailerToTriple < $1 > $2 < @ $1 > 89440266059SGregory Neil Shapiro 89540266059SGregory Neil Shapiro 89640266059SGregory Neil Shapiro################################################################### 89740266059SGregory Neil Shapiro### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ### 89840266059SGregory Neil Shapiro################################################################### 89940266059SGregory Neil Shapiro 90040266059SGregory Neil ShapiroSMailerToTriple=95 90140266059SGregory Neil ShapiroR< > $* $@ $1 strip off null relay 90240266059SGregory Neil ShapiroR< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4 903a7ec597cSGregory Neil ShapiroR< error : $- : $+ > $* $#error $@ $(dequote $1 $) $: $2 904a7ec597cSGregory Neil ShapiroR< error : $+ > $* $#error $: $1 90540266059SGregory Neil ShapiroR< local : $* > $* $>CanonLocal < $1 > $2 90640266059SGregory Neil ShapiroR< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user 90740266059SGregory Neil ShapiroR< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer 90840266059SGregory Neil ShapiroR< $=w > $* $@ $2 delete local host 90940266059SGregory Neil ShapiroR< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer 91040266059SGregory Neil Shapiro 91140266059SGregory Neil Shapiro################################################################### 91240266059SGregory Neil Shapiro### Ruleset CanonLocal -- canonify local: syntax ### 91340266059SGregory Neil Shapiro################################################################### 91440266059SGregory Neil Shapiro 91540266059SGregory Neil ShapiroSCanonLocal 91640266059SGregory Neil Shapiro# strip local host from routed addresses 91740266059SGregory Neil ShapiroR< $* > < @ $+ > : $+ $@ $>Recurse $3 91840266059SGregory Neil ShapiroR< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4 91940266059SGregory Neil Shapiro 92040266059SGregory Neil Shapiro# strip trailing dot from any host name that may appear 92140266059SGregory Neil ShapiroR< $* > $* < @ $* . > $: < $1 > $2 < @ $3 > 92240266059SGregory Neil Shapiro 92340266059SGregory Neil Shapiro# handle local: syntax -- use old user, either with or without host 92440266059SGregory Neil ShapiroR< > $* < @ $* > $* $#local $@ $1@$2 $: $1 92540266059SGregory Neil ShapiroR< > $+ $#local $@ $1 $: $1 92640266059SGregory Neil Shapiro 92740266059SGregory Neil Shapiro# handle local:user@host syntax -- ignore host part 92840266059SGregory Neil ShapiroR< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 > 92940266059SGregory Neil Shapiro 93040266059SGregory Neil Shapiro# handle local:user syntax 93140266059SGregory Neil ShapiroR< $+ > $* <@ $* > $* $#local $@ $2@$3 $: $1 93240266059SGregory Neil ShapiroR< $+ > $* $#local $@ $2 $: $1 93340266059SGregory Neil Shapiro 93440266059SGregory Neil Shapiro################################################################### 93540266059SGregory Neil Shapiro### Ruleset 93 -- convert header names to masqueraded form ### 93640266059SGregory Neil Shapiro################################################################### 93740266059SGregory Neil Shapiro 93840266059SGregory Neil ShapiroSMasqHdr=93 93940266059SGregory Neil Shapiro 94040266059SGregory Neil Shapiro 94140266059SGregory Neil Shapiro# do not masquerade anything in class N 94240266059SGregory Neil ShapiroR$* < @ $* $=N . > $@ $1 < @ $2 $3 . > 94340266059SGregory Neil Shapiro 94440266059SGregory Neil ShapiroR$* < @ *LOCAL* > $@ $1 < @ $j . > 94540266059SGregory Neil Shapiro 94640266059SGregory Neil Shapiro################################################################### 94740266059SGregory Neil Shapiro### Ruleset 94 -- convert envelope names to masqueraded form ### 94840266059SGregory Neil Shapiro################################################################### 94940266059SGregory Neil Shapiro 95040266059SGregory Neil ShapiroSMasqEnv=94 95140266059SGregory Neil ShapiroR$* < @ *LOCAL* > $* $: $1 < @ $j . > $2 95240266059SGregory Neil Shapiro 95340266059SGregory Neil Shapiro################################################################### 95440266059SGregory Neil Shapiro### Ruleset 98 -- local part of ruleset zero (can be null) ### 95540266059SGregory Neil Shapiro################################################################### 95640266059SGregory Neil Shapiro 95740266059SGregory Neil ShapiroSParseLocal=98 95840266059SGregory Neil Shapiro 95940266059SGregory Neil Shapiro 96040266059SGregory Neil Shapiro 96140266059SGregory Neil Shapiro 962ba00ec3dSGregory Neil Shapiro 963ba00ec3dSGregory Neil Shapiro 96440266059SGregory Neil Shapiro###################################################################### 96540266059SGregory Neil Shapiro### CanonAddr -- Convert an address into a standard form for 96640266059SGregory Neil Shapiro### relay checking. Route address syntax is 96740266059SGregory Neil Shapiro### crudely converted into a %-hack address. 96840266059SGregory Neil Shapiro### 96940266059SGregory Neil Shapiro### Parameters: 97040266059SGregory Neil Shapiro### $1 -- full recipient address 97140266059SGregory Neil Shapiro### 97240266059SGregory Neil Shapiro### Returns: 97340266059SGregory Neil Shapiro### parsed address, not in source route form 97440266059SGregory Neil Shapiro###################################################################### 97540266059SGregory Neil Shapiro 97640266059SGregory Neil ShapiroSCanonAddr 97740266059SGregory Neil ShapiroR$* $: $>Parse0 $>canonify $1 make domain canonical 97840266059SGregory Neil Shapiro 97940266059SGregory Neil Shapiro 98040266059SGregory Neil Shapiro###################################################################### 98140266059SGregory Neil Shapiro### ParseRecipient -- Strip off hosts in $=R as well as possibly 98240266059SGregory Neil Shapiro### $* $=m or the access database. 98340266059SGregory Neil Shapiro### Check user portion for host separators. 98440266059SGregory Neil Shapiro### 98540266059SGregory Neil Shapiro### Parameters: 98640266059SGregory Neil Shapiro### $1 -- full recipient address 98740266059SGregory Neil Shapiro### 98840266059SGregory Neil Shapiro### Returns: 98940266059SGregory Neil Shapiro### parsed, non-local-relaying address 99040266059SGregory Neil Shapiro###################################################################### 99140266059SGregory Neil Shapiro 99240266059SGregory Neil ShapiroSParseRecipient 99340266059SGregory Neil ShapiroR$* $: <?> $>CanonAddr $1 99440266059SGregory Neil ShapiroR<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots 99540266059SGregory Neil ShapiroR<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part 99640266059SGregory Neil Shapiro 99740266059SGregory Neil Shapiro# if no $=O character, no host in the user portion, we are done 99840266059SGregory Neil ShapiroR<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4> 99940266059SGregory Neil ShapiroR<?> $* $@ $1 100040266059SGregory Neil Shapiro 100140266059SGregory Neil Shapiro 100240266059SGregory Neil ShapiroR<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 > 100340266059SGregory Neil Shapiro 100440266059SGregory Neil Shapiro 100540266059SGregory Neil Shapiro 100640266059SGregory Neil ShapiroR<RELAY> $* < @ $* > $@ $>ParseRecipient $1 100740266059SGregory Neil ShapiroR<$+> $* $@ $2 100840266059SGregory Neil Shapiro 100940266059SGregory Neil Shapiro 101040266059SGregory Neil Shapiro###################################################################### 101140266059SGregory Neil Shapiro### check_relay -- check hostname/address on SMTP startup 101240266059SGregory Neil Shapiro###################################################################### 101340266059SGregory Neil Shapiro 1014e92d3f3fSGregory Neil Shapiro 1015e92d3f3fSGregory Neil Shapiro 101640266059SGregory Neil ShapiroSLocal_check_relay 101740266059SGregory Neil ShapiroScheck_relay 101840266059SGregory Neil ShapiroR$* $: $1 $| $>"Local_check_relay" $1 101940266059SGregory Neil ShapiroR$* $| $* $| $#$* $#$3 102040266059SGregory Neil ShapiroR$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2 102140266059SGregory Neil Shapiro 102240266059SGregory Neil ShapiroSBasic_check_relay 102340266059SGregory Neil Shapiro# check for deferred delivery mode 102494c01205SGregory Neil ShapiroR$* $: < $&{deliveryMode} > $1 102540266059SGregory Neil ShapiroR< d > $* $@ deferred 102640266059SGregory Neil ShapiroR< $* > $* $: $2 102740266059SGregory Neil Shapiro 102840266059SGregory Neil Shapiro 102940266059SGregory Neil Shapiro 103040266059SGregory Neil Shapiro###################################################################### 103140266059SGregory Neil Shapiro### check_mail -- check SMTP `MAIL FROM:' command argument 103240266059SGregory Neil Shapiro###################################################################### 103340266059SGregory Neil Shapiro 103440266059SGregory Neil ShapiroSLocal_check_mail 103540266059SGregory Neil ShapiroScheck_mail 103640266059SGregory Neil ShapiroR$* $: $1 $| $>"Local_check_mail" $1 103740266059SGregory Neil ShapiroR$* $| $#$* $#$2 103840266059SGregory Neil ShapiroR$* $| $* $@ $>"Basic_check_mail" $1 103940266059SGregory Neil Shapiro 104040266059SGregory Neil ShapiroSBasic_check_mail 104140266059SGregory Neil Shapiro# check for deferred delivery mode 104294c01205SGregory Neil ShapiroR$* $: < $&{deliveryMode} > $1 104340266059SGregory Neil ShapiroR< d > $* $@ deferred 104440266059SGregory Neil ShapiroR< $* > $* $: $2 104540266059SGregory Neil Shapiro 104640266059SGregory Neil Shapiro# authenticated? 104740266059SGregory Neil ShapiroR$* $: $1 $| $>"tls_client" $&{verify} $| MAIL 104840266059SGregory Neil ShapiroR$* $| $#$+ $#$2 104940266059SGregory Neil ShapiroR$* $| $* $: $1 105040266059SGregory Neil Shapiro 105140266059SGregory Neil ShapiroR<> $@ <OK> we MUST accept <> (RFC 1123) 105240266059SGregory Neil ShapiroR$+ $: <?> $1 105340266059SGregory Neil ShapiroR<?><$+> $: <@> <$1> 105440266059SGregory Neil ShapiroR<?>$+ $: <@> <$1> 105540266059SGregory Neil ShapiroR$* $: $&{daemon_flags} $| $1 105640266059SGregory Neil ShapiroR$* f $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 > 105740266059SGregory Neil ShapiroR$* u $* $| <@> < $* > $: <?> < $3 > 105840266059SGregory Neil ShapiroR$* $| $* $: $2 105940266059SGregory Neil Shapiro# handle case of @localhost on address 106040266059SGregory Neil ShapiroR<@> < $* @ localhost > $: < ? $&{client_name} > < $1 @ localhost > 106140266059SGregory Neil ShapiroR<@> < $* @ [127.0.0.1] > 106240266059SGregory Neil Shapiro $: < ? $&{client_name} > < $1 @ [127.0.0.1] > 1063da7d7b9cSGregory Neil ShapiroR<@> < $* @ [IPv6:0:0:0:0:0:0:0:1] > 1064da7d7b9cSGregory Neil Shapiro $: < ? $&{client_name} > < $1 @ [IPv6:0:0:0:0:0:0:0:1] > 1065da7d7b9cSGregory Neil ShapiroR<@> < $* @ [IPv6:::1] > 1066da7d7b9cSGregory Neil Shapiro $: < ? $&{client_name} > < $1 @ [IPv6:::1] > 106740266059SGregory Neil ShapiroR<@> < $* @ localhost.$m > 106840266059SGregory Neil Shapiro $: < ? $&{client_name} > < $1 @ localhost.$m > 106940266059SGregory Neil ShapiroR<@> < $* @ localhost.UUCP > 107040266059SGregory Neil Shapiro $: < ? $&{client_name} > < $1 @ localhost.UUCP > 107140266059SGregory Neil ShapiroR<@> $* $: $1 no localhost as domain 107240266059SGregory Neil ShapiroR<? $=w> $* $: $2 local client: ok 107340266059SGregory Neil ShapiroR<? $+> <$+> $#error $@ 5.5.4 $: "553 Real domain name required for sender address" 107440266059SGregory Neil ShapiroR<?> $* $: $1 107540266059SGregory Neil ShapiroR$* $: <?> $>CanonAddr $1 canonify sender address and mark it 107640266059SGregory Neil ShapiroR<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots 107740266059SGregory Neil Shapiro# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc) 1078959366dcSGregory Neil ShapiroR<?> $* < @ $* $=P > $: <OKR> $1 < @ $2 $3 > 1079959366dcSGregory Neil ShapiroR<?> $* < @ $j > $: <OKR> $1 < @ $j > 108040266059SGregory Neil ShapiroR<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 > 108140266059SGregory Neil ShapiroR<? $* <$->> $* < @ $+ > 108240266059SGregory Neil Shapiro $: <$2> $3 < @ $4 > 108340266059SGregory Neil Shapiro 108440266059SGregory Neil Shapiro 108540266059SGregory Neil Shapiro# handle case of no @domain on address 108640266059SGregory Neil ShapiroR<?> $* $: $&{daemon_flags} $| <?> $1 108740266059SGregory Neil ShapiroR$* u $* $| <?> $* $: <OKR> $3 108840266059SGregory Neil ShapiroR$* $| $* $: $2 108913bd1963SGregory Neil ShapiroR<?> $* $: < ? $&{client_addr} > $1 1090959366dcSGregory Neil ShapiroR<?> $* $@ <OKR> ...local unqualed ok 109140266059SGregory Neil ShapiroR<? $+> $* $#error $@ 5.5.4 $: "553 Domain name required for sender address " $&f 109240266059SGregory Neil Shapiro ...remote is not 109340266059SGregory Neil Shapiro# check results 109440266059SGregory Neil ShapiroR<?> $* $: @ $1 mark address: nothing known about it 1095d0cef73dSGregory Neil ShapiroR<$={ResOk}> $* $: @ $2 domain ok 109640266059SGregory Neil ShapiroR<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve" 109740266059SGregory Neil ShapiroR<PERM> $* $#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not exist" 109840266059SGregory Neil Shapiro 1099d0cef73dSGregory Neil Shapiro 1100d0cef73dSGregory Neil Shapiro 110140266059SGregory Neil Shapiro###################################################################### 110240266059SGregory Neil Shapiro### check_rcpt -- check SMTP `RCPT TO:' command argument 110340266059SGregory Neil Shapiro###################################################################### 110440266059SGregory Neil Shapiro 110540266059SGregory Neil ShapiroSLocal_check_rcpt 110640266059SGregory Neil ShapiroScheck_rcpt 110740266059SGregory Neil ShapiroR$* $: $1 $| $>"Local_check_rcpt" $1 110840266059SGregory Neil ShapiroR$* $| $#$* $#$2 110940266059SGregory Neil ShapiroR$* $| $* $@ $>"Basic_check_rcpt" $1 111040266059SGregory Neil Shapiro 111140266059SGregory Neil ShapiroSBasic_check_rcpt 111240266059SGregory Neil Shapiro# empty address? 111340266059SGregory Neil ShapiroR<> $#error $@ nouser $: "553 User address required" 111440266059SGregory Neil ShapiroR$@ $#error $@ nouser $: "553 User address required" 111540266059SGregory Neil Shapiro# check for deferred delivery mode 111694c01205SGregory Neil ShapiroR$* $: < $&{deliveryMode} > $1 111740266059SGregory Neil ShapiroR< d > $* $@ deferred 111840266059SGregory Neil ShapiroR< $* > $* $: $2 111940266059SGregory Neil Shapiro 112040266059SGregory Neil Shapiro 112140266059SGregory Neil Shapiro###################################################################### 112240266059SGregory Neil ShapiroR$* $: $1 $| @ $>"Rcpt_ok" $1 112340266059SGregory Neil ShapiroR$* $| @ $#TEMP $+ $: $1 $| T $2 112440266059SGregory Neil ShapiroR$* $| @ $#$* $#$2 112540266059SGregory Neil ShapiroR$* $| @ RELAY $@ RELAY 112640266059SGregory Neil ShapiroR$* $| @ $* $: O $| $>"Relay_ok" $1 112740266059SGregory Neil ShapiroR$* $| T $+ $: T $2 $| $>"Relay_ok" $1 112840266059SGregory Neil ShapiroR$* $| $#TEMP $+ $#error $2 112940266059SGregory Neil ShapiroR$* $| $#$* $#$2 113040266059SGregory Neil ShapiroR$* $| RELAY $@ RELAY 113140266059SGregory Neil ShapiroR T $+ $| $* $#error $1 113240266059SGregory Neil Shapiro# anything else is bogus 113340266059SGregory Neil ShapiroR$* $#error $@ 5.7.1 $: "550 Relaying denied" 113440266059SGregory Neil Shapiro 113540266059SGregory Neil Shapiro 113640266059SGregory Neil Shapiro###################################################################### 113740266059SGregory Neil Shapiro### Rcpt_ok: is the recipient ok? 113840266059SGregory Neil Shapiro###################################################################### 113940266059SGregory Neil ShapiroSRcpt_ok 114040266059SGregory Neil ShapiroR$* $: $>ParseRecipient $1 strip relayable hosts 114140266059SGregory Neil Shapiro 114240266059SGregory Neil Shapiro 114340266059SGregory Neil Shapiro 114440266059SGregory Neil Shapiro 114540266059SGregory Neil Shapiro# authenticated via TLS? 114640266059SGregory Neil ShapiroR$* $: $1 $| $>RelayTLS client authenticated? 114740266059SGregory Neil ShapiroR$* $| $# $+ $# $2 error/ok? 114840266059SGregory Neil ShapiroR$* $| $* $: $1 no 114940266059SGregory Neil Shapiro 115040266059SGregory Neil ShapiroR$* $: $1 $| $>"Local_Relay_Auth" $&{auth_type} 115140266059SGregory Neil ShapiroR$* $| $# $* $# $2 115240266059SGregory Neil ShapiroR$* $| NO $: $1 115340266059SGregory Neil ShapiroR$* $| $* $: $1 $| $&{auth_type} 115440266059SGregory Neil ShapiroR$* $| $: $1 115540266059SGregory Neil ShapiroR$* $| $={TrustAuthMech} $# RELAY 115640266059SGregory Neil ShapiroR$* $| $* $: $1 115740266059SGregory Neil Shapiro# anything terminating locally is ok 115840266059SGregory Neil ShapiroR$+ < @ $=w > $@ RELAY 115940266059SGregory Neil ShapiroR$+ < @ $* $=R > $@ RELAY 116040266059SGregory Neil Shapiro 116140266059SGregory Neil Shapiro 116240266059SGregory Neil Shapiro 1163e92d3f3fSGregory Neil Shapiro 116440266059SGregory Neil Shapiro# check for local user (i.e. unqualified address) 116540266059SGregory Neil ShapiroR$* $: <?> $1 116640266059SGregory Neil ShapiroR<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 > 116740266059SGregory Neil Shapiro# local user is ok 116840266059SGregory Neil ShapiroR<?> $+ $@ RELAY 116940266059SGregory Neil ShapiroR<$+> $* $: $2 117040266059SGregory Neil Shapiro 117140266059SGregory Neil Shapiro###################################################################### 117240266059SGregory Neil Shapiro### Relay_ok: is the relay/sender ok? 117340266059SGregory Neil Shapiro###################################################################### 117440266059SGregory Neil ShapiroSRelay_ok 117540266059SGregory Neil Shapiro# anything originating locally is ok 117640266059SGregory Neil Shapiro# check IP address 117740266059SGregory Neil ShapiroR$* $: $&{client_addr} 117840266059SGregory Neil ShapiroR$@ $@ RELAY originated locally 117940266059SGregory Neil ShapiroR0 $@ RELAY originated locally 118013bd1963SGregory Neil ShapiroR127.0.0.1 $@ RELAY originated locally 1181da7d7b9cSGregory Neil ShapiroRIPv6:0:0:0:0:0:0:0:1 $@ RELAY originated locally 118213bd1963SGregory Neil ShapiroRIPv6:::1 $@ RELAY originated locally 118340266059SGregory Neil ShapiroR$=R $* $@ RELAY relayable IP address 118440266059SGregory Neil ShapiroR$* $: [ $1 ] put brackets around it... 118540266059SGregory Neil ShapiroR$=w $@ RELAY ... and see if it is local 118640266059SGregory Neil Shapiro 118740266059SGregory Neil Shapiro 118840266059SGregory Neil Shapiro# check client name: first: did it resolve? 118940266059SGregory Neil ShapiroR$* $: < $&{client_resolve} > 1190e92d3f3fSGregory Neil ShapiroR<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr} 119140266059SGregory Neil ShapiroR<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name} 119240266059SGregory Neil ShapiroR<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name} 119340266059SGregory Neil ShapiroR$* $: <@> $&{client_name} 119440266059SGregory Neil Shapiro# pass to name server to make hostname canonical 119540266059SGregory Neil ShapiroR<@> $* $=P $:<?> $1 $2 119640266059SGregory Neil ShapiroR<@> $+ $:<?> $[ $1 $] 119740266059SGregory Neil ShapiroR$* . $1 strip trailing dots 119840266059SGregory Neil ShapiroR<?> $=w $@ RELAY 119940266059SGregory Neil ShapiroR<?> $* $=R $@ RELAY 120040266059SGregory Neil Shapiro 120140266059SGregory Neil Shapiro 120240266059SGregory Neil Shapiro 120340266059SGregory Neil Shapiro 1204d0cef73dSGregory Neil Shapiro 120540266059SGregory Neil Shapiro###################################################################### 120640266059SGregory Neil Shapiro### trust_auth: is user trusted to authenticate as someone else? 120740266059SGregory Neil Shapiro### 120840266059SGregory Neil Shapiro### Parameters: 120940266059SGregory Neil Shapiro### $1: AUTH= parameter from MAIL command 121040266059SGregory Neil Shapiro###################################################################### 121140266059SGregory Neil Shapiro 121240266059SGregory Neil ShapiroSLocal_trust_auth 121340266059SGregory Neil ShapiroStrust_auth 121440266059SGregory Neil ShapiroR$* $: $&{auth_type} $| $1 121540266059SGregory Neil Shapiro# required by RFC 2554 section 4. 121640266059SGregory Neil ShapiroR$@ $| $* $#error $@ 5.7.1 $: "550 not authenticated" 121740266059SGregory Neil ShapiroR$* $| $&{auth_authen} $@ identical 121840266059SGregory Neil ShapiroR$* $| <$&{auth_authen}> $@ identical 1219a7ec597cSGregory Neil ShapiroR$* $| $* $: $1 $| $>"Local_trust_auth" $2 122040266059SGregory Neil ShapiroR$* $| $#$* $#$2 122140266059SGregory Neil ShapiroR$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author} 122240266059SGregory Neil Shapiro 122340266059SGregory Neil Shapiro###################################################################### 122440266059SGregory Neil Shapiro### Relay_Auth: allow relaying based on authentication? 122540266059SGregory Neil Shapiro### 122640266059SGregory Neil Shapiro### Parameters: 122740266059SGregory Neil Shapiro### $1: ${auth_type} 122840266059SGregory Neil Shapiro###################################################################### 122940266059SGregory Neil ShapiroSLocal_Relay_Auth 123040266059SGregory Neil Shapiro 1231e92d3f3fSGregory Neil Shapiro###################################################################### 1232e92d3f3fSGregory Neil Shapiro### srv_features: which features to offer to a client? 1233e92d3f3fSGregory Neil Shapiro### (done in server) 1234e92d3f3fSGregory Neil Shapiro###################################################################### 1235e92d3f3fSGregory Neil ShapiroSsrv_features 1236e92d3f3fSGregory Neil Shapiro 1237e92d3f3fSGregory Neil Shapiro 1238e92d3f3fSGregory Neil Shapiro###################################################################### 12392fb4f839SGregory Neil Shapiro### clt_features: which features to use with a server? 12402fb4f839SGregory Neil Shapiro### (done in client) 12412fb4f839SGregory Neil Shapiro###################################################################### 12422fb4f839SGregory Neil ShapiroSclt_features 12432fb4f839SGregory Neil Shapiro 12442fb4f839SGregory Neil Shapiro 12452fb4f839SGregory Neil Shapiro###################################################################### 1246e92d3f3fSGregory Neil Shapiro### try_tls: try to use STARTTLS? 1247e92d3f3fSGregory Neil Shapiro### (done in client) 1248e92d3f3fSGregory Neil Shapiro###################################################################### 1249e92d3f3fSGregory Neil ShapiroStry_tls 1250e92d3f3fSGregory Neil Shapiro 1251e92d3f3fSGregory Neil Shapiro 12522fb4f839SGregory Neil Shapiro 1253d39bd2c1SGregory Neil Shapiro 1254e92d3f3fSGregory Neil Shapiro###################################################################### 1255e92d3f3fSGregory Neil Shapiro### tls_rcpt: is connection with server "good" enough? 1256e92d3f3fSGregory Neil Shapiro### (done in client, per recipient) 1257e92d3f3fSGregory Neil Shapiro### 1258e92d3f3fSGregory Neil Shapiro### Parameters: 1259e92d3f3fSGregory Neil Shapiro### $1: recipient 1260e92d3f3fSGregory Neil Shapiro###################################################################### 1261e92d3f3fSGregory Neil ShapiroStls_rcpt 1262d39bd2c1SGregory Neil ShapiroR$* $: $1 $| $&{verify} 1263d39bd2c1SGregory Neil ShapiroR$* $| DANE_NOTLS $#error $@ 4.7.0 $: "454 DANE: missing STARTTLS." 1264d39bd2c1SGregory Neil ShapiroR$* $| DANE_TEMP $#error $@ 4.7.0 $: "454 DANE check failed temporarily." 1265d39bd2c1SGregory Neil ShapiroR$* $| DANE_FAIL $#error $@ 4.7.0 $: "454 DANE check failed." 126640266059SGregory Neil Shapiro 126740266059SGregory Neil Shapiro###################################################################### 126840266059SGregory Neil Shapiro### tls_client: is connection with client "good" enough? 126940266059SGregory Neil Shapiro### (done in server) 127040266059SGregory Neil Shapiro### 127140266059SGregory Neil Shapiro### Parameters: 127240266059SGregory Neil Shapiro### ${verify} $| (MAIL|STARTTLS) 127340266059SGregory Neil Shapiro###################################################################### 127440266059SGregory Neil ShapiroStls_client 127540266059SGregory Neil ShapiroR$* $| $* $@ $>"TLS_connection" $1 127640266059SGregory Neil Shapiro 127740266059SGregory Neil Shapiro###################################################################### 127840266059SGregory Neil Shapiro### tls_server: is connection with server "good" enough? 127940266059SGregory Neil Shapiro### (done in client) 128040266059SGregory Neil Shapiro### 128140266059SGregory Neil Shapiro### Parameter: 128240266059SGregory Neil Shapiro### ${verify} 128340266059SGregory Neil Shapiro###################################################################### 128440266059SGregory Neil ShapiroStls_server 12855b0945b5SGregory Neil Shapiro 128640266059SGregory Neil ShapiroR$* $@ $>"TLS_connection" $1 128740266059SGregory Neil Shapiro 128840266059SGregory Neil Shapiro###################################################################### 128940266059SGregory Neil Shapiro### TLS_connection: is TLS connection "good" enough? 129040266059SGregory Neil Shapiro### 129140266059SGregory Neil Shapiro### Parameters: 129240266059SGregory Neil Shapiro### ${verify} 129340266059SGregory Neil Shapiro### Requirement: RHS from access map, may be ? for none. 129440266059SGregory Neil Shapiro###################################################################### 129540266059SGregory Neil ShapiroSTLS_connection 12962fb4f839SGregory Neil ShapiroRSOFTWARE $#error $@ 4.7.0 $: "454 TLS handshake failed." 12972fb4f839SGregory Neil ShapiroRPROTOCOL $#error $@ 4.7.0 $: "454 STARTTLS failed." 12982fb4f839SGregory Neil ShapiroRCONFIG $#error $@ 4.7.0 $: "454 STARTTLS temporarily not possible." 12992fb4f839SGregory Neil Shapiro 13002fb4f839SGregory Neil Shapiro 130140266059SGregory Neil Shapiro 130240266059SGregory Neil Shapiro 1303da7d7b9cSGregory Neil Shapiro 1304da7d7b9cSGregory Neil Shapiro 130540266059SGregory Neil Shapiro###################################################################### 130640266059SGregory Neil Shapiro### RelayTLS: allow relaying based on TLS authentication 130740266059SGregory Neil Shapiro### 130840266059SGregory Neil Shapiro### Parameters: 130940266059SGregory Neil Shapiro### none 131040266059SGregory Neil Shapiro###################################################################### 131140266059SGregory Neil ShapiroSRelayTLS 131240266059SGregory Neil Shapiro# authenticated? 131340266059SGregory Neil Shapiro 131440266059SGregory Neil Shapiro###################################################################### 131540266059SGregory Neil Shapiro### authinfo: lookup authinfo in the access map 131640266059SGregory Neil Shapiro### 131740266059SGregory Neil Shapiro### Parameters: 131840266059SGregory Neil Shapiro### $1: {server_name} 131940266059SGregory Neil Shapiro### $2: {server_addr} 132040266059SGregory Neil Shapiro###################################################################### 132140266059SGregory Neil ShapiroSauthinfo 132240266059SGregory Neil Shapiro 132340266059SGregory Neil Shapiro 132440266059SGregory Neil Shapiro 132540266059SGregory Neil Shapiro 1326e92d3f3fSGregory Neil Shapiro 1327e92d3f3fSGregory Neil Shapiro 1328e92d3f3fSGregory Neil Shapiro 1329e92d3f3fSGregory Neil Shapiro 133040266059SGregory Neil ShapiroSLocal_localaddr 133140266059SGregory Neil ShapiroR$+ $: $>ParseRecipient $1 133240266059SGregory Neil ShapiroR$* < @ $+ > $* $#relay $@ ${MTAHost} $: $1 < @ $2 > $3 133340266059SGregory Neil Shapiro# DECnet 133440266059SGregory Neil ShapiroR$+ :: $+ $#relay $@ ${MTAHost} $: $1 :: $2 133540266059SGregory Neil ShapiroR$* $#relay $@ ${MTAHost} $: $1 < @ $j > 133640266059SGregory Neil Shapiro# 133740266059SGregory Neil Shapiro###################################################################### 133840266059SGregory Neil Shapiro###################################################################### 133940266059SGregory Neil Shapiro##### 134040266059SGregory Neil Shapiro##### MAIL FILTER DEFINITIONS 134140266059SGregory Neil Shapiro##### 134240266059SGregory Neil Shapiro###################################################################### 134340266059SGregory Neil Shapiro###################################################################### 134440266059SGregory Neil Shapiro 134540266059SGregory Neil Shapiro# 134640266059SGregory Neil Shapiro###################################################################### 134740266059SGregory Neil Shapiro###################################################################### 134840266059SGregory Neil Shapiro##### 134940266059SGregory Neil Shapiro##### MAILER DEFINITIONS 135040266059SGregory Neil Shapiro##### 135140266059SGregory Neil Shapiro###################################################################### 135240266059SGregory Neil Shapiro###################################################################### 135340266059SGregory Neil Shapiro 135440266059SGregory Neil Shapiro 135540266059SGregory Neil Shapiro################################################## 135640266059SGregory Neil Shapiro### Local and Program Mailer specification ### 135740266059SGregory Neil Shapiro################################################## 135840266059SGregory Neil Shapiro 13594313cc83SGregory Neil Shapiro##### $Id: local.m4,v 8.60 2013-11-22 20:51:14 ca Exp $ ##### 136040266059SGregory Neil Shapiro 136140266059SGregory Neil Shapiro# 136240266059SGregory Neil Shapiro# Envelope sender rewriting 136340266059SGregory Neil Shapiro# 136440266059SGregory Neil ShapiroSEnvFromL 136540266059SGregory Neil ShapiroR<@> $n errors to mailer-daemon 136640266059SGregory Neil ShapiroR@ <@ $*> $n temporarily bypass Sun bogosity 136740266059SGregory Neil ShapiroR$+ $: $>AddDomain $1 add local domain if needed 136840266059SGregory Neil ShapiroR$* $: $>MasqEnv $1 do masquerading 136940266059SGregory Neil Shapiro 137040266059SGregory Neil Shapiro# 137140266059SGregory Neil Shapiro# Envelope recipient rewriting 137240266059SGregory Neil Shapiro# 137340266059SGregory Neil ShapiroSEnvToL 137440266059SGregory Neil ShapiroR$+ < @ $* > $: $1 strip host part 137540266059SGregory Neil ShapiroR$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type 137640266059SGregory Neil ShapiroR<e s> $+ + $* $: $1 remove +detail for sender 137740266059SGregory Neil ShapiroR< $* > $+ $: $2 else remove mark 137840266059SGregory Neil Shapiro 137940266059SGregory Neil Shapiro# 138040266059SGregory Neil Shapiro# Header sender rewriting 138140266059SGregory Neil Shapiro# 138240266059SGregory Neil ShapiroSHdrFromL 138340266059SGregory Neil ShapiroR<@> $n errors to mailer-daemon 138440266059SGregory Neil ShapiroR@ <@ $*> $n temporarily bypass Sun bogosity 138540266059SGregory Neil ShapiroR$+ $: $>AddDomain $1 add local domain if needed 138640266059SGregory Neil ShapiroR$* $: $>MasqHdr $1 do masquerading 138740266059SGregory Neil Shapiro 138840266059SGregory Neil Shapiro# 138940266059SGregory Neil Shapiro# Header recipient rewriting 139040266059SGregory Neil Shapiro# 139140266059SGregory Neil ShapiroSHdrToL 139240266059SGregory Neil ShapiroR$+ $: $>AddDomain $1 add local domain if needed 139340266059SGregory Neil ShapiroR$* < @ *LOCAL* > $* $: $1 < @ $j . > $2 139440266059SGregory Neil Shapiro 139540266059SGregory Neil Shapiro# 139640266059SGregory Neil Shapiro# Common code to add local domain name (only if always-add-domain) 139740266059SGregory Neil Shapiro# 139840266059SGregory Neil ShapiroSAddDomain 139940266059SGregory Neil Shapiro 140040266059SGregory Neil ShapiroMlocal, P=[IPC], F=lmDFMuXkw5, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, 140140266059SGregory Neil Shapiro T=DNS/RFC822/SMTP, 140240266059SGregory Neil Shapiro A=TCP $h 140340266059SGregory Neil ShapiroMprog, P=[IPC], F=lmDFMuXk5, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$z:/, 140440266059SGregory Neil Shapiro T=X-Unix/X-Unix/X-Unix, 140540266059SGregory Neil Shapiro A=TCP $h 140640266059SGregory Neil Shapiro 140740266059SGregory Neil Shapiro##################################### 140840266059SGregory Neil Shapiro### SMTP Mailer specification ### 140940266059SGregory Neil Shapiro##################################### 141040266059SGregory Neil Shapiro 14114313cc83SGregory Neil Shapiro##### $Id: smtp.m4,v 8.66 2013-11-22 20:51:14 ca Exp $ ##### 141240266059SGregory Neil Shapiro 141340266059SGregory Neil Shapiro# 141440266059SGregory Neil Shapiro# common sender and masquerading recipient rewriting 141540266059SGregory Neil Shapiro# 141640266059SGregory Neil ShapiroSMasqSMTP 141740266059SGregory Neil ShapiroR$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified 141840266059SGregory Neil ShapiroR$+ $@ $1 < @ *LOCAL* > add local qualification 141940266059SGregory Neil Shapiro 142040266059SGregory Neil Shapiro# 142140266059SGregory Neil Shapiro# convert pseudo-domain addresses to real domain addresses 142240266059SGregory Neil Shapiro# 142340266059SGregory Neil ShapiroSPseudoToReal 142440266059SGregory Neil Shapiro 142540266059SGregory Neil Shapiro# pass <route-addr>s through 142640266059SGregory Neil ShapiroR< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr> 142740266059SGregory Neil Shapiro 142840266059SGregory Neil Shapiro# output fake domains as user%fake@relay 142940266059SGregory Neil Shapiro 143040266059SGregory Neil Shapiro# do UUCP heuristics; note that these are shared with UUCP mailers 143140266059SGregory Neil ShapiroR$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form 143240266059SGregory Neil ShapiroR$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form 143340266059SGregory Neil Shapiro 143440266059SGregory Neil Shapiro# leave these in .UUCP form to avoid further tampering 143540266059SGregory Neil ShapiroR< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. > 143640266059SGregory Neil ShapiroR< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 > 143740266059SGregory Neil ShapiroR< $&h ! > $+ $@ $1 < @ $&h .UUCP. > 143840266059SGregory Neil ShapiroR< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY 143940266059SGregory Neil ShapiroR$+ < @ $~[ $* : $+ > $@ $1 < @ $4 > strip mailer: part 144040266059SGregory Neil ShapiroR$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY 144140266059SGregory Neil Shapiro 144240266059SGregory Neil Shapiro 144340266059SGregory Neil Shapiro# 144440266059SGregory Neil Shapiro# envelope sender rewriting 144540266059SGregory Neil Shapiro# 144640266059SGregory Neil ShapiroSEnvFromSMTP 144740266059SGregory Neil ShapiroR$+ $: $>PseudoToReal $1 sender/recipient common 144840266059SGregory Neil ShapiroR$* :; <@> $@ list:; special case 144940266059SGregory Neil ShapiroR$* $: $>MasqSMTP $1 qualify unqual'ed names 145040266059SGregory Neil ShapiroR$+ $: $>MasqEnv $1 do masquerading 145140266059SGregory Neil Shapiro 145240266059SGregory Neil Shapiro 145340266059SGregory Neil Shapiro# 145440266059SGregory Neil Shapiro# envelope recipient rewriting -- 145540266059SGregory Neil Shapiro# also header recipient if not masquerading recipients 145640266059SGregory Neil Shapiro# 145740266059SGregory Neil ShapiroSEnvToSMTP 145840266059SGregory Neil ShapiroR$+ $: $>PseudoToReal $1 sender/recipient common 145940266059SGregory Neil ShapiroR$+ $: $>MasqSMTP $1 qualify unqual'ed names 146040266059SGregory Neil ShapiroR$* < @ *LOCAL* > $* $: $1 < @ $j . > $2 146140266059SGregory Neil Shapiro 146240266059SGregory Neil Shapiro# 146340266059SGregory Neil Shapiro# header sender and masquerading header recipient rewriting 146440266059SGregory Neil Shapiro# 146540266059SGregory Neil ShapiroSHdrFromSMTP 146640266059SGregory Neil ShapiroR$+ $: $>PseudoToReal $1 sender/recipient common 146740266059SGregory Neil ShapiroR:; <@> $@ list:; special case 146840266059SGregory Neil Shapiro 146940266059SGregory Neil Shapiro# do special header rewriting 147040266059SGregory Neil ShapiroR$* <@> $* $@ $1 <@> $2 pass null host through 147140266059SGregory Neil ShapiroR< @ $* > $* $@ < @ $1 > $2 pass route-addr through 147240266059SGregory Neil ShapiroR$* $: $>MasqSMTP $1 qualify unqual'ed names 147340266059SGregory Neil ShapiroR$+ $: $>MasqHdr $1 do masquerading 147440266059SGregory Neil Shapiro 147540266059SGregory Neil Shapiro 147640266059SGregory Neil Shapiro# 147740266059SGregory Neil Shapiro# relay mailer header masquerading recipient rewriting 147840266059SGregory Neil Shapiro# 147940266059SGregory Neil ShapiroSMasqRelay 148040266059SGregory Neil ShapiroR$+ $: $>MasqSMTP $1 148140266059SGregory Neil ShapiroR$+ $: $>MasqHdr $1 148240266059SGregory Neil Shapiro 1483605302a5SGregory Neil ShapiroMsmtp, P=[IPC], F=mDFMuXk5, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, 148440266059SGregory Neil Shapiro T=DNS/RFC822/SMTP, 148540266059SGregory Neil Shapiro A=TCP $h 1486605302a5SGregory Neil ShapiroMesmtp, P=[IPC], F=mDFMuXak5, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, 148740266059SGregory Neil Shapiro T=DNS/RFC822/SMTP, 148840266059SGregory Neil Shapiro A=TCP $h 1489605302a5SGregory Neil ShapiroMsmtp8, P=[IPC], F=mDFMuX8k5, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, 149040266059SGregory Neil Shapiro T=DNS/RFC822/SMTP, 149140266059SGregory Neil Shapiro A=TCP $h 1492605302a5SGregory Neil ShapiroMdsmtp, P=[IPC], F=mDFMuXa%k5, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, 149340266059SGregory Neil Shapiro T=DNS/RFC822/SMTP, 149440266059SGregory Neil Shapiro A=TCP $h 1495605302a5SGregory Neil ShapiroMrelay, P=[IPC], F=mDFMuXa8k, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n, L=2040, 149640266059SGregory Neil Shapiro T=DNS/RFC822/SMTP, 149740266059SGregory Neil Shapiro A=TCP $h 149840266059SGregory Neil Shapiro 14992fb4f839SGregory Neil Shapiro 1500e92d3f3fSGregory Neil Shapiro### submit.mc ### 1501e92d3f3fSGregory Neil Shapiro# divert(-1) 1502e92d3f3fSGregory Neil Shapiro# # 1503da7d7b9cSGregory Neil Shapiro# # Copyright (c) 2001-2003, 2014 Proofpoint, Inc. and its suppliers. 1504e92d3f3fSGregory Neil Shapiro# # All rights reserved. 1505e92d3f3fSGregory Neil Shapiro# # 1506e92d3f3fSGregory Neil Shapiro# # By using this file, you agree to the terms and conditions set 1507e92d3f3fSGregory Neil Shapiro# # forth in the LICENSE file which can be found at the top level of 1508e92d3f3fSGregory Neil Shapiro# # the sendmail distribution. 1509e92d3f3fSGregory Neil Shapiro# # 1510e92d3f3fSGregory Neil Shapiro# # 1511e92d3f3fSGregory Neil Shapiro# 1512e92d3f3fSGregory Neil Shapiro# # 1513e92d3f3fSGregory Neil Shapiro# # This is the prototype file for a set-group-ID sm-msp sendmail that 1514e92d3f3fSGregory Neil Shapiro# # acts as a initial mail submission program. 1515e92d3f3fSGregory Neil Shapiro# # 1516e92d3f3fSGregory Neil Shapiro# 1517e92d3f3fSGregory Neil Shapiro# divert(0)dnl 15184313cc83SGregory Neil Shapiro# VERSIONID(`$Id: submit.mc,v 8.15 2013-11-22 20:51:08 ca Exp $') 1519e92d3f3fSGregory Neil Shapiro# define(`confCF_VERSION', `Submit')dnl 1520e92d3f3fSGregory Neil Shapiro# define(`__OSTYPE__',`')dnl dirty hack to keep proto.m4 from complaining 1521e92d3f3fSGregory Neil Shapiro# define(`_USE_DECNET_SYNTAX_', `1')dnl support DECnet 1522e92d3f3fSGregory Neil Shapiro# define(`confTIME_ZONE', `USE_TZ')dnl 1523e92d3f3fSGregory Neil Shapiro# define(`confDONT_INIT_GROUPS', `True')dnl 1524e92d3f3fSGregory Neil Shapiro# dnl 1525da7d7b9cSGregory Neil Shapiro# dnl If you use IPv6 only, change [127.0.0.1] to [IPv6:0:0:0:0:0:0:0:1] 1526e92d3f3fSGregory Neil Shapiro# FEATURE(`msp', `[127.0.0.1]')dnl 15272fb4f839SGregory Neil Shapiro# dnl enable this for SMTPUTF8 support 15282fb4f839SGregory Neil Shapiro# dnl LOCAL_CONFIG 15292fb4f839SGregory Neil Shapiro# dnl O SMTPUTF8=true 1530