. w3m 0.5.2
- This is a text-oriented web brower. It is used to produce the ASCII form of
+ This is a text-oriented web browser. It is used to produce the ASCII form of
the Exim documentation (spec.txt) from a specially-created HTML format. It
seems to do a better job than lynx.
########################################################################
-# .PHONY doesn't work here, because it forces a rebuild of all dependend
+# .PHONY doesn't work here, because it forces a rebuild of all dependent
# targets, always. It sets the internal timestamp of its target to
# now().
# But it may happen that local_params does not change
# For now we can't rely on a perl >= 5.14 on
# the build sites, thus we throw away all unicode
-# awarness and do the matching byte by byte
+# awareness and do the matching byte by byte
binmode STDIN;
binmode STDOUT;
For example:
.code
exim -bp -qGquarantine
-mailq -qGquarantime
+mailq -qGquarantine
exim -qGoffpeak -Rf @special.domain.example
.endd
The form if &"retry_VAL"& where VAL is an integer.
The default count is set by the main configuration option &%dns_retry%&.
-.cindex cacheing "of dns lookup"
+.cindex caching "of dns lookup"
.cindex TTL "of dns lookup"
.cindex DNS TTL
Dnsdb lookup results are cached within a single process (and its children).
.vitem "&*${certextract{*&<&'field'&>&*}{*&<&'certificate'&>&*}&&&
{*&<&'string2'&>&*}{*&<&'string3'&>&*}}*&"
-.cindex "expansion" "extracting cerificate fields"
+.cindex "expansion" "extracting certificate fields"
.cindex "&%certextract%&" "certificate fields"
.cindex "certificate" "extracting fields"
The <&'certificate'&> must be a variable of type certificate.
.cindex "uid (user id)" "of originating user"
.cindex "sender" "uid"
.vindex "&$caller_uid$&"
-.vindex "&$originaltor_uid$&"
+.vindex "&$originator_uid$&"
The value of &$caller_uid$& that was set when the message was received. For
messages received via the command line, this is the uid of the sending user.
For messages received by SMTP over TCP/IP, this is normally the uid of the Exim
.vitem &$tls_in_ourcert$&
.vindex "&$tls_in_ourcert$&"
-.cindex certificate veriables
+.cindex certificate variables
This variable refers to the certificate presented to the peer of an
inbound connection when the message was received.
It is only useful as the argument of a
.oindex "&%perl_taintmode%&"
.cindex "Perl" "taintmode"
To provide more security executing Perl code via the embedded Perl
-interpeter, the &%perl_taintmode%& option can be set. This enables the
+interpreter, the &%perl_taintmode%& option can be set. This enables the
taint mode of the Perl interpreter. You are encouraged to set this
option to a true value. To avoid breaking existing installations, it
defaults to false.
There is a slight performance penalty for these checks.
Versions of Exim preceding 4.88 had these disabled by default;
-high-rate intallations confident they will never run out of resources
+high-rate installations confident they will never run out of resources
may wish to deliberately disable them.
.option chunking_advertise_hosts main "host list&!!" *
.option smtputf8_advertise_hosts main "host list&!!" *
.cindex "SMTPUTF8" "advertising"
When Exim is built with support for internationalised mail names,
-the availability therof is advertised in
+the availability thereof is advertised in
response to EHLO only to those client hosts that match this option. See
chapter &<<CHAPi18n>>& for details of Exim's support for internationalisation.
.cindex "hints database" "transport concurrency control"
Exim implements this control by means of a hints database in which a record is
-incremented whenever a transport process is beaing created. The record
+incremented whenever a transport process is being created. The record
is decremented and possibly removed when the process terminates.
Obviously there is scope for
records to get left lying around if there is a system or program crash. To
.cindex "RFC 3030" "CHUNKING"
This option provides a list of servers to which, provided they announce
CHUNKING support, Exim will attempt to use BDAT commands rather than DATA.
-BDAT will not be used in conjuction with a transport filter.
+BDAT will not be used in conjunction with a transport filter.
.option hosts_try_fastopen smtp "host list!!" unset
.cindex "fast open, TCP" "enabling, in client"
attacks in the string (&`../`& or SQL), and ensuring that a valid filename
can always be referenced; it is important to remember that &$tls_in_sni$& is
arbitrary unverified data provided prior to authentication.
-Further, the initial cerificate is loaded before SNI is arrived, so
+Further, the initial certificate is loaded before SNI is arrived, so
an expansion for &%tls_certificate%& must have a default which is used
when &$tls_in_sni$& is empty.
to the control; the default value is &"spool"& and the alternate value
&"pass"& copies an SMTP defer response from the target back to the initiator
and does not queue the message.
-Note that this is independent of any receipient verify conditions in the ACL.
+Note that this is independent of any recipient verify conditions in the ACL.
Delivery in this mode avoids the generation of a bounce mail to a
(possibly faked)
warn message = X-Warn: sending host is on dialups list
dnslists = dialups.mail-abuse.org
.endd
-.cindex cacheing "of dns lookup"
+.cindex caching "of dns lookup"
.cindex DNS TTL
DNS list lookups are cached by Exim for the duration of the SMTP session
(but limited by the DNS return TTL value),
and the outer dnsdb lookup finds the IP addresses for these hosts. The result
of expanding the condition might be something like this:
.code
-dnslists = sbl.spahmaus.org/<|192.168.2.3|192.168.5.6|...
+dnslists = sbl.spamhaus.org/<|192.168.2.3|192.168.5.6|...
.endd
Thus, this example checks whether or not the IP addresses of the sender
domain's mail servers are on the Spamhaus black list.
.next
.cindex "log" "outgoing remote port"
.cindex "port" "logging outgoint remote"
-.cindex "TCP/IP" "logging ougtoing remote port"
+.cindex "TCP/IP" "logging outgoing remote port"
&%outgoing_port%&: The remote port number is added to delivery log lines (those
containing => tags) following the IP address.
The local port is also added if &%incoming_interface%& and
An additional variable, &$event_data$&, is filled with information varying
with the event type:
.display
-&`msg:delivery `& smtp confirmation mssage
+&`msg:delivery `& smtp confirmation message
&`msg:rcpt:host:defer `& error string
&`msg:rcpt:defer `& error string
&`msg:host:defer `& error string
Furthermore, this quota mechanism is not 100% effective. It is
possible to have a situation where someone may go over quota. This
- quota implementation uses a deliverate trade-off. It is necessary to
+ quota implementation uses a deliberate trade-off. It is necessary to
use some form of locking in order to have a complete bulletproof quota
enforcement, but maildirs mail stores were explicitly designed to
avoid any kind of locking. This quota approach does not use locking,
A means of communicating this is by use of a file with a mutually
agreed upon name. A binary semaphore can be passed by means of the
-existance or non-existance of that file, provided that there is an
+existence or non-existence of that file, provided that there is an
atomic means to create a file if and only if that file does not exist.
In C terms:
exclusive (provided there are no other shared users of the lock) and
to downgrade an exclusive lock to shared. It is important that at no
time is the lock ever removed; a process upgrading to exclusive must
-not relenquish its shared lock.
+not relinquish its shared lock.
Most commonly, the resources being locked are files. Shared
locks are particularly important with files; multiple simultaneous
From: @a,@b:c@d
-is syntactally invalid. Exim does not enforce this restriction.
+is syntactically invalid. Exim does not enforce this restriction.
1.6 Local parts [3.4.1]
[Multihomed host addresses should not be randomized.]
Exim does randomize a list of several addresses for a single host, because
-caching in resolvers will defeat the round-robinning that many namerservers
+caching in resolvers will defeat the round-robinning that many nameservers
use. (Note: this is not the same as randomizing equal-valued MX records. That
is required by the RFC.)
@copyright{} for copyright
-@minus{} is a slighly longer minus sign
+@minus{} is a slightly longer minus sign
Input file ends with .texinfo usually.
mark david mcCreary
"I use the syntax_errors_to feature to email a copy of the error message.
-It would be helpful to have the X-Failed-Receipients header in there,
-identifying which addreses(s) are the problem, so that I don't have to
+It would be helpful to have the X-Failed-Recipients header in there,
+identifying which address(es) are the problem, so that I don't have to
parse the body of the email message to figure out which addresses."
------------------------------------------------------------------------------
Is this really worth it? A per-transport value is also suggested - that would
mean remembering the value with each failed address and taking a minimum or
-a maximimum (which?).
+a maximum (which?).
------------------------------------------------------------------------------
(24) 21-Feb-02 ? A way of testing TLS using -bh
data transmitted for a non-delivery attempt.
------------------------------------------------------------------------------
-(69) 03-Jul-02 T Log selector to log whoson checs
+(69) 03-Jul-02 T Log selector to log whoson checks
Matt Bernstein
"I'd quite like a log_selector option which could spot you'd done a whoson
Peter A. Savitch
OpenLDAP 2.1 is going to be more popular (2.1.9 is available with many
-bug fixes). TLS-enabled LDAP is an interesting and usefull thing.
+bug fixes). TLS-enabled LDAP is an interesting and useful thing.
I can try to implement some things and send the patches, like with
ldapi.
See also 333.
------------------------------------------------------------------------------
-(214) 05-Nov-03 S Put the wild part of local part prefix/suffx in variables
+(214) 05-Nov-03 S Put the wild part of local part prefix/suffix in variables
Unfortunately, this isn't quite as trivial as it seems.
------------------------------------------------------------------------------
(292) 13-Aug-04 M Overall timeout for message reception
-A client could in priciple keep an SMTP connection open for a very long time by
+A client could in principle keep an SMTP connection open for a very long time by
trickling in data very slowly. Also, after message_size_limit is exceeded, Exim
continues to swallow the data (though it does not write it to disk) until the
end is reached. Again, the connection could be held open for a very long time.
This should be very simple to implement and will allow to make
some experiments and implement custom extensions, i.e. one to
known if remote client will redirect on 551 or not. Also the acl
-for unknown smpt command could be used for other purposes, like
-to dectect and react to some kiddies that send things like
+for unknown smtp command could be used for other purposes, like
+to detect and react to some kiddies that send things like
http://... on the smtp port.
------------------------------------------------------------------------------
--- HWM 355 ------------------------------------------------------------------
# We want to read the file paragraph by paragraph; Perl only does this if the
# separating lines are truly blank. Having been caught by lines containing
-# whitespace before, do a detrailing pass first.
+# whitespace before, do a de-trailing pass first.
open(IN, "$ARGV[0]") || die "can't open $ARGV[0] (preliminary)\n";
open(OUT, ">$ARGV[0]-$$") || die "can't open $ARGV[0]-$$\n";
next;
}
- # If a paragraph begins ==> it is a display which must remain verbatin
+ # If a paragraph begins ==> it is a display which must remain verbatim
# and not be reformatted. The flag gets turned into spaces.
if ($_ =~ /^==>/)
# We want to read the file paragraph by paragraph; Perl only does this if the
# separating lines are truly blank. Having been caught by lines containing
-# whitespace before, do a detrailing pass first.
+# whitespace before, do a de-trailing pass first.
open(IN, "$ARGV[0]") || die "can't open $ARGV[0] (preliminary)\n";
open(OUT, ">$ARGV[0]-$$") || die "can't open $ARGV[0]-$$\n";
next if /^\#\#/;
- # If a paragraph begins ==> it is a display which must remain verbatin
+ # If a paragraph begins ==> it is a display which must remain verbatim
# and not be reformatted. The flag gets turned into spaces.
if ($_ =~ /^==>/)
# We want to chop excessively long entries on either side. We can't set
# a fixed length because of the HTML control data. Call a function to
# add the given length to allow for HTML stuff. This is crude, but it
- # does roughtly the right thing.
+ # does roughly the right thing.
my($leftlen) = &setlen(70, $pretext);
my($rightlen) = &setlen(70, $posttext);
# "-". If we triple it in the menu it gets displayed OK, but building
# software complains about non-existent cross references etc.
- # I have gone for the horrid kludge of turning it into "-<hyhen>"
+ # I have gone for the horrid kludge of turning it into "-<hyphen>"
# in the menus and nodes.
# Exim 4 has added --help, which has the same problem.
This directory contains documentation files that are processed in some way in
order to make the documentation files that form part of Exim distributions. A
non-standard document processor (SGCAL) was used up to and including release
-4.50 of Exim to process the sources for the manual and filter docuement.
+4.50 of Exim to process the sources for the manual and filter document.
Subsequent documentation releases operate using DocBook input, so these files
are now historical relics. The FAQ source is still (June 2005) current, but may
be superseded in due course.
==> /usr/lib/sendmail -bz
- in some start-up script (e.g. \(/etc/init.d/mail)\) immedately before
+ in some start-up script (e.g. \(/etc/init.d/mail)\) immediately before
==> /usr/lib/sendmail -bd -q15m
with MX records pointing to \"localhost"\ (or other names with A records
that specify 127.0.0.1), which causes this behaviour. You can use the
\ignore_target_hosts\ option to get Exim to ignore these records. The
- default contiguration does this. For more discussion, see Q0319. For
+ default configuration does this. For more discussion, see Q0319. For
other cases:
(1) If the domain is meant to be handled as a local domain, there
to scan email messages at SMTP time. \^elspy^\ also includes a small
Python library with common mail-scanning tools, including an interface
to SpamAssassin and a simple but effective virus detector. You can
- optain \^elspy^\ from \?http://elspy.sourceforge.net/?\.
+ obtain \^elspy^\ from \?http://elspy.sourceforge.net/?\.
Q0511: Whenever my system filter uses a \mail\ command to send a message, I get
==> majordomo: |/local/mail/majordomo ...
then Exim has to be told what uid/gid to use for the delivery. This can
- be done either on the routerr that handles the address, or on the
+ be done either on the router that handles the address, or on the
transport that actually does the delivery. If a pipe is going to run a
setuid program, then it doesn't matter what uid Exim starts it out with,
and so the most straightforward thing is to put
Q0604: I want to use MMDF-style mailboxes. How can I get Exim to append the
- ctrl-A characters that separate indvidual emails?
+ ctrl-A characters that separate individual emails?
A0604: Set the \message_suffix\ option in the \%appendfile%\ transport. In fact,
for MMDF mailboxes you need a prefix as well as a suffix to get it
\use_crlf\ option on the \%pipe%\ transport (tmail prefers \"@\r@\n"\
terminations) message bodies started to vanish.
-A0606: You need to unset the \mesage_prefix\ option, or change it so that its
+A0606: You need to unset the \message_prefix\ option, or change it so that its
default \"@\n"\ terminator becomes \"@\r@\n"\. For example, the
transport could be:
but it is important to some people - especially if by some unfortunate
accident the lowercased word is something indecent.
- You can trivally force lower casing by means of the \"${lc:"\ operator.
+ You can trivially force lower casing by means of the \"${lc:"\ operator.
Instead of \"$domain"\ write \"${lc:$domain}"\.
==> headers add "New-Subject: SPAM: $h_subject:"
headers remove subject
- neaders add "Subject: $h_new-subject:"
+ headers add "Subject: $h_new-subject:"
headers remove new-subject
This trick works only in system filters, where the commands are obeyed
-------------------
JH/01 Bug 1922: Support IDNA2008. This has slightly different conversion rules
- than -2003 did; needs libidn2 in addition to linidn.
+ than -2003 did; needs libidn2 in addition to libidn.
JH/02 The path option on a pipe transport is now expanded before use.
as one having no matching records. Previously we deferred the message
that needed the lookup.
-JH/17 Fakereject: previously logged as a norml message arrival "<="; now
+JH/17 Fakereject: previously logged as a normal message arrival "<="; now
distinguished as "(=".
JH/18 Bug 1867: make the fail_defer_domains option on a dnslookup router work
JH/20 Bug 1872: Ensure that acl_smtp_notquit is run when the connection drops
after the data-go-ahead and data-ack. Patch from Jason Betts.
-JH/21 Bug 1846: Send DMARC forensic reports for reject and quaratine results,
+JH/21 Bug 1846: Send DMARC forensic reports for reject and quarantine results,
even for a "none" policy. Patch from Tony Meyer.
JH/22 Fix continued use of a connection for further deliveries. If a port was
HS/02 Add the Exim version string to the process info. This way exiwhat
gives some more detail about the running daemon.
-JH/06 Bug 1395: time-limit cacheing of DNS lookups, to the TTL value. This may
+JH/06 Bug 1395: time-limit caching of DNS lookups, to the TTL value. This may
matter for fast-change records such as DNSBLs.
JH/07 Bug 1678: Always record an interface option value, if set, as part of a
JH/18 Bug 1709: When built with TLS support, the tls_advertise_hosts option now
defaults to "*" (all hosts). The variable is now available when not built
- with TLS, default unset, mainly to enable keeping the testuite sane.
+ with TLS, default unset, mainly to enable keeping the testsuite sane.
If a server certificate is not supplied (via tls_certificate) an error is
logged, and clients will find TLS connections fail on startup. Presumably
they will retry in-clear.
in transport context, after the attempt, and per-recipient. The latter type
is per host attempted. The event data is the error message, and the errno
information encodes the lookup type (A vs. MX) used for the (first) host,
- and the trailing two digits of the smtp 4xx reponse.
+ and the trailing two digits of the smtp 4xx response.
GF/01 Bug 1715: Fix for race condition in exicyclog, where exim could attempt
to write to mainlog (or rejectlog, paniclog) in the window between file
"pri" and "weight". Note that the previous implicit priority given by the
list order is no longer honoured.
-JH/22 Bugs 963, 1721: Fix some corner cases in message body canonicalisation
+JH/22 Bugs 963, 1721: Fix some corner cases in message body canonicalization
for DKIM processing.
JH/23 Move SOCKS5 support from Experimental to mainline, enabled for a build
HS/02 Bug 1575: exigrep falls back to autodetection of compressed
files if ZCAT_COMMAND is not executable.
-JH/26 Bug 1539: Add timout/retry options on dnsdb lookups.
+JH/26 Bug 1539: Add timeout/retry options on dnsdb lookups.
JH/27 Bug 286: Support SOA lookup in dnsdb lookups.
JH/28 Bug 1588: Do not use the A lookup following an AAAA for setting the FQDN.
Normally benign, it bites when the pair was led to by a CNAME;
- modern usage is to not canoicalize the domain to a CNAME target
+ modern usage is to not canonicalize the domain to a CNAME target
(and we were inconsistent anyway for A-only vs AAAA+A).
JH/29 Bug 1632: Removed the word "rejected" from line logged for ACL discards.
with certificate use, exposed issues where response data items split
over buffer boundaries were not parsed properly. This eventually
resulted in duplicates being sent. This issue only became common enough
- to notice due to the introduction of conection certificate information,
+ to notice due to the introduction of connection certificate information,
the item size being so much larger. Found and fixed by Wolfgang Breyha.
JH/06 Bug 1533: Fix truncation of items in headers_remove lists. A fixed
JH/07 Add support for directories of certificates when compiled with a GnuTLS
version 3.3.6 or later.
-JH/08 Rename the TPDA expermimental facility to Event Actions. The #ifdef
+JH/08 Rename the TPDA experimental facility to Event Actions. The #ifdef
is EXPERIMENTAL_EVENT, the main-configuration and transport options
both become "event_action", the variables become $event_name, $event_data
and $event_defer_errno. There is a new variable $verify_mode, usable in
JH/15 Updates and fixes to the EXPERIMENTAL_DSN feature.
-JH/16 Fix string representation of time values on 64bit time_t anchitectures.
+JH/16 Fix string representation of time values on 64bit time_t architectures.
Bug 1561.
JH/17 Fix a null-indirection in certextract expansions when a nondefault
return.
JH/01 Bug 1513: Fix parsing of quoted parameter values in MIME headers.
- This was a regression intruduced in 4.83 by another bugfix.
+ This was a regression introduced in 4.83 by another bugfix.
JH/02 Fix broken compilation when EXPERIMENTAL_DSN is enabled.
advertises the facility. If the client requests PRDR a new
acl_data_smtp_prdr ACL is called once for each recipient, after
the body content is received and before the acl_smtp_data ACL.
- The client is controlled by bolth of: a hosts_try_prdr option
+ The client is controlled by both of: a hosts_try_prdr option
on the smtp transport, and the server advertisement.
Default client logging of deliveries and rejections involving
PRDR are flagged with the string "PRDR".
JH/15 AUTH support on callouts (and hence cutthrough-deliveries).
Bugzilla 321, 823.
-TF/04 Added udpsend ACL modifer and hexquote expansion operator
+TF/04 Added udpsend ACL modifier and hexquote expansion operator
PP/21 Fix eximon continuous updating with timestamped log-files.
Broken in a format-string cleanup in 4.80, missed when I repaired the
diagnostics.
Report and patch from Dmitry Banschikov.
-PP/16 Removed "dont_insert_empty_fragments" fron "openssl_options".
+PP/16 Removed "dont_insert_empty_fragments" from "openssl_options".
Removed SSL_clear() after SSL_new() which led to protocol negotiation
failures. We appear to now support TLS1.1+ with Exim.
has clearer semantics. The /leaky, /strict, and /readonly update modes
are mutually exclusive. The update mode is no longer included in the
database key; it just determines when the database is updated. (This
- means that when you upgrde Exim will forget old rate measurements.)
+ means that when you upgrade Exim will forget old rate measurements.)
Exim now checks that the per_* options are used with an update mode that
makes sense for the current ACL. For example, when Exim is processing a
Exim version 4.75
-----------------
-NM/01 Workround for PCRE version dependency in version reporting
+NM/01 Workaround for PCRE version dependency in version reporting
Bugzilla 1073
TF/01 Update valgrind.h and memcheck.h to copies from valgrind-3.6.0.
variable declaration deep within a block. Bug and patch from
Dennis Davis.
-PP/15 lookups-Makefile IRIX compatibilty coercion.
+PP/15 lookups-Makefile IRIX compatibility coercion.
PP/16 Make DISABLE_DKIM build knob functional.
colons if the lookup type is iplsearch. This is not incompatible, because
previously such lookups could never work.
- The situation is now rather anomolous, since one *can* have colons in
+ The situation is now rather anomalous, since one *can* have colons in
ordinary lsearch keys. However, making the change in all cases is
incompatible and would probably break a number of configurations.
PH/20 Added hosts_avoid_pipelining to the smtp transport.
PH/21 Long custom messages for fakedefer and fakereject are now split up
- into multiline reponses in the same way that messages for "deny" and
+ into multiline responses in the same way that messages for "deny" and
other ACL rejections are.
PH/22 Applied Jori Hamalainen's speed-up changes and typo fixes to exigrep,
runs only) independently of the message's sender address. This meant
that, if the 4xx error was in fact related to the sender, a different
message to the same recipient with a different sender could confuse
- things. In particualar, this can happen when sending to a greylisting
+ things. In particular, this can happen when sending to a greylisting
server, but other circumstances could also provoke similar problems.
I have changed the default so that the retry time for these errors is now
based a combination of the sender and recipient addresses. This change
JJ/03 exipick.20061117.2, made header handling as similar to exim as possible
(added [br]h_ prefixes, implemented RFC2047 decoding. Fixed
- whitesspace changes from 4.64-PH/27
+ whitespace changes from 4.64-PH/27
JJ/04 exipick.20061117.2, fixed format and added $message_headers_raw to
match 4.64-PH/13
(a) Failures to set uid/gid, the current directory, or a process leader
in a subprocess such as that created by queryprogram now generate
- suitable debugging ouput when -d is set.
+ suitable debugging output when -d is set.
(b) The queryprogram router detects when it is not running as root,
outputs suitable debugging information if -d is set, and then runs
and most important:
o fixes a bug in processing the envelope test (when testing
- multiple envelope elements, the last element determinted the
+ multiple envelope elements, the last element determined the
result)
PH/10 Exim was violating RFC 3834 ("Recommendations for Automatic Responses to
Auto-submitted: auto-generated
in the messages that it generates (bounce messages and others, such as
- warnings). In the case of bounce messages for non-SMTP mesages, there was
+ warnings). In the case of bounce messages for non-SMTP messages, there was
also a typo: it was using "Auto_submitted" (underscore instead of
hyphen). Since every message generated by Exim is necessarily in response
to another message, thes have all been changed to:
PH/05 There's a shambles in IRIX6 - it defines EX_OK in unistd.h which conflicts
with the definition in sysexits.h (which is #included earlier).
Fortunately, Exim does not actually use EX_OK. The code used to try to
- preserve the sysexits.h value, by assumimg that macro definitions were
+ preserve the sysexits.h value, by assuming that macro definitions were
scanned for macro replacements. I have been disabused of this notion,
so now the code just undefines EX_OK before #including unistd.h.
SC/01 Eximstats: added -xls and the ability to specify output files
(patch written by Frank Heydlauf).
-SC/02 Eximstats: use FileHandles for outputing results.
+SC/02 Eximstats: use FileHandles for outputting results.
SC/03 Eximstats: allow any combination of xls, txt, and html output.
58. When a "warn" ACL statement has a log_message modifier, the message is
remembered, and not repeated. This is to avoid a lot of repetition when a
message has many recipients that cause the same warning to be written.
- Howewer, Exim was preserving the list of already written lines for an
+ However, Exim was preserving the list of already written lines for an
entire SMTP session, which doesn't seem right. The memory is now reset if a
new message is started.
the list was checked. (An example that provoked this was putting <; in the
middle of a list instead of at the start.) If this happened during a DATA
ACL check, a -D file could be left lying around. This kind of configuration
- error no longer causes Exim to die; instead it causes a defer errror. The
+ error no longer causes Exim to die; instead it causes a defer error. The
incident is still logged to the main and panic logs.
74. Buglet left over from Exim 3 conversion. The message "too many messages
systems (e.g. Solaris), it also passes back the IP address string as the
"host name". However, on others (e.g. Linux), it passes back an empty
string. Exim wasn't checking for this, and was changing the host name to an
- empty string, assuming it had been canonicized.
+ empty string, assuming it had been canonicalized.
5. Although rare, it is permitted to have more than one PTR record for a given
IP address. I thought that gethostbyaddr() or getipnodebyaddr() always gave
13. The install script calls Exim with "-C /dev/null" in order to find the
version number. If ALT_CONFIG_PREFIX was set, this caused an error message
- to be output. Howeve, since Exim outputs its version number before the
+ to be output. However, since Exim outputs its version number before the
error, it didn't break the script. It just looked ugly. I fixed this by
always allowing "-C /dev/null" if the caller is root.
34. Testing for a connection timeout using "timeout_connect" in the retry rules
did not work. The code looks as if it has *never* worked, though it appears
- to have been documented since at least releast 1.62. I have made it work.
+ to have been documented since at least release 1.62. I have made it work.
35. The "timeout_DNS" error in retry rules, also documented since at least
1.62, also never worked. As it isn't clear exactly what this means, and
16. Check for letters, digits, hyphens, and dots in the names of dnslist
domains, and warn by logging if others are found.
-17. At least on BSD, alignment is not guarenteed for the array of ifreq's
+17. At least on BSD, alignment is not guaranteed for the array of ifreq's
returned from GIFCONF when Exim is trying to find the list of interfaces on
a host. The code in os.c has been modified to copy each ifreq to an aligned
structure in all cases.
24. Ignore Sendmail's -Ooption=value command line item.
25. When execve() failed while trying to run a command in a pipe transport,
- Exim was returning EX_UNAVAILBLE (69) from the subprocess. However, this
+ Exim was returning EX_UNAVAILABLE (69) from the subprocess. However, this
could be confused with a return value of 69 from the command itself. This
has been changed to 127, the value the shell returns if it is asked to run
a non-existent command. The wording for the related log line suggests a
47. Change 50 for 4.20 was a heap of junk. I don't know what I was thinking
when I implemented it. It didn't allow for the fact that some option values
- may legitimatetly be negative (e.g. size_addition), and it didn't even do
+ may legitimately be negative (e.g. size_addition), and it didn't even do
the right test for positive values.
48. Domain names in DNS records are case-independent. Exim always looks them up
"standard" one afterwards.
(d) The setting of the SIGTERM handler while reading SMTP commands was done
- somwhat untidily. I have re-arranged the code.
+ somewhat untidily. I have re-arranged the code.
4. If the building process was interrupted during the MakeLinks script, a
subsequent run of 'make' gave misleading errors. I've made it a bit more
use in the forthcoming Sieve addition to Exim.
56. The behaviour of -t in the presence of Resent- headers has been changed,
- for compability with Sendmail and other MTAs. Previously, Exim gave an
+ for compatibility with Sendmail and other MTAs. Previously, Exim gave an
error, because it is not clear from RFC 2822 how this might be handled. It
turns out that MUAs don't seem to follow what RFC 2822 says, and any MUA
that uses -t with Resent- ensures that there is only one set of Resent-
was also null (empty passwords are permitted), there was an infinite loop.
An empty user name is not now passed to PAM; authentication is forcibly
failed instead. Also, if the end of the list of strings is reached, an
- empty string is passed back just once; a subequent call for data provokes
+ empty string is passed back just once; a subsequent call for data provokes
an error response.
39. If a reverse DNS lookup yields an empty string, treat it as if the lookup
69. The "more" and "unseen" generic router options can now be expanded strings.
-70. The "once_repeat" option in the autoreply tranport is now an expanded
+70. The "once_repeat" option in the autoreply transport is now an expanded
string.
71. If maildir_format is set on an appendfile transport that is referenced from
72. Fixed three bugs in ${readsocket:
(i) If the operation failed, and a failure string was given, "}}" was
- erroroneously added to it.
+ erroneously added to it.
(ii) If the operation succeeded, but a failure string was present, "}" was
added to the expanded data.
(iii) The alarm for the timeout was set with signal() instead of with
4. Change 4.11/30 below overlooked the case when an address gets a 4xx
response from a server. Because this isn't a host problem, the host does
not get delayed, and it gets tried every time the address is OK'd for
- routing, with the same reponse. However, if hosts_max_try is set, because
+ routing, with the same response. However, if hosts_max_try is set, because
not all the hosts were tried, the address does not time out. I've changed
things so that if there is a 4xx response to a RCPT command, the host in
question does not count towards hosts_max_try if the message is older than
observed that getipnodebyname() gives HOST_NOT_FOUND for names for which a
DNS lookup gives TRY_AGAIN. See also change 125 below.
-90. Minor rewording of ACL error for attemted header check after RCPT.
+90. Minor rewording of ACL error for attempted header check after RCPT.
91. When USE_GDBM was set, exim_dbmbuild wasn't working properly (still assumed
- NDBM compatibilify interface); similarly in dbmdb lookups when ownership
+ NDBM compatible interface); similarly in dbmdb lookups when ownership
was being tested.
92. If a Reply-To: header contained newlines and was used to generate
SMTP connection, a pipe file descriptor was accidentally left open. This
meant that if there was a long chain of such processes, the number of open
file descriptors increased by one for each process, and if there were
- sufficent, the limit of open descriptors could be reached, causing various
+ sufficient, the limit of open descriptors could be reached, causing various
problems.
8. When an address was being checked with -bt and the routing involved an
5. The way in which Exim scans its queue when split_spool_directory is set has
changed, but this shouldn't make any noticeable difference. See doc/NewStuff
-for defails.
+for details.
Upgrading from release 3.03
. The authenticate_hosts option has been renamed as hosts_try_auth. A new
option called hosts_require_auth has been added; if authentication fails for
one of these hosts, Exim does _not_ try to send unauthenticated. It defers
- instead. The deferal error is detectable in the retry rules, so this can be
+ instead. The deferral error is detectable in the retry rules, so this can be
turned into a hard failure if required.
The logging options that have been abolished are: log_all_parents,
log_arguments, log_incoming_port, log_interface, log_ip_options,
-log_level, log_queue_run_level, log_received_sender, log_received_rceipients,
+log_level, log_queue_run_level, log_received_sender, log_received_recipients,
log_rewrites, log_sender_on_delivery, log_smtp_confirmation,
log_smtp_connections, log_smtp_syntax_errors, log_subject, tls_log_cipher,
tls_log_peerdn.
. There's a new expansion feature for running commands:
- ${run{comand args}{yes}{no}}
+ ${run{command args}{yes}{no}}
Like all the other conditional items, the {yes} and {no} strings are
optional. Omitting both is equivalent to {$value}. The standard output of the
12. OCSP stapling is now supported by default.
13. If built with the EXPERIMENTAL_DSN feature enabled, Exim will output
- Delivery Status Notification messages in MIME format, and negociate
+ Delivery Status Notification messages in MIME format, and negotiate
DSN features per RFC 3461.
ignored.
7. New cutthrough routing feature. Requested by a "control = cutthrough_delivery"
- ACL modifier; works for single-recipient mails which are recieved on and
+ ACL modifier; works for single-recipient mails which are received on and
deliverable via SMTP. Using the connection made for a recipient verify,
if requested before the verify, or a new one made for the purpose while
the inbound connection is still active. The bulk of the mail item is copied
direct from the inbound socket to the outbound (as well as the spool file).
When the source notifies the end of data, the data acceptance by the destination
- is negociated before the acceptance is sent to the source. If the destination
+ is negotiated before the acceptance is sent to the source. If the destination
does not accept the mail item, for example due to content-scanning, the item
is not accepted from the source and therefore there is no need to generate
a bounce mail. This is of benefit when providing a secondary-MX service.
The downside is that delays are under the control of the ultimate destination
system not your own.
- The Recieved-by: header on items delivered by cutthrough is generated
+ The Received-by: header on items delivered by cutthrough is generated
early in reception rather than at the end; this will affect any timestamp
included. The log line showing delivery is recorded before that showing
reception; it uses a new ">>" tag instead of "=>".
provided to the authentication method which failed. It is available
for use in subsequent ACL processing (typically quit or notquit ACLs).
-23. New ACL modifer "udpsend" can construct a UDP packet to send to a given
+23. New ACL modifier "udpsend" can construct a UDP packet to send to a given
UDP host and port.
24. New ${hexquote:..string..} expansion operator converts non-printable
acl_smtp_auth string* unset main 4.00
acl_smtp_connect string* unset main 4.11
acl_smtp_data string* unset main 4.00
-acl_smtp_data_prdr string* unset main 4.82 with expreimental_prdr
+acl_smtp_data_prdr string* unset main 4.82 with experimental_prdr
acl_smtp_dkim string* unset main 4.70 unless disable_dkim
acl_smtp_etrn string* unset main 4.00
acl_smtp_expn string* unset main 4.00
EXIM_PERL optional
EXIM_USER mandatory user to use for Exim
EXIWHAT_EGREP_ARG system** to find Exim processes from ps
-EXIWHAT_KILL_SIGNAL system** -SIGUSER1 or numerical equivalent
+EXIWHAT_KILL_SIGNAL system** -SIGUSR1 or numerical equivalent
EXIWHAT_MULTIKILL_CMD system**
EXIWHAT_MULTIKILL_ARG system**
EXIWHAT_PS_ARG system** to list all processes
to compose messages. As a result, different implementations generate
different mails. The Exim Sieve implementation splits the reason into
header and body. It adds the header to the mail header and uses the body
-as mail body. Be aware, that other imlementations compose a multipart
+as mail body. Be aware, that other implementations compose a multipart
structure with the reason as only part. Both conform to the specification
(or lack thereof).
compatibility interface, or via its own native interface. There are two
advantages to doing the latter: (1) you don't run the risk of Exim's seeing the
"wrong" version of the ndbm.h header, as described above, and (2) the
-performace is better. It is therefore recommended that you set USE_DB=yes in an
+performance is better. It is therefore recommended that you set USE_DB=yes in an
appropriate Local/Makefile-xxx file. (If you are compiling for just one OS, it
can go in Local/Makefile itself.)
liable to incompatible change.
-Brightmail AntiSpam (BMI) suppport
+Brightmail AntiSpam (BMI) support
--------------------------------------------------------------
Brightmail AntiSpam is a commercial package. Please see
1) Adding support for BMI at compile time
To compile with BMI support, you need to link Exim against
- the Brighmail client SDK, consisting of a library
+ the Brightmail client SDK, consisting of a library
(libbmiclient_single.so) and a header file (bmi_api.h).
You'll also need to explicitly set a flag in the Makefile to
include BMI support in the Exim binary. Both can be achieved
mout-xforward.gmx.net 82.165.159.12
mout.gmx.net 212.227.15.16
-Use a reasonable IP. eg. one the sending cluster acutally uses.
+Use a reasonable IP. eg. one the sending cluster actually uses.
DMARC Support
--------------------------------------------------------------
MX, A and TLSA records.
A TLSA lookup will be done if either of the above options match
-and the host-lookup succeded using dnssec.
+and the host-lookup succeeded using dnssec.
If a TLSA lookup is done and succeeds, a DANE-verified TLS connection
will be required for the host. If it does not, the host will not
be used; there is no fallback to non-DANE or non-TLS.
Example:
X-Exim-Diagnostic: X-str; SMTP error from remote mail server after RCPT TO:<d3@myhost.test.ex>: 550 hard error
Rationale:
- This string somtimes give extra information over the
+ This string sometimes give extra information over the
existing (already available) Diagnostic-Code field.
LMDB Lookup support
-------------------
LMDB is an ultra-fast, ultra-compact, crash-proof key-value embedded data store.
-It is modeled loosely on the BerkeleyDB API. You shoul read about the feature
+It is modeled loosely on the BerkeleyDB API. You should read about the feature
set as well as operation modes at https://symas.com/products/lightning-memory-mapped-database/
LMDB single key lookup support is provided by linking to the LMDB C library.
ldd $(which exim) # most platforms
otool -L $(which exim) # MacOS
-although that does not correclty handle restrictions imposed upon
+although that does not correctly handle restrictions imposed upon
executables which are setuid.
If the `chrpath` package is installed, then:
@cd build-$(buildname); $(MAKE) SHELL=$(SHELL) $(MFLAGS)
-# This pair for the convinience of of the Debian maintainers
+# This pair for the convenience of of the Debian maintainers
exim: Local/Makefile configure
@cd build-$(buildname); $(MAKE) SHELL=$(SHELL) $(MFLAGS) exim
utils: Local/Makefile configure
# This file is the basis of the main makefile for Exim and friends. The
# makefile at the top level arranges to build the main makefile by calling
# scripts/Configure-Makefile from within the build directory. This
-# concatentates the configuration settings from Local/Makefile and other,
+# concatenates the configuration settings from Local/Makefile and other,
# optional, Local/* files at the front of this file, to create Makefile in the
# build directory.
#
# Compile step for most of the exim modules. HDRS is a list of headers
-# which cause everthing to be rebuilt. PHDRS is the same, for the use
+# which cause everything to be rebuilt. PHDRS is the same, for the use
# of routers, transports, and authenticators. I can't find a way of doing this
# in one. This list is overkill, but it doesn't really take much time to
# rebuild Exim on a modern computer.
##################################################
-# The following is normaly set in local/Makefile.
+# The following is normally set in local/Makefile.
# Makefile.cygwin provides defaults with which the
# precompiled version is built
##################################################
#############################################################################
# The following definitions are relevant only when compiling the Exim monitor
-# program, which requires an X11 display. See the varible EXIM_MONITOR in
+# program, which requires an X11 display. See the variable EXIM_MONITOR in
# src/EDITME for how to suppress this compilation.
# X11 contains the location of the X11 libraries and include files.
# crypt() is in a separate library
LIBS=-lcrypt -lm -lutil
-# Dynamicly loaded modules need to be built with -fPIC
+# Dynamically loaded modules need to be built with -fPIC
CFLAGS_DYNAMIC=-shared -rdynamic -fPIC
# FreeBSD always ships with Berkeley DB
and to avoid exec that cause loss of privilege
If not privileged and unable to chown,
we set the exim uid to our uid.
- If unprivileged and /var/spool/exim is writable and not runing as listening daemon,
+ If unprivileged and /var/spool/exim is writable and not running as listening daemon,
we fake all subsequent setuid. */
/* Get the system and admins uid from their sids */
*) dsn_process switch removed
*) every router "processes" DSN by default
- *) there is no possibilty to "gag" DSN anymore since this violates RFC
+ *) there is no possibility to "gag" DSN anymore since this violates RFC
*) dsn_lasthop switch added for routers
*) if dsn_lasthop is set by a router it is handled as relaying to a
non DSN aware relay. success mails are sent if Exim successfully
3. Version 4.23 saves the contents of the ACL variables with the message, so
that they can be used later. If one of these variables contains a newline,
there will be a newline character in the spool that will not be interpreted
- correctely by a previous version of Exim. (Exim ignores keyed spool file
+ correctly by a previous version of Exim. (Exim ignores keyed spool file
items that it doesn't understand - precisely for this kind of problem - but
it expects them all to be on one line.)
}
/*
- * NOTE: This function really needs to recieve graphics exposure
+ * NOTE: This function really needs to receive graphics exposure
* events, but since this is not easily supported until R4 I am
* going to hold off until then.
*/
* used by all more than one of these dialogs.
*
* The following functions are the only non-static ones defined
- * in this module. They are located at the begining of the
+ * in this module. They are located at the beginning of the
* section that contains this dialog box that uses them.
*
* void _XawTextInsertFileAction(w, event, params, num_params);
*
* Note:
*
- * If the search was sucessful and the argument popdown is passed to
+ * If the search was successful and the argument popdown is passed to
* this action routine then the widget will automatically popdown the
* search widget.
*/
PopdownSearch(w, (XtPointer) tw->text.search, NULL);
}
-/* Function Name: PopdownSeach
+/* Function Name: PopdownSearch
* Description: Pops down the search widget and resets it.
* Arguments: w - *** NOT USED ***.
* closure - a pointer to the search structure.
* The parameter list contains one or two entries that may be the following.
*
* First Entry: The first entry is the direction to search by default.
- * This arguement must be specified and may have a value of
+ * This argument must be specified and may have a value of
* "left" or "right".
*
* Second Entry: This entry is optional and contains the value of the default
/* Function Name: DoSearch
* Description: Performs a search.
- * Arguments: search - the serach structure.
- * Returns: TRUE if sucessful.
+ * Arguments: search - the search structure.
+ * Returns: TRUE if successful.
*/
/* ARGSUSED */
*
* NOTE:
*
- * The function argument is passed the following arguements.
+ * The function argument is passed the following arguments.
*
* form - the from widget that is the dialog.
* ptr - the initial string for the dialog's text widget.
static int stripchart_count = 0; /* count stripcharts created */
static int *stripchart_delay; /* vector of delay counts */
static Widget *stripchart_label; /* vector of label widgets */
-static int *stripchart_last_total; /* vector of prevous values */
+static int *stripchart_last_total; /* vector of previous values */
static int *stripchart_max; /* vector of maxima */
static int *stripchart_middelay; /* vector of */
static int *stripchart_midmax; /* vector of */
# That shim can set macros before .include'ing your main configuration file.
#
# As a strictly transient measure to ease migration to 4.73, the
-# WHITELIST_D_MACROS value definies a colon-separated list of macro-names
+# WHITELIST_D_MACROS value defines a colon-separated list of macro-names
# which are permitted to be overridden from the command-line which will be
# honoured by the Exim user. So these are macros that can persist to delivery
# time.
Arguments:
dnsa the DNS answer block
dnss a DNS scan block for us to use
- reset option specifing what portion to scan, as described above
+ reset option specifying what portion to scan, as described above
target the target hostname to use for matching RR names
Returns: CSA_OK successfully authorized
else if (strcmpic(ss, US"per_byte") == 0)
{
/* If we have not yet received the message data and there was no SIZE
- declaration on the MAIL comand, then it's safe to just use a value of
+ declaration on the MAIL command, then it's safe to just use a value of
zero and let the recorded rate decay as if nothing happened. */
RATE_SET(mode, PER_MAIL);
if (where > ACL_WHERE_NOTSMTP) badacl = TRUE;
size of the event per the period size, ignoring the lack of events outside
the current period and regardless of where the event falls in the period. So,
if the interval was so long that the calculated rate is unhelpfully small, we
- re-intialize the rate. In the absence of higher-rate bursts, the condition
+ re-initialize the rate. In the absence of higher-rate bursts, the condition
below is true if the interval is greater than the period. */
if (dbd->rate < count) dbd->rate = count;
#ifdef EXPERIMENTAL_DCC
case ACLC_DCC:
{
- /* Seperate the regular expression and any optional parameters. */
+ /* Separate the regular expression and any optional parameters. */
const uschar * list = arg;
uschar *ss = string_nextinlist(&list, &sep, big_buffer, big_buffer_size);
/* Run the dcc backend. */
rc = dcc_process(&ss);
- /* Modify return code based upon the existance of options. */
+ /* Modify return code based upon the existence of options. */
while ((ss = string_nextinlist(&list, &sep, big_buffer, big_buffer_size)))
if (strcmpic(ss, US"defer_ok") == 0 && rc == DEFER)
rc = FAIL; /* FAIL so that the message is passed to the next ACL */
#ifdef WITH_CONTENT_SCAN
case ACLC_SPAM:
{
- /* Seperate the regular expression and any optional parameters. */
+ /* Separate the regular expression and any optional parameters. */
const uschar * list = arg;
uschar *ss = string_nextinlist(&list, &sep, big_buffer, big_buffer_size);
/* Run the spam backend. */
rc = spam(CUSS &ss);
- /* Modify return code based upon the existance of options. */
+ /* Modify return code based upon the existence of options. */
while ((ss = string_nextinlist(&list, &sep, big_buffer, big_buffer_size))
!= NULL) {
if (strcmpic(ss, US"defer_ok") == 0 && rc == DEFER)
return FAIL;
badquit:
- *log_msgptr = string_sprintf("QUIT or not-QUIT teplevel ACL may not fail "
+ *log_msgptr = string_sprintf("QUIT or not-QUIT toplevel ACL may not fail "
"('%s' verb used incorrectly)", verbs[acl->verb]);
return ERROR;
}
int auth_cram_md5_options_count =
sizeof(auth_cram_md5_options)/sizeof(optionlist);
-/* Default private options block for the contidion authentication method. */
+/* Default private options block for the condition authentication method. */
auth_cram_md5_options_block auth_cram_md5_option_defaults = {
NULL, /* server_secret */
/*************************************************
-* Peform the CRAM-MD5 algorithm *
+* Perform the CRAM-MD5 algorithm *
*************************************************/
/* The CRAM-MD5 algorithm is described in RFC 2195. It computes
uschar digest[16];
/* If expansion of either the secret or the user name failed, return CANCELLED
-or ERROR, as approriate. */
+or ERROR, as appropriate. */
if (!secret || !name)
{
/* Some auth mechanisms can ensure that both sides are talking withing the
same security context; for TLS, this means that even if a bad certificate
has been accepted, they remain MitM-proof because both sides must be within
- the same negotiated session; if someone is terminating one sesson and
+ the same negotiated session; if someone is terminating one session and
proxying data on within a second, authentication will fail.
We might not have this available, depending upon TLS implementation,
}
/* The first string is attached to the AUTH command; others are sent
- unembelished. */
+ unembellished. */
if (first)
{
int auth_spa_options_count =
sizeof(auth_spa_options)/sizeof(optionlist);
-/* Default private options block for the contidion authentication method. */
+/* Default private options block for the condition authentication method. */
auth_spa_options_block auth_spa_option_defaults = {
NULL, /* spa_password */
/* Child process: make the reading end of the pipe into the standard input and
close the writing end. If debugging, pass debug_fd as stderr. Then re-exec
-Exim with appropriat options. In the test harness, use -odi unless queue_only
+Exim with appropriate options. In the test harness, use -odi unless queue_only
is set, so that the bounce is fully delivered before returning. Failure is
signalled with EX_EXECFAILED (specified by CEE_EXEC_EXIT), but this shouldn't
occur. */
# libraries that Exim uses (e.g. LDAP) depend on specific environment settings.
# There are two lists: keep_environment for the variables we trust, and
# add_environment for variables we want to set to a specific value.
-# Note that TZ is handled separateley by the timezone runtime option
+# Note that TZ is handled separately by the timezone runtime option
# and TIMEZONE_DEFAULT buildtime option.
# keep_environment = ^LDAP
} smtp_slot;
/* An empty slot for initializing (Standard C does not allow constructor
-expressions in assigments except as initializers in declarations). */
+expressions in assignments except as initializers in declarations). */
static smtp_slot empty_smtp_slot = { 0, NULL };
}
/* Create a list of default SMTP ports, to be used if local_interfaces
- contains entries without explict ports. First count the number of ports, then
+ contains entries without explicit ports. First count the number of ports, then
build a translated list in a vector. */
list = daemon_smtp_port;
/*
* If the TA certificate is self-issued, or need not be, use it directly.
- * Otherwise, synthesize requisuite ancestors.
+ * Otherwise, synthesize requisite ancestors.
*/
if ( !wrap_to_root
|| X509_check_issued(tacert, tacert) == X509_V_OK)
/* DNSSEC support is also required */
# ifndef RES_USE_DNSSEC
-# error DANE support requires that the DNS reolver library supports DNSSEC
+# error DANE support requires that the DNS resolver library supports DNSSEC
# endif
# ifdef USE_GNUTLS
Originally, there was only one structure, used for both types. However, it got
expanded for domain records, so it got split. To make it possible for Exim to
handle the old type of record, we retain the old definition. The different
-kinds of record can be distinguised by their different lengths. */
+kinds of record can be distinguished by their different lengths. */
typedef struct {
time_t time_stamp;
}
}
- /* a blank line seperates header from body */
+ /* a blank line separates header from body */
Ustrncat(sendbuf, "\n", sizeof(sendbuf)-Ustrlen(sendbuf)-1);
flushbuffer(sockfd, sendbuf);
DEBUG(D_acl)
Arguments:
p tree node
- pos amount of indenting & vertical bars to pring
+ pos amount of indenting & vertical bars to print
barswitch if TRUE print | at the pos value
Returns: nothing
/* We start with just the local part for pipe, file, and reply deliveries, and
for successful local deliveries from routers that have the log_as_local flag
set. File deliveries from filters can be specified as non-absolute paths in
-cases where the transport is goin to complete the path. If there is an error
+cases where the transport is going to complete the path. If there is an error
before this happens (expansion failure) the local part will not be updated, and
so won't necessarily look like a path. Add extra text for this case. */
{
#ifdef SUPPORT_SOCKS
case '2': /* proxy information; must arrive before A0 and applies to that addr XXX oops*/
- proxy_session = TRUE; /*XXX shouod this be cleared somewhere? */
+ proxy_session = TRUE; /*XXX should this be cleared somewhere? */
if (*ptr == 0)
ptr++;
else
}
/* Now fork a subprocess to do the remote delivery, but before doing so,
- ensure that any cached resourses are released so as not to interfere with
+ ensure that any cached resources are released so as not to interfere with
what happens in the subprocess. */
search_tidyup();
/* Otherwise, handle the sending of a message. Find the error address for
the first address, then send a message that includes all failed addresses
that have the same error address. Note the bounce_recipient is a global so
- that it can be accesssed by $bounce_recipient while creating a customized
+ that it can be accessed by $bounce_recipient while creating a customized
error message. */
else
log_write(0, LOG_MAIN|LOG_PANIC_DIE, "failed to unlink %s: %s", fname,
strerror(errno));
- /* Move the message off the spool if reqested */
+ /* Move the message off the spool if requested */
#ifdef SUPPORT_MOVE_FROZEN_MESSAGES
if (deliver_freeze && move_frozen_messages)
/* If we have arrived here with dkim_collect_input == FALSE, it
means there was a processing error somewhere along the way.
-Log the incident and disable futher verification. */
+Log the incident and disable further verification. */
if (!dkim_collect_input)
{
Arguments:
dnsa pointer to dns answer block
dnss pointer to dns scan block
- reset option specifing what portion to scan, as described above
+ reset option specifying what portion to scan, as described above
Returns: next dns record, or NULL when no more
*/
/* Extract the AUTHORITY information from the answer. If the answer isn't
-authoritive (AA not set), we do not extract anything.
+authoritative (AA not set), we do not extract anything.
-The AUTHORITIVE section contains NS records if the name in question was found,
+The AUTHORITY section contains NS records if the name in question was found,
it contains a SOA record otherwise. (This is just from experience and some
tests, is there some spec?)
/* We do not perform DNSSEC work ourselves; if the administrator has installed
a verifying resolver which sets AD as appropriate, though, we'll use that.
-(AD = Authentic Data, AA = Authoritive Answer)
+(AD = Authentic Data, AA = Authoritative Answer)
Argument: pointer to dns answer block
Returns: bool indicating presence of AD bit
if (h->ad) return TRUE;
-/* If the resolver we ask is authoritive for the domain in question, it
+/* If the resolver we ask is authoritative for the domain in question, it
* may not set the AD but the AA bit. If we explicitly trust
* the resolver for that domain (via a domainlist in dns_trust_aa),
* we return TRUE to indicate a secure answer.
/************************************************
* Check whether the AA bit is set *
* We need this to warn if we requested AD *
- * from an authoritive server *
+ * from an authoritative server *
************************************************/
BOOL
/* Call the resolver to look up the given domain name, using the given type,
and check the result. The error code TRY_AGAIN is documented as meaning "non-
-Authoritive Host not found, or SERVERFAIL". Sometimes there are badly set
+Authoritative Host not found, or SERVERFAIL". Sometimes there are badly set
up nameservers that produce this error continually, so there is the option of
providing a list of domains for which this is treated as a non-existent
host.
}
#endif
-/* If configured, check the hygene of the name passed to lookup. Otherwise,
+/* If configured, check the hygiene of the name passed to lookup. Otherwise,
although DNS lookups may give REFUSED at the lower level, some resolvers
turn this into TRY_AGAIN, which is silly. Give a NOMATCH return, since such
domains cannot be in the DNS. The check is now done by a regular expression;
static int lookup_list_init_done = 0;
-/* Table of information about all possible authentication mechamisms. All
+/* Table of information about all possible authentication mechanisms. All
entries are always present if any mechanism is declared, but the functions are
set to NULL for those that are not compiled into the binary. */
{
if ($filename =~ /\.(?:$ext)$/)
{
- # Just die if compressor not found; if this occurrs in the middle of
+ # Just die if compressor not found; if this occurs in the middle of
# two valid files with a lot of matches, error could easily be missed.
die("Didn't find $ext decompressor for $filename\n")
if ($compressors->{$ext}->{bin} eq '');
/* Exim uses a time + a pid to generate a unique identifier in two places: its
message IDs, and in file names for maildir deliveries. Because some OS now
re-use pids within the same second, sub-second times are now being used.
-However, for absolute certaintly, we must ensure the clock has ticked before
+However, for absolute certainty, we must ensure the clock has ticked before
allowing the relevant process to complete. At the time of implementation of
this code (February 2003), the speed of processors is such that the clock will
invariably have ticked already by the time a process has done its job. This
exim_usage(uschar *progname)
{
-/* Handle specific program invocation varients */
+/* Handle specific program invocation variants */
if (Ustrcmp(progname, US"-mailq") == 0)
{
fprintf(stderr,
break;
}
- /* An option consistion of -- terminates the options */
+ /* An option consisting of -- terminates the options */
if (Ustrcmp(arg, "--") == 0)
{
verify_get_ident(1413);
}
- /* In case the given address is a non-canonical IPv6 address, canonicize
+ /* In case the given address is a non-canonical IPv6 address, canonicalize
it. The code works for both IPv4 and IPv6, as it happens. */
size = host_aton(sender_host_address, x);
of Linux (where SIG_IGN does work) that are picky. If, having set SIG_IGN, a
process then calls waitpid(), a grumble is written to the system log, because
this is logically inconsistent. In other words, it doesn't like the paranoia.
-As a consequenc of this, the waitpid() below is now excluded if we are sure
+As a consequence of this, the waitpid() below is now excluded if we are sure
that SIG_IGN works. */
if (!synchronous_delivery)
if (!receive_timeout)
{
- struct timeval t = { 30*60, 0 }; /* 30 minutess */
+ struct timeval t = { 30*60, 0 }; /* 30 minutes */
fd_set r;
FD_ZERO(&r); FD_SET(0, &r);
# 2001-10-21 Removed -domain flag and added -bydomain, -byhost, and -byemail.
# We now generate our main parsing subroutine as an eval statement
# which improves performance dramatically when not all the results
-# are required. We also cache the last timestamp to time convertion.
+# are required. We also cache the last timestamp to time conversion.
#
# NOTE: 'Top 50 destinations by (message count|volume)' lines are
# now 'Top N (host|email|domain) destinations by (message count|volume)'
# in HTML output. Also added code to convert them back with -merge.
# Fixed timestamp offsets to convert to seconds rather than minutes.
# Updated -merge to work with output files using timezones.
-# Added cacheing to speed up the calculation of timezone offsets.
+# Added caching to speed up the calculation of timezone offsets.
#
# 2003-02-07 V1.25 Steve Campbell
# Optimised the usage of mktime() in the seconds subroutine.
# Bernard Massot.
#
# 2003-06-03 V1.28 John Newman
-# Added in the ability to skip over the parsing and evaulation of
+# Added in the ability to skip over the parsing and evaluation of
# specific transports as passed to eximstats via the new "-nt/.../"
# command line argument. This new switch allows the viewing of
# not more accurate statistics but more applicable statistics when
# Added -xls and the ability to specify output files.
#
# 2005-04-29 V1.38 Steve Campbell
-# Use FileHandles for outputing results.
+# Use FileHandles for outputting results.
# Allow any combination of xls, txt, and html output.
# Fixed display of large numbers with -nvr option
# Fixed merging of reports with empty tables.
use vars qw($total_received_data $total_received_data_gigs $total_received_count);
use vars qw($total_delivered_data $total_delivered_data_gigs $total_delivered_messages $total_delivered_addresses);
use vars qw(%timestamp2time); #Hash of timestamp => time.
-use vars qw($last_timestamp $last_time); #The last time convertion done.
-use vars qw($last_date $date_seconds); #The last date convertion done.
-use vars qw($last_offset $offset_seconds); #The last time offset convertion done.
+use vars qw($last_timestamp $last_time); #The last time conversion done.
+use vars qw($last_date $date_seconds); #The last date conversion done.
+use vars qw($last_offset $offset_seconds); #The last time offset conversion done.
use vars qw($localtime_offset);
use vars qw($i); #General loop counter.
use vars qw($debug); #Debug mode?
use vars qw(%rejected_count_by_ip %rejected_count_by_reason);
use vars qw(%temporarily_rejected_count_by_ip %temporarily_rejected_count_by_reason);
-#For use in Speadsheed::WriteExcel
+#For use in Spreadsheet::WriteExcel
use vars qw($workbook $ws_global $ws_relayed $ws_errors);
use vars qw($row $col $row_hist $col_hist);
use vars qw($run_hist);
else {
# We don't want any rounding to be done.
# and we don't need broken formatted output which on one hand avoids numbers from
- # being interpreted as string by Spreadsheed Calculators, on the other hand
+ # being interpreted as string by Spreadsheet Calculators, on the other hand
# breaks if more than 4 digits! -> flexible length instead of fixed length
# Format the return value at the output routine! -fh
#$rounded = sprintf("%d", ($g * $gig) + $x);
}
my $time = $date_seconds + ($5 * 3600) + ($6 * 60) + $7;
- # SC. Use cacheing. Also note we want seconds not minutes.
+ # SC. Use caching. Also note we want seconds not minutes.
#my($this_offset) = ($10 * 60 + $11) * ($9 . "1") if defined $8;
if (defined $8 && ($8 ne $last_offset)) {
$last_offset = $8;
# Create a dummy hash entry for the key if required.
# Note that setting the dummy_hash value sets it for both href2 &
- # href3. Also note that currently we are guarenteed to have a real
+ # href3. Also note that currently we are guaranteed to have a real
# value for href3 if a real value for href2 exists so don't need to
# test for it as well.
$dummy_hash{$key} = 0 unless exists $href2->{$key};
if ($messages > 0) {
@content = ($total_aref->[0], '', $messages, '');
- #Count the number of distict IPs for the Hosts column.
+ #Count the number of distinct IPs for the Hosts column.
push(@content,scalar(keys %{$total_aref->[1]})) if $do_sender{Host};
#These rows do not have entries for the following columns (if specified)
#
# add_to_totals(\%totals,\@keys,$values);
#
-# Given a line of space seperated values, add them into the provided hash using @keys
+# Given a line of space separated values, add them into the provided hash using @keys
# as the hash keys.
#
# If the value contains a '%', then the value is set rather than added. Otherwise, we
#
# line_to_hash(\%hash,\@keys,$line);
#
-# Given a line of space seperated values, set them into the provided hash
+# Given a line of space separated values, set them into the provided hash
# using @keys as the hash keys.
#######################################################################
sub line_to_hash {
# until we've got all of the argument.
#
# This isn't perfect as all white space gets reduced to one space,
-# but it's as good as we can get! If it's esential that spacing
+# but it's as good as we can get! If it's essential that spacing
# be preserved precisely, then you get that by not using shell
# variables.
#######################################################################
#######################################################################
# @rcpt_times = parse_time_list($string);
#
-# Parse a comma seperated list of time values in seconds given by
+# Parse a comma separated list of time values in seconds given by
# the user and fill an array.
#
# Return a default list if $string is undefined.
'show-tests' => \$G::show_tests # display tests as applied to each message
) || exit(1);
-# if both freeze and thaw specified, only thaw as it is less desctructive
+# if both freeze and thaw specified, only thaw as it is less destructive
$G::freeze = undef if ($G::freeze && $G::thaw);
freeze_start() if ($G::freeze);
thaw_start() if ($G::thaw);
$i += 2;
}
}
- elsif ($ow[$i] =~ /\s/) { # whitspace is illegal
+ elsif ($ow[$i] =~ /\s/) { # whitespace is illegal
$e = 1;
last;
}
=item --input-dir <inputname>
-Set the name of the directory under the spool directory. By defaut this is "input". If this starts with '/', the value of --spool is ignored. See also --finput.
+Set the name of the directory under the spool directory. By default this is "input". If this starts with '/', the value of --spool is ignored. See also --finput.
=item -l
}
sub collect() {
- open(QUEUE,"$exim $eargs |") or die("Error openning pipe: $!\n");
+ open(QUEUE,"$exim $eargs |") or die("Error opening pipe: $!\n");
while(<QUEUE>) {
chomp();
my $line = $_;
# typo. Fix provided by Chris Liddiard.
# November 2006 by Jori Hamalainen
# Added feature to separate frozen and bounced messages from queue
-# Adedd feature to list queue per source - destination pair
+# Added feature to list queue per source - destination pair
# Changed regexps to compile once to very minor speed optimization
# Short circuit for empty lines
#
(standard crypt does 25 rounds). It then crypts the next 8 characters,
or an empty block if the password is less than 9 characters, using a
20-round version of crypt and the same salt as was used for the first
-block. Charaters after the first 16 are ignored. It always generates
+block. Characters after the first 16 are ignored. It always generates
a 16-byte hash, which is expressed together with the salt as a string
of 24 base 64 digits. Here are some links to peruse:
size += ilen + comma + 1; /* +1 for the newline */
- /* Second pass - concatentate the data, up to a maximum. Note that
+ /* Second pass - concatenate the data, up to a maximum. Note that
the loop stops when size hits the limit. */
if (i != 0)
/* SIGFPE both on div/mod by zero and on INT_MIN / -1, which would give
* a value of INT_MAX+1. Note that INT_MIN * -1 gives INT_MIN for me, which
* is a bug somewhere in [gcc 4.2.1, FreeBSD, amd64]. In fact, -N*-M where
- * -N*M is INT_MIN will yielf INT_MIN.
+ * -N*M is INT_MIN will yield INT_MIN.
* Since we don't support floating point, this is somewhat simpler.
* Ideally, we'd return an error, but since we overflow for all other
* arithmetic, consistency suggests otherwise, but what's the correct value
We use an internal routine recursively to handle embedded substrings. The
external function follows. The yield is NULL if the expansion failed, and there
are two cases: if something collapsed syntactically, or if "fail" was given
-as the action on a lookup failure. These can be distinguised by looking at the
+as the action on a lookup failure. These can be distinguished by looking at the
variable expand_string_forcedfail, which is TRUE in the latter case.
The skipping flag is set true when expanding a substring that isn't actually
/* While skipping we cannot rely on the data for expansions being
available (eg. $item) hence cannot decide on numeric vs. keyed.
- Read a maximum of 5 arguments (inclding the yes/no) */
+ Read a maximum of 5 arguments (including the yes/no) */
if (skipping)
{
/*************************************************
-* Ouput the current indent *
+* Output the current indent *
*************************************************/
static void
* Read a list of commands *
*************************************************/
-/* If condional is TRUE, the list must be terminated
+/* If conditional is TRUE, the list must be terminated
by the words "else" or "endif".
Arguments:
int errors_sender_rc = EXIT_FAILURE;
#ifndef DISABLE_EVENT
uschar *event_action = NULL; /* expansion for delivery events */
-uschar *event_data = NULL; /* auxilary data variable for event */
+uschar *event_data = NULL; /* auxiliary data variable for event */
int event_defer_errno = 0;
const uschar *event_name = NULL; /* event name variable */
#endif
typedef struct {
unsigned delivery:1; /* When to attempt */
- unsigned defer_pass:1; /* Pass 4xx to caller rather than spoolling */
+ unsigned defer_pass:1; /* Pass 4xx to caller rather than spooling */
int fd; /* Open connection */
int nrcpt; /* Count of addresses */
uschar * interface; /* (address of) */
extern BOOL queue_only_policy; /* ACL or local_scan wants queue_only */
extern BOOL queue_run_in_order; /* As opposed to random */
extern uschar *queue_run_max; /* Max queue runners */
-extern BOOL queue_smtp; /* Disable all immediate STMP (-odqs)*/
+extern BOOL queue_smtp; /* Disable all immediate SMTP (-odqs)*/
extern uschar *queue_smtp_domains; /* Ditto, for these domains */
extern unsigned int random_seed; /* Seed for random numbers */
extern int sending_port; /* Port of outgoing interface */
extern SIGNAL_BOOL sigalrm_seen; /* Flag for sigalrm_handler */
extern uschar **sighup_argv; /* Args for re-execing after SIGHUP */
-extern int slow_lookup_log; /* Log DNS lookups taking loger than N millisecs */
+extern int slow_lookup_log; /* Log DNS lookups taking longer than N millisecs */
extern int smtp_accept_count; /* Count of connections */
extern BOOL smtp_accept_keepalive; /* Set keepalive on incoming */
extern int smtp_accept_max; /* Max SMTP connections */
hptr = &header_list;
/* header_list->text can be NULL if we get here between when the new
- received header is allocated and when it is acutally filled in. We want
+ received header is allocated and when it is actually filled in. We want
that header to be first, so skip it for now. */
if (header_list->text == NULL)
{
int len = Ustrlen(name);
- /* Find the first non-deleted header witht the correct name. */
+ /* Find the first non-deleted header with the correct name. */
for (hptr = &header_list; (h = *hptr) != NULL; hptr = &(h->next))
{
/* If HELO/EHLO was followed by an IP literal, it's messy because of two
features of IPv6. Firstly, there's the "IPv6:" prefix (Exim is liberal and
doesn't require this, for historical reasons). Secondly, IPv6 addresses may not
-be given in canonical form, so we have to canonicize them before comparing. As
+be given in canonical form, so we have to canonicalize them before comparing. As
it happens, the code works for both IPv4 and IPv6. */
else if (sender_helo_name[0] == '[' &&
FAIL if no host name can be found
DEFER if a temporary error was encountered
-The variable host_lookup_msg is set to an empty string on sucess, or to a
+The variable host_lookup_msg is set to an empty string on success, or to a
reason for the failure otherwise, in a form suitable for tagging onto an error
message, and also host_lookup_failed is set TRUE if the lookup failed. If there
was a defer, host_lookup_deferred is set TRUE.
/* Functions for doing things with sockets. With the advent of IPv6 this has
got messier, so that it's worth pulling out the code into separate functions
-that other parts of Exim can call, expecially as there are now several
+that other parts of Exim can call, especially as there are now several
different places in the code where sockets are used. */
denied.
Avoid actually writing to the logs when exim is called with -bv or -bt to
-test an address, but take other actions, such as panicing.
+test an address, but take other actions, such as panicking.
In Exim proper, the buffer for building the message is got at start-up, so that
nothing gets done if it can't be got. However, some functions that are also
int, /* length of key or query */
uschar **, /* for returning answer */
uschar **, /* for error message */
- uint *); /* cache TTL, sconds */
+ uint *); /* cache TTL, seconds */
void (*close)( /* close function */
void *); /* handle */
void (*tidy)(void); /* tidy function */
* cdb.[ch] it does *not* link against an external cdb library.
*
*
- * There are 2 varients included within this code. One uses MMAP and
+ * There are 2 variants included within this code. One uses MMAP and
* should give better performance especially for multiple lookups on a
* modern machine. The other is the default implementation which is
* used in the case where the MMAP fails or if MMAP was not compiled
/*
* cdb_bread()
- * Internal function to parse 4 byte number (endian independant) */
+ * Internal function to parse 4 byte number (endian independent) */
static uint32
cdb_unpack(uschar *buf)
}
} /* Loop for list of returned records */
- /* Loop for set of A-lookupu types */
+ /* Loop for set of A-lookup types */
} while (type == T_ADDRESSES && searchtype != T_A);
} /* Loop for list of domains */
if (stmth != NULL)
isc_dsql_free_statement(status, &stmth, DSQL_drop);
-/* Non-NULL result indicates a sucessful result */
+/* Non-NULL result indicates a successful result */
if (result != NULL) {
*resultptr = result;
/* See the file NOTICE for conditions of use and distribution. */
/* Many thanks to Stuart Lynne for contributing the original code for this
-driver. Further contibutions from Michael Haardt, Brian Candler, Barry
+driver. Further contributions from Michael Haardt, Brian Candler, Barry
Pederson, Peter Savitch and Christian Kellner. Particular thanks to Brian for
researching how to handle the different kinds of error. */
if (mysql_result != NULL) mysql_free_result(mysql_result);
-/* Non-NULL result indicates a sucessful result */
+/* Non-NULL result indicates a successful result */
if (result != NULL)
{
ORACLE_EXIT_NO_VALS:
-/* Non-NULL result indicates a sucessful result */
+/* Non-NULL result indicates a successful result */
if (result != NULL)
{
hide pgsql_servers = (/tmp/.s.PGSQL.5432)/db/user/password[:<nextserver>]
We enclose the path name in parentheses so that its slashes aren't visually
-confused with the delimeters for the other pgsql_server settings.
+confused with the delimiters for the other pgsql_server settings.
For TCP/IP connections, the server is a host name and optional port (with a
colon separator).
if (pg_result != NULL) PQclear(pg_result);
-/* Non-NULL result indicates a sucessful result */
+/* Non-NULL result indicates a successful result */
if (result != NULL)
{
if (redis_reply) freeReplyObject(redis_reply);
-/* Non-NULL result indicates a sucessful result */
+/* Non-NULL result indicates a successful result */
if (result)
{
#define BIT_TEST(s,z,n) (((s)[BITWORD(n)] & BITMASK(n)) != 0)
/* Used in globals.c for initializing bit_table structures. T will be either
-D or L correspondong to the debug and log selector bits declared below. */
+D or L corresponding to the debug and log selector bits declared below. */
#define BIT_TABLE(T,name) { US #name, T##i_##name }
#define topt_add_delivery_date 0x002
#define topt_add_envelope_to 0x004
#define topt_use_crlf 0x008 /* Terminate lines with CRLF */
-#define topt_end_dot 0x010 /* Send terminting dot line */
+#define topt_end_dot 0x010 /* Send terminating dot line */
#define topt_no_headers 0x020 /* Omit headers */
#define topt_no_body 0x040 /* Omit body */
#define topt_escape_headers 0x080 /* Apply escape check to headers */
US"reported 'kavdaemon damaged' (code 7).", sock);
}
- /* code 8 is not handled, since it is ambigous. It appears mostly on
+ /* code 8 is not handled, since it is ambiguous. It appears mostly on
bounces where part of a file has been cut off */
/* "virus found" return codes (2-4) */
make it possible to ignore comments at the end of compound items.
Argument: current character pointer
-Regurns: new character pointer
+Returns: new character pointer
*/
static uschar *
}
- /* We have a winner! (if bodydhash was correct earlier) */
+ /* We have a winner! (if bodyhash was correct earlier) */
if (sig->verify_status == PDKIM_VERIFY_NONE)
sig->verify_status = PDKIM_VERIFY_PASS;
-/* Routines with knowlege of spool layout */
+/* Routines with knowledge of spool layout */
#ifndef COMPILE_UTILITY
static void
When the first argument of queue_get_spool_list() is 0, it scans the top
directory, fills in subdirs, and sets subcount. The order of the directories is
then randomized after the first time through, before they are scanned in
-subsqeuent iterations.
+subsequent iterations.
When the first argument of queue_get_spool_list() is -1 (for queue_run_in_
order), it scans all directories and makes a single message list. */
{ "dns_retry", opt_int, &dns_retry },
{ "dns_trust_aa", opt_stringptr, &dns_trust_aa },
{ "dns_use_edns0", opt_int, &dns_use_edns0 },
- /* This option is now a no-op, retained for compability */
+ /* This option is now a no-op, retained for compatibility */
{ "drop_cr", opt_bool, &drop_cr },
/*********************************************************/
{ "dsn_advertise_hosts", opt_stringptr, &dsn_advertise_hosts },
/* We get a coverity error here for using count, as it derived
from the tainted buffer pointed to by s, as parsed by sscanf().
- By the definition of sscanf we must be aceessing between start
+ By the definition of sscanf we must be accessing between start
and end of s (assuming it is nul-terminated...) so ignore the error. */
/* coverity[tainted_data] */
if (s[count] == '.')
}
#endif
-/* Update the timstamp in our Received: header to account for any time taken by
+/* Update the timestamp in our Received: header to account for any time taken by
an ACL or by local_scan(). The new time is the time that all reception
processing is complete. */
macro to simplify the coding. We log the arrival of a new message while the
file is still locked, just in case the machine is *really* fast, and delivers
it first! Include any message id that is in the message - since the syntax of a
-message id is actually an addr-spec, we can use the parse routine to canonicize
+message id is actually an addr-spec, we can use the parse routine to canonicalize
it. */
size = 256;
Send dot onward. If accepted, wipe the spooled files, log as delivered and accept
the sender's dot (below).
- If rejected: copy response to sender, wipe the spooled files, log approriately.
+ If rejected: copy response to sender, wipe the spooled files, log appropriately.
If temp-reject: normally accept to sender, keep the spooled file - unless defer=pass
in which case pass temp-reject back to initiator and dump the files.
pid = fork();
/* If fork() fails, reinstate the original error and behave as if
- this block of code were not present. This is the same behavious as happens
+ this block of code were not present. This is the same behaviour as happens
when Exim is not running as root at this point. */
if (pid < 0)
rc = -1;
}
- /* Handle error returns from stat() or route_check_access(). The EACESS error
+ /* Handle error returns from stat() or route_check_access(). The EACCES error
is handled specially. At present, we can force it to be treated as
non-existence. Write the code so that it will be easy to add forcing for
existence if required later. */
}
/* Skip if the sender condition is not met. We leave this one till after the
-local user check so that $home is set - enabling the possiblity of letting
+local user check so that $home is set - enabling the possibility of letting
individual recipients specify lists of acceptable/unacceptable senders. */
if ((rc = route_check_dls(r->name, US"senders", r->senders, NULL,
doesn't have some kind of indication as to why it has failed.
Arguments:
- s the group namd or textual form of the numerical gid
+ s the group name or textual form of the numerical gid
return_gid return the gid via this address
Returns: TRUE if the group was found; FALSE otherwise
by this router, even if it was different to the current address.
Just in case someone does put it into a loop (possible with redirection
- continally adding to an address, for example), put a long stop counter on
+ continually adding to an address, for example), put a long stop counter on
the number of parents. */
for (parent = addr->parent; parent; parent = parent->parent)
DISCARD the address was discarded (:blackhole: or "seen finish")
- FAIL the address was not routed; do not pass to any subseqent
+ FAIL the address was not routed; do not pass to any subsequent
routers, i.e. cause routing to fail.
DEFER retry this address later.
}
/* If nothing has been matched, but the option to look for "*@" is set, try
-replacing everthing to the left of @ by *. After a match, the wild part
+replacing everything to the left of @ by *. After a match, the wild part
is set to the string to the left of the @. */
if (yield == NULL && (starflags & SEARCH_STARAT) != 0)
message.character=US"Notification";
message.length=Ustrlen(message.character);
}
- /* Allocation is larger than neccessary, but enough even for split MIME words */
+ /* Allocation is larger than necessary, but enough even for split MIME words */
buffer_capacity=32+4*message.length;
buffer=store_get(buffer_capacity);
if (message.length!=-1) fprintf(f,"Subject: %s\n",parse_quote_2047(message.character, message.length, US"utf-8", buffer, buffer_capacity, TRUE));
addr->reply->from = expand_string(US"$local_part@$domain");
else
addr->reply->from = from.character;
- /* Allocation is larger than neccessary, but enough even for split MIME words */
+ /* Allocation is larger than necessary, but enough even for split MIME words */
buffer_capacity=32+4*subject.length;
buffer=store_get(buffer_capacity);
/* deconst cast safe as we pass in a non-const item */
processing of the RCPT response(s). We shall do the same, and not require
synch for BDAT. Worse, as the chunk may (very likely will) follow the
command-header in the same packet we cannot do the usual "is there any
- follow-on data after the commmand line" even for non-pipeline mode.
+ follow-on data after the command line" even for non-pipeline mode.
So we'll need an explicit check after reading the expected chunk amount
- when non-pipe, before sennding the ACK. */
+ when non-pipe, before sending the ACK. */
BDAT_CMD,
/* This gets the next byte from the SMTP input buffer. If the buffer is empty,
it flushes the output, and refills the buffer, with a timeout. The signal
handler is set appropriately by the calling function. This function is not used
-after a connection has negotated itself into an TLS/SSL state.
+after a connection has negotiated itself into an TLS/SSL state.
Arguments: none
Returns: the next character or EOF
/* May 2014: haproxy combined the version and command into one byte to
allow two full bytes for the length field in order to proxy SSL
connections. SSL Proxy is not supported in this version of Exim, but
- must still seperate values here. */
+ must still separate values here. */
if (ver != 0x02)
{
size = end + 2 - hdr.v1.line; /* Skip header + CRLF */
DEBUG(D_receive) debug_printf("Detected PROXYv1 header\n");
/* Step through the string looking for the required fields. Ensure
- strict adherance to required formatting, exit for any error. */
+ strict adherence to required formatting, exit for any error. */
p += 5;
if (!isspace(*(p++)))
{
/* Check the format of a HELO line. The data for HELO/EHLO is supposed to be
the domain name of the sending host, or an ip literal in square brackets. The
-arrgument is placed in sender_helo_name, which is in malloc store, because it
+argument is placed in sender_helo_name, which is in malloc store, because it
must persist over multiple incoming messages. If helo_accept_junk is set, this
host is permitted to send any old junk (needed for some broken hosts).
Otherwise, helo_allow_chars can be used for rogue characters in general
passed to this function.
In case things go wrong while processing this function, causing an error that
-may re-enter this funtion, there is a recursion check.
+may re-enter this function, there is a recursion check.
Arguments:
reason What $smtp_notquit_reason will be set to in the ACL;
/* RFC 2487 is not clear on when this command may be sent, though it
does state that all information previously obtained from the client
- must be discarded if a TLS session is started. It seems reasonble to
+ must be discarded if a TLS session is started. It seems reasonable to
do an implied RSET when STARTTLS is received. */
incomplete_transaction_log(US"STARTTLS");
/* and if TLS is already active, tls_server_start() should fail */
}
- /* There is nothing we value in the input buffer and if TLS is succesfully
+ /* There is nothing we value in the input buffer and if TLS is successfully
negotiated, we won't use this buffer again; if TLS fails, we'll just read
fresh content into it. The buffer contains arbitrary content from an
untrusted remote source; eg: NOOP <shellcode>\r\nSTARTTLS\r\n
errno = 0; /* Ensure errno starts out zero */
-/* This is a loop to read and concatentate the lines that make up a multi-line
+/* This is a loop to read and concatenate the lines that make up a multi-line
response. */
for (;;)
}
/* now send the file */
-/* spamd sometimes accepts conections but doesn't read data off
+/* spamd sometimes accepts connections but doesn't read data off
* the connection. We make the file descriptor non-blocking so
* that the write will only write sufficient data without blocking
- * and we poll the desciptor to make sure that we can write without
+ * and we poll the descriptor to make sure that we can write without
* blocking. Short writes are gracefully handled and if the whole
- * trasaction takes too long it is aborted.
+ * transaction takes too long it is aborted.
* Note: poll() is not supported in OSX 10.2 and is reported to be
* broken in more recent versions (up to 10.4).
*/
Returns: spool_read_OK success
spool_read_notopen open failed
spool_read_enverror error in the envelope portion
- spool_read_hdrdrror error in the header portion
+ spool_read_hdrerror error in the header portion
*/
int
#endif /* NEED_SYNC_DIRECTORY */
/* Return the number of characters in the headers, which is the file size, less
-the prelimary stuff, less the additional count fields on the headers. */
+the preliminary stuff, less the additional count fields on the headers. */
DEBUG(D_receive) debug_printf("Size of headers = %d\n",
(int)(statbuf.st_size - size_correction));
ss = store_get(length + nonprintcount * 3 + 1);
-/* Copy everying, escaping non printers. */
+/* Copy everything, escaping non printers. */
t = s;
tt = ss;
************************************************/
/* This function is used to build a list, returning
an allocated null-terminated growable string. The
-given element has any embedded seperator characters
+given element has any embedded separator characters
doubled.
Arguments:
list points to the start of the list that is being built, or NULL
if this is a new list that has no contents yet
- sep list seperator charactoer
- ele new lement to be appended to the list
+ sep list separator character
+ ele new element to be appended to the list
Returns: pointer to the start of the list, changed if copied for expansion.
*/
Returns: OK on success
DEFER for errors before the start of the negotiation
- FAIL for errors during the negotation; the server can't
+ FAIL for errors during the negotiation; the server can't
continue running.
*/
return TRUE;
/* "auto" needs to be handled carefully.
- * OpenSSL < 1.0.2: we do not select anything, but fallback to primve256v1
+ * OpenSSL < 1.0.2: we do not select anything, but fallback to prime256v1
* OpenSSL < 1.1.0: we have to call SSL_CTX_set_ecdh_auto
- * (openss/ssl.h defines SSL_CTRL_SET_ECDH_AUTO)
+ * (openssl/ssl.h defines SSL_CTRL_SET_ECDH_AUTO)
* OpenSSL >= 1.1.0: we do not set anything, the libray does autoselection
* https://github.com/openssl/openssl/commit/fe6ef2472db933f01b59cad82aa925736935984b
*/
OCSP_NOSIGS OCSP_NOVERIFY OCSP_NOCHAIN OCSP_NOCHECKS OCSP_NOEXPLICIT
OCSP_TRUSTOTHER OCSP_NOINTERN */
-/* This does a full verify on the OCSP proof before we load it for serviing
+/* This does a full verify on the OCSP proof before we load it for serving
up; possibly overkill - just date-checks might be nice enough.
OCSP_basic_verify takes a "store" arg, but does not
We do not free the stack since it could be needed a second time for
SNI handling.
-Seperately we might try to replace using OCSP_basic_verify() - which seems to not
+Separately we might try to replace using OCSP_basic_verify() - which seems to not
be a public interface into the OpenSSL library (there's no manual entry) -
But what with? We also use OCSP_basic_verify in the client stapling callback.
-And there we NEED it; we miust verify that status... unless the
+And there we NEED it; we must verify that status... unless the
library does it for us anyway? */
if ((i = OCSP_basic_verify(basic_response, sk, NULL, verify_flags)) < 0)
if (!(rsa = RSA_generate_key(1024, RSA_F4, NULL, NULL)))
goto err;
-where = US"assiging pkey";
+where = US"assigning pkey";
if (!EVP_PKEY_assign_RSA(pkey, rsa))
goto err;
variant.
If a list isn't loaded into the server, but
some verify locations are set, the server end appears to make
- a wildcard reqest for client certs.
+ a wildcard request for client certs.
Meanwhile, the client library as default behaviour *ignores* the list
we send over the wire - see man SSL_CTX_set_client_cert_cb.
Because of this, and that the dir variant is likely only used for
Returns: OK on success
DEFER for errors before the start of the negotiation
- FAIL for errors during the negotation; the server can't
+ FAIL for errors during the negotiation; the server can't
continue running.
*/
-/* Add/remove/rewwrite headers, and send them plus the empty-line sparator.
+/* Add/remove/rewrite headers, and send them plus the empty-line separator.
Globals:
header_list
/* Pick up from all the addresses. The plist and dlist variables are
anchors for lists of addresses already handled; they have to be defined at
- this level becuase write_env_to() calls itself recursively. */
+ this level because write_env_to() calls itself recursively. */
for (p = tctx->addr; p; p = p->next)
if (!write_env_to(p, &plist, &dlist, &first, fd, tctx))
if (size > DELIVER_OUT_BUFFER_SIZE && hsize > 0)
{
DEBUG(D_transport)
- debug_printf("sending small initial BDAT; hssize=%d\n", hsize);
+ debug_printf("sending small initial BDAT; hsize=%d\n", hsize);
if ( tctx->chunk_cb(fd, tctx, hsize, 0) != OK
|| !transport_write_block(fd, deliver_out_buffer, hsize)
|| tctx->chunk_cb(fd, tctx, 0, tc_reap_prev) != OK
*/
if (address_pipe_argcount > 1)
memmove(
- /* current position + additonal args */
+ /* current position + additional args */
argv + i + address_pipe_argcount,
/* current position + 1 (for the (uschar *)0 at the end) */
argv + i + 1,
Open with O_WRONLY + O_EXCL + O_CREAT with configured mode, unless we know
this is via a symbolic link (only possible if allow_symlinks is set), in
- which case don't use O_EXCL, as it dosn't work.
+ which case don't use O_EXCL, as it doesn't work.
If open fails because the file already exists, go to (6f). To avoid
looping for ever in a situation where the file is continuously being
fcntl() call (BSDI & FreeBSD do not). */
if (!isdirectory && ftruncate(fd, saved_size))
- DEBUG(D_transport) debug_printf("Error restting file size\n");
+ DEBUG(D_transport) debug_printf("Error resetting file size\n");
}
/* Handle successful writing - we want the modification time to be now for
more_errno from the top address for use with ERRNO_FILTER_FAIL
buffer the LMTP response buffer
yield where to put a one-digit LMTP response code
- message where to put an errror message
+ message where to put an error message
Returns: TRUE if a "QUIT" command should be sent, else FALSE
*/
{
if (ob->force_command)
{
- /* Enables expansion of $address_pipe into seperate arguments */
+ /* Enables expansion of $address_pipe into separate arguments */
setflag(addr, af_force_command);
cmd = ob->cmd;
expand_arguments = TRUE;
the command that was given is a non-existent path). By default this is
treated as just another failure, but if freeze_exec_fail is set, the reaction
is to freeze the message rather than bounce the address. Exim used to signal
- this failure with EX_UNAVAILABLE, which is definined in many systems as
+ this failure with EX_UNAVAILABLE, which is defined in many systems as
#define EX_UNAVAILABLE 69
uschar *ss;
int size, ptr, i;
- /* If temp_errors is "*" all codes are temporary. Initializion checks
+ /* If temp_errors is "*" all codes are temporary. Initialization checks
that it's either "*" or a list of numbers. If not "*", scan the list of
temporary failure codes; if any match, the result is DEFER. */
more_errno from the top address for use with ERRNO_FILTER_FAIL
buffer the SMTP response buffer
yield where to put a one-digit SMTP response code
- message where to put an errror message
+ message where to put an error message
pass_message set TRUE if message is an SMTP response
Returns: TRUE if an SMTP "QUIT" command should be sent, else FALSE
connection on. */
/*XXX continue case needs to propagate DSN_INFO, prob. in deliver.c
-as the contine goes via transport_pass_socket() and doublefork and exec.
+as the continue goes via transport_pass_socket() and doublefork and exec.
It does not wait. Unclear how we keep separate host's responses
separate - we could match up by host ip+port as a bodge. */
}
#endif
- /* If the socket is successfully passed, we musn't send QUIT (or
+ /* If the socket is successfully passed, we mustn't send QUIT (or
indeed anything!) from here. */
/*XXX DSN_INFO: assume likely to do new HELO; but for greet we'll want to
Arguments:
path the path to the maildir directory; this is already backed-up
- to the parent if the delivery diretory is a maildirfolder
+ to the parent if the delivery directory is a maildirfolder
ob the appendfile options block
regex a compiled regex for getting a file's size from its name
dir_regex a compiled regex for selecting maildir directories
/* Whole address conversion.
The *err string pointer should be null before the call.
-Return NULL on oeeror, with (optional) errstring pointer filled in
+Return NULL on error, with (optional) errstring pointer filled in
*/
uschar *
/* NB 9 Sept 07. There is a nasty kludge here in all these CALL_FN_
macros. In order not to trash the stack redzone, we need to drop
%rsp by 128 before the hidden call, and restore afterwards. The
- nastyness is that it is only by luck that the stack still appears
+ nastiness is that it is only by luck that the stack still appears
to be unwindable during the hidden call - since then the behaviour
of any routine using this macro does not match what the CFI data
says. Sigh.
/* These requests allow control to move from the simulated CPU to the
- real CPU, calling an arbitary function.
+ real CPU, calling an arbitrary function.
Note that the current ThreadId is inserted as the first argument.
So this call:
callout and save the result in the cache for next time, unless no_cache is set,
or unless we have a previously cached negative random result. If we are to test
with a random local part, ensure that such a local part is available. If not,
- log the fact, but carry on without randomming. */
+ log the fact, but carry on without randomising. */
if (options & vopt_callout_random && callout_random_local_part != NULL)
if (!(random_local_part = expand_string(callout_random_local_part)))
/* End the SMTP conversation and close the connection. */
- /* Cutthrough - on a successfull connect and recipient-verify with
+ /* Cutthrough - on a successful connect and recipient-verify with
use-sender and we are 1st rcpt and have no cutthrough conn so far
here is where we want to leave the conn open */
if ( cutthrough.delivery
* Check header names for 8-bit characters *
*************************************************/
-/* This function checks for invalid charcters in header names. See
+/* This function checks for invalid characters in header names. See
RFC 5322, 2.2. and RFC 6532, 3.
Arguments:
}
/* If the pattern is an IP address, optionally followed by a bitmask count, do
-a (possibly masked) comparision with the current IP address. */
+a (possibly masked) comparison with the current IP address. */
if (string_is_ip_address(ss, &maskoffset) != 0)
return (host_is_in_net(cb->host_address, ss, maskoffset)? OK : FAIL);
(void)tree_insertnode(&dnsbl_cache, t);
}
- /* Do the DNS loopup . */
+ /* Do the DNS lookup . */
HDEBUG(D_dnsbl) debug_printf("new DNS lookup for %s\n", query);
cb->rc = dns_basic_lookup(&dnsa, query, T_A);
# Little Perl script to convert flat file into CDB file. Two advantages over
# cdbmake-12 awk script that is distributed with CDB:
# 1) Handles 'dpc22:dpc22@hermes' as well as 'dpc22 dpc22@hermes'
-# 2) Perl works with arbitary length strings: awk chokes at 1,024 chars
+# 2) Perl works with arbitrary length strings: awk chokes at 1,024 chars
#
# Cambridge: hermes/src/admin/mkcdb,v 1.9 2005/02/15 18:14:12 fanf2 Exp
# bin/client an SMTP script-driven client, without TLS support
# bin/client-gnutls ditto, with GnuTLS support
# bin/client-ssl ditto, with OpenSSL support
-# bin/fakens a fake namserver
+# bin/fakens a fake nameserver
# bin/fd output details of open file descriptors
# bin/iefbr14 a program that does nothing and returns 0
# bin/loaded a dynamically loaded test module
This allows "overrides" for the test results. It's intended
use is to deal with distro specific differences in the test
output. The default flavour is "FOO" if autodetection fails.
- (Autodection is possible for known flavours only. Known
+ (Autodetection is possible for known flavours only. Known
flavours are computed after file name extensions in stdout/*
and stderr/*.)
Other circumstances give rise to other prompts. If a test generates output for
which there is no saved data, the prompt (after a message stating which file is
-unexpectely not empty) is:
+unexpectedly not empty) is:
Continue, Show, or Quit? [Q]
The expected return code in this case is 1, and the data lines are passed to
Exim on its standard input. Both the command line and the data lines have the
-standard substitions applied to them. Thus, HOSTNAME in the example above will
+standard substitutions applied to them. Thus, HOSTNAME in the example above will
be replaced by the local host's name. Long commands can be continued over
several lines by using \ as a continuation character. This does *not* apply to
data lines.
need_largefiles
This command must be at the head of a script. If the Exim binary does not
-suppport large files (off_t is <= 4), the entire script is skipped, and a
+support large files (off_t is <= 4), the entire script is skipped, and a
comment is output.
program is compiled, one that supports TLS using OpenSSL. The additional
arguments specify a certificate and key file when required for the connection.
There are two additional options: -tls-on-connect, that causes the client to
-initiate TLS negociation immediately on connection; -ocsp that causes the TLS
+initiate TLS negotiation immediately on connection; -ocsp that causes the TLS
negotiation to include a certificate-status request. The latter takes a
filename argument, the CA info for verifying the stapled response.
example, some TLS certificates) are used by more than one test, and so their
names are not of this form.
-There are also some auxilary DNS zone files, which are described in the next
+There are also some auxiliary DNS zone files, which are described in the next
section.
}
next if /^tls_validate_require_cipher child \d+ ended: status=0x0/;
- # We invoke Exim with -D, so we hit this new messag as of Exim 4.73:
+ # We invoke Exim with -D, so we hit this new message as of Exim 4.73:
next if /^macros_trusted overridden to true by whitelisting/;
# We have to omit the localhost ::1 address so that all is well in
# The <SCRIPT> file is open for us to read an optional return code line,
# followed by the command line and any following data lines for stdin. The
# command line can be continued by the use of \. Data lines are not continued
-# in this way. In all lines, the following substutions are made:
+# in this way. In all lines, the following substitutions are made:
#
# DIR => the current directory
# CALLER => the caller of this script
# reference to the subtest number, holding previous value
# reference to the expected return code value
# reference to where to put the command name (for messages)
-# auxilliary information returned from a previous run
+# auxiliary information returned from a previous run
#
-# Returns: 0 the commmand was executed inline, no subprocess was run
+# Returns: 0 the command was executed inline, no subprocess was run
# 1 a non-exim command was run and waited for
# 2 an exim command was run and waited for
# 3 a command was run and not waited for (daemon, server, exim_lock)
# 4 EOF was encountered after an initial return code line
-# Optionally alse a second parameter, a hash-ref, with auxilliary information:
+# Optionally also a second parameter, a hash-ref, with auxiliary information:
# exim_pid: pid of a run process
# munge: name of a post-script results munger
# This test for an active SpamAssassin is courtesy of John Jetmore.
# The tests are hard coded to localhost:783, so no point in making
# this test flexible like the clamav test until the test scripts are
- # changed. spamd doesn't have the nice PING/PONG protoccol that
+ # changed. spamd doesn't have the nice PING/PONG protocol that
# clamd does, but it does respond to errors in an informative manner,
# so use that.
the DNS record type that is being sought
The output from the program is written to stdout. It is supposed to be in
-exactly the same format as a traditional namserver response (see RFC 1035) so
+exactly the same format as a traditional nameserver response (see RFC 1035) so
that Exim can process it as normal. At present, no compression is used.
Error messages are written to stderr.
rr_sec = TRUE;
p += 7;
}
- else if (Ustrncmp(p, US"AA ", 3) == 0) /* tagged as authoritive */
+ else if (Ustrncmp(p, US"AA ", 3) == 0) /* tagged as authoritative */
{
rr_aa = TRUE;
p += 3;
header->ancount = htons(count);
/* If the AA bit should be set (as indicated by the AA prefix in the zone file),
-we are expected to return some records in the authortive section. Bind9: If
-there is data in the answer section, the authoritive section contains the NS
+we are expected to return some records in the authoritative section. Bind9: If
+there is data in the answer section, the authoritative section contains the NS
records, otherwise it contains the SOA record. Currently we mimic this
behaviour for the first case (there is some answer record).
*/
n = dlen < sizeof(buffer) ? dlen : sizeof(buffer);
if ((n = read(dup_accept_socket, CS buffer, n)) == 0)
{
- printf("Unxpected EOF read from client\n");
+ printf("Unexpected EOF read from client\n");
s = s->next;
goto END_OFF;
}
while (dlen-- > 0)
if (fgetc(in) == EOF)
{
- printf("Unxpected EOF read from client\n");
+ printf("Unexpected EOF read from client\n");
s = s->next;
goto END_OFF;
}