submit.cf revision 157001
1# 2# Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers. 3# All rights reserved. 4# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. 5# Copyright (c) 1988, 1993 6# The Regents of the University of California. All rights reserved. 7# 8# By using this file, you agree to the terms and conditions set 9# forth in the LICENSE file which can be found at the top level of 10# the sendmail distribution. 11# 12# 13 14###################################################################### 15###################################################################### 16##### 17##### SENDMAIL CONFIGURATION FILE 18##### 19##### built by ca@wiz.smi.sendmail.com on Sun Mar 19 22:37:26 PST 2006 20##### in /extra/home/ca/sm-8.13.6/OpenSource/sendmail-8.13.6/cf/cf 21##### using ../ as configuration include directory 22##### 23###################################################################### 24##### 25##### DO NOT EDIT THIS FILE! Only edit the source .mc file. 26##### 27###################################################################### 28###################################################################### 29 30##### $Id: cfhead.m4,v 8.116 2004/01/28 22:02:22 ca Exp $ ##### 31##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ ##### 32##### $Id: submit.mc,v 8.13 2003/09/10 22:12:48 ca Exp $ ##### 33##### $Id: msp.m4,v 1.33 2004/02/09 22:32:38 ca Exp $ ##### 34 35##### $Id: no_default_msa.m4,v 8.2 2001/02/14 05:03:22 gshapiro Exp $ ##### 36 37 38##### $Id: proto.m4,v 8.718 2005/08/24 18:07:23 ca Exp $ ##### 39 40# level 10 config file format 41V10/Berkeley 42 43# override file safeties - setting this option compromises system security, 44# addressing the actual file configuration problem is preferred 45# need to set this before any file actions are encountered in the cf file 46#O DontBlameSendmail=safe 47 48# default LDAP map specification 49# need to set this now before any LDAP maps are defined 50#O LDAPDefaultSpec=-h localhost 51 52################## 53# local info # 54################## 55 56# my LDAP cluster 57# need to set this before any LDAP lookups are done (including classes) 58#D{sendmailMTACluster}$m 59 60Cwlocalhost 61 62# my official domain name 63# ... define this only if sendmail cannot automatically determine your domain 64#Dj$w.Foo.COM 65 66# host/domain names ending with a token in class P are canonical 67CP. 68 69# "Smart" relay host (may be null) 70DS 71 72 73# operators that cannot be in local usernames (i.e., network indicators) 74CO @ % ! 75 76# a class with just dot (for identifying canonical names) 77C.. 78 79# a class with just a left bracket (for identifying domain literals) 80C[[ 81 82 83# Resolve map (to check if a host exists in check_mail) 84Kresolve host -a<OKR> -T<TEMP> 85C{ResOk}OKR 86 87 88# Hosts for which relaying is permitted ($=R) 89FR-o /etc/mail/relay-domains 90 91# arithmetic map 92Karith arith 93 94 95 96 97 98# dequoting map 99Kdequote dequote 100 101# class E: names that should be exposed as from this host, even if we masquerade 102# class L: names that should be delivered locally, even if we have a relay 103# class M: domains that should be converted to $M 104# class N: domains that should not be converted to $M 105#CL root 106 107 108 109# my name for error messages 110DnMAILER-DAEMON 111 112 113D{MTAHost}[127.0.0.1] 114 115 116# Configuration version number 117DZ8.13.6/Submit 118 119 120############### 121# Options # 122############### 123 124# strip message body to 7 bits on input? 125O SevenBitInput=False 126 127# 8-bit data handling 128#O EightBitMode=pass8 129 130# wait for alias file rebuild (default units: minutes) 131O AliasWait=10 132 133# location of alias file 134#O AliasFile=/etc/mail/aliases 135 136# minimum number of free blocks on filesystem 137O MinFreeBlocks=100 138 139# maximum message size 140#O MaxMessageSize=0 141 142# substitution for space (blank) characters 143O BlankSub=. 144 145# avoid connecting to "expensive" mailers on initial submission? 146O HoldExpensive=False 147 148# checkpoint queue runs after every N successful deliveries 149#O CheckpointInterval=10 150 151# default delivery mode 152O DeliveryMode=i 153 154# error message header/file 155#O ErrorHeader=/etc/mail/error-header 156 157# error mode 158#O ErrorMode=print 159 160# save Unix-style "From_" lines at top of header? 161#O SaveFromLine=False 162 163# queue file mode (qf files) 164O QueueFileMode=0660 165 166# temporary file mode 167O TempFileMode=0600 168 169# match recipients against GECOS field? 170#O MatchGECOS=False 171 172# maximum hop count 173#O MaxHopCount=25 174 175# location of help file 176O HelpFile=/etc/mail/helpfile 177 178# ignore dots as terminators in incoming messages? 179#O IgnoreDots=False 180 181# name resolver options 182#O ResolverOptions=+AAONLY 183 184# deliver MIME-encapsulated error messages? 185O SendMimeErrors=True 186 187# Forward file search path 188O ForwardPath 189 190# open connection cache size 191O ConnectionCacheSize=2 192 193# open connection cache timeout 194O ConnectionCacheTimeout=5m 195 196# persistent host status directory 197#O HostStatusDirectory=.hoststat 198 199# single thread deliveries (requires HostStatusDirectory)? 200#O SingleThreadDelivery=False 201 202# use Errors-To: header? 203O UseErrorsTo=False 204 205# log level 206O LogLevel=9 207 208# send to me too, even in an alias expansion? 209#O MeToo=True 210 211# verify RHS in newaliases? 212O CheckAliases=False 213 214# default messages to old style headers if no special punctuation? 215O OldStyleHeaders=True 216 217# SMTP daemon options 218 219O DaemonPortOptions=Name=NoMTA, Addr=127.0.0.1, M=E 220 221# SMTP client options 222#O ClientPortOptions=Family=inet, Address=0.0.0.0 223 224# Modifiers to define {daemon_flags} for direct submissions 225#O DirectSubmissionModifiers 226 227# Use as mail submission program? See sendmail/SECURITY 228O UseMSP=True 229 230# privacy flags 231O PrivacyOptions=goaway,noetrn,restrictqrun 232 233# who (if anyone) should get extra copies of error messages 234#O PostmasterCopy=Postmaster 235 236# slope of queue-only function 237#O QueueFactor=600000 238 239# limit on number of concurrent queue runners 240#O MaxQueueChildren 241 242# maximum number of queue-runners per queue-grouping with multiple queues 243#O MaxRunnersPerQueue=1 244 245# priority of queue runners (nice(3)) 246#O NiceQueueRun 247 248# shall we sort the queue by hostname first? 249#O QueueSortOrder=priority 250 251# minimum time in queue before retry 252#O MinQueueAge=30m 253 254# how many jobs can you process in the queue? 255#O MaxQueueRunSize=0 256 257# perform initial split of envelope without checking MX records 258#O FastSplit=1 259 260# queue directory 261O QueueDirectory=/var/spool/clientmqueue 262 263# key for shared memory; 0 to turn off 264#O SharedMemoryKey=0 265 266 267 268# timeouts (many of these) 269#O Timeout.initial=5m 270#O Timeout.connect=5m 271#O Timeout.aconnect=0s 272#O Timeout.iconnect=5m 273#O Timeout.helo=5m 274#O Timeout.mail=10m 275#O Timeout.rcpt=1h 276#O Timeout.datainit=5m 277#O Timeout.datablock=1h 278#O Timeout.datafinal=1h 279#O Timeout.rset=5m 280#O Timeout.quit=2m 281#O Timeout.misc=2m 282#O Timeout.command=1h 283#O Timeout.ident=5s 284#O Timeout.fileopen=60s 285#O Timeout.control=2m 286O Timeout.queuereturn=5d 287#O Timeout.queuereturn.normal=5d 288#O Timeout.queuereturn.urgent=2d 289#O Timeout.queuereturn.non-urgent=7d 290#O Timeout.queuereturn.dsn=5d 291O Timeout.queuewarn=4h 292#O Timeout.queuewarn.normal=4h 293#O Timeout.queuewarn.urgent=1h 294#O Timeout.queuewarn.non-urgent=12h 295#O Timeout.queuewarn.dsn=4h 296#O Timeout.hoststatus=30m 297#O Timeout.resolver.retrans=5s 298#O Timeout.resolver.retrans.first=5s 299#O Timeout.resolver.retrans.normal=5s 300#O Timeout.resolver.retry=4 301#O Timeout.resolver.retry.first=4 302#O Timeout.resolver.retry.normal=4 303#O Timeout.lhlo=2m 304#O Timeout.auth=10m 305#O Timeout.starttls=1h 306 307# time for DeliverBy; extension disabled if less than 0 308#O DeliverByMin=0 309 310# should we not prune routes in route-addr syntax addresses? 311#O DontPruneRoutes=False 312 313# queue up everything before forking? 314O SuperSafe=True 315 316# status file 317O StatusFile=/var/spool/clientmqueue/sm-client.st 318 319# time zone handling: 320# if undefined, use system default 321# if defined but null, use TZ envariable passed in 322# if defined and non-null, use that info 323O TimeZoneSpec= 324 325# default UID (can be username or userid:groupid) 326#O DefaultUser=mailnull 327 328# list of locations of user database file (null means no lookup) 329#O UserDatabaseSpec=/etc/mail/userdb 330 331# fallback MX host 332#O FallbackMXhost=fall.back.host.net 333 334# fallback smart host 335#O FallbackSmartHost=fall.back.host.net 336 337# if we are the best MX host for a site, try it directly instead of config err 338#O TryNullMXList=False 339 340# load average at which we just queue messages 341#O QueueLA=8 342 343# load average at which we refuse connections 344#O RefuseLA=12 345 346# log interval when refusing connections for this long 347#O RejectLogInterval=3h 348 349# load average at which we delay connections; 0 means no limit 350#O DelayLA=0 351 352# maximum number of children we allow at one time 353#O MaxDaemonChildren=0 354 355# maximum number of new connections per second 356#O ConnectionRateThrottle=0 357 358# Width of the window 359#O ConnectionRateWindowSize=60s 360 361# work recipient factor 362#O RecipientFactor=30000 363 364# deliver each queued job in a separate process? 365#O ForkEachJob=False 366 367# work class factor 368#O ClassFactor=1800 369 370# work time factor 371#O RetryFactor=90000 372 373# default character set 374#O DefaultCharSet=unknown-8bit 375 376# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others) 377#O ServiceSwitchFile=/etc/mail/service.switch 378 379# hosts file (normally /etc/hosts) 380#O HostsFile=/etc/hosts 381 382# dialup line delay on connection failure 383#O DialDelay=0s 384 385# action to take if there are no recipients in the message 386#O NoRecipientAction=none 387 388# chrooted environment for writing to files 389#O SafeFileEnvironment 390 391# are colons OK in addresses? 392#O ColonOkInAddr=True 393 394# shall I avoid expanding CNAMEs (violates protocols)? 395#O DontExpandCnames=False 396 397# SMTP initial login message (old $e macro) 398O SmtpGreetingMessage=$j Sendmail $v/$Z; $b 399 400# UNIX initial From header format (old $l macro) 401O UnixFromLine=From $g $d 402 403# From: lines that have embedded newlines are unwrapped onto one line 404#O SingleLineFromHeader=False 405 406# Allow HELO SMTP command that does not include a host name 407#O AllowBogusHELO=False 408 409# Characters to be quoted in a full name phrase (@,;:\()[] are automatic) 410#O MustQuoteChars=. 411 412# delimiter (operator) characters (old $o macro) 413O OperatorChars=.:%@!^/[]+ 414 415# shall I avoid calling initgroups(3) because of high NIS costs? 416O DontInitGroups=True 417 418# are group-writable :include: and .forward files (un)trustworthy? 419# True (the default) means they are not trustworthy. 420#O UnsafeGroupWrites=True 421 422 423# where do errors that occur when sending errors get sent? 424#O DoubleBounceAddress=postmaster 425 426# where to save bounces if all else fails 427#O DeadLetterDrop=/var/tmp/dead.letter 428 429# what user id do we assume for the majority of the processing? 430O RunAsUser=smmsp 431 432# maximum number of recipients per SMTP envelope 433#O MaxRecipientsPerMessage=0 434 435# limit the rate recipients per SMTP envelope are accepted 436# once the threshold number of recipients have been rejected 437#O BadRcptThrottle=0 438 439# shall we get local names from our installed interfaces? 440O DontProbeInterfaces=True 441 442# Return-Receipt-To: header implies DSN request 443#O RrtImpliesDsn=False 444 445# override connection address (for testing) 446#O ConnectOnlyTo=0.0.0.0 447 448# Trusted user for file ownership and starting the daemon 449O TrustedUser=smmsp 450 451# Control socket for daemon management 452#O ControlSocketName=/var/spool/mqueue/.control 453 454# Maximum MIME header length to protect MUAs 455#O MaxMimeHeaderLength=0/0 456 457# Maximum length of the sum of all headers 458#O MaxHeadersLength=32768 459 460# Maximum depth of alias recursion 461#O MaxAliasRecursion=10 462 463# location of pid file 464O PidFile=/var/spool/clientmqueue/sm-client.pid 465 466# Prefix string for the process title shown on 'ps' listings 467#O ProcessTitlePrefix=prefix 468 469# Data file (df) memory-buffer file maximum size 470#O DataFileBufferSize=4096 471 472# Transcript file (xf) memory-buffer file maximum size 473#O XscriptFileBufferSize=4096 474 475# lookup type to find information about local mailboxes 476#O MailboxDatabase=pw 477 478# override compile time flag REQUIRES_DIR_FSYNC 479#O RequiresDirfsync=true 480 481# list of authentication mechanisms 482#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5 483 484# Authentication realm 485#O AuthRealm 486 487# default authentication information for outgoing connections 488#O DefaultAuthInfo=/etc/mail/default-auth-info 489 490# SMTP AUTH flags 491#O AuthOptions 492 493# SMTP AUTH maximum encryption strength 494#O AuthMaxBits 495 496# SMTP STARTTLS server options 497#O TLSSrvOptions 498 499# Input mail filters 500#O InputMailFilters 501 502 503# CA directory 504#O CACertPath 505# CA file 506#O CACertFile 507# Server Cert 508#O ServerCertFile 509# Server private key 510#O ServerKeyFile 511# Client Cert 512#O ClientCertFile 513# Client private key 514#O ClientKeyFile 515# File containing certificate revocation lists 516#O CRLFile 517# DHParameters (only required if DSA/DH is used) 518#O DHParameters 519# Random data source (required for systems without /dev/urandom under OpenSSL) 520#O RandFile 521 522############################ 523# QUEUE GROUP DEFINITIONS # 524############################ 525 526 527########################### 528# Message precedences # 529########################### 530 531Pfirst-class=0 532Pspecial-delivery=100 533Plist=-30 534Pbulk=-60 535Pjunk=-100 536 537##################### 538# Trusted users # 539##################### 540 541# this is equivalent to setting class "t" 542#Ft/etc/mail/trusted-users 543Troot 544Tdaemon 545Tuucp 546 547######################### 548# Format of headers # 549######################### 550 551H?P?Return-Path: <$g> 552HReceived: $?sfrom $s $.$?_($?s$|from $.$_) 553 $.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.) 554 $.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version} 555 (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u 556 for $u; $|; 557 $.$b 558H?D?Resent-Date: $a 559H?D?Date: $a 560H?F?Resent-From: $?x$x <$g>$|$g$. 561H?F?From: $?x$x <$g>$|$g$. 562H?x?Full-Name: $x 563# HPosted-Date: $a 564# H?l?Received-Date: $b 565H?M?Resent-Message-Id: <$t.$i@$j> 566H?M?Message-Id: <$t.$i@$j> 567 568# 569###################################################################### 570###################################################################### 571##### 572##### REWRITING RULES 573##### 574###################################################################### 575###################################################################### 576 577############################################ 578### Ruleset 3 -- Name Canonicalization ### 579############################################ 580Scanonify=3 581 582# handle null input (translate to <@> special case) 583R$@ $@ <@> 584 585# strip group: syntax (not inside angle brackets!) and trailing semicolon 586R$* $: $1 <@> mark addresses 587R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr> 588R@ $* <@> $: @ $1 unmark @host:... 589R$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr 590R$* :: $* <@> $: $1 :: $2 unmark node::addr 591R:include: $* <@> $: :include: $1 unmark :include:... 592R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon 593R$* : $* <@> $: $2 strip colon if marked 594R$* <@> $: $1 unmark 595R$* ; $1 strip trailing semi 596R$* < $+ :; > $* $@ $2 :; <@> catch <list:;> 597R$* < $* ; > $1 < $2 > bogus bracketed semi 598 599# null input now results from list:; syntax 600R$@ $@ :; <@> 601 602# strip angle brackets -- note RFC733 heuristic to get innermost item 603R$* $: < $1 > housekeeping <> 604R$+ < $* > < $2 > strip excess on left 605R< $* > $+ < $1 > strip excess on right 606R<> $@ < @ > MAIL FROM:<> case 607R< $+ > $: $1 remove housekeeping <> 608 609# strip route address <@a,@b,@c:user@d> -> <user@d> 610R@ $+ , $+ $2 611R@ [ $* ] : $+ $2 612R@ $+ : $+ $2 613 614# find focus for list syntax 615R $+ : $* ; @ $+ $@ $>Canonify2 $1 : $2 ; < @ $3 > list syntax 616R $+ : $* ; $@ $1 : $2; list syntax 617 618# find focus for @ syntax addresses 619R$+ @ $+ $: $1 < @ $2 > focus on domain 620R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right 621R$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical 622 623 624# convert old-style addresses to a domain-based address 625R$- ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > resolve uucp names 626R$+ . $- ! $+ $@ $>Canonify2 $3 < @ $1 . $2 > domain uucps 627R$+ ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > uucp subdomains 628 629# convert node::user addresses into a domain-based address 630R$- :: $+ $@ $>Canonify2 $2 < @ $1 .DECNET > resolve DECnet names 631R$- . $- :: $+ $@ $>Canonify2 $3 < @ $1.$2 .DECNET > numeric DECnet addr 632 633# if we have % signs, take the rightmost one 634R$* % $* $1 @ $2 First make them all @s. 635R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last. 636R$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish 637 638# else we must be a local name 639R$* $@ $>Canonify2 $1 640 641 642################################################ 643### Ruleset 96 -- bottom half of ruleset 3 ### 644################################################ 645 646SCanonify2=96 647 648# handle special cases for local names 649R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all 650R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain 651R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain 652 653# check for IPv4/IPv6 domain literal 654R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [addr] 655R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal 656R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr 657 658 659 660 661 662# if really UUCP, handle it immediately 663 664# try UUCP traffic as a local address 665R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3 666R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3 667 668# hostnames ending in class P are always canonical 669R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4 670R$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4 671R$* CC $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6 672R$* CC $* $| $* $: $3 673# pass to name server to make hostname canonical 674R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4 675R$* $| $* $: $2 676 677# local host aliases and pseudo-domains are always canonical 678R$* < @ $=w > $* $: $1 < @ $2 . > $3 679R$* < @ $=M > $* $: $1 < @ $2 . > $3 680R$* < @ $* . . > $* $1 < @ $2 . > $3 681 682 683################################################## 684### Ruleset 4 -- Final Output Post-rewriting ### 685################################################## 686Sfinal=4 687 688R$+ :; <@> $@ $1 : handle <list:;> 689R$* <@> $@ handle <> and list:; 690 691# strip trailing dot off possibly canonical name 692R$* < @ $+ . > $* $1 < @ $2 > $3 693 694# eliminate internal code 695R$* < @ *LOCAL* > $* $1 < @ $j > $2 696 697# externalize local domain info 698R$* < $+ > $* $1 $2 $3 defocus 699R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical 700R@ $* $@ @ $1 ... and exit 701 702# UUCP must always be presented in old form 703R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u 704 705# put DECnet back in :: form 706R$+ @ $+ . DECNET $2 :: $1 u@h.DECNET => h::u 707# delete duplicate local names 708R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host 709 710 711 712############################################################## 713### Ruleset 97 -- recanonicalize and call ruleset zero ### 714### (used for recursive calls) ### 715############################################################## 716 717SRecurse=97 718R$* $: $>canonify $1 719R$* $@ $>parse $1 720 721 722###################################### 723### Ruleset 0 -- Parse Address ### 724###################################### 725 726Sparse=0 727 728R$* $: $>Parse0 $1 initial parsing 729R<@> $#local $: <@> special case error msgs 730R$* $: $>ParseLocal $1 handle local hacks 731R$* $: $>Parse1 $1 final parsing 732 733# 734# Parse0 -- do initial syntax checking and eliminate local addresses. 735# This should either return with the (possibly modified) input 736# or return with a #error mailer. It should not return with a 737# #mailer other than the #error mailer. 738# 739 740SParse0 741R<@> $@ <@> special case error msgs 742R$* : $* ; <@> $#error $@ 5.1.3 $: "553 List:; syntax illegal for recipient addresses" 743R@ <@ $* > < @ $1 > catch "@@host" bogosity 744R<@ $+> $#error $@ 5.1.3 $: "553 User address required" 745R$+ <@> $#error $@ 5.1.3 $: "553 Hostname required" 746R$* $: <> $1 747R<> $* < @ [ $* ] : $+ > $* $1 < @ [ $2 ] : $3 > $4 748R<> $* < @ [ $* ] , $+ > $* $1 < @ [ $2 ] , $3 > $4 749R<> $* < @ [ $* ] $+ > $* $#error $@ 5.1.2 $: "553 Invalid address" 750R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3 751R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "553 Colon illegal in host name part" 752R<> $* $1 753R$* < @ . $* > $* $#error $@ 5.1.2 $: "553 Invalid host name" 754R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "553 Invalid host name" 755R$* < @ $* @ > $* $#error $@ 5.1.2 $: "553 Invalid route address" 756R$* @ $* < @ $* > $* $#error $@ 5.1.3 $: "553 Invalid route address" 757R$* , $~O $* $#error $@ 5.1.3 $: "553 Invalid route address" 758 759 760# now delete the local info -- note $=O to find characters that cause forwarding 761R$* < @ > $* $@ $>Parse0 $>canonify $1 user@ => user 762R< @ $=w . > : $* $@ $>Parse0 $>canonify $2 @here:... -> ... 763R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here 764R< @ $+ > $#error $@ 5.1.3 $: "553 User address required" 765R$* $=O $* < @ $=w . > $@ $>Parse0 $>canonify $1 $2 $3 ...@here -> ... 766R$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo" 767R< @ *LOCAL* > $#error $@ 5.1.3 $: "553 User address required" 768R$* $=O $* < @ *LOCAL* > 769 $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ... 770R$* < @ *LOCAL* > $: $1 771 772# 773# Parse1 -- the bottom half of ruleset 0. 774# 775 776SParse1 777 778# handle numeric address spec 779R$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec 780R$* < @ [ $+ ] > $* $: $1 < @ [ $2 ] : $S > $3 Add smart host to path 781R$* < @ [ $+ ] : > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send 782R$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer 783R$* < @ [ $+ ] : $+ > $* $#esmtp $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer 784 785 786# short circuit local delivery so forwarded email works 787 788 789R$=L < @ $=w . > $#local $: @ $1 special local names 790R$+ < @ $=w . > $#local $: $1 regular local name 791 792 793# resolve remotely connected UUCP links (if any) 794 795# resolve fake top level domains by forwarding to other hosts 796 797 798 799# pass names that still have a host to a smarthost (if defined) 800R$* < @ $* > $* $: $>MailerToTriple < $S > $1 < @ $2 > $3 glue on smarthost name 801 802# deal with other remote names 803R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain 804 805# handle locally delivered names 806R$=L $#local $: @ $1 special local names 807R$+ $#local $: $1 regular local names 808 809########################################################################### 810### Ruleset 5 -- special rewriting after aliases have been expanded ### 811########################################################################### 812 813SLocal_localaddr 814Slocaladdr=5 815R$+ $: $1 $| $>"Local_localaddr" $1 816R$+ $| $#ok $@ $1 no change 817R$+ $| $#$* $#$2 818R$+ $| $* $: $1 819 820 821 822 823# deal with plussed users so aliases work nicely 824R$+ + * $#local $@ $&h $: $1 825R$+ + $* $#local $@ + $2 $: $1 + * 826 827# prepend an empty "forward host" on the front 828R$+ $: <> $1 829 830 831 832R< > $+ $: < > < $1 <> $&h > nope, restore +detail 833 834R< > < $+ <> + $* > $: < > < $1 + $2 > check whether +detail 835R< > < $+ <> $* > $: < > < $1 > else discard 836R< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part 837R< > < $+ > + $* $#local $@ $2 $: @ $1 strip the extra + 838R< > < $+ > $@ $1 no +detail 839R$+ $: $1 <> $&h add +detail back in 840 841R$+ <> + $* $: $1 + $2 check whether +detail 842R$+ <> $* $: $1 else discard 843R< local : $* > $* $: $>MailerToTriple < local : $1 > $2 no host extension 844R< error : $* > $* $: $>MailerToTriple < error : $1 > $2 no host extension 845 846R< $~[ : $+ > $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $2 > 847 848R< $+ > $+ $@ $>MailerToTriple < $1 > $2 < @ $1 > 849 850 851################################################################### 852### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ### 853################################################################### 854 855SMailerToTriple=95 856R< > $* $@ $1 strip off null relay 857R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4 858R< error : $- : $+ > $* $#error $@ $(dequote $1 $) $: $2 859R< error : $+ > $* $#error $: $1 860R< local : $* > $* $>CanonLocal < $1 > $2 861R< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user 862R< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer 863R< $=w > $* $@ $2 delete local host 864R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer 865 866################################################################### 867### Ruleset CanonLocal -- canonify local: syntax ### 868################################################################### 869 870SCanonLocal 871# strip local host from routed addresses 872R< $* > < @ $+ > : $+ $@ $>Recurse $3 873R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4 874 875# strip trailing dot from any host name that may appear 876R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 > 877 878# handle local: syntax -- use old user, either with or without host 879R< > $* < @ $* > $* $#local $@ $1@$2 $: $1 880R< > $+ $#local $@ $1 $: $1 881 882# handle local:user@host syntax -- ignore host part 883R< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 > 884 885# handle local:user syntax 886R< $+ > $* <@ $* > $* $#local $@ $2@$3 $: $1 887R< $+ > $* $#local $@ $2 $: $1 888 889################################################################### 890### Ruleset 93 -- convert header names to masqueraded form ### 891################################################################### 892 893SMasqHdr=93 894 895 896# do not masquerade anything in class N 897R$* < @ $* $=N . > $@ $1 < @ $2 $3 . > 898 899R$* < @ *LOCAL* > $@ $1 < @ $j . > 900 901################################################################### 902### Ruleset 94 -- convert envelope names to masqueraded form ### 903################################################################### 904 905SMasqEnv=94 906R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2 907 908################################################################### 909### Ruleset 98 -- local part of ruleset zero (can be null) ### 910################################################################### 911 912SParseLocal=98 913 914 915 916 917###################################################################### 918### CanonAddr -- Convert an address into a standard form for 919### relay checking. Route address syntax is 920### crudely converted into a %-hack address. 921### 922### Parameters: 923### $1 -- full recipient address 924### 925### Returns: 926### parsed address, not in source route form 927###################################################################### 928 929SCanonAddr 930R$* $: $>Parse0 $>canonify $1 make domain canonical 931 932 933###################################################################### 934### ParseRecipient -- Strip off hosts in $=R as well as possibly 935### $* $=m or the access database. 936### Check user portion for host separators. 937### 938### Parameters: 939### $1 -- full recipient address 940### 941### Returns: 942### parsed, non-local-relaying address 943###################################################################### 944 945SParseRecipient 946R$* $: <?> $>CanonAddr $1 947R<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots 948R<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part 949 950# if no $=O character, no host in the user portion, we are done 951R<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4> 952R<?> $* $@ $1 953 954 955R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 > 956 957 958 959R<RELAY> $* < @ $* > $@ $>ParseRecipient $1 960R<$+> $* $@ $2 961 962 963###################################################################### 964### check_relay -- check hostname/address on SMTP startup 965###################################################################### 966 967 968 969SLocal_check_relay 970Scheck_relay 971R$* $: $1 $| $>"Local_check_relay" $1 972R$* $| $* $| $#$* $#$3 973R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2 974 975SBasic_check_relay 976# check for deferred delivery mode 977R$* $: < $&{deliveryMode} > $1 978R< d > $* $@ deferred 979R< $* > $* $: $2 980 981 982 983 984###################################################################### 985### check_mail -- check SMTP `MAIL FROM:' command argument 986###################################################################### 987 988SLocal_check_mail 989Scheck_mail 990R$* $: $1 $| $>"Local_check_mail" $1 991R$* $| $#$* $#$2 992R$* $| $* $@ $>"Basic_check_mail" $1 993 994SBasic_check_mail 995# check for deferred delivery mode 996R$* $: < $&{deliveryMode} > $1 997R< d > $* $@ deferred 998R< $* > $* $: $2 999 1000# authenticated? 1001R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL 1002R$* $| $#$+ $#$2 1003R$* $| $* $: $1 1004 1005R<> $@ <OK> we MUST accept <> (RFC 1123) 1006R$+ $: <?> $1 1007R<?><$+> $: <@> <$1> 1008R<?>$+ $: <@> <$1> 1009R$* $: $&{daemon_flags} $| $1 1010R$* f $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 > 1011R$* u $* $| <@> < $* > $: <?> < $3 > 1012R$* $| $* $: $2 1013# handle case of @localhost on address 1014R<@> < $* @ localhost > $: < ? $&{client_name} > < $1 @ localhost > 1015R<@> < $* @ [127.0.0.1] > 1016 $: < ? $&{client_name} > < $1 @ [127.0.0.1] > 1017R<@> < $* @ localhost.$m > 1018 $: < ? $&{client_name} > < $1 @ localhost.$m > 1019R<@> < $* @ localhost.UUCP > 1020 $: < ? $&{client_name} > < $1 @ localhost.UUCP > 1021R<@> $* $: $1 no localhost as domain 1022R<? $=w> $* $: $2 local client: ok 1023R<? $+> <$+> $#error $@ 5.5.4 $: "553 Real domain name required for sender address" 1024R<?> $* $: $1 1025R$* $: <?> $>CanonAddr $1 canonify sender address and mark it 1026R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots 1027# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc) 1028R<?> $* < @ $* $=P > $: <OKR> $1 < @ $2 $3 > 1029R<?> $* < @ $j > $: <OKR> $1 < @ $j > 1030R<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 > 1031R<? $* <$->> $* < @ $+ > 1032 $: <$2> $3 < @ $4 > 1033 1034 1035# handle case of no @domain on address 1036R<?> $* $: $&{daemon_flags} $| <?> $1 1037R$* u $* $| <?> $* $: <OKR> $3 1038R$* $| $* $: $2 1039R<?> $* $: < ? $&{client_addr} > $1 1040R<?> $* $@ <OKR> ...local unqualed ok 1041R<? $+> $* $#error $@ 5.5.4 $: "553 Domain name required for sender address " $&f 1042 ...remote is not 1043# check results 1044R<?> $* $: @ $1 mark address: nothing known about it 1045R<$={ResOk}> $* $@ <OKR> domain ok: stop 1046R<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve" 1047R<PERM> $* $#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not exist" 1048 1049###################################################################### 1050### check_rcpt -- check SMTP `RCPT TO:' command argument 1051###################################################################### 1052 1053SLocal_check_rcpt 1054Scheck_rcpt 1055R$* $: $1 $| $>"Local_check_rcpt" $1 1056R$* $| $#$* $#$2 1057R$* $| $* $@ $>"Basic_check_rcpt" $1 1058 1059SBasic_check_rcpt 1060# empty address? 1061R<> $#error $@ nouser $: "553 User address required" 1062R$@ $#error $@ nouser $: "553 User address required" 1063# check for deferred delivery mode 1064R$* $: < $&{deliveryMode} > $1 1065R< d > $* $@ deferred 1066R< $* > $* $: $2 1067 1068 1069###################################################################### 1070R$* $: $1 $| @ $>"Rcpt_ok" $1 1071R$* $| @ $#TEMP $+ $: $1 $| T $2 1072R$* $| @ $#$* $#$2 1073R$* $| @ RELAY $@ RELAY 1074R$* $| @ $* $: O $| $>"Relay_ok" $1 1075R$* $| T $+ $: T $2 $| $>"Relay_ok" $1 1076R$* $| $#TEMP $+ $#error $2 1077R$* $| $#$* $#$2 1078R$* $| RELAY $@ RELAY 1079R T $+ $| $* $#error $1 1080# anything else is bogus 1081R$* $#error $@ 5.7.1 $: "550 Relaying denied" 1082 1083 1084###################################################################### 1085### Rcpt_ok: is the recipient ok? 1086###################################################################### 1087SRcpt_ok 1088R$* $: $>ParseRecipient $1 strip relayable hosts 1089 1090 1091 1092 1093# authenticated via TLS? 1094R$* $: $1 $| $>RelayTLS client authenticated? 1095R$* $| $# $+ $# $2 error/ok? 1096R$* $| $* $: $1 no 1097 1098R$* $: $1 $| $>"Local_Relay_Auth" $&{auth_type} 1099R$* $| $# $* $# $2 1100R$* $| NO $: $1 1101R$* $| $* $: $1 $| $&{auth_type} 1102R$* $| $: $1 1103R$* $| $={TrustAuthMech} $# RELAY 1104R$* $| $* $: $1 1105# anything terminating locally is ok 1106R$+ < @ $=w > $@ RELAY 1107R$+ < @ $* $=R > $@ RELAY 1108 1109 1110 1111 1112# check for local user (i.e. unqualified address) 1113R$* $: <?> $1 1114R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 > 1115# local user is ok 1116R<?> $+ $@ RELAY 1117R<$+> $* $: $2 1118 1119###################################################################### 1120### Relay_ok: is the relay/sender ok? 1121###################################################################### 1122SRelay_ok 1123# anything originating locally is ok 1124# check IP address 1125R$* $: $&{client_addr} 1126R$@ $@ RELAY originated locally 1127R0 $@ RELAY originated locally 1128R127.0.0.1 $@ RELAY originated locally 1129RIPv6:::1 $@ RELAY originated locally 1130R$=R $* $@ RELAY relayable IP address 1131R$* $: [ $1 ] put brackets around it... 1132R$=w $@ RELAY ... and see if it is local 1133 1134 1135# check client name: first: did it resolve? 1136R$* $: < $&{client_resolve} > 1137R<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr} 1138R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name} 1139R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name} 1140R$* $: <@> $&{client_name} 1141# pass to name server to make hostname canonical 1142R<@> $* $=P $:<?> $1 $2 1143R<@> $+ $:<?> $[ $1 $] 1144R$* . $1 strip trailing dots 1145R<?> $=w $@ RELAY 1146R<?> $* $=R $@ RELAY 1147 1148 1149 1150 1151###################################################################### 1152### trust_auth: is user trusted to authenticate as someone else? 1153### 1154### Parameters: 1155### $1: AUTH= parameter from MAIL command 1156###################################################################### 1157 1158SLocal_trust_auth 1159Strust_auth 1160R$* $: $&{auth_type} $| $1 1161# required by RFC 2554 section 4. 1162R$@ $| $* $#error $@ 5.7.1 $: "550 not authenticated" 1163R$* $| $&{auth_authen} $@ identical 1164R$* $| <$&{auth_authen}> $@ identical 1165R$* $| $* $: $1 $| $>"Local_trust_auth" $2 1166R$* $| $#$* $#$2 1167R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author} 1168 1169###################################################################### 1170### Relay_Auth: allow relaying based on authentication? 1171### 1172### Parameters: 1173### $1: ${auth_type} 1174###################################################################### 1175SLocal_Relay_Auth 1176 1177###################################################################### 1178### srv_features: which features to offer to a client? 1179### (done in server) 1180###################################################################### 1181Ssrv_features 1182 1183 1184###################################################################### 1185### try_tls: try to use STARTTLS? 1186### (done in client) 1187###################################################################### 1188Stry_tls 1189 1190 1191###################################################################### 1192### tls_rcpt: is connection with server "good" enough? 1193### (done in client, per recipient) 1194### 1195### Parameters: 1196### $1: recipient 1197###################################################################### 1198Stls_rcpt 1199 1200 1201###################################################################### 1202### tls_client: is connection with client "good" enough? 1203### (done in server) 1204### 1205### Parameters: 1206### ${verify} $| (MAIL|STARTTLS) 1207###################################################################### 1208Stls_client 1209R$* $| $* $@ $>"TLS_connection" $1 1210 1211###################################################################### 1212### tls_server: is connection with server "good" enough? 1213### (done in client) 1214### 1215### Parameter: 1216### ${verify} 1217###################################################################### 1218Stls_server 1219R$* $@ $>"TLS_connection" $1 1220 1221###################################################################### 1222### TLS_connection: is TLS connection "good" enough? 1223### 1224### Parameters: 1225### ${verify} 1226### Requirement: RHS from access map, may be ? for none. 1227###################################################################### 1228STLS_connection 1229RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake." 1230 1231 1232###################################################################### 1233### RelayTLS: allow relaying based on TLS authentication 1234### 1235### Parameters: 1236### none 1237###################################################################### 1238SRelayTLS 1239# authenticated? 1240 1241###################################################################### 1242### authinfo: lookup authinfo in the access map 1243### 1244### Parameters: 1245### $1: {server_name} 1246### $2: {server_addr} 1247###################################################################### 1248Sauthinfo 1249 1250 1251 1252 1253 1254 1255 1256 1257SLocal_localaddr 1258R$+ $: $>ParseRecipient $1 1259R$* < @ $+ > $* $#relay $@ ${MTAHost} $: $1 < @ $2 > $3 1260# DECnet 1261R$+ :: $+ $#relay $@ ${MTAHost} $: $1 :: $2 1262R$* $#relay $@ ${MTAHost} $: $1 < @ $j > 1263# 1264###################################################################### 1265###################################################################### 1266##### 1267##### MAIL FILTER DEFINITIONS 1268##### 1269###################################################################### 1270###################################################################### 1271 1272# 1273###################################################################### 1274###################################################################### 1275##### 1276##### MAILER DEFINITIONS 1277##### 1278###################################################################### 1279###################################################################### 1280 1281 1282################################################## 1283### Local and Program Mailer specification ### 1284################################################## 1285 1286##### $Id: local.m4,v 8.59 2004/11/23 00:37:25 ca Exp $ ##### 1287 1288# 1289# Envelope sender rewriting 1290# 1291SEnvFromL 1292R<@> $n errors to mailer-daemon 1293R@ <@ $*> $n temporarily bypass Sun bogosity 1294R$+ $: $>AddDomain $1 add local domain if needed 1295R$* $: $>MasqEnv $1 do masquerading 1296 1297# 1298# Envelope recipient rewriting 1299# 1300SEnvToL 1301R$+ < @ $* > $: $1 strip host part 1302R$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type 1303R<e s> $+ + $* $: $1 remove +detail for sender 1304R< $* > $+ $: $2 else remove mark 1305 1306# 1307# Header sender rewriting 1308# 1309SHdrFromL 1310R<@> $n errors to mailer-daemon 1311R@ <@ $*> $n temporarily bypass Sun bogosity 1312R$+ $: $>AddDomain $1 add local domain if needed 1313R$* $: $>MasqHdr $1 do masquerading 1314 1315# 1316# Header recipient rewriting 1317# 1318SHdrToL 1319R$+ $: $>AddDomain $1 add local domain if needed 1320R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2 1321 1322# 1323# Common code to add local domain name (only if always-add-domain) 1324# 1325SAddDomain 1326 1327Mlocal, P=[IPC], F=lmDFMuXkw5, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, 1328 T=DNS/RFC822/SMTP, 1329 A=TCP $h 1330Mprog, P=[IPC], F=lmDFMuXk5, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$z:/, 1331 T=X-Unix/X-Unix/X-Unix, 1332 A=TCP $h 1333 1334##################################### 1335### SMTP Mailer specification ### 1336##################################### 1337 1338##### $Id: smtp.m4,v 8.64 2001/04/03 01:52:54 gshapiro Exp $ ##### 1339 1340# 1341# common sender and masquerading recipient rewriting 1342# 1343SMasqSMTP 1344R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified 1345R$+ $@ $1 < @ *LOCAL* > add local qualification 1346 1347# 1348# convert pseudo-domain addresses to real domain addresses 1349# 1350SPseudoToReal 1351 1352# pass <route-addr>s through 1353R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr> 1354 1355# output fake domains as user%fake@relay 1356 1357# do UUCP heuristics; note that these are shared with UUCP mailers 1358R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form 1359R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form 1360 1361# leave these in .UUCP form to avoid further tampering 1362R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. > 1363R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 > 1364R< $&h ! > $+ $@ $1 < @ $&h .UUCP. > 1365R< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY 1366R$+ < @ $~[ $* : $+ > $@ $1 < @ $4 > strip mailer: part 1367R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY 1368 1369 1370# 1371# envelope sender rewriting 1372# 1373SEnvFromSMTP 1374R$+ $: $>PseudoToReal $1 sender/recipient common 1375R$* :; <@> $@ list:; special case 1376R$* $: $>MasqSMTP $1 qualify unqual'ed names 1377R$+ $: $>MasqEnv $1 do masquerading 1378 1379 1380# 1381# envelope recipient rewriting -- 1382# also header recipient if not masquerading recipients 1383# 1384SEnvToSMTP 1385R$+ $: $>PseudoToReal $1 sender/recipient common 1386R$+ $: $>MasqSMTP $1 qualify unqual'ed names 1387R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2 1388 1389# 1390# header sender and masquerading header recipient rewriting 1391# 1392SHdrFromSMTP 1393R$+ $: $>PseudoToReal $1 sender/recipient common 1394R:; <@> $@ list:; special case 1395 1396# do special header rewriting 1397R$* <@> $* $@ $1 <@> $2 pass null host through 1398R< @ $* > $* $@ < @ $1 > $2 pass route-addr through 1399R$* $: $>MasqSMTP $1 qualify unqual'ed names 1400R$+ $: $>MasqHdr $1 do masquerading 1401 1402 1403# 1404# relay mailer header masquerading recipient rewriting 1405# 1406SMasqRelay 1407R$+ $: $>MasqSMTP $1 1408R$+ $: $>MasqHdr $1 1409 1410Msmtp, P=[IPC], F=mDFMuXk5, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, 1411 T=DNS/RFC822/SMTP, 1412 A=TCP $h 1413Mesmtp, P=[IPC], F=mDFMuXak5, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, 1414 T=DNS/RFC822/SMTP, 1415 A=TCP $h 1416Msmtp8, P=[IPC], F=mDFMuX8k5, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, 1417 T=DNS/RFC822/SMTP, 1418 A=TCP $h 1419Mdsmtp, P=[IPC], F=mDFMuXa%k5, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990, 1420 T=DNS/RFC822/SMTP, 1421 A=TCP $h 1422Mrelay, P=[IPC], F=mDFMuXa8k, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n, L=2040, 1423 T=DNS/RFC822/SMTP, 1424 A=TCP $h 1425 1426### submit.mc ### 1427# divert(-1) 1428# # 1429# # Copyright (c) 2001-2003 Sendmail, Inc. and its suppliers. 1430# # All rights reserved. 1431# # 1432# # By using this file, you agree to the terms and conditions set 1433# # forth in the LICENSE file which can be found at the top level of 1434# # the sendmail distribution. 1435# # 1436# # 1437# 1438# # 1439# # This is the prototype file for a set-group-ID sm-msp sendmail that 1440# # acts as a initial mail submission program. 1441# # 1442# 1443# divert(0)dnl 1444# VERSIONID(`$Id: submit.mc,v 8.13 2003/09/10 22:12:48 ca Exp $') 1445# define(`confCF_VERSION', `Submit')dnl 1446# define(`__OSTYPE__',`')dnl dirty hack to keep proto.m4 from complaining 1447# define(`_USE_DECNET_SYNTAX_', `1')dnl support DECnet 1448# define(`confTIME_ZONE', `USE_TZ')dnl 1449# define(`confDONT_INIT_GROUPS', `True')dnl 1450# dnl 1451# dnl If you use IPv6 only, change [127.0.0.1] to [IPv6:::1] 1452# FEATURE(`msp', `[127.0.0.1]')dnl 1453