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