diff options
| author | perry <perry@NetBSD.org> | 2003-03-08 19:05:29 +0000 |
|---|---|---|
| committer | perry <perry@NetBSD.org> | 2003-03-08 19:05:29 +0000 |
| commit | 59d07125ee9d00ca396be52e21c9cfcc7db032f2 (patch) | |
| tree | bd4ba6a0c04d1edc518df392bfb13e0b19f8e340 /gnu | |
| parent | 004ae0051408e939340fba68fbf53639cc2d625c (diff) | |
import postfix 2.0.6
Diffstat (limited to 'gnu')
131 files changed, 9194 insertions, 486 deletions
diff --git a/gnu/dist/postfix/.indent.pro b/gnu/dist/postfix/.indent.pro index e66ba4755d6..39b5f2fcd92 100644 --- a/gnu/dist/postfix/.indent.pro +++ b/gnu/dist/postfix/.indent.pro @@ -46,6 +46,7 @@ -TDICT_PCRE_PRESCAN_CONTEXT -TDICT_PCRE_REGEXP -TDICT_PCRE_RULE +-TDICT_PROXY -TDICT_REGEXP -TDICT_REGEXP_EXPAND_CONTEXT -TDICT_REGEXP_IF_RULE diff --git a/gnu/dist/postfix/HISTORY b/gnu/dist/postfix/HISTORY index 91d0f73ac95..c882f46ad61 100644 --- a/gnu/dist/postfix/HISTORY +++ b/gnu/dist/postfix/HISTORY @@ -7451,7 +7451,6 @@ Apologies for any names omitted. properly quoted just like the null address. File: global/quote_82[12]_local.c. - 20021217 Cleanup: more work on the trivial-rewrite address rewriting @@ -7502,6 +7501,187 @@ Apologies for any names omitted. virtual alias class (error:User unknown) result. File: trivial-rewrite/transport.c. +20030101 + + Documentation update: new-style virtual domains broke the + advanced content filtering example. Files: FILTER_README, + RELEASE_NOTES. + +20030104 + + Cleanup: avoid warnings about flag mismatches when the same + lookup table is listed under both virtual_alias_maps and + virtual_mailbox_maps. Files: global/virtual8.h, virtual/virtual.c. + + Bugfix: an obscure memory leak that puzzled me for more + than a year until I found out how to reproduce it. File: + util/vstream.c. + +20030106 + + Robustness: the master no longer aborts with "address + already in use" when inet_interfaces specifies the same IP + address multiple times, or when a TCP service in master.cf + specifies a hostname for which the same IP address is listed + multiple times. File: master/master_ent.c. + +20030107 + + Robustness: check that FILTER actions in SMTPD access maps + or cleanup header/body_checks have plausible syntax. Files: + smtpd/smtpd_check.c, cleanup/cleanup_message.c. + +20030110 + + Cleanup: the virtual_mailbox_maps parameter is now optional + even when virtual_mailbox_domains is specified. This makes + virtual mailbox domains more like relay domains and the + local domain. + + Portability: the makedefs script now uses the pcre-config + utility to find out where things are installed. + + Bugfix: the SMTP server did not recognize the local built-in + double bounce address as local. Reported by Matthias Andree. + For safety sake, threw in the local postmaster address as + well. File: smtpd/smtpd_check.c. + +20030113 + + Added MAILER-DAEMON to the list of always recognized local + addresses, since it is generated by Postfix bounces. File: + smtpd/smtpd_check.c. + +20030114 + + Bugfix: transport_errno was not reset upon successful + transport map wildcard lookup after an earlier failure. + Reported by Victor Duchovni. File: trivial-rewrite/transport.c. + + Cleanup: unnecessary warnings from the proxymap client + after proxymap server disconnect. File: global/dict_proxy.c. + + Cleanup: Patrik Rak found a few more chattr invocations + that were missed 20021209. Files: postfix-install, + conf/post-install. + + Cleanup: the pcre-config command can produce null outputs. + Matthias Andree. File: makedefs. + + Bugfix: the virtual(8) Makefile included $(AUXLIBS) in the + dependencies. + +20030115 + + Bugfix: fixed in the snapshots 20030105 but missed in the + stable release. "sendmail -bs" tried to access the proxymap + service. It should not try to open any user/domain/uce + related tables at all. File: smtpd/smtpd.c. + +20030118 + + Typos: some hyperlinks referred to flushd, which is the + name that was used before the flush service was released. + Reported by Victor Duchovni. + + Cleanup: smtpd no longer needed to open relocated_maps. + +20030119 + + Cleanup: bounce messages used "X-Postfix" even when mail_name + was set to something other than the default "Postfix" name. + File: bounce/bounce-notify_util.c. + +20030120 + + Bugfix: wrong FILTER_README instructions for disabling + virtual alias mapping in the cleanup server before the + content filter. + + Bugfix: wrong FILTER_README instructions for destination-dependent + filtering, because relay_domains was specified incorrectly. + +20030122 + + Bugfix: 20021207 (move relocated table lookup from queue + manager to trivial-rewrite server) broke relocated table + lookup results with mail not rejected at the SMTP port. + Files: *qmgr/qmgr_deliver.c, *qmgr/qmgr_message.c. + +20030123 + + Bugfix: a widely used maildir filename algorithm was broken. + Postfix now uses TIME.DEVICE_INODE.HOST. Files: local/maildir.c, + virtual/maildir.c. + +20030124 + + Cleanup: removed the address syntax check from the queue + manager, since a better test was implemented recently in + the trivial-rewrite server. Files: *qmgr/qmgr_message.c. + +20030126 + + Update: maildir filename algorithm updated according to + today's version of http://cr.yp.to/proto/maildir.html. + +20030127 + + Cleanup: use separate error messages for separate problems + with computing the list of SASL authentication mechanisms. + File: smtpd/smtpd_sasl_glue.c. + +20030130 + + Bugfix: allow $name in default time values. File: + global/mail_conf_time.c. + +20030219 + + Bugfix: the local pickup daemon skipped unterminated records, + since they happened to have the same record type code as + content filtering instructions. Victor Duchovni. Files: + global/rec_type.h, pickup/pickup.c. + + Portability: Postfix could block, and thus not enforce + command execution time limits, while delivering mail to + command. File: global/pipe_command.c. + + Bugfix: command execution time limits were not enforced + because the child process killing code in pipe_command() + was running with the wrong privileges. Problem reported by + Ben Rosengart, Panix. File: global/pipe_command.c. + + Bugfix: duplicate recipient filtering in the cleanup server + did not eliminate virtual expansion duplicates with the + same original recipient. File: cleanup/cleanup_out_recipient.c. + +20030223 + + Bugfix: smtpd_hard/soft_error_limit off-by-one error, so + that the real limit was one larger than the specified value. + File: smtpd/smtpd.c, smtpd/smtpd_chat.c. + +20030226 + + Safety: proxymap server defense against potential deadlock + when some library routine wants to open a proxied table. + Instead, proxymap opens the requested table directly. File: + proxymap/proxymap.c. + +20030227 + + Bugfix: added mynetworks to the list of proxy_read_maps + parameter settings that are pre-authorized to use proxied + table lookups. File: global/mail_params.h. + +20030305 + + Workaround: Postfix removes too long non-address text from + message headers in order to protect vulnerable Sendmail + systems against exploitation of the remote buffer overflow + vulnerability described in CERT advisory CA-2003-07. + Open problems: Low: after successful delivery, per-queue window += 1/window, diff --git a/gnu/dist/postfix/Makefile.in b/gnu/dist/postfix/Makefile.in index 7395b3a253b..6c9b6b78793 100644 --- a/gnu/dist/postfix/Makefile.in +++ b/gnu/dist/postfix/Makefile.in @@ -6,7 +6,8 @@ DIRS = src/util src/global src/dns src/master src/postfix src/smtpstone \ src/lmtp src/trivial-rewrite src/qmgr src/smtp src/bounce src/pipe \ src/showq src/postalias src/postcat src/postconf src/postdrop \ src/postkick src/postlock src/postlog src/postmap src/postqueue \ - src/postsuper src/nqmgr src/qmqpd src/spawn src/flush src/virtual + src/postsuper src/nqmgr src/qmqpd src/spawn src/flush src/virtual \ + src/proxymap MANDIRS = proto man html default: update diff --git a/gnu/dist/postfix/README_FILES/ADDRESS_CLASS_README b/gnu/dist/postfix/README_FILES/ADDRESS_CLASS_README index 91cba34cc0f..8a77dae1210 100644 --- a/gnu/dist/postfix/README_FILES/ADDRESS_CLASS_README +++ b/gnu/dist/postfix/README_FILES/ADDRESS_CLASS_README @@ -47,16 +47,18 @@ alias domains is $virtual_alias_maps for Postfix 1.1 compatibility) virtual For hosted domains with their own mailboxes -mailbox Known recipients are listed in $virtual_mailbox_maps +mailbox Known recipients are listed in $virtual_mailbox_maps (if + this parameter is empty, the Postfix SMTP server accepts + all recipients for domains listed in $virtual_mailbox_domains) Domain names are listed in $virtual_mailbox_domains (default is $virtual_mailbox_maps for Postfix 1.1 compatibility) Default delivery agent: virtual relay For remote destinations that list your system as MX host Domain names are listed in $relay_domains - Known recipients are listed in $relay_recipient_maps (default - is empty; if $relay_recipient_maps is empty, the Postfix - SMTP server accepts all recipients) + Known recipients are listed in $relay_recipient_maps (if + this parameter is empty, the Postfix SMTP server accepts + all recipients for domains listed in $relay_domains) Default delivery agent: relay (clone of default smtp agent) other Restricted to mail from authorized clients diff --git a/gnu/dist/postfix/README_FILES/FILTER_README b/gnu/dist/postfix/README_FILES/FILTER_README index 3a8de57873d..e59ccfa510d 100644 --- a/gnu/dist/postfix/README_FILES/FILTER_README +++ b/gnu/dist/postfix/README_FILES/FILTER_README @@ -1,8 +1,22 @@ +Introduction +============ + This is a very first implementation of Postfix content filtering. A Postfix content filter receives unfiltered mail from Postfix and -either bounces the mail or re-injects filtered mail back into Postfix. +does one of the following: + +- re-injects the mail back into Postfix, perhaps after changing content +- rejects the mail (by sending a suitable status code back to + Postfix) so that it is returned to sender. +- sends the mail somewhere else + +This document describes two approaches to content filtering: simple +and advanced. Both filter all the mail by default. -This document describes two approaches to content filtering. +At the end are examples that show how to filter only mail from +users, about using different filters for different domains that +you provide MX service for, and about selective filtering on the +basis of message envelope and/or header/body patterns. Simple content filtering example ================================ @@ -10,6 +24,7 @@ Simple content filtering example The first example is simple to set up. It uses a shell script that receives unfiltered mail from the Postfix pipe delivery agent, and that feeds filtered mail back into the Postfix sendmail command. + Only mail arriving via SMTP will be content filtered. .................................. @@ -24,7 +39,8 @@ Unfiltered mail----->smtpd \ /local---->Filtered mail | | +-Postfix sendmail<----filter script<--+ -The /some/where/filter program can be a simple shell script like this: +Mail is filtered by a /some/where/filter program. This can be a +simple shell script like this: #!/bin/sh @@ -51,18 +67,24 @@ The /some/where/filter program can be a simple shell script like this: exit $? The idea is to first capture the message to file and then run the -content through a third-party content filter program. If the -mail cannot be captured to file, mail delivery is deferred by -terminating with exit status 75 (EX_TEMPFAIL). If the content -filter program finds a problem, the mail is bounced by terminating -the shell script with exit status 69 (EX_UNAVAILABLE). If the -content is OK, it is given as input to Postfix sendmail, and the -exit status of the filter command is whatever exit status Postfix -sendmail produces. - -I suggest that you play with this script for a while until you are -satisfied with the results. Run it with a real message (headers+body) -as input: +content through a third-party content filter program. + +- If the mail cannot be captured to file, mail delivery is deferred + by terminating with exit status 75 (EX_TEMPFAIL). Postfix will + try again after some delay. + +- If the content filter program finds a problem, the mail is bounced + by terminating with exit status 69 (EX_UNAVAILABLE). Postfix + will return the message to the sender as undeliverable. + +- If the content is OK, it is given as input to the Postfix sendmail + command, and the exit status of the filter command is whatever + exit status the Postfix sendmail command produces. Postfix will + deliver the message as usual. + +I suggest that you run this script by hand until you are satisfied +with the results. Run it with a real message (headers+body) as +input: % /some/where/filter -f sender recipient... <message-file @@ -86,20 +108,20 @@ Once you're satisfied with the content filtering script: flags=Rq user=filter argv=/somewhere/filter -f ${sender} -- ${recipient} To turn on content filtering for mail arriving via SMTP only, append -"-o content_filter=filter:" to the master.cf entry that defines +"-o content_filter=filter:dummy" to the master.cf entry that defines the Postfix SMTP server: /etc/postfix/master.cf: - smtp inet ...stuff... smtpd - -o content_filter=filter: + smtp inet ...stuff... smtpd + -o content_filter=filter:dummy -Note the ":" at the end!! The content_filter configuration parameter -accepts the same syntax as the right-hand side in a Postfix transport -table. Execute "postfix reload" to complete the change. +The content_filter configuration parameter accepts the same syntax +as the right-hand side in a Postfix transport table. Execute +"postfix reload" to complete the change. To turn off content filtering, edit the master.cf file, remove the -"-o content_filter=filter:" text from the entry that defines the -Postfix SMTP server, and execute another "postfix reload". +"-o content_filter=filter:dummy" text from the entry that defines +the Postfix SMTP server, and execute another "postfix reload". With the shell script as shown above you will lose a factor of four in Postfix performance for transit mail that arrives and leaves @@ -113,21 +135,32 @@ Simple content filter limitations ================================= The problem with content filters like the one above is that they -are not very robust, because the software does not talk a well-defined -protocol with Postfix. If the filter shell script aborts because -the shell runs into some memory allocation problem, the script will -not produce a nice exit status as per /usr/include/sysexits.h and -mail will probably bounce. The same lack of robustness is possible +are not very robust. The reason is that the software does not talk +a well-defined protocol with Postfix. If the filter shell script +aborts because the shell runs into some memory allocation problem, +the script will not produce a nice exit status as defined in the +file /usr/include/sysexits.h. Instead of going to the deferred +queue, mail will bounce. The same lack of robustness can happen when the content filtering software itself runs into a resource problem. Advanced content filtering example =================================== -The second example is considerably more complex, but can give much -better performance, and is less likely to bounce mail when the -machine runs into a resource problem. This approach uses content -filtering software that can receive and deliver mail via SMTP. +The second example is more complex, but can give much better +performance, and is less likely to bounce mail when the machine +runs into a resource problem. This approach uses content filtering +software that can receive and deliver mail via SMTP. + +Some Anti-virus software is built to receive and deliver mail via +SMTP and is ready to use as an advanced Postfix content filter. +For non-SMTP capable content filtering software, Bennett Todd's +SMTP proxy implements a nice PERL/SMTP content filtering framework. +See: http://bent.latency.net/smtpprox/ + +The example given here filters all mail, including mail that arrives +via SMTP and mail that is locally submitted via the Postfix sendmail +command. You can expect to lose about a factor of two in Postfix performance for transit mail that arrives and leaves via SMTP, provided that @@ -160,7 +193,7 @@ To enable content filtering in this manner, specify in main.cf a new parameter: /etc/postfix/main.cf: - content_filter = scan:localhost:10025 + content_filter = scan:localhost:10025 This causes Postfix to add one extra content filtering record to each incoming mail message, with content scan:localhost:10025. @@ -177,23 +210,19 @@ one would set up the service in the Postfix master.cf file: /etc/postfix/master.cf: scan unix - - n - 10 smtp - -o disable_dns_lookups=yes -Turning off DNS lookups at this point can make a great difference -in content filtering performance. It also isolates the content -filtering process from temporary outages in DNS service. - -Instead of 10, use whatever limit is feasible for your machine. -Content inspection software can gobble up a lot of system resources, -so you don't want to have too much of it running at the same time. +Instead of a limit of 10 concurrent processes, use whatever process +limit is feasible for your machine. Content inspection software +can gobble up a lot of system resources, so you don't want to have +too much of it running at the same time. The content filter can be set up with the Postfix spawn service, which is the Postfix equivalent of inetd. For example, to instantiate up to 10 content filtering processes on demand: /etc/postfix/master.cf: - localhost:10025 inet n n n - 10 spawn - user=filter argv=/some/where/filter localhost 10026 + localhost:10025 inet n n n - 10 spawn + user=filter argv=/some/where/filter localhost 10026 "filter" is a dedicated local user account. The user will never log in, and can be given a "*" password and non-existent shell and @@ -206,15 +235,14 @@ instead of Postfix, then you must run your filter as a stand-alone program. Note: the localhost port 10025 SMTP server filter should announce -itself as "220 localhost...", to silence warnings in the log. - -The /some/where/filter command is most likely a PERL script. PERL -has modules that make talking SMTP easy. The command-line specifies -that mail should be sent back into Postfix via localhost port 10026. +itself as "220 localhost...". Postfix aborts delivery when it +connects to an SMTP server that uses the same hostname, because +that normally means you have a mail delivery loop problem. -For now, it is left up to the Postfix users to come up with a -PERL/SMTP framework for Postfix content filtering. If done well, -it can be used with other mailers too, which is a nice spin-off. +The example here assumes that the /some/where/filter command is a +PERL script. PERL has modules that make talking SMTP easy. The +command-line specifies that mail should be sent back into Postfix +via localhost port 10026. The simplest content filter just copies SMTP commands and data between its inputs and outputs. If it has a problem, all it has to @@ -228,26 +256,33 @@ a dedicated listener on port localhost 10026: /etc/postfix/master.cf: localhost:10026 inet n - n - 10 smtpd - -o content_filter= - -o local_recipient_maps= - -o myhostname=localhost.domain.tld - -o smtpd_helo_restrictions= - -o smtpd_client_restrictions= - -o smtpd_sender_restrictions= - -o smtpd_recipient_restrictions=permit_mynetworks,reject - -o mynetworks=127.0.0.0/8 - -This is just another SMTP server. The "-o content_filter=" requests -no content filtering for incoming mail. The server has the same -process limit as the "filter" master.cf entry. - -The "-o local_recipient_maps=" is a safety in case you have specified -local_recipient_maps in the main.cf file. That could interfere with -content filtering. + -o content_filter= + -o local_recipient_maps= + -o relay_recipient_maps= + -o myhostname=localhost.domain.tld + -o smtpd_helo_restrictions= + -o smtpd_client_restrictions= + -o smtpd_sender_restrictions= + -o smtpd_recipient_restrictions=permit_mynetworks,reject + -o mynetworks=127.0.0.0/8 + +Warning for Postfix version 2 users: in this SMTP server after the +content filter, do not override main.cf settings for virtual_alias_maps +or virtual_alias_domains. That would cause mail to be rejected with +"User unknown". + +This SMTP server has the same process limit as the "filter" master.cf +entry. + +The "-o content_filter=" requests no content filtering for incoming +mail. + +The "-o local_recipient_maps=" and "-o relay_recipient_maps=" avoid +unnecessary table lookups. The "-o myhostname=localhost.domain.tld" avoids a possible problem -if the content filter is picky about the hostname that Postfix -sends in SMTP server replies. +if your content filter is based on a proxy that simply relays SMTP +commands. The "-o smtpd_xxx_restrictions" and "-o mynetworks=127.0.0.0/8" turn off UCE controls that would only waste time here. @@ -257,39 +292,43 @@ Squeezing out more performance Many refinements are possible, such as running a specially-configured smtp delivery agent for feeding mail into the content filter, and -turning off address rewriting before or after content filtering. +turning off address rewriting before content filtering. As the example below shows, things quickly become very complex, because a lot of main.cf like information gets listed in the master.cf file. This makes the system hard to understand. +Even worse, details change as Postfix evolves and different +configuration parameters are implemented by different programs. + If you need to squeeze out more performance, it is probably simpler to run multiple Postfix instances, one before and one after the content filter. That way, each instance can have simple main.cf -and master.cf files, and the system will be easier to understand. +and master.cf files, each instance can have its own mail queue, +and the system will be easier to understand. As before, we will set up a content filtering program that receives SMTP mail via localhost port 10025, and that submits SMTP mail back into Postfix via localhost port 10026. - ................................... - : Postfix : - ----->smtpd \ : - : -cleanup-\ /local----> - ---->pickup / -queue- : - : cleanup2/ | \smtp-----> - : ^ v : - : | v : - : smtpd scan : - : 10026 | : - .......................|........... - ^ | - | v - ....|............. - : | 10025 : - : filter : - : : - .................. + ....................................... + : Postfix : + ----->smtpd \ : + : -pre-cleanup-\ /local----> + ---->pickup / -queue- : + : -cleanup-/ | \smtp-----> + : bounces/ ^ v : + : and locally | v : + : forwarded smtpd scan : + : messages 10026 | : + ...........................|........... + ^ | + | v + ....|............. + : | 10025 : + : filter : + : : + .................. To enable content filtering in this manner, specify in main.cf a new parameter: @@ -299,66 +338,61 @@ new parameter: /etc/postfix/master.cf: # -# This is the usual input "smtpd" already present in master.cf +# These are the usual input "smtpd" and local "pickup" servers already +# present in master.cf. We add an option to select a non-default +# cleanup service (defined further below). # -smtp inet n - n - - smtpd +smtp inet n - n - - smtpd + -o cleanup_service_name=pre-cleanup +pickup fifo n - n 60 1 pickup + -o cleanup_service_name=pre-cleanup +# +# ------------------------------------------------------------------ # # This is the cleanup daemon that handles messages in front of -# the content filter, it does header_checks and body_checks (if -# any), but does not do any address rewriting. +# the content filter. It does header_checks and body_checks (if +# any), but does no virtual alias or canonical address mapping, +# so that mail passes through your content filter with the original +# recipient addresses mostly intact. # -# The address rewriting happens in the second cleanup phase after -# the content filter. This gives the content_filter access to -# *largely* unmodified addresses for maximum flexibility. +# Virtual alias or canonical address mapping happens in the second +# cleanup phase after the content filter. This gives the content_filter +# access to *largely* unmodified addresses for maximum flexibility. # -# The trivial-rewrite daemon handles the logic of append_myorigin -# and append_dot_mydomain, turning these off requires two -# trivial-rewrite services, by which point (if you are not -# already) you are much better off with two complete Postfix -# instances one in front of and one behind the content filter. +# Some sites may specifically want to perform canonical or virtual +# address mapping in front of the content_filter. In that case you +# still have to enable address rewriting in the after-filter cleanup +# instance, in order to correctly process forwarded mail or bounced +# mail. # -# Note that some sites may specifically want to do the opposite: -# perform rewrites in front of the content_filter which would -# then see only cleaned up addresses, in this case the parameter -# settings below should be moved to the second "cleanup" -# instance. +pre-cleanup unix n - n - 0 cleanup + -o canonical_maps= + -o sender_canonical_maps= + -o recipient_canonical_maps= + -o masquerade_domains= + -o virtual_alias_maps= # -cleanup unix n - n - 0 cleanup - -o canonical_maps= - -o sender_canonical_maps= - -o recipient_canonical_maps= - -o masquerade_domains= - -o virtual_maps= +# ------------------------------------------------------------------ # # This is the delivery agent that injects mail into the content -# filter. It is tuned for low latency and low concurrency, most -# content filters burn CPU and high concurrency causes thrashing. -# The process limit of 10 reenforces the effect of -# $default_destination_concurrency_limit, even without an -# explicit process limit, the concurrency is bounded because all -# messages heading into the content filter have the same -# destination. The "disable_dns_lookups" setting prevents the -# delivery agent from consuming precious "bandwidth" in the -# narrow deliver channel waiting for slow DNS responses. It also -# ensures that the original envelope recipient is seen by the -# content filter. +# filter. It is tuned for low concurrency, because most content +# filters burn CPU and use lots of memory. The process limit of 10 +# re-enforces the effect of $default_destination_concurrency_limit. +# Even without an explicit process limit, the concurrency is bounded +# because all messages heading into the content filter have the same +# destination. # scan unix - - n - 10 smtp - -o disable_dns_lookups=yes +# +# ------------------------------------------------------------------ # # This is the SMTP listener that receives filtered messages from # the content filter. It *MUST* clear the content_filter # parameter to avoid loops, and use a different hostname to avoid # triggering the Postfix SMTP loop detection code. # -# -# Since all recipients have been validated by the first "smtpd", -# clear local_recipient_maps, virtual_maps and -# virtual_mailbox_maps. -# -# This "smtpd" uses a separate cleanup that does no header or -# body checks, but does do the various address rewrites disabled -# in the first cleanup. +# This "smtpd" uses the normal cleanup service which is also used +# for bounces and for internally forwarded mail. # # The parameters from mynetworks onward disable all access # control other than insisting on connections from one of the IP @@ -370,9 +404,7 @@ localhost:10026 inet n - n - - smtpd -o content_filter= -o myhostname=localhost.domain.tld -o local_recipient_maps= - -o virtual_maps= - -o virtual_mailbox_maps= - -o cleanup_service_name=cleanup2 + -o relay_recipient_maps= -o mynetworks=127.0.0.0/8 -o mynetworks_style=host -o smtpd_restriction_classes= @@ -381,24 +413,36 @@ localhost:10026 inet n - n - - smtpd -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject # -# This is the second cleanup daemon. No header or body checks. -# If preferable, enable rewrites in the first cleanup daemon, and -# disable them here. +# Do not override main.cf settings here for virtual_alias_maps or +# virtual_mailbox_maps. This causes mail to be rejected with "User +# unknown in virtual (alias|mailbox) recipient table". +# +# ------------------------------------------------------------------ +# +# This is the normal cleanup daemon for use after content filtering. +# No header or body checks, because those have already been taken +# care of by the pre-cleanup service before the content filter. +# +# The normal cleanup instance does all the virtual alias and canonical +# address mapping that was disabled in the pre-cleanup instance before +# the content filter. This rewriting must be done even when you didn't +# disable address rewriting in the pre-cleanup instance, in order to +# correctly process bounces and locally forwarded mail. # -cleanup2 unix n - n - 0 cleanup +cleanup unix n - n - 0 cleanup -o header_checks= -o mime_header_checks= -o nested_header_checks= -o body_checks= # +# ------------------------------------------------------------------ +# # The normal "smtp" delivery agent for contrast with "scan". -# Definitely do not set "disable_dns_lookups = yes" here if you -# send mail to the Internet. # smtp unix - - n - - smtp -This causes Postfix to add one extra content filtering record to -each incoming mail message, with content scan:localhost:10025. +The above example causes Postfix to add one content filtering record +to each incoming mail message, with content scan:localhost:10025. You can use the same syntax as in the right-hand side of a Postfix transport table. The content filtering records are added by the smtpd and pickup servers. @@ -412,3 +456,56 @@ low concurrency, throughput dependent on predictably low latency). See the previous example for setting up the content filter with the Postfix spawn service; you can of course use any server that can be run stand-alone outside the Postfix environment. + +Filtering mail from outside users only +====================================== + +The easiest approach is to configure ONE Postfix instance with TWO +SMTP server addresses in master.cf: + +- One SMTP server address for inside users only that never invokes + content filtering. + +- One SMTP server address for outside users that always invokes + content filtering. + +/etc/postfix.master.cf: + # SMTP service for internal users only, no content filtering. + 1.2.3.4:smtp inet n - n - - smtpd + -o smtpd_client_restrictions=permit_mynetworks,reject + 127.0.0.1:smtp inet n - n - - smtpd + -o smtpd_client_restrictions=permit_mynetworks,reject + + # SMTP service for external users, with content filtering. + 1.2.3.5:smtp inet n - n - - smtpd + -o content_filter=foo:bar + +Getting really nasty +==================== + +The above filtering configurations are static. Mail that follows +a given path is either always filtered or it is never filtered. As +of Postfix 2.0 you can also turn on content filtering on the fly. +The Postfix UCE features allow you to specify a filtering action +on the fly: + + FILTER foo:bar + +You can do this in smtpd access maps as well as the cleanup server's +header/body_checks. This feature must be used with great care: +you must disable all the UCE features in the after-filter smtpd +and cleanup daemons or else you will have a content filtering loop. + +Limitations: + +- There can be only one content filter action per message. + +- FILTER actions from smtpd access maps and header/body_checks take + precedence over filters specified with the main.cf content_filter + parameter. + +- Only the last FILTER action from smtpd access maps or in + header/body_checks takes effect. + +- The same content filter is applied to all the recipients of a + given message. diff --git a/gnu/dist/postfix/README_FILES/LOCAL_RECIPIENT_README b/gnu/dist/postfix/README_FILES/LOCAL_RECIPIENT_README index df1da958201..e616a23d0fb 100644 --- a/gnu/dist/postfix/README_FILES/LOCAL_RECIPIENT_README +++ b/gnu/dist/postfix/README_FILES/LOCAL_RECIPIENT_README @@ -24,6 +24,10 @@ The local_recipient_maps parameter specifies lookup tables with all names or addresses of local recipients. A recipient address is local when the address domain matches $mydestination or $inet_interfaces. +The right-hand side of the lookup tables is conveniently ignored. +In the left-hand side, specify a bare username, an @domain.tld +wild-card, or specify a user@domain.tld address. + If the local_recipient_maps parameter value is non-empty, then the SMTP server will reject for an unknown local recipient mail with "User unknown in local recipient table". @@ -41,7 +45,7 @@ delivery agent for local delivery, where recipients are either UNIX accounts or local aliases: /etc/postfix/main.cf: - local_recipient_maps = unix:passwd.byname $alias_maps + local_recipient_maps = proxy:unix:passwd.byname $alias_maps You need to update the local_recipient_maps setting if one of the following is true: @@ -105,7 +109,7 @@ following is true: You need to add the database that lists the non-UNIX users: /etc/postfix/main.cf - local_recipient_maps = unix_passwd.byname, $alias_maps, + local_recipient_maps = unix:passwd.byname, $alias_maps, <the database with non-UNIX accounts> Your database will be searched for the user@domain address as diff --git a/gnu/dist/postfix/README_FILES/RELEASE_NOTES b/gnu/dist/postfix/README_FILES/RELEASE_NOTES index 4412f6dfc38..4977c0adadd 100644 --- a/gnu/dist/postfix/README_FILES/RELEASE_NOTES +++ b/gnu/dist/postfix/README_FILES/RELEASE_NOTES @@ -1,9 +1,13 @@ +============================================================== NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE +============================================================== Before upgrading from Postfix 1.1 you must stop Postfix ("postfix stop"). Some internal protocols have changed. No mail will be lost if you fail to stop and restart Postfix, but Postfix won't be able to receive any new mail, either. +============================================================== NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE +============================================================== In the text below, changes are labeled with the Postfix snapshot that introduced the change, and whether the change introduced a @@ -20,6 +24,73 @@ snapshot release). Patches change the patchlevel and the release date. Snapshots change only the release date, unless they include the same bugfixes as a patch release. +Incompatible changes with Postfix version 2.0.6 (released 20030305) +=================================================================== + +Postfix truncates non-address information in message address headers +(comments, etc.) to 250 characters per address, in order to protect +vulnerable Sendmail systems against exploitation of a remote buffer +overflow problem (CERT advisory CA-2003-07). + +Incompatible changes with Postfix version 2.0.5 (released 20030301) +=================================================================== + +The smtpd_hard_error_limit and smtpd_soft_error_limit values now +behave as documented, that is, smtpd_hard_error_limit=1 causes +Postfix to disconnect upon the first client error. Previously, +there was an off-by-one error causing Postfix to change behavior +after smtpd_hard/soft_error_limit+1 errors. + +Incompatible changes with Postfix version 2.0.4 (released 20030219) +=================================================================== + +The maildir file naming algorithm has changed in accordance with +an updated version of http://cr.yp.to/proto/maildir.html. The name +is now TIME.VdevIinum.HOST + +Incompatible changes with Postfix version 2.0.3 (released 20030124) +=================================================================== + +The maildir file naming algorithm has changed. Pending a usable +version of http://cr.yp.to/proto/maildir.html, the name is now +TIME.DEV_INUM.HOST. + +Incompatible changes with Postfix version 2.0.1 (released 20030112) +=================================================================== + +If you upgrade from Postfix 1.1 you need to restart Postfix. + +If you upgrade from Postfix 2.0 you need to "reload" Postfix. + +Version 2.0.1 introduces the proxymap service for centralized table +lookup. The upgrade procedure adds the proxymap service to the +master.cf file. If you see errors about problems contacting the +proxymap service, then you did not properly upgrade Postfix. + +The Postfix SMTP server now by default looks up the UNIX passwd +file via the new proxymap service, in order to make chrooted +operation easier. + +The Postfix build procedure now uses the pcre-config utility (part +of PCRE version 3) to find out the pathnames of the PCRE include +file and object library, instead of probing /usr/include and/or +/usr/lib. To build with PCRE version 2 support you will have to +specify pathnames as described in PCRE_README. To build without +PCRE support, specify: make Makefiles CCARGS="-DNO_PRCE". + +Major changes with Postfix version 2.0.1 (released 20030112) +============================================================ + +This release introduces the proxymap service for Postfix lookup +table access. This can be used to overcome chroot restrictions in +the Postfix SMTP server (specify proxy:unix:passwd.byname for +password file lookup through the proxymap server) and can be used +to consolidate the number of open tables by sharing one open table +among multiple processes (specify proxy:mysql:/file/name to avoid +"too many connections" conditions). The proxy_read_maps parameter +specifies what maps are approved for access via the proxy service +(only map references starting with "proxy:" are considered approved). + Major changes with Postfix version 2.0.0 (released 20021222, 20021223) ====================================================================== @@ -82,6 +153,14 @@ is now used for address lookups only. For details, see the VIRTUAL_README file. +[Incompat 20021209] If you use the "advanced content filter" +technique, you MUST NOT override the virtual aliases and virtual +mailbox settings in the SMTP server that receives mail from the +content filter, or else mail for virtual recipients will be rejected +with "User unknown". + +For details, see the FILTER_README file. + Incompatible queue file format changes ====================================== @@ -265,7 +344,7 @@ TCP/IP stacks have an atrociously large default timeout value. [Feature 20020505] Finer control over Berkeley DB memory usage, The parameter "berkeley_db_create_buffer_size" (default: 16 MBytes) specifies the buffer size for the postmap and postalias commands. -The parameter "berkeley_db_read_buffer_size" (default: 256 kBytes) +The parameter "berkeley_db_read_buffer_size" (default: 128 kBytes) specifies the buffer size for all other applications. Specify "berkeley_db_read_buffer_size = 1048576" to get the old read buffer size. Contributed by Victor Duchovni. For more information, see @@ -696,6 +775,11 @@ Assorted changes the original recipient address in the X-Original-To: message header. This header can also be emitted by the pipe(8) delivery agent. +[Incompat 20021028] With "domain in one mailbox", one message with +multiple recipients is no longer delivered only once. It is now +delivered as one copy for each original recipient, with the original +recipient address listed in the X-Original-To: message header. + [Feature 20021024] New proxy_interfaces parameter, for sites behind a network address translation gateway or other type of proxy. You should specify all the proxy network addresses here, to avoid avoid diff --git a/gnu/dist/postfix/README_FILES/SASL_README b/gnu/dist/postfix/README_FILES/SASL_README index a3457beb433..e2d1d39df6c 100644 --- a/gnu/dist/postfix/README_FILES/SASL_README +++ b/gnu/dist/postfix/README_FILES/SASL_README @@ -126,6 +126,13 @@ In /usr/local/lib/sasl/smtpd.conf (SASL version 1.5.5) or /usr/local/lib/sasl2/smtpd.conf (SASL version 2.1.1) you need to specify how the server should validate client passwords. +IMPORTANT: If you configure SASL to use PAM (pluggable authentication +modules) authentication, the Postfix SMTP server will abort because +the SASL password file does not exist (default: /etc/sasldb in +version 1.5.5, or /etc/sasldb2 in version 2.1.1), To fix, disable +CRAM-MD5 authentication by deleting /usr/lib/sasl/libcrammd5.so or +/usr/lib/sasl2/libcrammd5.so depending on your SASL library version. + In order to authenticate against the UNIX password database, try: (SASL version 1.5.5) diff --git a/gnu/dist/postfix/RELEASE_NOTES b/gnu/dist/postfix/RELEASE_NOTES index 4412f6dfc38..4977c0adadd 100644 --- a/gnu/dist/postfix/RELEASE_NOTES +++ b/gnu/dist/postfix/RELEASE_NOTES @@ -1,9 +1,13 @@ +============================================================== NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE +============================================================== Before upgrading from Postfix 1.1 you must stop Postfix ("postfix stop"). Some internal protocols have changed. No mail will be lost if you fail to stop and restart Postfix, but Postfix won't be able to receive any new mail, either. +============================================================== NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE +============================================================== In the text below, changes are labeled with the Postfix snapshot that introduced the change, and whether the change introduced a @@ -20,6 +24,73 @@ snapshot release). Patches change the patchlevel and the release date. Snapshots change only the release date, unless they include the same bugfixes as a patch release. +Incompatible changes with Postfix version 2.0.6 (released 20030305) +=================================================================== + +Postfix truncates non-address information in message address headers +(comments, etc.) to 250 characters per address, in order to protect +vulnerable Sendmail systems against exploitation of a remote buffer +overflow problem (CERT advisory CA-2003-07). + +Incompatible changes with Postfix version 2.0.5 (released 20030301) +=================================================================== + +The smtpd_hard_error_limit and smtpd_soft_error_limit values now +behave as documented, that is, smtpd_hard_error_limit=1 causes +Postfix to disconnect upon the first client error. Previously, +there was an off-by-one error causing Postfix to change behavior +after smtpd_hard/soft_error_limit+1 errors. + +Incompatible changes with Postfix version 2.0.4 (released 20030219) +=================================================================== + +The maildir file naming algorithm has changed in accordance with +an updated version of http://cr.yp.to/proto/maildir.html. The name +is now TIME.VdevIinum.HOST + +Incompatible changes with Postfix version 2.0.3 (released 20030124) +=================================================================== + +The maildir file naming algorithm has changed. Pending a usable +version of http://cr.yp.to/proto/maildir.html, the name is now +TIME.DEV_INUM.HOST. + +Incompatible changes with Postfix version 2.0.1 (released 20030112) +=================================================================== + +If you upgrade from Postfix 1.1 you need to restart Postfix. + +If you upgrade from Postfix 2.0 you need to "reload" Postfix. + +Version 2.0.1 introduces the proxymap service for centralized table +lookup. The upgrade procedure adds the proxymap service to the +master.cf file. If you see errors about problems contacting the +proxymap service, then you did not properly upgrade Postfix. + +The Postfix SMTP server now by default looks up the UNIX passwd +file via the new proxymap service, in order to make chrooted +operation easier. + +The Postfix build procedure now uses the pcre-config utility (part +of PCRE version 3) to find out the pathnames of the PCRE include +file and object library, instead of probing /usr/include and/or +/usr/lib. To build with PCRE version 2 support you will have to +specify pathnames as described in PCRE_README. To build without +PCRE support, specify: make Makefiles CCARGS="-DNO_PRCE". + +Major changes with Postfix version 2.0.1 (released 20030112) +============================================================ + +This release introduces the proxymap service for Postfix lookup +table access. This can be used to overcome chroot restrictions in +the Postfix SMTP server (specify proxy:unix:passwd.byname for +password file lookup through the proxymap server) and can be used +to consolidate the number of open tables by sharing one open table +among multiple processes (specify proxy:mysql:/file/name to avoid +"too many connections" conditions). The proxy_read_maps parameter +specifies what maps are approved for access via the proxy service +(only map references starting with "proxy:" are considered approved). + Major changes with Postfix version 2.0.0 (released 20021222, 20021223) ====================================================================== @@ -82,6 +153,14 @@ is now used for address lookups only. For details, see the VIRTUAL_README file. +[Incompat 20021209] If you use the "advanced content filter" +technique, you MUST NOT override the virtual aliases and virtual +mailbox settings in the SMTP server that receives mail from the +content filter, or else mail for virtual recipients will be rejected +with "User unknown". + +For details, see the FILTER_README file. + Incompatible queue file format changes ====================================== @@ -265,7 +344,7 @@ TCP/IP stacks have an atrociously large default timeout value. [Feature 20020505] Finer control over Berkeley DB memory usage, The parameter "berkeley_db_create_buffer_size" (default: 16 MBytes) specifies the buffer size for the postmap and postalias commands. -The parameter "berkeley_db_read_buffer_size" (default: 256 kBytes) +The parameter "berkeley_db_read_buffer_size" (default: 128 kBytes) specifies the buffer size for all other applications. Specify "berkeley_db_read_buffer_size = 1048576" to get the old read buffer size. Contributed by Victor Duchovni. For more information, see @@ -696,6 +775,11 @@ Assorted changes the original recipient address in the X-Original-To: message header. This header can also be emitted by the pipe(8) delivery agent. +[Incompat 20021028] With "domain in one mailbox", one message with +multiple recipients is no longer delivered only once. It is now +delivered as one copy for each original recipient, with the original +recipient address listed in the X-Original-To: message header. + [Feature 20021024] New proxy_interfaces parameter, for sites behind a network address translation gateway or other type of proxy. You should specify all the proxy network addresses here, to avoid avoid diff --git a/gnu/dist/postfix/conf/access b/gnu/dist/postfix/conf/access index 0b4a8ad63eb..8bba416d3d5 100644 --- a/gnu/dist/postfix/conf/access +++ b/gnu/dist/postfix/conf/access @@ -164,38 +164,39 @@ # about content filters is in the Postfix FIL- # TER_README file. # -# Note: this action currently affects all recipients -# of the message. +# Note: this action overrides the main.cf con- +# tent_filter setting, and currently affects all +# recipients of the message. # # restriction... # Apply the named UCE restriction(s) (permit, reject, # reject_unauth_destination, and so on). # # REGULAR EXPRESSION TABLES -# This section describes how the table lookups change when +# This section describes how the table lookups change when # the table is given in the form of regular expressions. For -# a description of regular expression lookup table syntax, +# a description of regular expression lookup table syntax, # see regexp_table(5) or pcre_table(5). # -# Each pattern is a regular expression that is applied to +# Each pattern is a regular expression that is applied to # the entire string being looked up. Depending on the appli- -# cation, that string is an entire client hostname, an +# cation, that string is an entire client hostname, an # entire client IP address, or an entire mail address. Thus, # no parent domain or parent network search is done, -# user@domain mail addresses are not broken up into their +# user@domain mail addresses are not broken up into their # user@ and domain constituent parts, nor is user+foo broken # up into user and foo. # -# Patterns are applied in the order as specified in the -# table, until a pattern is found that matches the search +# Patterns are applied in the order as specified in the +# table, until a pattern is found that matches the search # string. # -# Actions are the same as with indexed file lookups, with -# the additional feature that parenthesized substrings from +# Actions are the same as with indexed file lookups, with +# the additional feature that parenthesized substrings from # the pattern can be interpolated as $1, $2 and so on. # # BUGS -# The table format does not understand quoting conventions. +# The table format does not understand quoting conventions. # # SEE ALSO # postmap(1) create mapping table @@ -204,7 +205,7 @@ # regexp_table(5) format of POSIX regular expression tables # # LICENSE -# The Secure Mailer license must be distributed with this +# The Secure Mailer license must be distributed with this # software. # # AUTHOR(S) diff --git a/gnu/dist/postfix/conf/postfix-files b/gnu/dist/postfix/conf/postfix-files index b0d215dba09..e1ba54cbc6d 100644 --- a/gnu/dist/postfix/conf/postfix-files +++ b/gnu/dist/postfix/conf/postfix-files @@ -63,6 +63,7 @@ $daemon_directory/master:f:root:-:755 $daemon_directory/nqmgr:f:root:-:755 $daemon_directory/pickup:f:root:-:755 $daemon_directory/pipe:f:root:-:755 +$daemon_directory/proxymap:f:root:-:755 $daemon_directory/qmgr:f:root:-:755 $daemon_directory/qmqpd:f:root:-:755 $daemon_directory/showq:f:root:-:755 @@ -133,6 +134,7 @@ $manpage_directory/man8/master.8:f:root:-:644 $manpage_directory/man8/nqmgr.8:f:root:-:644 $manpage_directory/man8/pickup.8:f:root:-:644 $manpage_directory/man8/pipe.8:f:root:-:644 +$manpage_directory/man8/proxymap.8:f:root:-:644 $manpage_directory/man8/qmgr.8:f:root:-:644 $manpage_directory/man8/qmqpd.8:f:root:-:644 $manpage_directory/man8/showq.8:f:root:-:644 diff --git a/gnu/dist/postfix/conf/regexp_table b/gnu/dist/postfix/conf/regexp_table index 2cefe946c0f..94bcf2f1364 100644 --- a/gnu/dist/postfix/conf/regexp_table +++ b/gnu/dist/postfix/conf/regexp_table @@ -89,7 +89,9 @@ # /^postmaster@/ OK # # # Protect your outgoing majordomo exploders -# /^(.*)-outgoing@(.*)$/!/^owner-/ 550 Use ${1}@${2} instead +# if !/^owner-/ +# /^(.*)-outgoing@(.*)$/ 550 Use ${1}@${2} instead +# endif # # EXAMPLE HEADER FILTER MAP # # These were once common in junk mail. diff --git a/gnu/dist/postfix/conf/transport b/gnu/dist/postfix/conf/transport index 73c15dbce62..3ae93a7f07a 100644 --- a/gnu/dist/postfix/conf/transport +++ b/gnu/dist/postfix/conf/transport @@ -101,8 +101,8 @@ # dependent. In the case of SMTP, specify host:service for a # non-default server port, and use [host] or [host]:port in # order to disable MX (mail exchanger) DNS lookups. The [] -# form can also be used with IP addresses instead of host- -# names. +# form is required when you specify an IP address instead of +# a hostname. # # A null transport and null nexthop result means "do not # change": use the delivery transport and nexthop informa- diff --git a/gnu/dist/postfix/examples/chroot-setup/Solaris2 b/gnu/dist/postfix/examples/chroot-setup/Solaris2 index 2508f73abcf..024492cc3c1 100644 --- a/gnu/dist/postfix/examples/chroot-setup/Solaris2 +++ b/gnu/dist/postfix/examples/chroot-setup/Solaris2 @@ -25,7 +25,7 @@ fi for dir in etc/default etc/inet dev usr/lib usr/share/lib/zoneinfo ; do if [ ! -d ${CHROOT}/${dir} ]; then mkdir -p ${CHROOT}/${dir} ; fi done -chmod -R 755 ${CHROOT} +#chmod -R 755 ${CHROOT} # AFS support. if [ "`echo $CHROOT | cut -c1-4`" = "/afs" ]; then diff --git a/gnu/dist/postfix/html/Makefile.in b/gnu/dist/postfix/html/Makefile.in index ca3515cb256..1cc44b246fd 100644 --- a/gnu/dist/postfix/html/Makefile.in +++ b/gnu/dist/postfix/html/Makefile.in @@ -5,7 +5,8 @@ SHELL = /bin/sh DAEMONS = bounce.8.html cleanup.8.html defer.8.html error.8.html local.8.html \ lmtp.8.html master.8.html pickup.8.html pipe.8.html qmgr.8.html \ showq.8.html smtp.8.html smtpd.8.html trivial-rewrite.8.html \ - nqmgr.8.html spawn.8.html flush.8.html virtual.8.html qmqpd.8.html + nqmgr.8.html spawn.8.html flush.8.html virtual.8.html qmqpd.8.html \ + proxymap.8.html COMMANDS= mailq.1.html newaliases.1.html postalias.1.html postcat.1.html \ postconf.1.html postfix.1.html postkick.1.html postlock.1.html \ postlog.1.html postdrop.1.html postmap.1.html sendmail.1.html \ @@ -75,6 +76,10 @@ pipe.8.html: ../src/pipe/pipe.c PATH=../mantools:$$PATH; \ srctoman $? | $(AWK) | nroff -man | uniq | man2html | postlink >$@ +proxymap.8.html: ../src/proxymap/proxymap.c + PATH=../mantools:$$PATH; \ + srctoman $? | $(AWK) | nroff -man | uniq | man2html | postlink >$@ + qmgr.8.html: ../src/qmgr/qmgr.c PATH=../mantools:$$PATH; \ srctoman $? | $(AWK) | nroff -man | uniq | man2html | postlink >$@ diff --git a/gnu/dist/postfix/html/access.5.html b/gnu/dist/postfix/html/access.5.html index 5158b390c80..aed7ff3f734 100644 --- a/gnu/dist/postfix/html/access.5.html +++ b/gnu/dist/postfix/html/access.5.html @@ -165,38 +165,39 @@ ACCESS(5) ACCESS(5) about content filters is in the Postfix FIL- TER_README file. - Note: this action currently affects all recipients - of the message. + Note: this action overrides the <b>main.cf</b> <b>con-</b> + <b>tent</b><i>_</i><b>filter</b> setting, and currently affects all + recipients of the message. <i>restriction...</i> Apply the named UCE restriction(s) (<b>permit</b>, <b>reject</b>, <b>reject</b><i>_</i><b>unauth</b><i>_</i><b>destination</b>, and so on). <b>REGULAR</b> <b>EXPRESSION</b> <b>TABLES</b> - This section describes how the table lookups change when + This section describes how the table lookups change when the table is given in the form of regular expressions. For - a description of regular expression lookup table syntax, + a description of regular expression lookup table syntax, see <a href="regexp_table.5.html"><b>regexp</b><i>_</i><b>table</b>(5)</a> or <a href="pcre_table.5.html"><b>pcre</b><i>_</i><b>table</b>(5)</a>. - Each pattern is a regular expression that is applied to + Each pattern is a regular expression that is applied to the entire string being looked up. Depending on the appli- - cation, that string is an entire client hostname, an + cation, that string is an entire client hostname, an entire client IP address, or an entire mail address. Thus, no parent domain or parent network search is done, - <i>user@domain</i> mail addresses are not broken up into their + <i>user@domain</i> mail addresses are not broken up into their <i>user@</i> and <i>domain</i> constituent parts, nor is <i>user+foo</i> broken up into <i>user</i> and <i>foo</i>. - Patterns are applied in the order as specified in the - table, until a pattern is found that matches the search + Patterns are applied in the order as specified in the + table, until a pattern is found that matches the search string. - Actions are the same as with indexed file lookups, with - the additional feature that parenthesized substrings from + Actions are the same as with indexed file lookups, with + the additional feature that parenthesized substrings from the pattern can be interpolated as <b>$1</b>, <b>$2</b> and so on. <b>BUGS</b> - The table format does not understand quoting conventions. + The table format does not understand quoting conventions. <b>SEE</b> <b>ALSO</b> <a href="postmap.1.html">postmap(1)</a> create mapping table @@ -205,7 +206,7 @@ ACCESS(5) ACCESS(5) <a href="regexp_table.5.html">regexp_table(5)</a> format of POSIX regular expression tables <b>LICENSE</b> - The Secure Mailer license must be distributed with this + The Secure Mailer license must be distributed with this software. <b>AUTHOR(S)</b> diff --git a/gnu/dist/postfix/html/backstage.html b/gnu/dist/postfix/html/backstage.html index 5ee7aeef834..c269efab850 100644 --- a/gnu/dist/postfix/html/backstage.html +++ b/gnu/dist/postfix/html/backstage.html @@ -66,6 +66,14 @@ destinations. <p> +<li>The <a href="proxymap.8.html">proxymap</a> daemon provides +read-only lookup service to Postfix client processes. The purpose +is to overcome chroot restrictions, and to consolidate the number +of open lookup tables by sharing one open table among multiple +processes. + +<p> + <li>The <a href="spawn.8.html">spawn</a> daemon listens on a TCP port, UNIX-domain socket or FIFO, and runs non-Postfix commands on request, with the socket or FIFO connected to the standard input, diff --git a/gnu/dist/postfix/html/defer.8.html b/gnu/dist/postfix/html/defer.8.html new file mode 100644 index 00000000000..548369f7184 --- /dev/null +++ b/gnu/dist/postfix/html/defer.8.html @@ -0,0 +1,94 @@ +<html> <head> </head> <body> <pre> +BOUNCE(8) BOUNCE(8) + +<b>NAME</b> + bounce - Postfix message bounce or defer daemon + +<b>SYNOPSIS</b> + <b>bounce</b> [generic Postfix daemon options] + +<b>DESCRIPTION</b> + The <b>bounce</b> daemon maintains per-message log files with + non-delivery status information. Each log file is named + after the queue file that it corresponds to, and is kept + in a queue subdirectory named after the service name in + the <b>master.cf</b> file (either <b>bounce</b> or <b>defer</b>). This program + expects to be run from the <a href="master.8.html"><b>master</b>(8)</a> process manager. + + The <b>bounce</b> daemon processes two types of service requests: + + <b>o</b> Append a recipient status record to a per-message + log file. + + <b>o</b> Post a bounce message, with a copy of a log file + and of the corresponding message. When the bounce + is posted successfully, the log file is deleted. + + The software does a best effort to notify the sender that + there was a problem. A notification is sent even when the + log file or original message cannot be read. + + Optionally, a client can request that the per-message log + file be deleted when the requested operation fails. This + is used by clients that cannot retry transactions by them- + selves, and that depend on retry logic in their own + client. + +<b>STANDARDS</b> + <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a> (ARPA Internet Text Messages) + <a href="http://www.faqs.org/rfcs/rfc1894.html">RFC 1894</a> (Delivery Status Notifications) + <a href="http://www.faqs.org/rfcs/rfc2045.html">RFC 2045</a> (Format of Internet Message Bodies) + +<b>DIAGNOSTICS</b> + Problems and transactions are logged to <b>syslogd</b>(8). + +<b>BUGS</b> + The log files use an ad-hoc, unstructured format. This + will have to change in order to easily support standard + delivery status notifications. + +<b>CONFIGURATION</b> <b>PARAMETERS</b> + The following <b>main.cf</b> parameters are especially relevant + to this program. See the Postfix <b>main.cf</b> file for syntax + details and for default values. Use the <b>postfix</b> <b>reload</b> + command after a configuration change. + + <b>bounce</b><i>_</i><b>notice</b><i>_</i><b>recipient</b> + The recipient of single bounce postmaster notices. + + <b>2bounce</b><i>_</i><b>notice</b><i>_</i><b>recipient</b> + The recipient of double bounce postmaster notices. + + <b>delay</b><i>_</i><b>notice</b><i>_</i><b>recipient</b> + The recipient of "delayed mail" postmaster notices. + + <b>bounce</b><i>_</i><b>size</b><i>_</i><b>limit</b> + Limit the amount of original message context that + is sent in a non-delivery notification. + + <b>mail</b><i>_</i><b>name</b> + Use this mail system name in the introductory text + at the start of a bounce message. + + <b>notify</b><i>_</i><b>classes</b> + Notify the postmaster of bounced mail when this + parameter includes the <b>bounce</b> class. For privacy + reasons, the message body is not included. + +<b>SEE</b> <b>ALSO</b> + <a href="master.8.html">master(8)</a> process manager + <a href="qmgr.8.html">qmgr(8)</a> queue manager + syslogd(8) system logging + +<b>LICENSE</b> + The Secure Mailer license must be distributed with this + software. + +<b>AUTHOR(S)</b> + Wietse Venema + IBM T.J. Watson Research + P.O. Box 704 + Yorktown Heights, NY 10598, USA + + BOUNCE(8) +</pre> </body> </html> diff --git a/gnu/dist/postfix/html/faq.html b/gnu/dist/postfix/html/faq.html index edb261f92fd..dba261f2ac0 100644 --- a/gnu/dist/postfix/html/faq.html +++ b/gnu/dist/postfix/html/faq.html @@ -674,7 +674,7 @@ to send mail only to <i>user@domain.com</i>. Specify what recipients exist (so that your queue does not fill up with undeliverable mail from spammers). -<p. +<p> Specify <tt>local_recipient_maps =</tt> if maintaining recipient information is not practical. @@ -2015,7 +2015,7 @@ systems for performance and/or security reasons. <p> -The Postfix warning message means that new mail notificiation failed +The Postfix warning message means that new mail notification failed because the <b>comsat</b> network service is turned off. <p> @@ -2034,7 +2034,7 @@ specify: Note: recent versions of <b>procmail</b> also produce <b>biff</b> notifications. To silence <b>biff</b> completely you may also have -to updte <b>procmail</b> configuration files. +to update <b>procmail</b> configuration files. <p> @@ -2090,11 +2090,17 @@ you use the default Postfix local delivery agent: <pre> /etc/postfix/main.cf: - local_recipient_maps = $alias_maps, unix:passwd.byname + local_recipient_maps = $alias_maps, proxy:unix:passwd.byname </pre> <p> +You need the <b>proxy:</b> part only if <b>master.cf</b> specifies +that the Postfix SMTP server runs chrooted. As distributed by the +author, Postfix runs no daemons chrooted. + +<p> + The local recipients tables are searched by the recipient address (user@domain) and by the recipient name (the address minus the domain). Postfix does not care what the lookup result looks like, @@ -2107,10 +2113,12 @@ To stop Postfix from rejecting local mail incorrectly: <ul> -<li> If you run the Postfix SMTP server chrooted, it may be necessary -to place a copy of the passwd file inside the chroot jail (typically: -in <b>/var/spool/postfix/etc</b>). This is system dependent. The -only way to find out is to try. +<li> If you run the Postfix SMTP server chrooted, you need to access +the system password database through the Postfix <a href="proxymap.8.html"> +proxymap</a> service, as shown in the above example. The alternative +is simply not practical: placing a copy of the passwd file inside +the chroot jail (typically: in <b>/var/spool/postfix/etc</b>) +together with a list of system dependent files. <p> @@ -2313,21 +2321,30 @@ database" mean?</h3></a> This message is logged when, for example, the Postfix SMTP server is unable to access the UNIX password database. +<p> + <ul> <li> If you're running the Postfix SMTP server chrooted (see -<b>master.cf</b>) then you may have to copy the password file and -perhaps a bunch of other files into Postfix queue directory; a -typical destination would be <b>/var/spool/postfix/etc</b>. See also -the chroot setup scripts in the <b>examples</b> directory of the -Postfix source code distribution. +<b>master.cf</b>) then you need to access the system password +database through the Postfix <a href="proxymap.8.html">proxymap</a> +service. The alternative is not practical: copying the password +file and perhaps a bunch of other system dependent files into the +Postfix queue directory. <p> -<li> Be sure that you have world execute permissions on directories -and world read permission on the passwd file and any auxiliary -files that may be needed (such as <b>/etc/nsswitch.conf</b> and -<b>libnss*.so*</b> files referenced by <b>/etc/nsswitch.conf</b>). +<pre> + /etc/postfix/main.cf: + local_recipient_maps = proxy:unix:passwd.byname $alias_maps ... +</pre> + +<p> + +<li> Chrooted or not, be sure that you have world execute permissions +on directories and world read permission on the passwd file and +any auxiliary files that may be needed (such as <b>/etc/nsswitch.conf</b> +and <b>libnss*.so*</b> files referenced by <b>/etc/nsswitch.conf</b>). </ul> @@ -2638,19 +2655,19 @@ destinations don't work in virtual domains</h3> <p> -Quick answer: set up a transport map entry that gives the mail to -the Postfix local delivery agent: +Quick answer: set up "punch through" virtual aliases that redirect +the mail to local Postfix aliases: <p> <pre> /etc/postfix/main.cf: - transport_maps = hash:/etc/postfix/transport + virtual_alias_maps = hash:/etc/postfix/virtual - /etc/postfix/transport: - listname@virtual.tld local: - owner-listname@virtual.tld local: - listname-request@virtual.tld local: + /etc/postfix/virtual: + listname@virtual.tld listname + owner-listname@virtual.tld owner-listname + listname-request@virtual.tld listname-request /etc/aliases: listname: "|whatever" @@ -2660,6 +2677,13 @@ the Postfix local delivery agent: <p> +This redirects mail for virtual address <i>listname@virtual.tld</i> +etc. to local address <i>listname@your.domain.tld</i> etc.. Mail +for these local aliases is then delivered to external commands or +files etc. by the Postfix local delivery agent. + +<p> + Long answer: <p> diff --git a/gnu/dist/postfix/html/mailq.1.html b/gnu/dist/postfix/html/mailq.1.html new file mode 100644 index 00000000000..42d8ecf42e2 --- /dev/null +++ b/gnu/dist/postfix/html/mailq.1.html @@ -0,0 +1,345 @@ +<html> <head> </head> <body> <pre> +SENDMAIL(1) SENDMAIL(1) + +<b>NAME</b> + sendmail - Postfix to Sendmail compatibility interface + +<b>SYNOPSIS</b> + <b>sendmail</b> [<i>option</i> <i>...</i>] [<i>recipient</i> <i>...</i>] + + <b>mailq</b> + <b>sendmail</b> <b>-bp</b> + + <b>newaliases</b> + <b>sendmail</b> <b>-I</b> + +<b>DESCRIPTION</b> + The <b>sendmail</b> program implements the Postfix to Sendmail + compatibility interface. For the sake of compatibility + with existing applications, some Sendmail command-line + options are recognized but silently ignored. + + By default, <b>sendmail</b> reads a message from standard input + until EOF or until it reads a line with only a <b>.</b> charac- + ter, and arranges for delivery. <b>sendmail</b> relies on the + <a href="postdrop.1.html"><b>postdrop</b>(1)</a> command to create a queue file in the <b>maildrop</b> + directory. + + Specific command aliases are provided for other common + modes of operation: + + <b>mailq</b> List the mail queue. Each entry shows the queue + file ID, message size, arrival time, sender, and + the recipients that still need to be delivered. If + mail could not be delivered upon the last attempt, + the reason for failure is shown. This mode of oper- + ation is implemented by executing the <a href="postqueue.1.html"><b>postqueue</b>(1)</a> + command. + + <b>newaliases</b> + Initialize the alias database. If no input file is + specified (with the <b>-oA</b> option, see below), the + program processes the file(s) specified with the + <b>alias</b><i>_</i><b>database</b> configuration parameter. If no + alias database type is specified, the program uses + the type specified with the <b>default</b><i>_</i><b>database</b><i>_</i><b>type</b> + configuration parameter. This mode of operation is + implemented by running the <a href="postalias.1.html"><b>postalias</b>(1)</a> command. + + Note: it may take a minute or so before an alias + database update becomes visible. Use the <b>postfix</b> + <b>reload</b> command to eliminate this delay. + + These and other features can be selected by specifying the + appropriate combination of command-line options. Some fea- + tures are controlled by parameters in the <b>main.cf</b> configu- + ration file. + + The following options are recognized: + + <b>-Am</b> (ignored) + + <b>-Ac</b> (ignored) + Postfix sendmail uses the same configuration file + regardless of whether or not a message is an ini- + tial submission. + + <b>-B</b> <i>body_type</i> + The message body MIME type: <b>7BIT</b> or <b>8BITMIME</b>. + + <b>-C</b> <i>config_file</i> (ignored :-) + The path name of the <b>sendmail.cf</b> file. Postfix con- + figuration files are kept in <b>/etc/postfix</b>. + + <b>-F</b> <i>full_name</i> + Set the sender full name. This is used only with + messages that have no <b>From:</b> message header. + + <b>-G</b> (ignored) + Gateway (relay) submission, as opposed to initial + user submission. + + <b>-I</b> Initialize alias database. See the <b>newaliases</b> com- + mand above. + + <b>-L</b> <i>label</i> (ignored) + The logging label. Use the <b>syslog</b><i>_</i><b>name</b> configura- + tion parameter instead. + + <b>-N</b> <i>dsn</i> (ignored) + Delivery status notification control. Currently, + Postfix does not implement <b>DSN</b>. + + <b>-R</b> <i>return_limit</i> (ignored) + Limit the size of bounced mail. Use the + <b>bounce</b><i>_</i><b>size</b><i>_</i><b>limit</b> configuration parameter instead. + + <b>-X</b> <i>log_file</i> (ignored) + Log mailer traffic. Use the <b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b> and + <b>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b> configuration parameters instead. + + <b>-U</b> (ignored) + Initial user submission. + + <b>-V</b> Variable Envelope Return Path. Given an envelope + sender address of the form <i>owner-listname</i>@<i>origin</i>, + each recipient <i>user</i>@<i>domain</i> receives mail with a + personalized envelope sender address. + + By default, the personalized envelope sender + address is <i>owner-listname</i><b>+</b><i>user</i><b>=</b><i>domain</i>@<i>origin</i>. The + default <b>+</b> and <b>=</b> characters are configurable with + the <b>default</b><i>_</i><b>verp</b><i>_</i><b>delimiters</b> configuration parame- + ter. + + <b>-V</b><i>xy</i> As <b>-V</b>, but uses <i>x</i> and <i>y</i> as the VERP delimiter char- + acters, instead of the characters specified with + the <b>default</b><i>_</i><b>verp</b><i>_</i><b>delimiters</b> configuration parame- + ter. + + <b>-bd</b> Go into daemon mode. This mode of operation is + implemented by executing the <b>postfix</b> <b>start</b> command. + + <b>-bi</b> Initialize alias database. See the <b>newaliases</b> com- + mand above. + + <b>-bm</b> Read mail from standard input and arrange for + delivery. This is the default mode of operation. + + <b>-bp</b> List the mail queue. See the <b>mailq</b> command above. + + <b>-bs</b> Stand-alone SMTP server mode. Read SMTP commands + from standard input, and write responses to stan- + dard output. In stand-alone SMTP server mode, UCE + restrictions and access controls are disabled by + default. To enable them, run the process as the + <b>mail</b><i>_</i><b>owner</b> user. + + This mode of operation is implemented by running + the <a href="smtpd.8.html"><b>smtpd</b>(8)</a> daemon. + + <b>-f</b> <i>sender</i> + Set the envelope sender address. This is the + address where delivery problems are sent to, unless + the message contains an <b>Errors-To:</b> message header. + + <b>-h</b> <i>hop_count</i> (ignored) + Hop count limit. Use the <b>hopcount</b><i>_</i><b>limit</b> configura- + tion parameter instead. + + <b>-i</b> When reading a message from standard input, don't + treat a line with only a <b>.</b> character as the end of + input. + + <b>-m</b> (ignored) + Backwards compatibility. + + <b>-n</b> (ignored) + Backwards compatibility. + + <b>-oA</b><i>alias_database</i> + Non-default alias database. Specify <i>pathname</i> or + <i>type</i>:<i>pathname</i>. See <a href="postalias.1.html"><b>postalias</b>(1)</a> for details. + + <b>-o7</b> (ignored) + + <b>-o8</b> (ignored) + To send 8-bit or binary content, use an appropriate + MIME encapsulation and specify the appropriate <b>-B</b> + command-line option. + + <b>-oi</b> When reading a message from standard input, don't + treat a line with only a <b>.</b> character as the end of + input. + + <b>-om</b> (ignored) + The sender is never eliminated from alias etc. + expansions. + + <b>-o</b> <i>x</i> <i>value</i> (ignored) + Set option <i>x</i> to <i>value</i>. Use the equivalent configu- + ration parameter in <b>main.cf</b> instead. + + <b>-r</b> <i>sender</i> + Set the envelope sender address. This is the + address where delivery problems are sent to, unless + the message contains an <b>Errors-To:</b> message header. + + <b>-q</b> Attempt to deliver all queued mail. This is imple- + mented by executing the <a href="postqueue.1.html"><b>postqueue</b>(1)</a> command. + + <b>-q</b><i>interval</i> (ignored) + The interval between queue runs. Use the + <b>queue</b><i>_</i><b>run</b><i>_</i><b>delay</b> configuration parameter instead. + + <b>-qR</b><i>site</i> + Schedule immediate delivery of all mail that is + queued for the named <i>site</i>. This option accepts only + <i>site</i> names that are eligible for the "fast flush" + service, and is implemented by executing the + <a href="postqueue.1.html"><b>postqueue</b>(1)</a> command. See <a href="flush.8.html"><b>flush</b>(8)</a> for more infor- + mation about the "fast flush" service. + + <b>-qS</b><i>site</i> + This command is not implemented. Use the slower + <b>sendmail</b> <b>-q</b> command instead. + + <b>-t</b> Extract recipients from message headers. This + requires that no recipients be specified on the + command line. + + <b>-v</b> Enable verbose logging for debugging purposes. Mul- + tiple <b>-v</b> options make the software increasingly + verbose. For compatibility with mailx and other + mail submission software, a single <b>-v</b> option pro- + duces no output. + +<b>SECURITY</b> + By design, this program is not set-user (or group) id. + However, it must handle data from untrusted users or + untrusted machines. Thus, the usual precautions need to + be taken against malicious inputs. + +<b>DIAGNOSTICS</b> + Problems are logged to <b>syslogd</b>(8) and to the standard + error stream. + +<b>ENVIRONMENT</b> + <b>MAIL</b><i>_</i><b>CONFIG</b> + Directory with Postfix configuration files. + + <b>MAIL</b><i>_</i><b>VERBOSE</b> + Enable verbose logging for debugging purposes. + + <b>MAIL</b><i>_</i><b>DEBUG</b> + Enable debugging with an external command, as spec- + ified with the <b>debugger</b><i>_</i><b>command</b> configuration + parameter. + +<b>FILES</b> + /var/spool/postfix, mail queue + /etc/postfix, configuration files + +<b>CONFIGURATION</b> <b>PARAMETERS</b> + See the Postfix <b>main.cf</b> file for syntax details and for + default values. Use the <b>postfix</b> <b>reload</b> command after a + configuration change. + + <b>alias</b><i>_</i><b>database</b> + Default alias database(s) for <b>newaliases</b>. The + default value for this parameter is system-spe- + cific. + + <b>bounce</b><i>_</i><b>size</b><i>_</i><b>limit</b> + The amount of original message context that is sent + along with a non-delivery notification. + + <b>default</b><i>_</i><b>database</b><i>_</i><b>type</b> + Default alias etc. database type. On many UNIX sys- + tems the default type is either <b>dbm</b> or <b>hash</b>. + + <b>debugger</b><i>_</i><b>command</b> + Command that is executed after a Postfix daemon has + initialized. + + <b>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b> + Increment in verbose logging level when a remote + host matches a pattern in the <b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b> + parameter. + + <b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b> + List of domain or network patterns. When a remote + host matches a pattern, increase the verbose log- + ging level by the amount specified in the + <b>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b> parameter. + + <b>default</b><i>_</i><b>verp</b><i>_</i><b>delimiters</b> + The VERP delimiter characters that are used when + the <b>-V</b> command line option is specified without + delimiter characters. + + <b>fast</b><i>_</i><b>flush</b><i>_</i><b>domains</b> + List of domains that will receive "fast flush" ser- + vice (default: all domains that this system is + willing to relay mail to). This list specifies the + domains that Postfix accepts in the SMTP <b>ETRN</b> + request and in the <b>sendmail</b> <b>-qR</b> command. + + <b>fork</b><i>_</i><b>attempts</b> + Number of attempts to <b>fork</b>() a process before giv- + ing up. + + <b>fork</b><i>_</i><b>delay</b> + Delay in seconds between successive <b>fork</b>() + attempts. + + <b>hopcount</b><i>_</i><b>limit</b> + Limit the number of <b>Received:</b> message headers. + + <b>mail</b><i>_</i><b>owner</b> + The owner of the mail queue and of most Postfix + processes. + + <b>command</b><i>_</i><b>directory</b> + Directory with Postfix support commands. + + <b>daemon</b><i>_</i><b>directory</b> + Directory with Postfix daemon programs. + + <b>queue</b><i>_</i><b>directory</b> + Top-level directory of the Postfix queue. This is + also the root directory of Postfix daemons that run + chrooted. + + <b>queue</b><i>_</i><b>run</b><i>_</i><b>delay</b> + The time between successive scans of the deferred + queue. + + <b>verp</b><i>_</i><b>delimiter</b><i>_</i><b>filter</b> + The characters that Postfix accepts as VERP delim- + iter characters. + +<b>SEE</b> <b>ALSO</b> + <a href="pickup.8.html">pickup(8)</a> mail pickup daemon + <a href="postsuper.1.html">postsuper(1)</a> queue maintenance + <a href="postalias.1.html">postalias(1)</a> maintain alias database + <a href="postdrop.1.html">postdrop(1)</a> mail posting utility + <a href="postfix.1.html">postfix(1)</a> mail system control + <a href="postqueue.1.html">postqueue(1)</a> mail queue control + <a href="qmgr.8.html">qmgr(8)</a> queue manager + <a href="smtpd.8.html">smtpd(8)</a> SMTP server + <a href="flush.8.html">flush(8)</a> fast flush service + syslogd(8) system logging + +<b>LICENSE</b> + The Secure Mailer license must be distributed with this + software. + +<b>AUTHOR(S)</b> + Wietse Venema + IBM T.J. Watson Research + P.O. Box 704 + Yorktown Heights, NY 10598, USA + + SENDMAIL(1) +</pre> </body> </html> diff --git a/gnu/dist/postfix/html/newaliases.1.html b/gnu/dist/postfix/html/newaliases.1.html new file mode 100644 index 00000000000..42d8ecf42e2 --- /dev/null +++ b/gnu/dist/postfix/html/newaliases.1.html @@ -0,0 +1,345 @@ +<html> <head> </head> <body> <pre> +SENDMAIL(1) SENDMAIL(1) + +<b>NAME</b> + sendmail - Postfix to Sendmail compatibility interface + +<b>SYNOPSIS</b> + <b>sendmail</b> [<i>option</i> <i>...</i>] [<i>recipient</i> <i>...</i>] + + <b>mailq</b> + <b>sendmail</b> <b>-bp</b> + + <b>newaliases</b> + <b>sendmail</b> <b>-I</b> + +<b>DESCRIPTION</b> + The <b>sendmail</b> program implements the Postfix to Sendmail + compatibility interface. For the sake of compatibility + with existing applications, some Sendmail command-line + options are recognized but silently ignored. + + By default, <b>sendmail</b> reads a message from standard input + until EOF or until it reads a line with only a <b>.</b> charac- + ter, and arranges for delivery. <b>sendmail</b> relies on the + <a href="postdrop.1.html"><b>postdrop</b>(1)</a> command to create a queue file in the <b>maildrop</b> + directory. + + Specific command aliases are provided for other common + modes of operation: + + <b>mailq</b> List the mail queue. Each entry shows the queue + file ID, message size, arrival time, sender, and + the recipients that still need to be delivered. If + mail could not be delivered upon the last attempt, + the reason for failure is shown. This mode of oper- + ation is implemented by executing the <a href="postqueue.1.html"><b>postqueue</b>(1)</a> + command. + + <b>newaliases</b> + Initialize the alias database. If no input file is + specified (with the <b>-oA</b> option, see below), the + program processes the file(s) specified with the + <b>alias</b><i>_</i><b>database</b> configuration parameter. If no + alias database type is specified, the program uses + the type specified with the <b>default</b><i>_</i><b>database</b><i>_</i><b>type</b> + configuration parameter. This mode of operation is + implemented by running the <a href="postalias.1.html"><b>postalias</b>(1)</a> command. + + Note: it may take a minute or so before an alias + database update becomes visible. Use the <b>postfix</b> + <b>reload</b> command to eliminate this delay. + + These and other features can be selected by specifying the + appropriate combination of command-line options. Some fea- + tures are controlled by parameters in the <b>main.cf</b> configu- + ration file. + + The following options are recognized: + + <b>-Am</b> (ignored) + + <b>-Ac</b> (ignored) + Postfix sendmail uses the same configuration file + regardless of whether or not a message is an ini- + tial submission. + + <b>-B</b> <i>body_type</i> + The message body MIME type: <b>7BIT</b> or <b>8BITMIME</b>. + + <b>-C</b> <i>config_file</i> (ignored :-) + The path name of the <b>sendmail.cf</b> file. Postfix con- + figuration files are kept in <b>/etc/postfix</b>. + + <b>-F</b> <i>full_name</i> + Set the sender full name. This is used only with + messages that have no <b>From:</b> message header. + + <b>-G</b> (ignored) + Gateway (relay) submission, as opposed to initial + user submission. + + <b>-I</b> Initialize alias database. See the <b>newaliases</b> com- + mand above. + + <b>-L</b> <i>label</i> (ignored) + The logging label. Use the <b>syslog</b><i>_</i><b>name</b> configura- + tion parameter instead. + + <b>-N</b> <i>dsn</i> (ignored) + Delivery status notification control. Currently, + Postfix does not implement <b>DSN</b>. + + <b>-R</b> <i>return_limit</i> (ignored) + Limit the size of bounced mail. Use the + <b>bounce</b><i>_</i><b>size</b><i>_</i><b>limit</b> configuration parameter instead. + + <b>-X</b> <i>log_file</i> (ignored) + Log mailer traffic. Use the <b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b> and + <b>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b> configuration parameters instead. + + <b>-U</b> (ignored) + Initial user submission. + + <b>-V</b> Variable Envelope Return Path. Given an envelope + sender address of the form <i>owner-listname</i>@<i>origin</i>, + each recipient <i>user</i>@<i>domain</i> receives mail with a + personalized envelope sender address. + + By default, the personalized envelope sender + address is <i>owner-listname</i><b>+</b><i>user</i><b>=</b><i>domain</i>@<i>origin</i>. The + default <b>+</b> and <b>=</b> characters are configurable with + the <b>default</b><i>_</i><b>verp</b><i>_</i><b>delimiters</b> configuration parame- + ter. + + <b>-V</b><i>xy</i> As <b>-V</b>, but uses <i>x</i> and <i>y</i> as the VERP delimiter char- + acters, instead of the characters specified with + the <b>default</b><i>_</i><b>verp</b><i>_</i><b>delimiters</b> configuration parame- + ter. + + <b>-bd</b> Go into daemon mode. This mode of operation is + implemented by executing the <b>postfix</b> <b>start</b> command. + + <b>-bi</b> Initialize alias database. See the <b>newaliases</b> com- + mand above. + + <b>-bm</b> Read mail from standard input and arrange for + delivery. This is the default mode of operation. + + <b>-bp</b> List the mail queue. See the <b>mailq</b> command above. + + <b>-bs</b> Stand-alone SMTP server mode. Read SMTP commands + from standard input, and write responses to stan- + dard output. In stand-alone SMTP server mode, UCE + restrictions and access controls are disabled by + default. To enable them, run the process as the + <b>mail</b><i>_</i><b>owner</b> user. + + This mode of operation is implemented by running + the <a href="smtpd.8.html"><b>smtpd</b>(8)</a> daemon. + + <b>-f</b> <i>sender</i> + Set the envelope sender address. This is the + address where delivery problems are sent to, unless + the message contains an <b>Errors-To:</b> message header. + + <b>-h</b> <i>hop_count</i> (ignored) + Hop count limit. Use the <b>hopcount</b><i>_</i><b>limit</b> configura- + tion parameter instead. + + <b>-i</b> When reading a message from standard input, don't + treat a line with only a <b>.</b> character as the end of + input. + + <b>-m</b> (ignored) + Backwards compatibility. + + <b>-n</b> (ignored) + Backwards compatibility. + + <b>-oA</b><i>alias_database</i> + Non-default alias database. Specify <i>pathname</i> or + <i>type</i>:<i>pathname</i>. See <a href="postalias.1.html"><b>postalias</b>(1)</a> for details. + + <b>-o7</b> (ignored) + + <b>-o8</b> (ignored) + To send 8-bit or binary content, use an appropriate + MIME encapsulation and specify the appropriate <b>-B</b> + command-line option. + + <b>-oi</b> When reading a message from standard input, don't + treat a line with only a <b>.</b> character as the end of + input. + + <b>-om</b> (ignored) + The sender is never eliminated from alias etc. + expansions. + + <b>-o</b> <i>x</i> <i>value</i> (ignored) + Set option <i>x</i> to <i>value</i>. Use the equivalent configu- + ration parameter in <b>main.cf</b> instead. + + <b>-r</b> <i>sender</i> + Set the envelope sender address. This is the + address where delivery problems are sent to, unless + the message contains an <b>Errors-To:</b> message header. + + <b>-q</b> Attempt to deliver all queued mail. This is imple- + mented by executing the <a href="postqueue.1.html"><b>postqueue</b>(1)</a> command. + + <b>-q</b><i>interval</i> (ignored) + The interval between queue runs. Use the + <b>queue</b><i>_</i><b>run</b><i>_</i><b>delay</b> configuration parameter instead. + + <b>-qR</b><i>site</i> + Schedule immediate delivery of all mail that is + queued for the named <i>site</i>. This option accepts only + <i>site</i> names that are eligible for the "fast flush" + service, and is implemented by executing the + <a href="postqueue.1.html"><b>postqueue</b>(1)</a> command. See <a href="flush.8.html"><b>flush</b>(8)</a> for more infor- + mation about the "fast flush" service. + + <b>-qS</b><i>site</i> + This command is not implemented. Use the slower + <b>sendmail</b> <b>-q</b> command instead. + + <b>-t</b> Extract recipients from message headers. This + requires that no recipients be specified on the + command line. + + <b>-v</b> Enable verbose logging for debugging purposes. Mul- + tiple <b>-v</b> options make the software increasingly + verbose. For compatibility with mailx and other + mail submission software, a single <b>-v</b> option pro- + duces no output. + +<b>SECURITY</b> + By design, this program is not set-user (or group) id. + However, it must handle data from untrusted users or + untrusted machines. Thus, the usual precautions need to + be taken against malicious inputs. + +<b>DIAGNOSTICS</b> + Problems are logged to <b>syslogd</b>(8) and to the standard + error stream. + +<b>ENVIRONMENT</b> + <b>MAIL</b><i>_</i><b>CONFIG</b> + Directory with Postfix configuration files. + + <b>MAIL</b><i>_</i><b>VERBOSE</b> + Enable verbose logging for debugging purposes. + + <b>MAIL</b><i>_</i><b>DEBUG</b> + Enable debugging with an external command, as spec- + ified with the <b>debugger</b><i>_</i><b>command</b> configuration + parameter. + +<b>FILES</b> + /var/spool/postfix, mail queue + /etc/postfix, configuration files + +<b>CONFIGURATION</b> <b>PARAMETERS</b> + See the Postfix <b>main.cf</b> file for syntax details and for + default values. Use the <b>postfix</b> <b>reload</b> command after a + configuration change. + + <b>alias</b><i>_</i><b>database</b> + Default alias database(s) for <b>newaliases</b>. The + default value for this parameter is system-spe- + cific. + + <b>bounce</b><i>_</i><b>size</b><i>_</i><b>limit</b> + The amount of original message context that is sent + along with a non-delivery notification. + + <b>default</b><i>_</i><b>database</b><i>_</i><b>type</b> + Default alias etc. database type. On many UNIX sys- + tems the default type is either <b>dbm</b> or <b>hash</b>. + + <b>debugger</b><i>_</i><b>command</b> + Command that is executed after a Postfix daemon has + initialized. + + <b>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b> + Increment in verbose logging level when a remote + host matches a pattern in the <b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b> + parameter. + + <b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b> + List of domain or network patterns. When a remote + host matches a pattern, increase the verbose log- + ging level by the amount specified in the + <b>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b> parameter. + + <b>default</b><i>_</i><b>verp</b><i>_</i><b>delimiters</b> + The VERP delimiter characters that are used when + the <b>-V</b> command line option is specified without + delimiter characters. + + <b>fast</b><i>_</i><b>flush</b><i>_</i><b>domains</b> + List of domains that will receive "fast flush" ser- + vice (default: all domains that this system is + willing to relay mail to). This list specifies the + domains that Postfix accepts in the SMTP <b>ETRN</b> + request and in the <b>sendmail</b> <b>-qR</b> command. + + <b>fork</b><i>_</i><b>attempts</b> + Number of attempts to <b>fork</b>() a process before giv- + ing up. + + <b>fork</b><i>_</i><b>delay</b> + Delay in seconds between successive <b>fork</b>() + attempts. + + <b>hopcount</b><i>_</i><b>limit</b> + Limit the number of <b>Received:</b> message headers. + + <b>mail</b><i>_</i><b>owner</b> + The owner of the mail queue and of most Postfix + processes. + + <b>command</b><i>_</i><b>directory</b> + Directory with Postfix support commands. + + <b>daemon</b><i>_</i><b>directory</b> + Directory with Postfix daemon programs. + + <b>queue</b><i>_</i><b>directory</b> + Top-level directory of the Postfix queue. This is + also the root directory of Postfix daemons that run + chrooted. + + <b>queue</b><i>_</i><b>run</b><i>_</i><b>delay</b> + The time between successive scans of the deferred + queue. + + <b>verp</b><i>_</i><b>delimiter</b><i>_</i><b>filter</b> + The characters that Postfix accepts as VERP delim- + iter characters. + +<b>SEE</b> <b>ALSO</b> + <a href="pickup.8.html">pickup(8)</a> mail pickup daemon + <a href="postsuper.1.html">postsuper(1)</a> queue maintenance + <a href="postalias.1.html">postalias(1)</a> maintain alias database + <a href="postdrop.1.html">postdrop(1)</a> mail posting utility + <a href="postfix.1.html">postfix(1)</a> mail system control + <a href="postqueue.1.html">postqueue(1)</a> mail queue control + <a href="qmgr.8.html">qmgr(8)</a> queue manager + <a href="smtpd.8.html">smtpd(8)</a> SMTP server + <a href="flush.8.html">flush(8)</a> fast flush service + syslogd(8) system logging + +<b>LICENSE</b> + The Secure Mailer license must be distributed with this + software. + +<b>AUTHOR(S)</b> + Wietse Venema + IBM T.J. Watson Research + P.O. Box 704 + Yorktown Heights, NY 10598, USA + + SENDMAIL(1) +</pre> </body> </html> diff --git a/gnu/dist/postfix/html/postconf.1.html b/gnu/dist/postfix/html/postconf.1.html index 0367e4f510c..4289928bfe2 100644 --- a/gnu/dist/postfix/html/postconf.1.html +++ b/gnu/dist/postfix/html/postconf.1.html @@ -54,73 +54,81 @@ POSTCONF(1) POSTCONF(1) were left behind after abnormal termination. <b>-m</b> List the names of all supported lookup table types. + Postfix lookup tables are specified as <i>type</i><b>:</b><i>name</i>, + where <i>type</i> is one of the types listed below. The + table <i>name</i> syntax depends on the lookup table type. - <b>btree</b> A sorted, balanced tree structure. This is - available only on systems with support for + <b>btree</b> A sorted, balanced tree structure. This is + available only on systems with support for Berkeley DB databases. <b>dbm</b> An indexed file type based on hashing. This - is available only on systems with support + is available only on systems with support for DBM databases. <b>environ</b> The UNIX process environment array. The - lookup key is the variable name. Originally - implemented for testing, someone may find + lookup key is the variable name. Originally + implemented for testing, someone may find this useful someday. <b>hash</b> An indexed file type based on hashing. This - is available only on systems with support + is available only on systems with support for Berkeley DB databases. <b>ldap</b> (read-only) - Perform lookups using the LDAP protocol. + Perform lookups using the LDAP protocol. This is described in an LDAP_README file. <b>mysql</b> (read-only) - Perform lookups using the MYSQL protocol. + Perform lookups using the MYSQL protocol. This is described in a MYSQL_README file. <b>pcre</b> (read-only) A lookup table based on Perl Compatible Reg- - ular Expressions. The file format is + ular Expressions. The file format is described in <a href="pcre_table.5.html"><b>pcre</b><i>_</i><b>table</b>(5)</a>. + <b>proxy</b> (read-only) + A lookup table that is implemented via the + Postfix <a href="proxymap.8.html"><b>proxymap</b>(8)</a> service. The table name + syntax is <i>type</i><b>:</b><i>name</i>. + <b>regexp</b> (read-only) A lookup table based on regular expressions. - The file format is described in <a href="regexp_table.5.html"><b>reg-</b> + The file format is described in <a href="regexp_table.5.html"><b>reg-</b> <b>exp</b><i>_</i><b>table</b>(5)</a>. <b>static</b> (read-only) - A table that always returns its name as - lookup result. For example, <b>static:foobar</b> - always returns the string <b>foobar</b> as lookup + A table that always returns its name as + lookup result. For example, <b>static:foobar</b> + always returns the string <b>foobar</b> as lookup result. <b>unix</b> (read-only) - A limited way to query the UNIX authentica- + A limited way to query the UNIX authentica- tion database. The following tables are implemented: <b>unix:passwd.byname</b> - The table is the UNIX password - database. The key is a login name. - The result is a password file entry + The table is the UNIX password + database. The key is a login name. + The result is a password file entry in passwd(5) format. <b>unix:group.byname</b> - The table is the UNIX group - database. The key is a group name. - The result is a group file entry in + The table is the UNIX group + database. The key is a group name. + The result is a group file entry in group(5) format. - Other table types may exist depending on how Postfix was + Other table types may exist depending on how Postfix was built. <b>-n</b> Print non-default parameter settings only. <b>-v</b> Enable verbose logging for debugging purposes. Mul- - tiple <b>-v</b> options make the software increasingly + tiple <b>-v</b> options make the software increasingly verbose. <b>DIAGNOSTICS</b> @@ -131,7 +139,7 @@ POSTCONF(1) POSTCONF(1) Directory with Postfix configuration files. <b>LICENSE</b> - The Secure Mailer license must be distributed with this + The Secure Mailer license must be distributed with this software. <b>AUTHOR(S)</b> diff --git a/gnu/dist/postfix/html/postqueue.1.html b/gnu/dist/postfix/html/postqueue.1.html index ccc74d664b3..bbe42bd9e99 100644 --- a/gnu/dist/postfix/html/postqueue.1.html +++ b/gnu/dist/postfix/html/postqueue.1.html @@ -11,9 +11,11 @@ POSTQUEUE(1) POSTQUEUE(1) <b>DESCRIPTION</b> The <b>postqueue</b> program implements the Postfix user inter- - face for queue management. It implements all the opera- - tions that are traditionally available via the <a href="sendmail.1.html"><b>sendmail</b>(1)</a> - command. + face for queue management. It implements operations that + are traditionally available via the <a href="sendmail.1.html"><b>sendmail</b>(1)</a> command. + See the <a href="postsuper.1.html"><b>postsuper</b>(1)</a> command for queue operations that + require super-user privileges such as deleting a message + from the queue or changing the status of a message. The following options are recognized: @@ -52,11 +54,11 @@ POSTQUEUE(1) POSTQUEUE(1) <b>-s</b> <i>site</i> Schedule immediate delivery of all mail that is queued for the named <i>site</i>. The site must be eligi- - ble for the "fast flush" service. See <a href="flushd.8.html"><b>flush</b>(8)</a> for + ble for the "fast flush" service. See <a href="flush.8.html"><b>flush</b>(8)</a> for more information about the "fast flush" service. This option implements the traditional <b>sendmail</b> - <b>-qR</b><i>site</i> command, by contacting the Postfix <a href="flushd.8.html"><b>flush</b>(8)</a> + <b>-qR</b><i>site</i> command, by contacting the Postfix <a href="flush.8.html"><b>flush</b>(8)</a> daemon. <b>-v</b> Enable verbose logging for debugging purposes. Mul- @@ -109,10 +111,11 @@ POSTQUEUE(1) POSTQUEUE(1) request and in the <b>sendmail</b> <b>-qR</b> command. <b>SEE</b> <b>ALSO</b> - sendmail(8) sendmail-compatible user interface + <a href="sendmail.1.html">sendmail(1)</a> sendmail-compatible user interface + <a href="postsuper.1.html">postsuper(1)</a> privileged queue operations <a href="qmgr.8.html">qmgr(8)</a> queue manager <a href="showq.8.html">showq(8)</a> list mail queue - <a href="flushd.8.html">flush(8)</a> fast flush service + <a href="flush.8.html">flush(8)</a> fast flush service <b>LICENSE</b> The Secure Mailer license must be distributed with this diff --git a/gnu/dist/postfix/html/postsuper.1.html b/gnu/dist/postfix/html/postsuper.1.html index 2eb68f224d9..124ba8d9b51 100644 --- a/gnu/dist/postfix/html/postsuper.1.html +++ b/gnu/dist/postfix/html/postsuper.1.html @@ -11,9 +11,11 @@ POSTSUPER(1) POSTSUPER(1) <b>DESCRIPTION</b> The <b>postsuper</b> command does maintenance jobs on the Postfix queue. Use of the command is restricted to the superuser. + See the <b>postqueue</b> command for unprivileged queue opera- + tions such as listing or flushing the mail queue. - By default, <b>postsuper</b> performs the operations requested - with the <b>-s</b> and <b>-p</b> command-line options on all Postfix + By default, <b>postsuper</b> performs the operations requested + with the <b>-s</b> and <b>-p</b> command-line options on all Postfix queue directories - this includes the <b>incoming</b>, <b>active</b> and <b>deferred</b> directories with mail files and the <b>bounce</b>, <b>defer</b> and <b>flush</b> directories with log files. @@ -21,17 +23,17 @@ POSTSUPER(1) POSTSUPER(1) Options: <b>-c</b> <i>config_dir</i> - The <b>main.cf</b> configuration file is in the named + The <b>main.cf</b> configuration file is in the named directory instead of the default configuration - directory. See also the MAIL_CONFIG environment + directory. See also the MAIL_CONFIG environment setting below. <b>-d</b> <i>queue_id</i> Delete one message with the named queue ID from the - named mail queue(s) (default: <b>hold</b>, <b>incoming</b>, + named mail queue(s) (default: <b>hold</b>, <b>incoming</b>, <b>active</b> and <b>deferred</b>). If a <i>queue_id</i> of <b>-</b> is speci- - fied, the program reads queue IDs from standard - input. For example, to delete all mail from or to + fied, the program reads queue IDs from standard + input. For example, to delete all mail from or to <b>user@example.com</b>: mailq | tail +2 | awk 'BEGIN { RS = "" } \ @@ -39,117 +41,117 @@ POSTSUPER(1) POSTSUPER(1) ' | tr -d '*!' | postsuper -d - Specify <b>-d</b> <b>ALL</b> to remove all messages; for example, - specify <b>-d</b> <b>ALL</b> <b>deferred</b> to delete mail in the - <b>deferred</b> queue. As a safety measure, the word <b>ALL</b> + specify <b>-d</b> <b>ALL</b> <b>deferred</b> to delete mail in the + <b>deferred</b> queue. As a safety measure, the word <b>ALL</b> must be specified in upper case. - <b>Postfix</b> <b>queue</b> <b>IDs</b> <b>are</b> <b>reused.</b> <b>There</b> <b>is</b> <b>a</b> <b>very</b> - <b>small</b> <b>possibility</b> <b>that</b> <b>postsuper</b> <b>deletes</b> <b>the</b> <b>wrong</b> - <b>message</b> <b>file</b> <b>when</b> <b>it</b> <b>is</b> <b>executed</b> <b>while</b> <b>the</b> <b>Postfix</b> + <b>Postfix</b> <b>queue</b> <b>IDs</b> <b>are</b> <b>reused.</b> <b>There</b> <b>is</b> <b>a</b> <b>very</b> + <b>small</b> <b>possibility</b> <b>that</b> <b>postsuper</b> <b>deletes</b> <b>the</b> <b>wrong</b> + <b>message</b> <b>file</b> <b>when</b> <b>it</b> <b>is</b> <b>executed</b> <b>while</b> <b>the</b> <b>Postfix</b> <b>mail</b> <b>system</b> <b>is</b> <b>running.</b> The scenario is as follows: - 1) The Postfix queue manager deletes the mes- - sage that <b>postsuper</b> is supposed to delete, - because Postfix is finished with the mes- + 1) The Postfix queue manager deletes the mes- + sage that <b>postsuper</b> is supposed to delete, + because Postfix is finished with the mes- sage. - 2) New mail arrives, and the new message is - given the same queue ID as the message that + 2) New mail arrives, and the new message is + given the same queue ID as the message that <b>postsuper</b> is supposed to delete. The proba- - bility for reusing a deleted queue ID is - about 1 in 2**15 (the number of different + bility for reusing a deleted queue ID is + about 1 in 2**15 (the number of different microsecond values that the system clock can distinguish within a second). - 3) <b>postsuper</b> deletes the new message, instead - of the old message that it should have + 3) <b>postsuper</b> deletes the new message, instead + of the old message that it should have deleted. <b>-h</b> <i>queue_id</i> - Put mail "on hold" so that no attempt is made to - deliver it. Move one message with the named queue + Put mail "on hold" so that no attempt is made to + deliver it. Move one message with the named queue ID from the named mail queue(s) (default: <b>incoming</b>, - <b>active</b> and <b>deferred</b>) to the <b>hold</b> queue. If a + <b>active</b> and <b>deferred</b>) to the <b>hold</b> queue. If a <i>queue_id</i> of <b>-</b> is specified, the program reads queue IDs from standard input. - Specify <b>-h</b> <b>ALL</b> to hold all messages; for example, + Specify <b>-h</b> <b>ALL</b> to hold all messages; for example, specify <b>-h</b> <b>ALL</b> <b>deferred</b> to hold mail in the - <b>deferred</b> queue. As a safety measure, the word <b>ALL</b> + <b>deferred</b> queue. As a safety measure, the word <b>ALL</b> must be specified in upper case. - Note: mail that is put "on hold" will not expire - when its time in the queue exceeds the <b>maxi-</b> + Note: mail that is put "on hold" will not expire + when its time in the queue exceeds the <b>maxi-</b> <b>mal</b><i>_</i><b>queue</b><i>_</i><b>lifetime</b> setting. <b>-H</b> <i>queue_id</i> Release mail that was put "on hold". Move one mes- - sage with the named queue ID from the named mail + sage with the named queue ID from the named mail queue(s) (default: <b>hold</b>) to the <b>deferred</b> queue. If - a <i>queue_id</i> of <b>-</b> is specified, the program reads + a <i>queue_id</i> of <b>-</b> is specified, the program reads queue IDs from standard input. - Specify <b>-H</b> <b>ALL</b> to release all mail that is "on - hold". As a safety measure, the word <b>ALL</b> must be + Specify <b>-H</b> <b>ALL</b> to release all mail that is "on + hold". As a safety measure, the word <b>ALL</b> must be specified in upper case. - <b>-p</b> Purge old temporary files that are left over after + <b>-p</b> Purge old temporary files that are left over after system or software crashes. <b>-r</b> <i>queue_id</i> - Requeue the message with the named queue ID from - the named mail queue(s) (default: <b>hold</b>, <b>incoming</b>, - <b>active</b> and <b>deferred</b>). To requeue multiple mes- - sages, specify multiple <b>-r</b> command-line options. + Requeue the message with the named queue ID from + the named mail queue(s) (default: <b>hold</b>, <b>incoming</b>, + <b>active</b> and <b>deferred</b>). To requeue multiple mes- + sages, specify multiple <b>-r</b> command-line options. Alternatively, if a <i>queue_id</i> of <b>-</b> is specified, the program reads queue IDs from standard input. Specify <b>-r</b> <b>ALL</b> to requeue all messages. As a safety - measure, the word <b>ALL</b> must be specified in upper + measure, the word <b>ALL</b> must be specified in upper case. - A requeued message is moved to the <b>maildrop</b> queue, - from where it is copied by the pickup daemon to a - new file whose name is guaranteed to match the new + A requeued message is moved to the <b>maildrop</b> queue, + from where it is copied by the pickup daemon to a + new file whose name is guaranteed to match the new queue file inode number. The new queue file is sub- - jected again to mail address rewriting and substi- + jected again to mail address rewriting and substi- tution. This is useful when rewriting rules or vir- tual mappings have changed. - Postfix queue IDs are reused. There is a very + Postfix queue IDs are reused. There is a very small possibility that <b>postsuper</b> requeues the wrong - message file when it is executed while the Postfix + message file when it is executed while the Postfix mail system is running, but no harm should be done. <b>-s</b> Structure check and structure repair. It is highly - recommended to perform this operation once before + recommended to perform this operation once before Postfix startup. - <b>o</b> Rename files whose name does not match the + <b>o</b> Rename files whose name does not match the message file inode number. This operation is - necessary after restoring a mail queue from + necessary after restoring a mail queue from a different machine, or from backup media. <b>o</b> Move queue files that are in the wrong place in the file system hierarchy and remove sub- directories that are no longer needed. File - position rearrangements are necessary after + position rearrangements are necessary after a change in the <b>hash</b><i>_</i><b>queue</b><i>_</i><b>names</b> and/or <b>hash</b><i>_</i><b>queue</b><i>_</i><b>depth</b> configuration parameters. <b>-v</b> Enable verbose logging for debugging purposes. Mul- - tiple <b>-v</b> options make the software increasingly + tiple <b>-v</b> options make the software increasingly verbose. <b>DIAGNOSTICS</b> - Problems are reported to the standard error stream and to + Problems are reported to the standard error stream and to <b>syslogd</b>. - <b>postsuper</b> reports the number of messages deleted with <b>-d</b>, + <b>postsuper</b> reports the number of messages deleted with <b>-d</b>, the number of messages requeued with <b>-r</b>, and the number of - messages whose queue file name was fixed with <b>-s</b>. The + messages whose queue file name was fixed with <b>-s</b>. The report is written to the standard error stream and to <b>sys-</b> <b>logd</b>. @@ -158,22 +160,26 @@ POSTSUPER(1) POSTSUPER(1) Directory with the <b>main.cf</b> file. <b>BUGS</b> - Mail that is not sanitized by Postfix (i.e. mail in the + Mail that is not sanitized by Postfix (i.e. mail in the <b>maildrop</b> queue) cannot be placed "on hold". <b>CONFIGURATION</b> <b>PARAMETERS</b> - See the Postfix <b>main.cf</b> file for syntax details and for + See the Postfix <b>main.cf</b> file for syntax details and for default values. <b>hash</b><i>_</i><b>queue</b><i>_</i><b>depth</b> Number of subdirectory levels for hashed queues. <b>hash</b><i>_</i><b>queue</b><i>_</i><b>names</b> - The names of queues that are organized into multi- + The names of queues that are organized into multi- ple levels of subdirectories. +<b>SEE</b> <b>ALSO</b> + <a href="sendmail.1.html">sendmail(1)</a> sendmail-compatible user interface + <a href="postqueue.1.html">postqueue(1)</a> unprivileged queue operations + <b>LICENSE</b> - The Secure Mailer license must be distributed with this + The Secure Mailer license must be distributed with this software. <b>AUTHOR(S)</b> diff --git a/gnu/dist/postfix/html/proxymap.8.html b/gnu/dist/postfix/html/proxymap.8.html new file mode 100644 index 00000000000..4ea05c09603 --- /dev/null +++ b/gnu/dist/postfix/html/proxymap.8.html @@ -0,0 +1,132 @@ +<html> <head> </head> <body> <pre> +PROXYMAP(8) PROXYMAP(8) + +<b>NAME</b> + proxymap - Postfix lookup table proxy server + +<b>SYNOPSIS</b> + <b>proxymap</b> [generic Postfix daemon options] + +<b>DESCRIPTION</b> + The <b>proxymap</b> server provides read-only table lookup ser- + vice to Postfix client processes. The purpose of the ser- + vice is: + + <b>o</b> To overcome chroot restrictions. For example, a + chrooted SMTP server needs access to the system + passwd file in order to reject mail for non-exis- + tent local addresses, but it is not practical to + maintain a copy of the passwd file in the chroot + jail. The solution: + + local_recipient_maps = + proxy:unix:passwd.byname $alias_maps + + <b>o</b> To consolidate the number of open lookup tables by + sharing one open table among multiple processes. + For example, making mysql connections from every + Postfix daemon process results in "too many connec- + tions" errors. The solution: + + virtual_alias_maps = + proxy:mysql:/etc/postfix/virtual_alias.cf + + The total number of connections is limited by the + number of proxymap server processes. + + The proxymap server implements the following requests: + + <b>PROXY</b><i>_</i><b>REQ</b><i>_</i><b>OPEN</b> <i>maptype:mapname</i> <i>flags</i> + Open the table with type <i>maptype</i> and name <i>mapname</i>, + as controlled by <i>flags</i>. The reply is the request + completion status code (below) and the map type + dependent flags. + + <b>PROXY</b><i>_</i><b>REQ</b><i>_</i><b>LOOKUP</b> <i>maptype:mapname</i> <i>flags</i> <i>key</i> + Look up the data stored under the requested key. + The reply is the request completion status code + (below) and the lookup result value. The <i>map-</i> + <i>type:mapname</i> and <i>flags</i> are the same as with the + <b>PROXY</b><i>_</i><b>REQ</b><i>_</i><b>OPEN</b> request. + + There is no close command, nor are tables implicitly + closed when a client disconnects. One of the purposes of + the proxymap server is to share tables among multiple + client processes. + + The request completion status code is one of: + + <b>PROXY</b><i>_</i><b>STAT</b><i>_</i><b>OK</b> + The specified table was opened, or the requested + entry was found. + + <b>PROXY</b><i>_</i><b>STAT</b><i>_</i><b>NOKEY</b> + The requested table entry was not found. + + <b>PROXY</b><i>_</i><b>STAT</b><i>_</i><b>BAD</b> + The request was rejected (bad request parameter + value). + + <b>PROXY</b><i>_</i><b>STAT</b><i>_</i><b>RETRY</b> + The lookup request could not be completed. + + <b>PROXY</b><i>_</i><b>STAT</b><i>_</i><b>DENY</b> + The specified table was not approved for access via + the proxymap service. + +<b>SERVER</b> <b>PROCESS</b> <b>MANAGEMENT</b> + The proxymap servers run under control by the Postfix mas- + ter server. Each server can handle multiple simultaneous + connections. When all servers are busy while a client + connects, the master creates a new proxymap server pro- + cess, provided that the proxymap server process limit is + not exceeded. Each proxymap server terminates after serv- + ing at least <b>$max</b><i>_</i><b>use</b> clients or after <b>$max</b><i>_</i><b>idle</b> seconds + of idle time. + +<b>SECURITY</b> + The proxymap server opens only tables that are approved + via the <b>proxy</b><i>_</i><b>read</b><i>_</i><b>maps</b> configuration parameter, does not + talk to users, and can run at fixed low privilege, + chrooted or not. + + The proxymap server is not a trusted daemon process, and + must not be used to look up sensitive information such as + user or group IDs, mailbox file/directory names or exter- + nal commands. + +<b>DIAGNOSTICS</b> + Problems and transactions are logged to <b>syslogd</b>(8). + +<b>BUGS</b> + The proxymap server provides service to multiple clients, + and must therefore not be used for tables that have high- + latency lookups. + +<b>CONFIGURATION</b> <b>PARAMETERS</b> + The following main.cf parameters are especially relevant + to this program. Use the <b>postfix</b> <b>reload</b> command after a + configuration change. + + <b>proxy</b><i>_</i><b>read</b><i>_</i><b>maps</b> + A list of zero or more parameter values that may + contain references to Postfix lookup tables. Only + table references that begin with <b>proxy:</b> are + approved for read-only access via the proxymap + server. + +<b>SEE</b> <b>ALSO</b> + dict_proxy(3) proxy map client + +<b>LICENSE</b> + The Secure Mailer license must be distributed with this + software. + +<b>AUTHOR(S)</b> + Wietse Venema + IBM T.J. Watson Research + P.O. Box 704 + Yorktown Heights, NY 10598, USA + + PROXYMAP(8) +</pre> </body> </html> diff --git a/gnu/dist/postfix/html/regexp_table.5.html b/gnu/dist/postfix/html/regexp_table.5.html index a4e957ef850..624820adbc4 100644 --- a/gnu/dist/postfix/html/regexp_table.5.html +++ b/gnu/dist/postfix/html/regexp_table.5.html @@ -90,7 +90,9 @@ REGEXP_TABLE(5) REGEXP_TABLE(5) /^postmaster@/ OK # Protect your outgoing majordomo exploders - /^(.*)-outgoing@(.*)$/!/^owner-/ 550 Use ${1}@${2} instead + if !/^owner-/ + /^(.*)-outgoing@(.*)$/ 550 Use ${1}@${2} instead + endif <b>EXAMPLE</b> <b>HEADER</b> <b>FILTER</b> <b>MAP</b> # These were once common in junk mail. diff --git a/gnu/dist/postfix/html/sendmail.1.html b/gnu/dist/postfix/html/sendmail.1.html index b96c79529d8..42d8ecf42e2 100644 --- a/gnu/dist/postfix/html/sendmail.1.html +++ b/gnu/dist/postfix/html/sendmail.1.html @@ -197,7 +197,7 @@ SENDMAIL(1) SENDMAIL(1) queued for the named <i>site</i>. This option accepts only <i>site</i> names that are eligible for the "fast flush" service, and is implemented by executing the - <a href="postqueue.1.html"><b>postqueue</b>(1)</a> command. See <a href="flushd.8.html"><b>flush</b>(8)</a> for more infor- + <a href="postqueue.1.html"><b>postqueue</b>(1)</a> command. See <a href="flush.8.html"><b>flush</b>(8)</a> for more infor- mation about the "fast flush" service. <b>-qS</b><i>site</i> @@ -328,7 +328,7 @@ SENDMAIL(1) SENDMAIL(1) <a href="postqueue.1.html">postqueue(1)</a> mail queue control <a href="qmgr.8.html">qmgr(8)</a> queue manager <a href="smtpd.8.html">smtpd(8)</a> SMTP server - <a href="flushd.8.html">flush(8)</a> fast flush service + <a href="flush.8.html">flush(8)</a> fast flush service syslogd(8) system logging <b>LICENSE</b> diff --git a/gnu/dist/postfix/html/transport.5.html b/gnu/dist/postfix/html/transport.5.html index 774c557f5d1..3d63496b841 100644 --- a/gnu/dist/postfix/html/transport.5.html +++ b/gnu/dist/postfix/html/transport.5.html @@ -102,8 +102,8 @@ TRANSPORT(5) TRANSPORT(5) dependent. In the case of SMTP, specify <i>host</i>:<i>service</i> for a non-default server port, and use [<i>host</i>] or [<i>host</i>]:<i>port</i> in order to disable MX (mail exchanger) DNS lookups. The [] - form can also be used with IP addresses instead of host- - names. + form is required when you specify an IP address instead of + a hostname. A null <i>transport</i> and null <i>nexthop</i> result means "do not change": use the delivery transport and nexthop informa- diff --git a/gnu/dist/postfix/html/trivial-rewrite.8.html b/gnu/dist/postfix/html/trivial-rewrite.8.html index fcb9f67eaeb..bc7f10c9957 100644 --- a/gnu/dist/postfix/html/trivial-rewrite.8.html +++ b/gnu/dist/postfix/html/trivial-rewrite.8.html @@ -75,14 +75,24 @@ TRIVIAL-REWRITE(8) TRIVIAL-REWRITE(8) <b>$relayhost</b>. The default nexthop is the recipient domain. +<b>SERVER</b> <b>PROCESS</b> <b>MANAGEMENT</b> + The trivial-rewrite servers run under control by the Post- + fix master server. Each server can handle multiple simul- + taneous connections. When all servers are busy while a + client connects, the master creates a new server process, + provided that the trivial-rewrite server process limit is + not exceeded. Each trivial-rewrite server terminates + after serving at least <b>$max</b><i>_</i><b>use</b> clients of after <b>$max</b><i>_</i><b>idle</b> + seconds of idle time. + <b>STANDARDS</b> - None. The command does not interact with the outside + None. The command does not interact with the outside world. <b>SECURITY</b> - The <b>trivial-rewrite</b> daemon is not security sensitive. By - default, this daemon does not talk to remote or local - users. It can run at a fixed low privilege in a chrooted + The <b>trivial-rewrite</b> daemon is not security sensitive. By + default, this daemon does not talk to remote or local + users. It can run at a fixed low privilege in a chrooted environment. <b>DIAGNOSTICS</b> @@ -90,21 +100,21 @@ TRIVIAL-REWRITE(8) TRIVIAL-REWRITE(8) <b>BUGS</b> <b>CONFIGURATION</b> <b>PARAMETERS</b> - The following <b>main.cf</b> parameters are especially relevant - to this program. See the Postfix <b>main.cf</b> file for syntax - details and for default values. Use the <b>postfix</b> <b>reload</b> + The following <b>main.cf</b> parameters are especially relevant + to this program. See the Postfix <b>main.cf</b> file for syntax + details and for default values. Use the <b>postfix</b> <b>reload</b> command after a configuration change. <b>Miscellaneous</b> <b>empty</b><i>_</i><b>address</b><i>_</i><b>recipient</b> - The recipient that is substituted for the null + The recipient that is substituted for the null address. <b>inet</b><i>_</i><b>interfaces</b> - The network interfaces that this mail system - receives mail on. This information is used to - determine if <i>user</i>@[<i>net.work.addr.ess</i>] is local or - remote. Mail for local users is given to the + The network interfaces that this mail system + receives mail on. This information is used to + determine if <i>user</i>@[<i>net.work.addr.ess</i>] is local or + remote. Mail for local users is given to the <b>$local</b><i>_</i><b>transport</b>. <b>mydestination</b> @@ -113,7 +123,7 @@ TRIVIAL-REWRITE(8) TRIVIAL-REWRITE(8) <b>virtual</b><i>_</i><b>alias</b><i>_</i><b>domains</b> List of simulated virtual domains (domains with all - recipients aliased to some other local or remote + recipients aliased to some other local or remote domain). <b>virtual</b><i>_</i><b>mailbox</b><i>_</i><b>domains</b> @@ -126,10 +136,10 @@ TRIVIAL-REWRITE(8) TRIVIAL-REWRITE(8) <b>resolve</b><i>_</i><b>unquoted</b><i>_</i><b>address</b> When resolving an address, do not quote the address - localpart as per <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a>, so that additional <b>@</b>, <b>%</b> - or <b>!</b> characters remain visible. This is techni- + localpart as per <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a>, so that additional <b>@</b>, <b>%</b> + or <b>!</b> characters remain visible. This is techni- cally incorrect, but allows us to stop relay - attacks when forwarding mail to a Sendmail primary + attacks when forwarding mail to a Sendmail primary MX host. <b>relocated</b><i>_</i><b>maps</b> @@ -155,50 +165,50 @@ TRIVIAL-REWRITE(8) TRIVIAL-REWRITE(8) <b>Routing</b> <b>local</b><i>_</i><b>transport</b> - Where to deliver mail for destinations that match - <b>$mydestination</b> or <b>$inet</b><i>_</i><b>interfaces</b>. The default + Where to deliver mail for destinations that match + <b>$mydestination</b> or <b>$inet</b><i>_</i><b>interfaces</b>. The default transport is <b>local:$myhostname</b>. - Syntax is <i>transport</i>:<i>nexthop</i>; see <a href="transport.5.html"><b>transport</b>(5)</a> for + Syntax is <i>transport</i>:<i>nexthop</i>; see <a href="transport.5.html"><b>transport</b>(5)</a> for details. The :<i>nexthop</i> part is optional. <b>virtual</b><i>_</i><b>transport</b> - Where to deliver mail for non-local domains that + Where to deliver mail for non-local domains that match <b>$virtual</b><i>_</i><b>mailbox</b><i>_</i><b>domains</b>. The default trans- port is <b>virtual</b>. - Syntax is <i>transport</i>:<i>nexthop</i>; see <a href="transport.5.html"><b>transport</b>(5)</a> for + Syntax is <i>transport</i>:<i>nexthop</i>; see <a href="transport.5.html"><b>transport</b>(5)</a> for details. The :<i>nexthop</i> part is optional. <b>relay</b><i>_</i><b>transport</b> - Where to deliver mail for non-local domains that - match <b>$relay</b><i>_</i><b>domains</b>. The default transport is + Where to deliver mail for non-local domains that + match <b>$relay</b><i>_</i><b>domains</b>. The default transport is <b>relay</b> (which normally is a clone of the <b>smtp</b> trans- port). - Syntax is <i>transport</i>:<i>nexthop</i>; see <a href="transport.5.html"><b>transport</b>(5)</a> for + Syntax is <i>transport</i>:<i>nexthop</i>; see <a href="transport.5.html"><b>transport</b>(5)</a> for details. The :<i>nexthop</i> part is optional. <b>default</b><i>_</i><b>transport</b> - Where to deliver all other non-local mail. The + Where to deliver all other non-local mail. The default transport is <b>smtp</b>. - Syntax is <i>transport</i>:<i>nexthop</i>; see <a href="transport.5.html"><b>transport</b>(5)</a> for + Syntax is <i>transport</i>:<i>nexthop</i>; see <a href="transport.5.html"><b>transport</b>(5)</a> for details. The :<i>nexthop</i> part is optional. <b>parent</b><i>_</i><b>domain</b><i>_</i><b>matches</b><i>_</i><b>subdomains</b> - List of Postfix features that use <i>domain.tld</i> pat- - terns to match <i>sub.domain.tld</i> (as opposed to + List of Postfix features that use <i>domain.tld</i> pat- + terns to match <i>sub.domain.tld</i> (as opposed to requiring <i>.domain.tld</i> patterns). <b>relayhost</b> - The default host to send non-local mail to when no - host is specified with <b>$relay</b><i>_</i><b>transport</b> or - <b>$default</b><i>_</i><b>transport</b>, and when the recipient address + The default host to send non-local mail to when no + host is specified with <b>$relay</b><i>_</i><b>transport</b> or + <b>$default</b><i>_</i><b>transport</b>, and when the recipient address does not match the optional the <a href="transport.5.html"><b>transport</b>(5)</a> table. <b>transport</b><i>_</i><b>maps</b> - List of tables with <i>recipient</i> or <i>domain</i> to (<i>trans-</i> + List of tables with <i>recipient</i> or <i>domain</i> to (<i>trans-</i> <i>port,</i> <i>nexthop</i>) mappings. <b>SEE</b> <b>ALSO</b> @@ -208,7 +218,7 @@ TRIVIAL-REWRITE(8) TRIVIAL-REWRITE(8) <a href="relocated.5.html">relocated(5)</a> format of the "user has moved" table <b>LICENSE</b> - The Secure Mailer license must be distributed with this + The Secure Mailer license must be distributed with this software. <b>AUTHOR(S)</b> diff --git a/gnu/dist/postfix/html/virtual.8.html b/gnu/dist/postfix/html/virtual.8.html index 925526715c2..c36f4e3137d 100644 --- a/gnu/dist/postfix/html/virtual.8.html +++ b/gnu/dist/postfix/html/virtual.8.html @@ -17,8 +17,8 @@ VIRTUAL(8) VIRTUAL(8) This delivery agent only delivers mail. Other features such as mail forwarding, out-of-office notifications, - etc., must be configured via virtual maps or via similar - lookup mechanisms. + etc., must be configured via virtual_alias maps or via + similar lookup mechanisms. <b>MAILBOX</b> <b>LOCATION</b> The mailbox location is controlled by the <b>virtual</b><i>_</i><b>mail-</b> @@ -141,37 +141,43 @@ VIRTUAL(8) VIRTUAL(8) etc. is disallowed, because that would open a secu- rity hole. + For security reasons, proxied table lookup is not + allowed, because that would open a security hole. + <b>virtual</b><i>_</i><b>mailbox</b><i>_</i><b>domains</b> - The list of domains that should be delivered via - the Postfix virtual delivery agent. This uses the + The list of domains that should be delivered via + the Postfix virtual delivery agent. This uses the same syntax as the <b>mydestination</b> configuration parameter. <b>virtual</b><i>_</i><b>minimum</b><i>_</i><b>uid</b> - Specifies a minimum uid that will be accepted as a - return from a <b>virtual</b><i>_</i><b>owner</b><i>_</i><b>maps</b> or <b>vir-</b> - <b>tual</b><i>_</i><b>uid</b><i>_</i><b>maps</b> lookup. Returned values less than - this will be rejected, and the message will be + Specifies a minimum uid that will be accepted as a + return from a <b>virtual</b><i>_</i><b>owner</b><i>_</i><b>maps</b> or <b>vir-</b> + <b>tual</b><i>_</i><b>uid</b><i>_</i><b>maps</b> lookup. Returned values less than + this will be rejected, and the message will be deferred. <b>virtual</b><i>_</i><b>uid</b><i>_</i><b>maps</b> Recipients are looked up in these maps to determine - the user ID to be used when writing to the target + the user ID to be used when writing to the target mailbox. - While searching a lookup table, an address exten- + While searching a lookup table, an address exten- sion (<i>user+foo@domain.tld</i>) is ignored. - In a lookup table, specify a left-hand side of - <i>@domain.tld</i> to match any user in the specified - domain that does not have a specific + In a lookup table, specify a left-hand side of + <i>@domain.tld</i> to match any user in the specified + domain that does not have a specific <i>user@domain.tld</i> entry. - For security reasons, regular expression maps are - allowed but regular expression substitution of $1 + For security reasons, regular expression maps are + allowed but regular expression substitution of $1 etc. is disallowed, because that would open a secu- rity hole. + For security reasons, proxied table lookup is not + allowed, because that would open a security hole. + <b>virtual</b><i>_</i><b>gid</b><i>_</i><b>maps</b> Recipients are looked up in these maps to determine the group ID to be used when writing to the target @@ -190,63 +196,66 @@ VIRTUAL(8) VIRTUAL(8) etc. is disallowed, because that would open a secu- rity hole. + For security reasons, proxied table lookup is not + allowed, because that would open a security hole. + <b>Locking</b> <b>controls</b> <b>virtual</b><i>_</i><b>mailbox</b><i>_</i><b>lock</b> - How to lock UNIX-style mailboxes: one or more of - <b>flock</b>, <b>fcntl</b> or <b>dotlock</b>. The <b>dotlock</b> method - requires that the recipient UID or GID has write + How to lock UNIX-style mailboxes: one or more of + <b>flock</b>, <b>fcntl</b> or <b>dotlock</b>. The <b>dotlock</b> method + requires that the recipient UID or GID has write access to the parent directory of the mailbox file. - This setting is ignored with <b>maildir</b> style deliv- + This setting is ignored with <b>maildir</b> style deliv- ery, because such deliveries are safe without explicit locks. - Use the command <b>postconf</b> <b>-l</b> to find out what lock- + Use the command <b>postconf</b> <b>-l</b> to find out what lock- ing methods are available on your system. <b>deliver</b><i>_</i><b>lock</b><i>_</i><b>attempts</b> - Limit the number of attempts to acquire an exclu- + Limit the number of attempts to acquire an exclu- sive lock on a UNIX-style mailbox file. <b>deliver</b><i>_</i><b>lock</b><i>_</i><b>delay</b> Time (default: seconds) between successive attempts - to acquire an exclusive lock on a UNIX-style mail- - box file. The actual delay is slightly randomized. + to acquire an exclusive lock on a UNIX-style mail- + box file. The actual delay is slightly randomized. <b>stale</b><i>_</i><b>lock</b><i>_</i><b>time</b> - Limit the time after which a stale lockfile is - removed (applicable to UNIX-style mailboxes only). + Limit the time after which a stale lockfile is + removed (applicable to UNIX-style mailboxes only). <b>Resource</b> <b>controls</b> <b>virtual</b><i>_</i><b>destination</b><i>_</i><b>concurrency</b><i>_</i><b>limit</b> Limit the number of parallel deliveries to the same domain via the <b>virtual</b> delivery agent. The default limit is taken from the <b>default</b><i>_</i><b>destination</b><i>_</i><b>concur-</b> - <b>rency</b><i>_</i><b>limit</b> parameter. The limit is enforced by + <b>rency</b><i>_</i><b>limit</b> parameter. The limit is enforced by the Postfix queue manager. <b>virtual</b><i>_</i><b>destination</b><i>_</i><b>recipient</b><i>_</i><b>limit</b> Limit the number of recipients per message delivery - via the <b>virtual</b> delivery agent. The default limit - is taken from the <b>default</b><i>_</i><b>destination</b><i>_</i><b>recipi-</b> - <b>ent</b><i>_</i><b>limit</b> parameter. The limit is enforced by the + via the <b>virtual</b> delivery agent. The default limit + is taken from the <b>default</b><i>_</i><b>destination</b><i>_</i><b>recipi-</b> + <b>ent</b><i>_</i><b>limit</b> parameter. The limit is enforced by the Postfix queue manager. <b>virtual</b><i>_</i><b>mailbox</b><i>_</i><b>limit</b> - The maximal size in bytes of a mailbox or maildir + The maximal size in bytes of a mailbox or maildir file. Set to zero to disable the limit. <b>HISTORY</b> - This agent was originally based on the Postfix local + This agent was originally based on the Postfix local delivery agent. Modifications mainly consisted of removing - code that either was not applicable or that was not safe - in this context: aliases, ~user/.forward files, delivery + code that either was not applicable or that was not safe + in this context: aliases, ~user/.forward files, delivery to "|command" or to /file/name. - The <b>Delivered-To:</b> header appears in the <b>qmail</b> system by + The <b>Delivered-To:</b> header appears in the <b>qmail</b> system by Daniel Bernstein. - The <b>maildir</b> structure appears in the <b>qmail</b> system by + The <b>maildir</b> structure appears in the <b>qmail</b> system by Daniel Bernstein. <b>SEE</b> <b>ALSO</b> @@ -257,7 +266,7 @@ VIRTUAL(8) VIRTUAL(8) <a href="qmgr.8.html">qmgr(8)</a> queue manager <b>LICENSE</b> - The Secure Mailer license must be distributed with this + The Secure Mailer license must be distributed with this software. <b>AUTHOR(S)</b> diff --git a/gnu/dist/postfix/man/Makefile.in b/gnu/dist/postfix/man/Makefile.in index 279950201b5..abb1a8d86d2 100644 --- a/gnu/dist/postfix/man/Makefile.in +++ b/gnu/dist/postfix/man/Makefile.in @@ -5,7 +5,8 @@ SHELL = /bin/sh DAEMONS = man8/bounce.8 man8/defer.8 man8/cleanup.8 man8/error.8 man8/local.8 \ man8/lmtp.8 man8/master.8 man8/pickup.8 man8/pipe.8 man8/qmgr.8 \ man8/showq.8 man8/smtp.8 man8/smtpd.8 man8/trivial-rewrite.8 \ - man8/nqmgr.8 man8/spawn.8 man8/flush.8 man8/virtual.8 man8/qmqpd.8 + man8/nqmgr.8 man8/spawn.8 man8/flush.8 man8/virtual.8 man8/qmqpd.8 \ + man8/proxymap.8 COMMANDS= man1/postalias.1 man1/postcat.1 man1/postconf.1 man1/postfix.1 \ man1/postkick.1 man1/postlock.1 man1/postlog.1 man1/postdrop.1 \ man1/postmap.1 man1/sendmail.1 man1/mailq.1 man1/newaliases.1 \ @@ -64,6 +65,9 @@ man8/pickup.8: ../src/pickup/pickup.c man8/pipe.8: ../src/pipe/pipe.c ../mantools/srctoman $? >$@ +man8/proxymap.8: ../src/proxymap/proxymap.c + ../mantools/srctoman $? >$@ + man8/qmgr.8: ../src/qmgr/qmgr.c ../mantools/srctoman $? >$@ diff --git a/gnu/dist/postfix/man/man1/postconf.1 b/gnu/dist/postfix/man/man1/postconf.1 index 74d20a49a29..4a7fab8e397 100644 --- a/gnu/dist/postfix/man/man1/postconf.1 +++ b/gnu/dist/postfix/man/man1/postconf.1 @@ -53,7 +53,10 @@ The application is expected to remove its own lock file, as well as stale lock files that were left behind after abnormal termination. .RE .IP \fB-m\fR -List the names of all supported lookup table types. +List the names of all supported lookup table types. Postfix +lookup tables are specified as \fItype\fB:\fIname\fR, where +\fItype\fR is one of the types listed below. The table \fIname\fR +syntax depends on the lookup table type. .RS .IP \fBbtree\fR A sorted, balanced tree structure. @@ -79,6 +82,10 @@ in a MYSQL_README file. .IP "\fBpcre\fR (read-only)" A lookup table based on Perl Compatible Regular Expressions. The file format is described in \fBpcre_table\fR(5). +.IP "\fBproxy\fR (read-only)" +A lookup table that is implemented via the Postfix +\fBproxymap\fR(8) service. The table name syntax is +\fItype\fB:\fIname\fR. .IP "\fBregexp\fR (read-only)" A lookup table based on regular expressions. The file format is described in \fBregexp_table\fR(5). diff --git a/gnu/dist/postfix/man/man1/postqueue.1 b/gnu/dist/postfix/man/man1/postqueue.1 index da8f3d5ee80..491bfccbfba 100644 --- a/gnu/dist/postfix/man/man1/postqueue.1 +++ b/gnu/dist/postfix/man/man1/postqueue.1 @@ -17,8 +17,11 @@ Postfix queue control .ad .fi The \fBpostqueue\fR program implements the Postfix user interface -for queue management. It implements all the operations that are +for queue management. It implements operations that are traditionally available via the \fBsendmail\fR(1) command. +See the \fBpostsuper\fR(1) command for queue operations +that require super-user privileges such as deleting a message +from the queue or changing the status of a message. The following options are recognized: .IP "\fB-c \fIconfig_dir\fR" @@ -112,7 +115,8 @@ request and in the \fBsendmail -qR\fR command. .SH SEE ALSO .na .nf -sendmail(8) sendmail-compatible user interface +sendmail(1) sendmail-compatible user interface +postsuper(1) privileged queue operations qmgr(8) queue manager showq(8) list mail queue flush(8) fast flush service diff --git a/gnu/dist/postfix/man/man1/postsuper.1 b/gnu/dist/postfix/man/man1/postsuper.1 index 3d98b8b0ae9..99406ca662e 100644 --- a/gnu/dist/postfix/man/man1/postsuper.1 +++ b/gnu/dist/postfix/man/man1/postsuper.1 @@ -18,6 +18,8 @@ Postfix superintendent .fi The \fBpostsuper\fR command does maintenance jobs on the Postfix queue. Use of the command is restricted to the superuser. +See the \fBpostqueue\fR command for unprivileged queue operations +such as listing or flushing the mail queue. By default, \fBpostsuper\fR performs the operations requested with the \fB-s\fR and \fB-p\fR command-line options on all Postfix queue @@ -176,6 +178,11 @@ Number of subdirectory levels for hashed queues. .IP \fBhash_queue_names\fR The names of queues that are organized into multiple levels of subdirectories. +.SH SEE ALSO +.na +.nf +sendmail(1) sendmail-compatible user interface +postqueue(1) unprivileged queue operations .SH LICENSE .na .nf diff --git a/gnu/dist/postfix/man/man5/access.5 b/gnu/dist/postfix/man/man5/access.5 index 12528f65948..9999f77b036 100644 --- a/gnu/dist/postfix/man/man5/access.5 +++ b/gnu/dist/postfix/man/man5/access.5 @@ -152,7 +152,8 @@ After the message is queued, send the entire message through a content filter. More information about content filters is in the Postfix FILTER_README file. .sp -Note: this action currently affects all recipients of the message. +Note: this action overrides the \fBmain.cf content_filter\fR setting, +and currently affects all recipients of the message. .IP \fIrestriction...\fR Apply the named UCE restriction(s) (\fBpermit\fR, \fBreject\fR, \fBreject_unauth_destination\fR, and so on). diff --git a/gnu/dist/postfix/man/man5/regexp_table.5 b/gnu/dist/postfix/man/man5/regexp_table.5 index 0aa3df518eb..8b418efe2f5 100644 --- a/gnu/dist/postfix/man/man5/regexp_table.5 +++ b/gnu/dist/postfix/man/man5/regexp_table.5 @@ -84,7 +84,9 @@ by whitespace. /^postmaster@/ OK # Protect your outgoing majordomo exploders -/^(.*)-outgoing@(.*)$/!/^owner-/ 550 Use ${1}@${2} instead +if !/^owner-/ +/^(.*)-outgoing@(.*)$/ 550 Use ${1}@${2} instead +endif .SH EXAMPLE HEADER FILTER MAP .na .nf diff --git a/gnu/dist/postfix/man/man5/transport.5 b/gnu/dist/postfix/man/man5/transport.5 index f244a96c1e7..e4c69f3728e 100644 --- a/gnu/dist/postfix/man/man5/transport.5 +++ b/gnu/dist/postfix/man/man5/transport.5 @@ -102,7 +102,7 @@ The interpretation of the nexthop field is transport dependent. In the case of SMTP, specify \fIhost\fR:\fIservice\fR for a non-default server port, and use [\fIhost\fR] or [\fIhost\fR]:\fIport\fR in order to disable MX (mail exchanger) DNS lookups. The [] form -can also be used with IP addresses instead of hostnames. +is required when you specify an IP address instead of a hostname. A null \fItransport\fR and null \fInexthop\fR result means "do not change": use the delivery transport and nexthop information diff --git a/gnu/dist/postfix/man/man8/proxymap.8 b/gnu/dist/postfix/man/man8/proxymap.8 new file mode 100644 index 00000000000..a801de87274 --- /dev/null +++ b/gnu/dist/postfix/man/man8/proxymap.8 @@ -0,0 +1,134 @@ +.TH PROXYMAP 8 +.ad +.fi +.SH NAME +proxymap +\- +Postfix lookup table proxy server +.SH SYNOPSIS +.na +.nf +\fBproxymap\fR [generic Postfix daemon options] +.SH DESCRIPTION +.ad +.fi +The \fBproxymap\fR server provides read-only table +lookup service to Postfix client processes. The purpose +of the service is: +.IP \(bu +To overcome chroot restrictions. For example, a chrooted SMTP +server needs access to the system passwd file in order to +reject mail for non-existent local addresses, but it is not +practical to maintain a copy of the passwd file in the chroot +jail. The solution: +.sp +local_recipient_maps = +.ti +4 +proxy:unix:passwd.byname $alias_maps +.IP \(bu +To consolidate the number of open lookup tables by sharing +one open table among multiple processes. For example, making +mysql connections from every Postfix daemon process results +in "too many connections" errors. The solution: +.sp +virtual_alias_maps = +.ti +4 +proxy:mysql:/etc/postfix/virtual_alias.cf +.sp +The total number of connections is limited by the number of +proxymap server processes. +.PP +The proxymap server implements the following requests: +.IP "\fBPROXY_REQ_OPEN\fI maptype:mapname flags\fR" +Open the table with type \fImaptype\fR and name \fImapname\fR, +as controlled by \fIflags\fR. +The reply is the request completion status code (below) and the +map type dependent flags. +.IP "\fBPROXY_REQ_LOOKUP\fI maptype:mapname flags key\fR" +Look up the data stored under the requested key. +The reply is the request completion status code (below) and +the lookup result value. +The \fImaptype:mapname\fR and \fIflags\fR are the same +as with the \fBPROXY_REQ_OPEN\fR request. +.PP +There is no close command, nor are tables implicitly closed +when a client disconnects. One of the purposes of the proxymap +server is to share tables among multiple client processes. + +The request completion status code is one of: +.IP \fBPROXY_STAT_OK\fR +The specified table was opened, or the requested entry was found. +.IP \fBPROXY_STAT_NOKEY\fR +The requested table entry was not found. +.IP \fBPROXY_STAT_BAD\fR +The request was rejected (bad request parameter value). +.IP \fBPROXY_STAT_RETRY\fR +The lookup request could not be completed. +.IP \fBPROXY_STAT_DENY\fR +The specified table was not approved for access via the +proxymap service. +.SH SERVER PROCESS MANAGEMENT +.na +.nf +.ad +.fi +The proxymap servers run under control by the Postfix master +server. Each server can handle multiple simultaneous connections. +When all servers are busy while a client connects, the master +creates a new proxymap server process, provided that the proxymap +server process limit is not exceeded. +Each proxymap server terminates after serving +at least \fB$max_use\fR clients or after \fB$max_idle\fR seconds +of idle time. +.SH SECURITY +.na +.nf +.ad +.fi +The proxymap server opens only tables that are approved via the +\fBproxy_read_maps\fR configuration parameter, does not talk to +users, and can run at fixed low privilege, chrooted or not. + +The proxymap server is not a trusted daemon process, and must +not be used to look up sensitive information such as user or +group IDs, mailbox file/directory names or external commands. +.SH DIAGNOSTICS +.ad +.fi +Problems and transactions are logged to \fBsyslogd\fR(8). +.SH BUGS +.ad +.fi +The proxymap server provides service to multiple clients, +and must therefore not be used for tables that have high-latency +lookups. +.SH CONFIGURATION PARAMETERS +.na +.nf +.ad +.fi +The following main.cf parameters are especially relevant +to this program. Use the \fBpostfix reload\fR command +after a configuration change. +.IP \fBproxy_read_maps\fR +A list of zero or more parameter values that may contain +references to Postfix lookup tables. Only table references +that begin with \fBproxy:\fR are approved for read-only +access via the proxymap server. +.SH SEE ALSO +.na +.nf +dict_proxy(3) proxy map client +.SH LICENSE +.na +.nf +.ad +.fi +The Secure Mailer license must be distributed with this software. +.SH AUTHOR(S) +.na +.nf +Wietse Venema +IBM T.J. Watson Research +P.O. Box 704 +Yorktown Heights, NY 10598, USA diff --git a/gnu/dist/postfix/man/man8/trivial-rewrite.8 b/gnu/dist/postfix/man/man8/trivial-rewrite.8 index 4320f7f2db0..a768b873e32 100644 --- a/gnu/dist/postfix/man/man8/trivial-rewrite.8 +++ b/gnu/dist/postfix/man/man8/trivial-rewrite.8 @@ -65,6 +65,19 @@ The transport and optional nexthop are specified with This overrides the optional nexthop information that is specified with \fB$relayhost\fR. The default nexthop is the recipient domain. +.SH SERVER PROCESS MANAGEMENT +.na +.nf +.ad +.fi +The trivial-rewrite servers run under control by the Postfix master +server. Each server can handle multiple simultaneous connections. +When all servers are busy while a client connects, the master +creates a new server process, provided that the trivial-rewrite +server process limit is not exceeded. +Each trivial-rewrite server terminates after +serving at least \fB$max_use\fR clients of after \fB$max_idle\fR +seconds of idle time. .SH STANDARDS .na .nf diff --git a/gnu/dist/postfix/man/man8/virtual.8 b/gnu/dist/postfix/man/man8/virtual.8 index f74a6d228e1..ea13355170c 100644 --- a/gnu/dist/postfix/man/man8/virtual.8 +++ b/gnu/dist/postfix/man/man8/virtual.8 @@ -20,7 +20,7 @@ file lookups of the address local part only. This delivery agent only delivers mail. Other features such as mail forwarding, out-of-office notifications, etc., must be -configured via virtual maps or via similar lookup mechanisms. +configured via virtual_alias maps or via similar lookup mechanisms. .SH MAILBOX LOCATION .na .nf @@ -157,6 +157,9 @@ to this path. For security reasons, regular expression maps are allowed but regular expression substitution of $1 etc. is disallowed, because that would open a security hole. + +For security reasons, proxied table lookup is not allowed, +because that would open a security hole. .IP \fBvirtual_mailbox_domains\fR The list of domains that should be delivered via the Postfix virtual delivery agent. This uses the same syntax as the \fBmydestination\fR @@ -180,6 +183,9 @@ specific \fIuser@domain.tld\fR entry. For security reasons, regular expression maps are allowed but regular expression substitution of $1 etc. is disallowed, because that would open a security hole. + +For security reasons, proxied table lookup is not allowed, +because that would open a security hole. .IP \fBvirtual_gid_maps\fR Recipients are looked up in these maps to determine the group ID to be used when writing to the target mailbox. @@ -194,6 +200,9 @@ specific \fIuser@domain.tld\fR entry. For security reasons, regular expression maps are allowed but regular expression substitution of $1 etc. is disallowed, because that would open a security hole. + +For security reasons, proxied table lookup is not allowed, +because that would open a security hole. .SH "Locking controls" .ad .fi diff --git a/gnu/dist/postfix/mantools/postlink b/gnu/dist/postfix/mantools/postlink index ecbc01be93e..75aa5d0b9ee 100755 --- a/gnu/dist/postfix/mantools/postlink +++ b/gnu/dist/postfix/mantools/postlink @@ -13,7 +13,7 @@ exec sed ' s/[<bB>]*cleanup[</bB>]*(8)/<a href="cleanup.8.html">&<\/a>/ s/[<bB>]*defer[</bB>]*(8)/<a href="defer.8.html">&<\/a>/ s/[<bB>]*error[</bB>]*(8)/<a href="error.8.html">&<\/a>/ - s/[<bB>]*flush[</bB>]*(8)/<a href="flushd.8.html">&<\/a>/ + s/[<bB>]*flush[</bB>]*(8)/<a href="flush.8.html">&<\/a>/ s/[<bB>]*local[</bB>]*(8)/<a href="local.8.html">&<\/a>/ s/[<bB>]*mas[-</bB>]*\n*[ <bB>]*ter[</bB>]*(8)/<a href="master.8.html">&<\/a>/ s/[<bB>]*pickup[</bB>]*(8)/<a href="pickup.8.html">&<\/a>/ @@ -44,6 +44,7 @@ exec sed ' s/[<bB>]*canonical[</bB>]*(5)/<a href="canonical.5.html">&<\/a>/ s/[<bB>]*etrn[</bB>]*(5)/<a href="etrn.5.html">&<\/a>/ s/[<bB>]*pcre[</bBiI>]*_[</iIbB>]*table[</bB>]*(5)/<a href="pcre_table.5.html">&<\/a>/ + s/[<bB>]*proxymap[</bB>]*(8)/<a href="proxymap.8.html">&<\/a>/ s/[<bB>]*reg[-</bB>]*\n*[ <bB>]*exp[</bBiI>]*_[</iIbB>]*table[</bB>]*(5)/<a href="regexp_table.5.html">&<\/a>/ s/[<bB>]*relocated[</bB>]*(5)/<a href="relocated.5.html">&<\/a>/ s/[<bB>]*trans[-</bB>]*\n*[ <bB>]*port[</bB>]*(5)/<a href="transport.5.html">&<\/a>/ diff --git a/gnu/dist/postfix/postfix-install b/gnu/dist/postfix/postfix-install index 964dcdacb98..6bb2044b29a 100644 --- a/gnu/dist/postfix/postfix-install +++ b/gnu/dist/postfix/postfix-install @@ -72,7 +72,7 @@ # default settings is as follows: # .IP install_root # Prefix that is prepended to the pathnames of installed files. -# This is useful for creating a pre-built package for distribution to +# Specify this ONLY when creating pre-built packages for distribution to # other systems. The built-in default is "/", the local root directory. # This parameter setting is not recorded in the installed main.cf file. # .IP tempdir @@ -191,17 +191,6 @@ test -x bin/postconf || { exit 1 } -# -# LINUX by default does not synchronously update directories - -# that's dangerous for mail. -# -if [ -f /usr/bin/chattr ] -then - CHATTR="/usr/bin/chattr +S" -else - CHATTR=echo -fi - case `uname -s` in HP-UX*) FMT=cat;; *) FMT=fmt;; @@ -290,9 +279,9 @@ esac # Prompts. -install_root_prompt="the prefix for installed file names. This is -useful if you are building ready-to-install packages for distribution -to other machines." +install_root_prompt="the prefix for installed file names. Specify +this ONLY if you are building ready-to-install packages for +distribution to other machines." tempdir_prompt="a directory for scratch files while installing Postfix. You must have write permission in this directory." @@ -600,7 +589,6 @@ do test -z "$owner" || chown $owner $path || exit 1 test -z "$group" || chgrp $group $path || exit 1 chmod $mode $path || exit 1 - $CHATTR $path >/dev/null 2>/dev/null } continue;; [fl]) ;; diff --git a/gnu/dist/postfix/proto/access b/gnu/dist/postfix/proto/access index eef4a4bf1ab..3468a359f93 100644 --- a/gnu/dist/postfix/proto/access +++ b/gnu/dist/postfix/proto/access @@ -136,7 +136,8 @@ # a content filter. More information about content filters # is in the Postfix FILTER_README file. # .sp -# Note: this action currently affects all recipients of the message. +# Note: this action overrides the \fBmain.cf content_filter\fR setting, +# and currently affects all recipients of the message. # .IP \fIrestriction...\fR # Apply the named UCE restriction(s) (\fBpermit\fR, \fBreject\fR, # \fBreject_unauth_destination\fR, and so on). diff --git a/gnu/dist/postfix/proto/regexp_table b/gnu/dist/postfix/proto/regexp_table index d275f7b8deb..6c7ab4553d0 100644 --- a/gnu/dist/postfix/proto/regexp_table +++ b/gnu/dist/postfix/proto/regexp_table @@ -76,7 +76,9 @@ # /^postmaster@/ OK # # # Protect your outgoing majordomo exploders -# /^(.*)-outgoing@(.*)$/!/^owner-/ 550 Use ${1}@${2} instead +# if !/^owner-/ +# /^(.*)-outgoing@(.*)$/ 550 Use ${1}@${2} instead +# endif # EXAMPLE HEADER FILTER MAP # # These were once common in junk mail. # /^Subject: make money fast/ REJECT diff --git a/gnu/dist/postfix/proto/transport b/gnu/dist/postfix/proto/transport index 243a4dcecfb..e9ca553a0c1 100644 --- a/gnu/dist/postfix/proto/transport +++ b/gnu/dist/postfix/proto/transport @@ -90,7 +90,7 @@ # dependent. In the case of SMTP, specify \fIhost\fR:\fIservice\fR for a # non-default server port, and use [\fIhost\fR] or [\fIhost\fR]:\fIport\fR # in order to disable MX (mail exchanger) DNS lookups. The [] form -# can also be used with IP addresses instead of hostnames. +# is required when you specify an IP address instead of a hostname. # # A null \fItransport\fR and null \fInexthop\fR result means "do # not change": use the delivery transport and nexthop information diff --git a/gnu/dist/postfix/src/bounce/.indent.pro b/gnu/dist/postfix/src/bounce/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/bounce/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/bounce/bounce_notify_util.c b/gnu/dist/postfix/src/bounce/bounce_notify_util.c index b8970025b02..e3319b863b5 100644 --- a/gnu/dist/postfix/src/bounce/bounce_notify_util.c +++ b/gnu/dist/postfix/src/bounce/bounce_notify_util.c @@ -177,11 +177,11 @@ /* bounce_mail_alloc - initialize */ static BOUNCE_INFO *bounce_mail_alloc(const char *service, - const char *queue_name, - const char *queue_id, - const char *encoding, - int flush, - BOUNCE_LOG *log_handle) + const char *queue_name, + const char *queue_id, + const char *encoding, + int flush, + BOUNCE_LOG *log_handle) { BOUNCE_INFO *bounce_info; int rec_type; @@ -531,6 +531,8 @@ int bounce_header_dsn(VSTREAM *bounce, BOUNCE_INFO *bounce_info) int bounce_recipient_dsn(VSTREAM *bounce, BOUNCE_INFO *bounce_info) { + char *fixed_mail_name; + post_mail_fputs(bounce, ""); #if 0 post_mail_fprintf(bounce, "Original-Recipient: rfc822; %s", "whatever"); @@ -540,8 +542,12 @@ int bounce_recipient_dsn(VSTREAM *bounce, BOUNCE_INFO *bounce_info) post_mail_fprintf(bounce, "Action: %s", bounce_info->flush ? "failed" : "delayed"); post_mail_fprintf(bounce, "Status: %s", bounce_info->log_handle->status); - bounce_print_wrap(bounce, bounce_info, "Diagnostic-Code: X-Postfix; %s", - bounce_info->log_handle->text); + /* RFC 1894: diagnostic-type is an RFC 822 atom. */ + fixed_mail_name = mystrdup(var_mail_name); + translit(fixed_mail_name, " \t\r\n()<>@,;:\\\".[]", "-----------------"); + bounce_print_wrap(bounce, bounce_info, "Diagnostic-Code: X-%s; %s", + fixed_mail_name, bounce_info->log_handle->text); + myfree(fixed_mail_name); #if 0 post_mail_fprintf(bounce, "Last-Attempt-Date: %s", bounce_info->log_handle->log_time); diff --git a/gnu/dist/postfix/src/cleanup/.indent.pro b/gnu/dist/postfix/src/cleanup/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/cleanup/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/cleanup/cleanup_message.c b/gnu/dist/postfix/src/cleanup/cleanup_message.c index 5fff208884a..b7283fde0fd 100644 --- a/gnu/dist/postfix/src/cleanup/cleanup_message.c +++ b/gnu/dist/postfix/src/cleanup/cleanup_message.c @@ -316,6 +316,9 @@ static int cleanup_act(CLEANUP_STATE *state, char *context, const char *buf, if (STREQUAL(value, "FILTER", command_len)) { if (*optional_text == 0) { msg_warn("missing FILTER command argument in %s map", map_class); + } else if (strchr(optional_text, ':') == 0) { + msg_warn("bad FILTER command %s in %s, need transport:destination", + optional_text, map_class); } else { if (state->filter) myfree(state->filter); diff --git a/gnu/dist/postfix/src/cleanup/cleanup_out_recipient.c b/gnu/dist/postfix/src/cleanup/cleanup_out_recipient.c index 427a1faf99a..97129487edc 100644 --- a/gnu/dist/postfix/src/cleanup/cleanup_out_recipient.c +++ b/gnu/dist/postfix/src/cleanup/cleanup_out_recipient.c @@ -69,25 +69,25 @@ void cleanup_out_recipient(CLEANUP_STATE *state, const char *orcpt, char **cpp; /* - * Apply the duplicate recipient filter before virtual expansion, so that - * we can distinguish between different addresses that map onto the same - * mailbox. The recipient will use our original recipient message header - * to figure things out. + * Distinguish between different original recipient addresses that map + * onto the same mailbox. The recipient will use our original recipient + * message header to figure things out. */ - if (been_here_fixed(state->dups, recip) != 0) - return; - if (cleanup_virt_alias_maps == 0) { - cleanup_out_string(state, REC_TYPE_ORCP, orcpt); - cleanup_out_string(state, REC_TYPE_RCPT, recip); - state->rcpt_count++; + if (been_here(state->dups, "%s\n%s", orcpt, recip) == 0) { + cleanup_out_string(state, REC_TYPE_ORCP, orcpt); + cleanup_out_string(state, REC_TYPE_RCPT, recip); + state->rcpt_count++; + } } else { argv = cleanup_map1n_internal(state, recip, cleanup_virt_alias_maps, cleanup_ext_prop_mask & EXT_PROP_VIRTUAL); for (cpp = argv->argv; *cpp; cpp++) { - cleanup_out_string(state, REC_TYPE_ORCP, orcpt); - cleanup_out_string(state, REC_TYPE_RCPT, *cpp); - state->rcpt_count++; + if (been_here(state->dups, "%s\n%s", orcpt, *cpp) == 0) { + cleanup_out_string(state, REC_TYPE_ORCP, orcpt); + cleanup_out_string(state, REC_TYPE_RCPT, *cpp); + state->rcpt_count++; + } } argv_free(argv); } diff --git a/gnu/dist/postfix/src/dns/.indent.pro b/gnu/dist/postfix/src/dns/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/dns/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/error/.indent.pro b/gnu/dist/postfix/src/error/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/error/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/flush/.indent.pro b/gnu/dist/postfix/src/flush/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/flush/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/fsstone/.indent.pro b/gnu/dist/postfix/src/fsstone/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/fsstone/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/global/.indent.pro b/gnu/dist/postfix/src/global/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/global/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/global/dict_proxy.c b/gnu/dist/postfix/src/global/dict_proxy.c new file mode 100644 index 00000000000..a60d0deb570 --- /dev/null +++ b/gnu/dist/postfix/src/global/dict_proxy.c @@ -0,0 +1,250 @@ +/*++ +/* NAME +/* dict_proxy 3 +/* SUMMARY +/* generic dictionary proxy client +/* SYNOPSIS +/* #include <dict_proxy.h> +/* +/* DICT *dict_proxy_open(map, open_flags, dict_flags) +/* const char *map; +/* int dummy; +/* int dict_flags; +/* DESCRIPTION +/* dict_proxy_open() relays read-only operations through +/* the Postfix proxymap server. +/* +/* The \fIopen_flags\fR argument must specify O_RDONLY. +/* +/* The connection to the Postfix proxymap server is automatically +/* closed after $ipc_idle seconds of idle time. +/* SECURITY +/* The proxy map server is not meant to be a trusted process. Proxy +/* maps must not be used to look up security sensitive information +/* such as user/group IDs, output files, or external commands. +/* SEE ALSO +/* dict(3) generic dictionary manager +/* clnt_stream(3) client endpoint connection management +/* DIAGNOSTICS +/* Fatal errors: out of memory, unimplemented operation, +/* bad request parameter, map not approved for proxy access. +/* LICENSE +/* .ad +/* .fi +/* The Secure Mailer license must be distributed with this software. +/* AUTHOR(S) +/* Wietse Venema +/* IBM T.J. Watson Research +/* P.O. Box 704 +/* Yorktown Heights, NY 10598, USA +/*--*/ + +/* System library. */ + +#include <sys_defs.h> +#include <errno.h> +#include <unistd.h> + +/* Utility library. */ + +#include <msg.h> +#include <mymalloc.h> +#include <stringops.h> +#include <vstring.h> +#include <vstream.h> +#include <attr.h> +#include <dict.h> + +/* Global library. */ + +#include <mail_proto.h> +#include <mail_params.h> +#include <clnt_stream.h> +#include <dict_proxy.h> + +/* Application-specific. */ + +typedef struct { + DICT dict; /* generic members */ + int in_flags; /* caller-specified flags */ + VSTRING *result; /* storage */ +} DICT_PROXY; + + /* + * SLMs. + */ +#define STR(x) vstring_str(x) +#define VSTREQ(v,s) (strcmp(STR(v),s) == 0) + + /* + * All proxied maps within a process share the same query/reply socket. + */ +static CLNT_STREAM *proxy_stream; + +/* dict_proxy_lookup - find table entry */ + +static const char *dict_proxy_lookup(DICT *dict, const char *key) +{ + const char *myname = "dict_proxy_lookup"; + DICT_PROXY *dict_proxy = (DICT_PROXY *) dict; + VSTREAM *stream; + int status; + + /* + * The client and server live in separate processes that may start and + * terminate independently. We cannot rely on a persistent connection, + * let alone on persistent state (such as a specific open table) that is + * associated with a specific connection. Each lookup needs to specify + * the table and the flags that were specified to dict_proxy_open(). + */ + VSTRING_RESET(dict_proxy->result); + VSTRING_TERMINATE(dict_proxy->result); + for (;;) { + stream = clnt_stream_access(proxy_stream); + errno = 0; + if (attr_print(stream, ATTR_FLAG_NONE, + ATTR_TYPE_STR, MAIL_ATTR_REQ, PROXY_REQ_LOOKUP, + ATTR_TYPE_STR, MAIL_ATTR_TABLE, dict->name, + ATTR_TYPE_NUM, MAIL_ATTR_FLAGS, dict_proxy->in_flags, + ATTR_TYPE_STR, MAIL_ATTR_KEY, key, + ATTR_TYPE_END) != 0 + || vstream_fflush(stream) + || attr_scan(stream, ATTR_FLAG_STRICT, + ATTR_TYPE_NUM, MAIL_ATTR_STATUS, &status, + ATTR_TYPE_STR, MAIL_ATTR_VALUE, dict_proxy->result, + ATTR_TYPE_END) != 2) { + if (msg_verbose || (errno != EPIPE && errno != ENOENT)) + msg_warn("%s: service %s: %m", myname, VSTREAM_PATH(stream)); + } else { + if (msg_verbose) + msg_info("%s: table=%s flags=0%o key=%s -> status=%d result=%s", + myname, dict->name, dict_proxy->in_flags, key, + status, STR(dict_proxy->result)); + switch (status) { + case PROXY_STAT_BAD: + msg_fatal("%s lookup failed for table \"%s\" key \"%s\": " + "invalid request", + MAIL_SERVICE_PROXYMAP, dict->name, key); + case PROXY_STAT_DENY: + msg_fatal("%s service is not configured for table \"%s\"", + MAIL_SERVICE_PROXYMAP, dict->name); + case PROXY_STAT_OK: + return (STR(dict_proxy->result)); + case PROXY_STAT_NOKEY: + dict_errno = 0; + return (0); + case PROXY_STAT_RETRY: + dict_errno = DICT_ERR_RETRY; + return (0); + default: + msg_warn("%s lookup failed for table \"%s\" key \"%s\": " + "unexpected reply status %d", + MAIL_SERVICE_PROXYMAP, dict->name, key, status); + } + } + clnt_stream_recover(proxy_stream); + sleep(1); /* XXX make configurable */ + } +} + +/* dict_proxy_close - disconnect */ + +static void dict_proxy_close(DICT *dict) +{ + DICT_PROXY *dict_proxy = (DICT_PROXY *) dict; + + vstring_free(dict_proxy->result); + dict_free(dict); +} + +/* dict_proxy_open - open remote map */ + +DICT *dict_proxy_open(const char *map, int open_flags, int dict_flags) +{ + const char *myname = "dict_proxy_open"; + DICT_PROXY *dict_proxy; + VSTREAM *stream; + int server_flags; + int status; + char *kludge = 0; + char *prefix; + + /* + * Sanity checks. + */ + if (dict_flags & DICT_FLAG_NO_PROXY) + msg_fatal("%s: proxy map must not be used with this map type", map); + if (open_flags != O_RDONLY) + msg_fatal("%s: proxy map open requires O_RDONLY access mode", map); + + /* + * Local initialization. + */ + dict_proxy = (DICT_PROXY *) + dict_alloc(DICT_TYPE_PROXY, map, sizeof(*dict_proxy)); + dict_proxy->dict.lookup = dict_proxy_lookup; + dict_proxy->dict.close = dict_proxy_close; + dict_proxy->in_flags = dict_flags; + dict_proxy->result = vstring_alloc(10); + + /* + * Use a shared stream for all proxied table lookups. + * + * XXX Use absolute pathname to make this work from non-daemon processes. + */ + if (proxy_stream == 0) { + if (access(MAIL_CLASS_PRIVATE "/" MAIL_SERVICE_PROXYMAP, F_OK) == 0) + prefix = MAIL_CLASS_PRIVATE; + else + prefix = kludge = concatenate(var_queue_dir, "/", + MAIL_CLASS_PRIVATE, (char *) 0); + proxy_stream = clnt_stream_create(prefix, + MAIL_SERVICE_PROXYMAP, + var_ipc_idle_limit); + if (kludge) + myfree(kludge); + } + + /* + * Establish initial contact and get the map type specific flags. + * + * XXX Should retrieve flags from local instance. + */ + for (;;) { + stream = clnt_stream_access(proxy_stream); + errno = 0; + if (attr_print(stream, ATTR_FLAG_NONE, + ATTR_TYPE_STR, MAIL_ATTR_REQ, PROXY_REQ_OPEN, + ATTR_TYPE_STR, MAIL_ATTR_TABLE, dict_proxy->dict.name, + ATTR_TYPE_NUM, MAIL_ATTR_FLAGS, dict_proxy->in_flags, + ATTR_TYPE_END) != 0 + || vstream_fflush(stream) + || attr_scan(stream, ATTR_FLAG_STRICT, + ATTR_TYPE_NUM, MAIL_ATTR_STATUS, &status, + ATTR_TYPE_NUM, MAIL_ATTR_FLAGS, &server_flags, + ATTR_TYPE_END) != 2) { + if (msg_verbose || (errno != EPIPE && errno != ENOENT)) + msg_warn("%s: service %s: %m", VSTREAM_PATH(stream), myname); + } else { + if (msg_verbose) + msg_info("%s: connect to map=%s status=%d server_flags=0%o", + myname, dict_proxy->dict.name, status, server_flags); + switch (status) { + case PROXY_STAT_BAD: + msg_fatal("%s open failed for table \"%s\": invalid request", + MAIL_SERVICE_PROXYMAP, dict_proxy->dict.name); + case PROXY_STAT_DENY: + msg_fatal("%s service is not configured for table \"%s\"", + MAIL_SERVICE_PROXYMAP, dict_proxy->dict.name); + case PROXY_STAT_OK: + dict_proxy->dict.flags = dict_proxy->in_flags | server_flags; + return (DICT_DEBUG (&dict_proxy->dict)); + default: + msg_warn("%s open failed for table \"%s\": unexpected status %d", + MAIL_SERVICE_PROXYMAP, dict_proxy->dict.name, status); + } + } + clnt_stream_recover(proxy_stream); + sleep(1); /* XXX make configurable */ + } +} diff --git a/gnu/dist/postfix/src/global/dict_proxy.h b/gnu/dist/postfix/src/global/dict_proxy.h new file mode 100644 index 00000000000..ce496260949 --- /dev/null +++ b/gnu/dist/postfix/src/global/dict_proxy.h @@ -0,0 +1,49 @@ +#ifndef _DICT_PROXY_H_INCLUDED_ +#define _DICT_PROXY_H_INCLUDED_ + +/*++ +/* NAME +/* dict_proxy 3h +/* SUMMARY +/* dictionary manager interface to PROXY maps +/* SYNOPSIS +/* #include <dict_proxy.h> +/* DESCRIPTION +/* .nf + + /* + * Utility library. + */ +#include <dict.h> + + /* + * External interface. + */ +#define DICT_TYPE_PROXY "proxy" + +extern DICT *dict_proxy_open(const char *, int, int); + + /* + * Protocol interface. + */ +#define PROXY_REQ_OPEN "open" +#define PROXY_REQ_LOOKUP "lookup" + +#define PROXY_STAT_OK 0 /* operation succeeded */ +#define PROXY_STAT_NOKEY 1 /* requested key not found */ +#define PROXY_STAT_RETRY 2 /* try lookup again later */ +#define PROXY_STAT_BAD 3 /* invalid request parameter */ +#define PROXY_STAT_DENY 4 /* table not approved for proxying */ + +/* LICENSE +/* .ad +/* .fi +/* The Secure Mailer license must be distributed with this software. +/* AUTHOR(S) +/* Wietse Venema +/* IBM T.J. Watson Research +/* P.O. Box 704 +/* Yorktown Heights, NY 10598, USA +/*--*/ + +#endif diff --git a/gnu/dist/postfix/src/global/header_opts.c b/gnu/dist/postfix/src/global/header_opts.c index f826dd57e75..4a88ccb283c 100644 --- a/gnu/dist/postfix/src/global/header_opts.c +++ b/gnu/dist/postfix/src/global/header_opts.c @@ -59,6 +59,7 @@ static HEADER_OPTS header_opts[] = { "Content-Transfer-Encoding", HDR_CONTENT_TRANSFER_ENCODING, HDR_OPT_MIME, "Content-Type", HDR_CONTENT_TYPE, HDR_OPT_MIME, "Delivered-To", HDR_DELIVERED_TO, 0, + "Disposition-Notification-To", HDR_DISP_NOTIFICATION, HDR_OPT_SENDER, "Date", HDR_DATE, 0, "Errors-To", HDR_ERRORS_TO, HDR_OPT_SENDER, "From", HDR_FROM, HDR_OPT_SENDER, diff --git a/gnu/dist/postfix/src/global/header_opts.h b/gnu/dist/postfix/src/global/header_opts.h index c5b8388c071..cb6a48279bb 100644 --- a/gnu/dist/postfix/src/global/header_opts.h +++ b/gnu/dist/postfix/src/global/header_opts.h @@ -53,6 +53,7 @@ typedef struct { #define HDR_CONTENT_DISPOSITION 28 #define HDR_CONTENT_ID 29 #define HDR_MIME_VERSION 30 +#define HDR_DISP_NOTIFICATION 31 /* * Header flags. diff --git a/gnu/dist/postfix/src/global/mail_conf_time.c b/gnu/dist/postfix/src/global/mail_conf_time.c index 8a160a16d9e..682a6863d89 100644 --- a/gnu/dist/postfix/src/global/mail_conf_time.c +++ b/gnu/dist/postfix/src/global/mail_conf_time.c @@ -140,7 +140,7 @@ static int get_def_time_unit(const char *name, const char *defval) { const char *cp; - for (cp = defval; /* void */ ; cp++) { + for (cp = mail_conf_eval(defval); /* void */ ; cp++) { if (*cp == 0) msg_panic("parameter %s: missing time unit in default value: %s", name, defval); diff --git a/gnu/dist/postfix/src/global/mail_dict.c b/gnu/dist/postfix/src/global/mail_dict.c new file mode 100644 index 00000000000..a576f589413 --- /dev/null +++ b/gnu/dist/postfix/src/global/mail_dict.c @@ -0,0 +1,57 @@ +/*++ +/* NAME +/* mail_dict 3 +/* SUMMARY +/* register application-specific dictionaries +/* SYNOPSIS +/* #include <mail_dict.h> +/* +/* void mail_dict_init() +/* DESCRIPTION +/* This module registers dictionary types that depend on higher-level +/* Postfix-specific interfaces and protocols. +/* LICENSE +/* .ad +/* .fi +/* The Secure Mailer license must be distributed with this software. +/* AUTHOR(S) +/* Wietse Venema +/* IBM T.J. Watson Research +/* P.O. Box 704 +/* Yorktown Heights, NY 10598, USA +/*--*/ + +/* System library. */ + +#include <sys_defs.h> + +/* Utility library. */ + +#include <dict.h> +#include <msg.h> + +/* Global library. */ + +#include <dict_proxy.h> +#include <mail_dict.h> + +typedef struct { + char *type; + struct DICT *(*open) (const char *, int, int); +} DICT_OPEN_INFO; + +static DICT_OPEN_INFO dict_open_info[] = { + DICT_TYPE_PROXY, dict_proxy_open, + /* XXX LDAP and MYSQL etc. should go here, too. */ + 0, +}; + +/* mail_dict_init - dictionaries that depend on Postfix-specific interfaces */ + +void mail_dict_init(void) +{ + DICT_OPEN_INFO *dp; + + for (dp = dict_open_info; dp->type; dp++) + dict_open_register(dp->type, dp->open); +} diff --git a/gnu/dist/postfix/src/global/mail_dict.h b/gnu/dist/postfix/src/global/mail_dict.h new file mode 100644 index 00000000000..62ad8810a7d --- /dev/null +++ b/gnu/dist/postfix/src/global/mail_dict.h @@ -0,0 +1,25 @@ +/*++ +/* NAME +/* mail_dict 3h +/* SUMMARY +/* register application-specific dictionaries +/* SYNOPSIS +/* #include <mail_dict.h> +/* DESCRIPTION +/* .nf + + /* + * External interface. + */ +extern void mail_dict_init(void); + +/* LICENSE +/* .ad +/* .fi +/* The Secure Mailer license must be distributed with this software. +/* AUTHOR(S) +/* Wietse Venema +/* IBM T.J. Watson Research +/* P.O. Box 704 +/* Yorktown Heights, NY 10598, USA +/*--*/ diff --git a/gnu/dist/postfix/src/global/mail_proto.h b/gnu/dist/postfix/src/global/mail_proto.h index 6f6ab8ced9b..3f392f87718 100644 --- a/gnu/dist/postfix/src/global/mail_proto.h +++ b/gnu/dist/postfix/src/global/mail_proto.h @@ -50,6 +50,7 @@ #define MAIL_SERVICE_ERROR "error" #define MAIL_SERVICE_FLUSH "flush" #define MAIL_SERVICE_RELAY "relay" +#define MAIL_SERVICE_PROXYMAP "proxymap" /* * Well-known socket or FIFO directories. The main difference is in file @@ -106,6 +107,9 @@ extern char *mail_pathname(const char *, const char *); #define MAIL_ATTR_ADDR "address" #define MAIL_ATTR_TRANSPORT "transport" #define MAIL_ATTR_NEXTHOP "nexthop" +#define MAIL_ATTR_TABLE "table" +#define MAIL_ATTR_KEY "key" +#define MAIL_ATTR_VALUE "value" /* * Suffixes for sender_name, sender_domain etc. diff --git a/gnu/dist/postfix/src/global/mail_version.h b/gnu/dist/postfix/src/global/mail_version.h index ecd20dda445..05fb9d28bbe 100644 --- a/gnu/dist/postfix/src/global/mail_version.h +++ b/gnu/dist/postfix/src/global/mail_version.h @@ -20,10 +20,10 @@ * Patches change the patchlevel and the release date. Snapshots change the * release date only, unless they include the same bugfix as a patch release. */ -#define MAIL_RELEASE_DATE "20021223" +#define MAIL_RELEASE_DATE "20030305" #define VAR_MAIL_VERSION "mail_version" -#define DEF_MAIL_VERSION "2.0.0.1" +#define DEF_MAIL_VERSION "2.0.6" extern char *var_mail_version; /* diff --git a/gnu/dist/postfix/src/global/pipe_command.c b/gnu/dist/postfix/src/global/pipe_command.c index b8f07823b8b..40026f2a49c 100644 --- a/gnu/dist/postfix/src/global/pipe_command.c +++ b/gnu/dist/postfix/src/global/pipe_command.c @@ -132,6 +132,7 @@ #include <iostuff.h> #include <timed_wait.h> #include <set_ugid.h> +#include <set_eugid.h> #include <argv.h> /* Global library. */ @@ -292,9 +293,28 @@ static int pipe_command_read(int fd, void *buf, unsigned len) } } +/* kill_command - terminate command forcibly */ + +static void kill_command(pid_t pid, int sig, uid_t kill_uid, gid_t kill_gid) +{ + pid_t saved_euid = geteuid(); + gid_t saved_egid = getegid(); + + /* + * Switch privileges to that of the child process. Terminate the child + * and its offspring. + */ + set_eugid(kill_uid, kill_gid); + if (kill(-pid, sig) < 0 && kill(pid, sig) < 0) + msg_warn("cannot kill process (group) %lu: %m", + (unsigned long) pid); + set_eugid(saved_euid, saved_egid); +} + /* pipe_command_wait_or_kill - wait for command with time limit, or kill it */ -static int pipe_command_wait_or_kill(pid_t pid, WAIT_STATUS_T *statusp, int sig) +static int pipe_command_wait_or_kill(pid_t pid, WAIT_STATUS_T *statusp, int sig, + uid_t kill_uid, gid_t kill_gid) { int maxtime = (pipe_command_timeout == 0) ? pipe_command_maxtime : 1; char *myname = "pipe_command_wait_or_kill"; @@ -309,7 +329,7 @@ static int pipe_command_wait_or_kill(pid_t pid, WAIT_STATUS_T *statusp, int sig) msg_info("%s: time limit exceeded", myname); pipe_command_timeout = 1; } - kill(-pid, sig); + kill_command(pid, sig, kill_uid, kill_gid); n = waitpid(pid, statusp, 0); } return (n); @@ -358,10 +378,14 @@ int pipe_command(VSTREAM *src, VSTRING *why,...) * truncated without too much loss. I could even argue that truncating * the amount of diagnostic output is a good thing to do, but I won't go * that far. + * + * Turn on non-blocking writes to the child process so that we can enforce + * timeouts after partial writes. */ if (pipe(cmd_in_pipe) < 0 || pipe(cmd_out_pipe) < 0) msg_fatal("%s: pipe: %m", myname); non_blocking(cmd_out_pipe[1], NON_BLOCKING); + non_blocking(cmd_in_pipe[1], NON_BLOCKING); /* * Spawn off a child process and irrevocably change privilege to the @@ -488,8 +512,9 @@ int pipe_command(VSTREAM *src, VSTRING *why,...) * not just the child process but also its offspring. */ if (pipe_command_timeout) - (void) kill(-pid, SIGKILL); - if (pipe_command_wait_or_kill(pid, &wait_status, SIGKILL) < 0) + kill_command(pid, SIGKILL, args.uid, args.gid); + if (pipe_command_wait_or_kill(pid, &wait_status, SIGKILL, + args.uid, args.gid) < 0) msg_fatal("wait: %m"); if (pipe_command_timeout) { vstring_sprintf(why, "Command time limit exceeded: \"%s\"%s%s", diff --git a/gnu/dist/postfix/src/global/rec_type.h b/gnu/dist/postfix/src/global/rec_type.h index a1465691536..452aac40cce 100644 --- a/gnu/dist/postfix/src/global/rec_type.h +++ b/gnu/dist/postfix/src/global/rec_type.h @@ -63,10 +63,13 @@ * this is "postfix internal" information. However, the pickup server has to * allow for the presence of A records in the extracted segment, because it * can be requested to re-process already queued mail with `postsuper -r'. + * + * Note: REC_TYPE_FILT and REC_TYPE_CONT are encoded with the same 'L' + * constant, and it is too late to change that now. */ #define REC_TYPE_ENVELOPE "MCTFILSDROWVA" #define REC_TYPE_CONTENT "XLN" -#define REC_TYPE_EXTRACT "EDROPreAFI" +#define REC_TYPE_EXTRACT "EDROPreAFIL" /* * The record at the beginning of the envelope segment specifies the message diff --git a/gnu/dist/postfix/src/global/tok822.h b/gnu/dist/postfix/src/global/tok822.h index 9a2b236e94d..23ddfbef0d9 100644 --- a/gnu/dist/postfix/src/global/tok822.h +++ b/gnu/dist/postfix/src/global/tok822.h @@ -87,8 +87,9 @@ extern VSTRING *tok822_internalize(VSTRING *, TOK822 *, int); #define TOK822_STR_WIPE (1<<0) #define TOK822_STR_TERM (1<<1) #define TOK822_STR_LINE (1<<2) +#define TOK822_STR_TRNC (1<<3) #define TOK822_STR_DEFL (TOK822_STR_WIPE | TOK822_STR_TERM) -#define TOK822_STR_HEAD (TOK822_STR_TERM | TOK822_STR_LINE) +#define TOK822_STR_HEAD (TOK822_STR_TERM | TOK822_STR_LINE | TOK822_STR_TRNC) /* * tok822_find.c diff --git a/gnu/dist/postfix/src/global/tok822_parse.in b/gnu/dist/postfix/src/global/tok822_parse.in index 28620abc468..acb91db1f9c 100644 --- a/gnu/dist/postfix/src/global/tok822_parse.in +++ b/gnu/dist/postfix/src/global/tok822_parse.in @@ -13,3 +13,35 @@ wietse@["stuff] named group: foo@bar, baz@barf; wietse@foo (wietse venema) +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, + yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + .yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + .yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + .yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy +"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz + .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz + .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz + .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, + yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + (yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy) +(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) +<1111111111111111111111111111111111111111111111111111111111111111111111111111> + <2222222222222222222222222222222222222222222222222222222222222222222222222222> + <3333333333333333333333333333333333333333333333333333333333333333333333333333> + <4444444444444444444444444444444444444444444444444444444444444444444444444444> + <> diff --git a/gnu/dist/postfix/src/global/tok822_parse.ref b/gnu/dist/postfix/src/global/tok822_parse.ref index 53521f3b558..e3a7ad59fa3 100644 --- a/gnu/dist/postfix/src/global/tok822_parse.ref +++ b/gnu/dist/postfix/src/global/tok822_parse.ref @@ -277,3 +277,141 @@ wietse@foo (wietse venema) Externalized, newlines inserted: wietse@foo (wietse venema) +>>>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy .yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy .yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy .yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy<<< + +Parse tree: + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + OP "<" + address + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + OP ">" + OP "," + address + atom "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" + OP "." + atom "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" + OP "." + atom "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" + OP "." + atom "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" + +Internalized: +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + +Externalized, no newlines inserted: +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + +Externalized, newlines inserted: +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, +yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + +>>>"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz<<< + +Parse tree: + address + quoted string "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz" + +Internalized: +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz + +Externalized, no newlines inserted: +"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz" + +Externalized, newlines inserted: +"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz" + +>>>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy)<<< + +Parse tree: + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + OP "<" + address + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + OP ">" + OP "," + address + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + OP "," + address + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + OP "," + address + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + OP "," + address + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + OP "," + address + atom "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" + comment "(yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy)" + +Internalized: +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy) + +unknown: warning: stripping too many comments from address: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx... +unknown: warning: stripping too many comments from address: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (yyyyyyyyyyyyyyyyyyyy... +Externalized, no newlines inserted: +<xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, <yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy> + +unknown: warning: stripping too many comments from address: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx... +unknown: warning: stripping too many comments from address: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (yyyyyyyyyyyyyyyyyyyy... +Externalized, newlines inserted: +<xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, +<yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy> + +>>>(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)<<< + +Parse tree: + comment "(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)" + +Internalized: +(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) + +Externalized, no newlines inserted: +(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) + +Externalized, newlines inserted: +(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) + +>>><1111111111111111111111111111111111111111111111111111111111111111111111111111> <2222222222222222222222222222222222222222222222222222222222222222222222222222> <3333333333333333333333333333333333333333333333333333333333333333333333333333> <4444444444444444444444444444444444444444444444444444444444444444444444444444> <><<< + +Parse tree: + OP "<" + address + atom "1111111111111111111111111111111111111111111111111111111111111111111111111111" + OP ">" + OP "<" + address + atom "2222222222222222222222222222222222222222222222222222222222222222222222222222" + OP ">" + OP "<" + address + atom "3333333333333333333333333333333333333333333333333333333333333333333333333333" + OP ">" + OP "<" + address + atom "4444444444444444444444444444444444444444444444444444444444444444444444444444" + OP ">" + OP "<" + OP ">" + +Internalized: +<1111111111111111111111111111111111111111111111111111111111111111111111111111> <2222222222222222222222222222222222222222222222222222222222222222222222222222> <3333333333333333333333333333333333333333333333333333333333333333333333333333> <4444444444444444444444444444444444444444444444444444444444444444444444444444> <> + +unknown: warning: stripping too many comments from address: <1111111111111111111111111111111111111111111111111111111111111111111111111111> <22222222222222222222... +Externalized, no newlines inserted: +<> + +unknown: warning: stripping too many comments from address: <1111111111111111111111111111111111111111111111111111111111111111111111111111> <22222222222222222222... +Externalized, newlines inserted: +<> + diff --git a/gnu/dist/postfix/src/global/virtual8_maps.c b/gnu/dist/postfix/src/global/virtual8_maps.c index 332cc8e04fa..fb05dc7d0d8 100644 --- a/gnu/dist/postfix/src/global/virtual8_maps.c +++ b/gnu/dist/postfix/src/global/virtual8_maps.c @@ -28,9 +28,7 @@ /* named dictionaries. /* The result is a handle that must be specified along with all /* other virtual8_maps_xxx() operations. -/* See dict_open(3) for a description of flags. virtual8_maps_create() -/* implicitly sets the DICT_FLAG_NO_REGSUB flag in order to disable -/* regular expression substitution into the lookup result. +/* See dict_open(3) for a description of flags. /* /* virtual8_maps_find() searches the specified list of dictionaries /* in the specified order for the named key. The result is in diff --git a/gnu/dist/postfix/src/global/virtual8_maps.h b/gnu/dist/postfix/src/global/virtual8_maps.h index 4261413b870..67c5df91029 100644 --- a/gnu/dist/postfix/src/global/virtual8_maps.h +++ b/gnu/dist/postfix/src/global/virtual8_maps.h @@ -20,7 +20,7 @@ * External interface. */ #define virtual8_maps_create(title, map_names, flags) \ - maps_create((title), (map_names), (flags) | DICT_FLAG_NO_REGSUB) + maps_create((title), (map_names), (flags)) extern const char *virtual8_maps_find(MAPS *, const char *); #define virtual8_maps_free(maps) maps_free((maps)) diff --git a/gnu/dist/postfix/src/lmtp/.indent.pro b/gnu/dist/postfix/src/lmtp/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/lmtp/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/local/.indent.pro b/gnu/dist/postfix/src/local/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/local/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/local/local.c b/gnu/dist/postfix/src/local/local.c index 4465de5d975..92dcd11cb4c 100644 --- a/gnu/dist/postfix/src/local/local.c +++ b/gnu/dist/postfix/src/local/local.c @@ -697,7 +697,7 @@ static void pre_init(char *unused_name, char **unused_argv) set_file_limit(var_mailbox_limit); } alias_maps = maps_create("aliases", var_alias_maps, - DICT_FLAG_LOCK | DICT_FLAG_NO_REGSUB); + DICT_FLAG_LOCK | DICT_FLAG_PARANOID); } /* main - pass control to the single-threaded skeleton */ diff --git a/gnu/dist/postfix/src/local/maildir.c b/gnu/dist/postfix/src/local/maildir.c index 02899263f67..99f625c99d9 100644 --- a/gnu/dist/postfix/src/local/maildir.c +++ b/gnu/dist/postfix/src/local/maildir.c @@ -40,7 +40,9 @@ /* System library. */ #include "sys_defs.h" +#include <sys/stat.h> #include <unistd.h> +#include <time.h> #include <errno.h> /* Utility library. */ @@ -83,7 +85,8 @@ int deliver_maildir(LOCAL_STATE state, USER_ATTR usr_attr, char *path) int mail_copy_status; int deliver_status; int copy_flags; - static int count; + struct stat st; + time_t starttime = time((time_t *) 0); /* * Make verbose logging easier to understand. @@ -124,20 +127,63 @@ int deliver_maildir(LOCAL_STATE state, USER_ATTR usr_attr, char *path) * use starttime.pid_count.host, where starttime is the time that your * process started, and count is the number of messages you've * delivered." + * + * Well, that stopped working on fast machines, and on operating systems + * that randomize process ID values. When creating a file in tmp/ we use + * the process ID because it still is an exclusive resource. When moving + * the file to new/ we use the device number and inode number. I do not + * care if this breaks on a remote AFS file system, because people should + * know better. + * + * On January 26, 2003, http://cr.yp.to/proto/maildir.html said: + * + * A unique name has three pieces, separated by dots. On the left is the + * result of time() or the second counter from gettimeofday(). On the + * right is the result of gethostname(). (To deal with invalid host + * names, replace / with \057 and : with \072.) In the middle is a + * delivery identifier, discussed below. + * + * [...] + * + * Modern delivery identifiers are created by concatenating enough of the + * following strings to guarantee uniqueness: + * + * [...] + * + * In, where n is (in hexadecimal) the UNIX inode number of this file. + * Unfortunately, inode numbers aren't always available through NFS. + * + * Vn, where n is (in hexadecimal) the UNIX device number of this file. + * Unfortunately, device numbers aren't always available through NFS. + * (Device numbers are also not helpful with the standard UNIX + * filesystem: a maildir has to be within a single UNIX device for link() + * and rename() to work.) + * + * [...] + * + * Pn, where n is (in decimal) the process ID. + * + * [...] */ #define STR vstring_str set_eugid(usr_attr.uid, usr_attr.gid); - vstring_sprintf(buf, "%ld.%d_%d.%s", (long) var_starttime, - var_pid, count++, get_hostname()); + vstring_sprintf(buf, "%lu.P%d.%s", + (unsigned long) starttime, var_pid, get_hostname()); tmpfile = concatenate(tmpdir, STR(buf), (char *) 0); - newfile = concatenate(newdir, STR(buf), (char *) 0); + newfile = 0; if ((dst = vstream_fopen(tmpfile, O_WRONLY | O_CREAT | O_EXCL, 0600)) == 0 && (errno != ENOENT || make_dirs(tmpdir, 0700) < 0 || (dst = vstream_fopen(tmpfile, O_WRONLY | O_CREAT | O_EXCL, 0600)) == 0)) { vstring_sprintf(why, "create %s: %m", tmpfile); + } else if (fstat(vstream_fileno(dst), &st) < 0) { + vstring_sprintf(why, "create %s: %m", tmpfile); } else { + vstring_sprintf(buf, "%lu.V%lxI%lx.%s", + (unsigned long) starttime, (unsigned long) st.st_dev, + (unsigned long) st.st_ino, get_hostname()); + newfile = concatenate(newdir, STR(buf), (char *) 0); if ((mail_copy_status = mail_copy(COPY_ATTR(state.msg_attr), dst, copy_flags, "\n", why)) == 0) { if (sane_link(tmpfile, newfile) < 0 @@ -172,6 +218,7 @@ int deliver_maildir(LOCAL_STATE state, USER_ATTR usr_attr, char *path) myfree(tmpdir); myfree(curdir); myfree(tmpfile); - myfree(newfile); + if (newfile) + myfree(newfile); return (deliver_status); } diff --git a/gnu/dist/postfix/src/master/.indent.pro b/gnu/dist/postfix/src/master/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/master/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/master/Makefile.in b/gnu/dist/postfix/src/master/Makefile.in index cf646935e72..eeb2ce986dd 100644 --- a/gnu/dist/postfix/src/master/Makefile.in +++ b/gnu/dist/postfix/src/master/Makefile.in @@ -242,6 +242,7 @@ multi_server.o: ../../include/mail_task.h multi_server.o: ../../include/debug_process.h multi_server.o: ../../include/mail_params.h multi_server.o: ../../include/mail_conf.h +multi_server.o: ../../include/mail_dict.h multi_server.o: ../../include/timed_ipc.h multi_server.o: ../../include/resolve_local.h multi_server.o: mail_flow.h @@ -270,6 +271,7 @@ single_server.o: ../../include/mail_params.h single_server.o: ../../include/mail_task.h single_server.o: ../../include/debug_process.h single_server.o: ../../include/mail_conf.h +single_server.o: ../../include/mail_dict.h single_server.o: ../../include/timed_ipc.h single_server.o: ../../include/resolve_local.h single_server.o: mail_flow.h @@ -298,6 +300,7 @@ trigger_server.o: ../../include/mail_params.h trigger_server.o: ../../include/mail_task.h trigger_server.o: ../../include/debug_process.h trigger_server.o: ../../include/mail_conf.h +trigger_server.o: ../../include/mail_dict.h trigger_server.o: ../../include/resolve_local.h trigger_server.o: mail_flow.h trigger_server.o: master_proto.h diff --git a/gnu/dist/postfix/src/master/multi_server.c b/gnu/dist/postfix/src/master/multi_server.c index 4275c0c6568..5e2b4872535 100644 --- a/gnu/dist/postfix/src/master/multi_server.c +++ b/gnu/dist/postfix/src/master/multi_server.c @@ -114,7 +114,7 @@ /* The var_idle_limit variable limits the time that a service /* receives no client connection requests before it commits suicide. /* This value is taken from the global \fBmain.cf\fR configuration -/* file. Setting \fBvar_use_limit\fR to zero disables the idle limit. +/* file. Setting \fBvar_idle_limit\fR to zero disables the idle limit. /* DIAGNOSTICS /* Problems and transactions are logged to \fBsyslogd\fR(8). /* SEE ALSO @@ -173,6 +173,7 @@ #include <debug_process.h> #include <mail_params.h> #include <mail_conf.h> +#include <mail_dict.h> #include <timed_ipc.h> #include <resolve_local.h> #include <mail_flow.h> @@ -437,6 +438,11 @@ NORETURN multi_server_main(int argc, char **argv, MULTI_SERVER_FN service,...) mail_conf_suck(); /* + * Register dictionaries that use higher-level interfaces and protocols. + */ + mail_dict_init(); + + /* * Pick up policy settings from master process. Shut up error messages to * stderr, because no-one is going to see them. */ @@ -619,14 +625,14 @@ NORETURN multi_server_main(int argc, char **argv, MULTI_SERVER_FN service,...) /* * Run pre-jail initialization. */ + if (chdir(var_queue_dir) < 0) + msg_fatal("chdir(\"%s\"): %m", var_queue_dir); if (pre_init) pre_init(multi_server_name, multi_server_argv); /* * Optionally, restrict the damage that this process can do. */ - if (chdir(var_queue_dir) < 0) - msg_fatal("chdir(\"%s\"): %m", var_queue_dir); resolve_local_init(); chroot_uid(root_dir, user_name); diff --git a/gnu/dist/postfix/src/master/single_server.c b/gnu/dist/postfix/src/master/single_server.c index 077d8cc702c..c2feb94a65a 100644 --- a/gnu/dist/postfix/src/master/single_server.c +++ b/gnu/dist/postfix/src/master/single_server.c @@ -167,6 +167,7 @@ #include <mail_task.h> #include <debug_process.h> #include <mail_conf.h> +#include <mail_dict.h> #include <timed_ipc.h> #include <resolve_local.h> #include <mail_flow.h> @@ -393,6 +394,11 @@ NORETURN single_server_main(int argc, char **argv, SINGLE_SERVER_FN service,...) mail_conf_suck(); /* + * Register dictionaries that use higher-level interfaces and protocols. + */ + mail_dict_init(); + + /* * Pick up policy settings from master process. Shut up error messages to * stderr, because no-one is going to see them. */ @@ -568,14 +574,14 @@ NORETURN single_server_main(int argc, char **argv, SINGLE_SERVER_FN service,...) /* * Run pre-jail initialization. */ + if (chdir(var_queue_dir) < 0) + msg_fatal("chdir(\"%s\"): %m", var_queue_dir); if (pre_init) pre_init(single_server_name, single_server_argv); /* * Optionally, restrict the damage that this process can do. */ - if (chdir(var_queue_dir) < 0) - msg_fatal("chdir(\"%s\"): %m", var_queue_dir); resolve_local_init(); chroot_uid(root_dir, user_name); diff --git a/gnu/dist/postfix/src/master/trigger_server.c b/gnu/dist/postfix/src/master/trigger_server.c index 08d42bf18cc..e7640ed2f2f 100644 --- a/gnu/dist/postfix/src/master/trigger_server.c +++ b/gnu/dist/postfix/src/master/trigger_server.c @@ -175,6 +175,7 @@ #include <mail_task.h> #include <debug_process.h> #include <mail_conf.h> +#include <mail_dict.h> #include <resolve_local.h> #include <mail_flow.h> @@ -389,6 +390,11 @@ NORETURN trigger_server_main(int argc, char **argv, TRIGGER_SERVER_FN service,.. mail_conf_suck(); /* + * Register dictionaries that use higher-level interfaces and protocols. + */ + mail_dict_init(); + + /* * Pick up policy settings from master process. Shut up error messages to * stderr, because no-one is going to see them. */ @@ -578,14 +584,14 @@ NORETURN trigger_server_main(int argc, char **argv, TRIGGER_SERVER_FN service,.. /* * Run pre-jail initialization. */ + if (chdir(var_queue_dir) < 0) + msg_fatal("chdir(\"%s\"): %m", var_queue_dir); if (pre_init) pre_init(trigger_server_name, trigger_server_argv); /* * Optionally, restrict the damage that this process can do. */ - if (chdir(var_queue_dir) < 0) - msg_fatal("chdir(\"%s\"): %m", var_queue_dir); resolve_local_init(); chroot_uid(root_dir, user_name); diff --git a/gnu/dist/postfix/src/nqmgr/.indent.pro b/gnu/dist/postfix/src/nqmgr/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/nqmgr/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/nqmgr/qmgr_deliver.c b/gnu/dist/postfix/src/nqmgr/qmgr_deliver.c index 759ab9fef8f..4f355d04862 100644 --- a/gnu/dist/postfix/src/nqmgr/qmgr_deliver.c +++ b/gnu/dist/postfix/src/nqmgr/qmgr_deliver.c @@ -154,10 +154,15 @@ static int qmgr_deliver_send_request(QMGR_ENTRY *entry, VSTREAM *stream) * queue name is user@nexthop, so that we can implement per-recipient * concurrency limits. However, the delivery agent protocol expects * nexthop only, so we must strip off the recipient local part. + * + * XXX Should have separate fields for queue name and for destination, so + * that we don't have to make a special case for the error delivery agent + * (where nexthop is arbitrary text). See also: qmgr_message.c. */ flags = message->inspect_xport ? DEL_REQ_FLAG_BOUNCE : DEL_REQ_FLAG_DEFLT; - nexthop = (cp = strrchr(entry->queue->name, '@')) != 0 && cp[1] ? + nexthop = strcmp(entry->queue->transport->name, MAIL_SERVICE_ERROR) != 0 + && (cp = strrchr(entry->queue->name, '@')) != 0 && cp[1] ? cp + 1 : entry->queue->name; attr_print(stream, ATTR_FLAG_MORE, ATTR_TYPE_NUM, MAIL_ATTR_FLAGS, flags, diff --git a/gnu/dist/postfix/src/nqmgr/qmgr_message.c b/gnu/dist/postfix/src/nqmgr/qmgr_message.c index 83b7d5c9e7b..943d3b75732 100644 --- a/gnu/dist/postfix/src/nqmgr/qmgr_message.c +++ b/gnu/dist/postfix/src/nqmgr/qmgr_message.c @@ -638,22 +638,6 @@ static void qmgr_message_resolve(QMGR_MESSAGE *message) for (recipient = list.info; recipient < list.info + list.len; recipient++) { /* - * This may be a bit late in the game, but it is the most convenient - * place to scrutinize the destination address syntax. We have a - * complete queue file, so bouncing is easy. That luxury is not - * available to the cleanup service. The main issue is that we want - * to have this test in one place, instead of having to do this in - * every front-ent program. - */ - if ((at = strrchr(recipient->address, '@')) != 0 - && (at + 1)[strspn(at + 1, "[]0123456789.")] != 0 - && valid_hostname(at + 1, DONT_GRIPE) == 0) { - qmgr_bounce_recipient(message, recipient, - "bad host/domain syntax: \"%s\"", at + 1); - continue; - } - - /* * Resolve the destination to (transport, nexthop, address). The * result address may differ from the one specified by the sender. */ @@ -736,9 +720,12 @@ static void qmgr_message_resolve(QMGR_MESSAGE *message) * on the recipient delimiter if one is defined, but doing a proper * job requires knowledge of local aliases. Yuck! I don't want to * duplicate delivery-agent specific knowledge in the queue manager. + * * XXX The nexthop field is overloaded to serve as destination and as * queue name. Should have separate fields for queue name and for - * destination. + * destination, so that we don't have to make a special case for the + * error delivery agent (where nexthop is arbitrary text). See also: + * qmgr_deliver.c. */ at = strrchr(STR(reply.recipient), '@'); len = (at ? (at - STR(reply.recipient)) : strlen(STR(reply.recipient))); @@ -753,7 +740,8 @@ static void qmgr_message_resolve(QMGR_MESSAGE *message) transport = qmgr_transport_create(STR(reply.transport)); queue = 0; } - if (transport->recipient_limit == 1) { + if (strcmp(transport->name, MAIL_SERVICE_ERROR) != 0 + && transport->recipient_limit == 1) { VSTRING_SPACE(reply.nexthop, len + 2); memmove(STR(reply.nexthop) + len + 1, STR(reply.nexthop), LEN(reply.nexthop) + 1); diff --git a/gnu/dist/postfix/src/pickup/.indent.pro b/gnu/dist/postfix/src/pickup/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/pickup/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/pickup/pickup.c b/gnu/dist/postfix/src/pickup/pickup.c index b8f697b281a..c87206bf4b4 100644 --- a/gnu/dist/postfix/src/pickup/pickup.c +++ b/gnu/dist/postfix/src/pickup/pickup.c @@ -224,7 +224,12 @@ static int copy_segment(VSTREAM *qfile, VSTREAM *cleanup, PICKUP_INFO *info, if (type == REC_TYPE_INSP) /* Use current content inspection settings instead. */ continue; - if (type == REC_TYPE_FILT) + + /* + * XXX Workaround: REC_TYPE_FILT (used in envelopes) == REC_TYPE_CONT + * (used in message content). + */ + if (type == REC_TYPE_FILT && *expected != REC_TYPE_CONTENT[0]) /* Use current content filter settings instead. */ continue; else { diff --git a/gnu/dist/postfix/src/pipe/.indent.pro b/gnu/dist/postfix/src/pipe/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/pipe/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postalias/.indent.pro b/gnu/dist/postfix/src/postalias/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postalias/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postalias/Makefile.in b/gnu/dist/postfix/src/postalias/Makefile.in index 465ba2c3819..acb8e86b982 100644 --- a/gnu/dist/postfix/src/postalias/Makefile.in +++ b/gnu/dist/postfix/src/postalias/Makefile.in @@ -95,6 +95,7 @@ postalias.o: ../../include/set_eugid.h postalias.o: ../../include/tok822.h postalias.o: ../../include/resolve_clnt.h postalias.o: ../../include/mail_conf.h +postalias.o: ../../include/mail_dict.h postalias.o: ../../include/mail_params.h postalias.o: ../../include/mkmap.h postalias.o: ../../include/dict.h diff --git a/gnu/dist/postfix/src/postalias/postalias.c b/gnu/dist/postfix/src/postalias/postalias.c index cadb61a7fd4..4a88d6e25d6 100644 --- a/gnu/dist/postfix/src/postalias/postalias.c +++ b/gnu/dist/postfix/src/postalias/postalias.c @@ -169,6 +169,7 @@ #include <tok822.h> #include <mail_conf.h> +#include <mail_dict.h> #include <mail_params.h> #include <mkmap.h> @@ -587,6 +588,7 @@ int main(int argc, char **argv) } } mail_conf_read(); + mail_dict_init(); /* * Use the map type specified by the user, or fall back to a default diff --git a/gnu/dist/postfix/src/postcat/.indent.pro b/gnu/dist/postfix/src/postcat/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postcat/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postconf/.indent.pro b/gnu/dist/postfix/src/postconf/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postconf/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postconf/Makefile.in b/gnu/dist/postfix/src/postconf/Makefile.in index 7732636b896..198be229e75 100644 --- a/gnu/dist/postfix/src/postconf/Makefile.in +++ b/gnu/dist/postfix/src/postconf/Makefile.in @@ -88,6 +88,7 @@ postconf.o: ../../include/vstring_vstream.h postconf.o: ../../include/myflock.h postconf.o: ../../include/mynetworks.h postconf.o: ../../include/mail_conf.h +postconf.o: ../../include/mail_dict.h postconf.o: ../../include/mail_proto.h postconf.o: ../../include/iostuff.h postconf.o: ../../include/attr.h diff --git a/gnu/dist/postfix/src/postconf/postconf.c b/gnu/dist/postfix/src/postconf/postconf.c index 662c66b1d6c..91854d52223 100644 --- a/gnu/dist/postfix/src/postconf/postconf.c +++ b/gnu/dist/postfix/src/postconf/postconf.c @@ -47,7 +47,10 @@ /* stale lock files that were left behind after abnormal termination. /* .RE /* .IP \fB-m\fR -/* List the names of all supported lookup table types. +/* List the names of all supported lookup table types. Postfix +/* lookup tables are specified as \fItype\fB:\fIname\fR, where +/* \fItype\fR is one of the types listed below. The table \fIname\fR +/* syntax depends on the lookup table type. /* .RS /* .IP \fBbtree\fR /* A sorted, balanced tree structure. @@ -73,6 +76,10 @@ /* .IP "\fBpcre\fR (read-only)" /* A lookup table based on Perl Compatible Regular Expressions. The /* file format is described in \fBpcre_table\fR(5). +/* .IP "\fBproxy\fR (read-only)" +/* A lookup table that is implemented via the Postfix +/* \fBproxymap\fR(8) service. The table name syntax is +/* \fItype\fB:\fIname\fR. /* .IP "\fBregexp\fR (read-only)" /* A lookup table based on regular expressions. The file format is /* described in \fBregexp_table\fR(5). @@ -156,6 +163,7 @@ #include <mynetworks.h> #include <mail_conf.h> +#include <mail_dict.h> #include <mail_proto.h> #include <mail_version.h> #include <mail_params.h> @@ -921,6 +929,7 @@ int main(int argc, char **argv) * If showing map types, show them and exit */ if (mode & SHOW_MAPS) { + mail_dict_init(); show_maps(); } diff --git a/gnu/dist/postfix/src/postdrop/.indent.pro b/gnu/dist/postfix/src/postdrop/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postdrop/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postfix/.indent.pro b/gnu/dist/postfix/src/postfix/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postfix/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postkick/.indent.pro b/gnu/dist/postfix/src/postkick/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postkick/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postlock/.indent.pro b/gnu/dist/postfix/src/postlock/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postlock/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postlog/.indent.pro b/gnu/dist/postfix/src/postlog/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postlog/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postmap/.indent.pro b/gnu/dist/postfix/src/postmap/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postmap/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postmap/Makefile.in b/gnu/dist/postfix/src/postmap/Makefile.in index 66ebf9f744b..5dbb4ccfe3b 100644 --- a/gnu/dist/postfix/src/postmap/Makefile.in +++ b/gnu/dist/postfix/src/postmap/Makefile.in @@ -93,6 +93,7 @@ postmap.o: ../../include/split_at.h postmap.o: ../../include/vstring_vstream.h postmap.o: ../../include/set_eugid.h postmap.o: ../../include/mail_conf.h +postmap.o: ../../include/mail_dict.h postmap.o: ../../include/mail_params.h postmap.o: ../../include/mkmap.h postmap.o: ../../include/dict.h diff --git a/gnu/dist/postfix/src/postmap/postmap.c b/gnu/dist/postfix/src/postmap/postmap.c index 0d7ad8400cd..cd3d6887e00 100644 --- a/gnu/dist/postfix/src/postmap/postmap.c +++ b/gnu/dist/postfix/src/postmap/postmap.c @@ -181,6 +181,7 @@ /* Global library. */ #include <mail_conf.h> +#include <mail_dict.h> #include <mail_params.h> #include <mkmap.h> @@ -537,6 +538,7 @@ int main(int argc, char **argv) } } mail_conf_read(); + mail_dict_init(); /* * Use the map type specified by the user, or fall back to a default diff --git a/gnu/dist/postfix/src/postqueue/postqueue.c b/gnu/dist/postfix/src/postqueue/postqueue.c index 41b15b44c66..5189518b4a8 100644 --- a/gnu/dist/postfix/src/postqueue/postqueue.c +++ b/gnu/dist/postfix/src/postqueue/postqueue.c @@ -11,8 +11,11 @@ /* \fBpostqueue\fR [\fB-c \fIconfig_dir\fR] \fB-s \fIsite\fR /* DESCRIPTION /* The \fBpostqueue\fR program implements the Postfix user interface -/* for queue management. It implements all the operations that are +/* for queue management. It implements operations that are /* traditionally available via the \fBsendmail\fR(1) command. +/* See the \fBpostsuper\fR(1) command for queue operations +/* that require super-user privileges such as deleting a message +/* from the queue or changing the status of a message. /* /* The following options are recognized: /* .IP "\fB-c \fIconfig_dir\fR" @@ -94,7 +97,8 @@ /* specifies the domains that Postfix accepts in the SMTP \fBETRN\fR /* request and in the \fBsendmail -qR\fR command. /* SEE ALSO -/* sendmail(8) sendmail-compatible user interface +/* sendmail(1) sendmail-compatible user interface +/* postsuper(1) privileged queue operations /* qmgr(8) queue manager /* showq(8) list mail queue /* flush(8) fast flush service diff --git a/gnu/dist/postfix/src/postsuper/.indent.pro b/gnu/dist/postfix/src/postsuper/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postsuper/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postsuper/postsuper.c b/gnu/dist/postfix/src/postsuper/postsuper.c index 46876ee9d28..7c318f90bd5 100644 --- a/gnu/dist/postfix/src/postsuper/postsuper.c +++ b/gnu/dist/postfix/src/postsuper/postsuper.c @@ -12,6 +12,8 @@ /* DESCRIPTION /* The \fBpostsuper\fR command does maintenance jobs on the Postfix /* queue. Use of the command is restricted to the superuser. +/* See the \fBpostqueue\fR command for unprivileged queue operations +/* such as listing or flushing the mail queue. /* /* By default, \fBpostsuper\fR performs the operations requested with the /* \fB-s\fR and \fB-p\fR command-line options on all Postfix queue @@ -162,6 +164,9 @@ /* .IP \fBhash_queue_names\fR /* The names of queues that are organized into multiple levels of /* subdirectories. +/* SEE ALSO +/* sendmail(1) sendmail-compatible user interface +/* postqueue(1) unprivileged queue operations /* LICENSE /* .ad /* .fi diff --git a/gnu/dist/postfix/src/proxymap/.indent.pro b/gnu/dist/postfix/src/proxymap/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/proxymap/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/proxymap/Makefile.in b/gnu/dist/postfix/src/proxymap/Makefile.in new file mode 100644 index 00000000000..91d20d8384f --- /dev/null +++ b/gnu/dist/postfix/src/proxymap/Makefile.in @@ -0,0 +1,75 @@ +SHELL = /bin/sh +SRCS = proxymap.c +OBJS = proxymap.o +HDRS = +TESTSRC = +WARN = -W -Wformat -Wimplicit -Wmissing-prototypes \ + -Wparentheses -Wstrict-prototypes -Wswitch -Wuninitialized \ + -Wunused +DEFS = -I. -I$(INC_DIR) -D$(SYSTYPE) +CFLAGS = $(DEBUG) $(OPT) $(DEFS) +TESTPROG= +PROG = proxymap +INC_DIR = ../../include +LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a + +.c.o:; $(CC) $(CFLAGS) -c $*.c + +$(PROG): $(OBJS) $(LIBS) + $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + +Makefile: Makefile.in + (set -e; echo "# DO NOT EDIT"; $(OPTS) $(SHELL) ../../makedefs && cat $?) >$@ + +test: $(TESTPROG) + +tests: test + +update: ../../libexec/$(PROG) + +../../libexec/$(PROG): $(PROG) + cp $(PROG) ../../libexec + +printfck: $(OBJS) $(PROG) + rm -rf printfck + mkdir printfck + sed '1,/^# do not edit/!d' Makefile >printfck/Makefile + set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done + cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o` + +lint: + lint $(DEFS) $(SRCS) $(LINTFIX) + +clean: + rm -f *.o *core $(PROG) $(TESTPROG) junk + rm -rf printfck + +tidy: clean + +depend: $(MAKES) + (sed '1,/^# do not edit/!d' Makefile.in; \ + set -e; for i in [a-z][a-z0-9]*.c; do \ + $(CC) -E $(DEFS) $(INCL) $$i | sed -n -e '/^# *1 *"\([^"]*\)".*/{' \ + -e 's//'`echo $$i|sed 's/c$$/o/'`': \1/' -e 'p' -e '}'; \ + done) | grep -v '[.][o][:][ ][/]' >$$$$ && mv $$$$ Makefile.in + @$(EXPORT) make -f Makefile.in Makefile 1>&2 + +# do not edit below this line - it is generated by 'make depend' +proxymap.o: proxymap.c +proxymap.o: ../../include/sys_defs.h +proxymap.o: ../../include/msg.h +proxymap.o: ../../include/mymalloc.h +proxymap.o: ../../include/vstring.h +proxymap.o: ../../include/vbuf.h +proxymap.o: ../../include/htable.h +proxymap.o: ../../include/stringops.h +proxymap.o: ../../include/dict.h +proxymap.o: ../../include/vstream.h +proxymap.o: ../../include/argv.h +proxymap.o: ../../include/mail_conf.h +proxymap.o: ../../include/mail_params.h +proxymap.o: ../../include/mail_proto.h +proxymap.o: ../../include/iostuff.h +proxymap.o: ../../include/attr.h +proxymap.o: ../../include/dict_proxy.h +proxymap.o: ../../include/mail_server.h diff --git a/gnu/dist/postfix/src/proxymap/proxymap.c b/gnu/dist/postfix/src/proxymap/proxymap.c new file mode 100644 index 00000000000..362079da203 --- /dev/null +++ b/gnu/dist/postfix/src/proxymap/proxymap.c @@ -0,0 +1,418 @@ +/*++ +/* NAME +/* proxymap 8 +/* SUMMARY +/* Postfix lookup table proxy server +/* SYNOPSIS +/* \fBproxymap\fR [generic Postfix daemon options] +/* DESCRIPTION +/* The \fBproxymap\fR server provides read-only table +/* lookup service to Postfix client processes. The purpose +/* of the service is: +/* .IP \(bu +/* To overcome chroot restrictions. For example, a chrooted SMTP +/* server needs access to the system passwd file in order to +/* reject mail for non-existent local addresses, but it is not +/* practical to maintain a copy of the passwd file in the chroot +/* jail. The solution: +/* .sp +/* local_recipient_maps = +/* .ti +4 +/* proxy:unix:passwd.byname $alias_maps +/* .IP \(bu +/* To consolidate the number of open lookup tables by sharing +/* one open table among multiple processes. For example, making +/* mysql connections from every Postfix daemon process results +/* in "too many connections" errors. The solution: +/* .sp +/* virtual_alias_maps = +/* .ti +4 +/* proxy:mysql:/etc/postfix/virtual_alias.cf +/* .sp +/* The total number of connections is limited by the number of +/* proxymap server processes. +/* .PP +/* The proxymap server implements the following requests: +/* .IP "\fBPROXY_REQ_OPEN\fI maptype:mapname flags\fR" +/* Open the table with type \fImaptype\fR and name \fImapname\fR, +/* as controlled by \fIflags\fR. +/* The reply is the request completion status code (below) and the +/* map type dependent flags. +/* .IP "\fBPROXY_REQ_LOOKUP\fI maptype:mapname flags key\fR" +/* Look up the data stored under the requested key. +/* The reply is the request completion status code (below) and +/* the lookup result value. +/* The \fImaptype:mapname\fR and \fIflags\fR are the same +/* as with the \fBPROXY_REQ_OPEN\fR request. +/* .PP +/* There is no close command, nor are tables implicitly closed +/* when a client disconnects. One of the purposes of the proxymap +/* server is to share tables among multiple client processes. +/* +/* The request completion status code is one of: +/* .IP \fBPROXY_STAT_OK\fR +/* The specified table was opened, or the requested entry was found. +/* .IP \fBPROXY_STAT_NOKEY\fR +/* The requested table entry was not found. +/* .IP \fBPROXY_STAT_BAD\fR +/* The request was rejected (bad request parameter value). +/* .IP \fBPROXY_STAT_RETRY\fR +/* The lookup request could not be completed. +/* .IP \fBPROXY_STAT_DENY\fR +/* The specified table was not approved for access via the +/* proxymap service. +/* SERVER PROCESS MANAGEMENT +/* .ad +/* .fi +/* The proxymap servers run under control by the Postfix master +/* server. Each server can handle multiple simultaneous connections. +/* When all servers are busy while a client connects, the master +/* creates a new proxymap server process, provided that the proxymap +/* server process limit is not exceeded. +/* Each proxymap server terminates after serving +/* at least \fB$max_use\fR clients or after \fB$max_idle\fR seconds +/* of idle time. +/* SECURITY +/* .ad +/* .fi +/* The proxymap server opens only tables that are approved via the +/* \fBproxy_read_maps\fR configuration parameter, does not talk to +/* users, and can run at fixed low privilege, chrooted or not. +/* +/* The proxymap server is not a trusted daemon process, and must +/* not be used to look up sensitive information such as user or +/* group IDs, mailbox file/directory names or external commands. +/* DIAGNOSTICS +/* Problems and transactions are logged to \fBsyslogd\fR(8). +/* BUGS +/* The proxymap server provides service to multiple clients, +/* and must therefore not be used for tables that have high-latency +/* lookups. +/* CONFIGURATION PARAMETERS +/* .ad +/* .fi +/* The following main.cf parameters are especially relevant +/* to this program. Use the \fBpostfix reload\fR command +/* after a configuration change. +/* .IP \fBproxy_read_maps\fR +/* A list of zero or more parameter values that may contain +/* references to Postfix lookup tables. Only table references +/* that begin with \fBproxy:\fR are approved for read-only +/* access via the proxymap server. +/* SEE ALSO +/* dict_proxy(3) proxy map client +/* LICENSE +/* .ad +/* .fi +/* The Secure Mailer license must be distributed with this software. +/* AUTHOR(S) +/* Wietse Venema +/* IBM T.J. Watson Research +/* P.O. Box 704 +/* Yorktown Heights, NY 10598, USA +/*--*/ + +/* System library. */ + +#include <sys_defs.h> +#include <string.h> +#include <stdlib.h> +#include <unistd.h> + +/* Utility library. */ + +#include <msg.h> +#include <mymalloc.h> +#include <vstring.h> +#include <htable.h> +#include <stringops.h> +#include <dict.h> + +/* Global library. */ + +#include <mail_conf.h> +#include <mail_params.h> +#include <mail_proto.h> +#include <dict_proxy.h> + +/* Server skeleton. */ + +#include <mail_server.h> + +/* Application-specific. */ + + /* + * XXX All but the last are needed here so that $name expansion dependencies + * aren't too broken. The fix is to gather all parameter default settings in + * one place. + */ +char *var_local_rcpt_maps; +char *var_virt_alias_maps; +char *var_virt_alias_doms; +char *var_virt_mailbox_maps; +char *var_virt_mailbox_doms; +char *var_relay_rcpt_maps; +char *var_relay_domains; +char *var_canonical_maps; +char *var_send_canon_maps; +char *var_rcpt_canon_maps; +char *var_relocated_maps; +char *var_transport_maps; +char *var_proxy_read_maps; + + /* + * The pre-approved, pre-parsed list of maps. + */ +static HTABLE *proxy_read_maps; + + /* + * Shared and static to reduce memory allocation overhead. + */ +static VSTRING *request; +static VSTRING *request_map; +static VSTRING *request_key; +static VSTRING *map_type_name_flags; + + /* + * Silly little macros. + */ +#define STR(x) vstring_str(x) +#define VSTREQ(x,y) (strcmp(STR(x),y) == 0) + +/* proxy_map_find - look up or open table */ + +static DICT *proxy_map_find(const char *map_type_name, int request_flags, + int *statp) +{ + DICT *dict; + +#define PROXY_COLON DICT_TYPE_PROXY ":" +#define PROXY_COLON_LEN (sizeof(PROXY_COLON) - 1) +#define READ_OPEN_FLAGS O_RDONLY + + /* + * Canonicalize the map name. If the map is not on the approved list, + * deny the request. + */ +#define PROXY_MAP_FIND_ERROR_RETURN(x) { *statp = (x); return (0); } + + while (strncmp(map_type_name, PROXY_COLON, PROXY_COLON_LEN) == 0) + map_type_name += PROXY_COLON_LEN; + if (strchr(map_type_name, ':') == 0) + PROXY_MAP_FIND_ERROR_RETURN(PROXY_STAT_BAD); + if (htable_locate(proxy_read_maps, map_type_name) == 0) { + msg_warn("request for unapproved table: \"%s\"", map_type_name); + msg_warn("to approve this table for %s access, list %s:%s in %s:%s", + MAIL_SERVICE_PROXYMAP, DICT_TYPE_PROXY, map_type_name, + MAIN_CONF_FILE, VAR_PROXY_READ_MAPS); + PROXY_MAP_FIND_ERROR_RETURN(PROXY_STAT_DENY); + } + + /* + * Open one instance of a map for each combination of name+flags. + */ + vstring_sprintf(map_type_name_flags, "%s:%o", + map_type_name, request_flags); + if ((dict = dict_handle(STR(map_type_name_flags))) == 0) + dict = dict_open(map_type_name, READ_OPEN_FLAGS, request_flags); + if (dict == 0) + msg_panic("proxy_map_find: dict_open null result"); + dict_register(STR(map_type_name_flags), dict); + return (dict); +} + +/* proxymap_lookup_service - remote lookup service */ + +static void proxymap_lookup_service(VSTREAM *client_stream) +{ + int request_flags; + DICT *dict; + const char *reply_value; + int reply_status; + + /* + * Process the request. + */ + if (attr_scan(client_stream, ATTR_FLAG_STRICT, + ATTR_TYPE_STR, MAIL_ATTR_TABLE, request_map, + ATTR_TYPE_NUM, MAIL_ATTR_FLAGS, &request_flags, + ATTR_TYPE_STR, MAIL_ATTR_KEY, request_key, + ATTR_TYPE_END) != 3) { + reply_status = PROXY_STAT_BAD; + reply_value = ""; + } else if ((dict = proxy_map_find(STR(request_map), request_flags, + &reply_status)) == 0) { + reply_value = ""; + } else if ((reply_value = dict_get(dict, STR(request_key))) != 0) { + reply_status = PROXY_STAT_OK; + } else if (dict_errno == 0) { + reply_status = PROXY_STAT_NOKEY; + reply_value = ""; + } else { + reply_status = PROXY_STAT_RETRY; + reply_value = ""; + } + + /* + * Respond to the client. + */ + attr_print(client_stream, ATTR_FLAG_NONE, + ATTR_TYPE_NUM, MAIL_ATTR_STATUS, reply_status, + ATTR_TYPE_STR, MAIL_ATTR_VALUE, reply_value, + ATTR_TYPE_END); +} + +/* proxymap_open_service - open remote lookup table */ + +static void proxymap_open_service(VSTREAM *client_stream) +{ + int request_flags; + DICT *dict; + int reply_status; + int reply_flags; + + /* + * Process the request. + */ + if (attr_scan(client_stream, ATTR_FLAG_STRICT, + ATTR_TYPE_STR, MAIL_ATTR_TABLE, request_map, + ATTR_TYPE_NUM, MAIL_ATTR_FLAGS, &request_flags, + ATTR_TYPE_END) != 2) { + reply_status = PROXY_STAT_BAD; + reply_flags = 0; + } else if ((dict = proxy_map_find(STR(request_map), request_flags, + &reply_status)) == 0) { + reply_flags = 0; + } else { + reply_status = PROXY_STAT_OK; + reply_flags = dict->flags; + } + + /* + * Respond to the client. + */ + attr_print(client_stream, ATTR_FLAG_NONE, + ATTR_TYPE_NUM, MAIL_ATTR_STATUS, reply_status, + ATTR_TYPE_NUM, MAIL_ATTR_FLAGS, reply_flags, + ATTR_TYPE_END); +} + +/* proxymap_service - perform service for client */ + +static void proxymap_service(VSTREAM *client_stream, char *unused_service, + char **argv) +{ + + /* + * Sanity check. This service takes no command-line arguments. + */ + if (argv[0]) + msg_fatal("unexpected command-line argument: %s", argv[0]); + + /* + * This routine runs whenever a client connects to the socket dedicated + * to the proxymap service. All connection-management stuff is handled by + * the common code in multi_server.c. + */ + if (attr_scan(client_stream, + ATTR_FLAG_MORE | ATTR_FLAG_STRICT, + ATTR_TYPE_STR, MAIL_ATTR_REQ, request, + ATTR_TYPE_END) == 1) { + if (VSTREQ(request, PROXY_REQ_LOOKUP)) { + proxymap_lookup_service(client_stream); + } else if (VSTREQ(request, PROXY_REQ_OPEN)) { + proxymap_open_service(client_stream); + } else { + msg_warn("unrecognized request: \"%s\", ignored", STR(request)); + attr_print(client_stream, ATTR_FLAG_NONE, + ATTR_TYPE_NUM, MAIL_ATTR_STATUS, PROXY_STAT_BAD, + ATTR_TYPE_END); + } + } + vstream_fflush(client_stream); +} + +/* dict_proxy_open - intercept remote map request from inside library */ + +DICT *dict_proxy_open(const char *map, int open_flags, int dict_flags) +{ + if (msg_verbose) + msg_info("dict_proxy_open(%s, 0%o, 0%o) called from internal routine", + map, open_flags, dict_flags); + while (strncmp(map, PROXY_COLON, PROXY_COLON_LEN) == 0) + map += PROXY_COLON_LEN; + return (dict_open(map, open_flags, dict_flags)); +} + +/* post_jail_init - initialization after privilege drop */ + +static void post_jail_init(char *unused_name, char **unused_argv) +{ + const char *sep = " \t\r\n"; + char *saved_filter; + char *bp; + char *type_name; + + /* + * Pre-allocate buffers. + */ + request = vstring_alloc(10); + request_map = vstring_alloc(10); + request_key = vstring_alloc(10); + map_type_name_flags = vstring_alloc(10); + + /* + * Prepare the pre-approved list of proxied tables. + */ + saved_filter = bp = mystrdup(var_proxy_read_maps); + proxy_read_maps = htable_create(13); + while ((type_name = mystrtok(&bp, sep)) != 0) { + if (strncmp(type_name, PROXY_COLON, PROXY_COLON_LEN)) + continue; + do { + type_name += PROXY_COLON_LEN; + } while (!strncmp(type_name, PROXY_COLON, PROXY_COLON_LEN)); + if (strchr(type_name, ':') != 0 + && htable_locate(proxy_read_maps, type_name) == 0) + (void) htable_enter(proxy_read_maps, type_name, (char *) 0); + } + myfree(saved_filter); +} + +/* pre_accept - see if tables have changed */ + +static void pre_accept(char *unused_name, char **unused_argv) +{ + if (dict_changed()) { + msg_info("some lookup table has changed -- restarting"); + exit(0); + } +} + +/* main - pass control to the multi-threaded skeleton */ + +int main(int argc, char **argv) +{ + static CONFIG_STR_TABLE str_table[] = { + VAR_LOCAL_RCPT_MAPS, DEF_LOCAL_RCPT_MAPS, &var_local_rcpt_maps, 0, 0, + VAR_VIRT_ALIAS_MAPS, DEF_VIRT_ALIAS_MAPS, &var_virt_alias_maps, 0, 0, + VAR_VIRT_ALIAS_DOMS, DEF_VIRT_ALIAS_DOMS, &var_virt_alias_doms, 0, 0, + VAR_VIRT_MAILBOX_MAPS, DEF_VIRT_MAILBOX_MAPS, &var_virt_mailbox_maps, 0, 0, + VAR_VIRT_MAILBOX_DOMS, DEF_VIRT_MAILBOX_DOMS, &var_virt_mailbox_doms, 0, 0, + VAR_RELAY_RCPT_MAPS, DEF_RELAY_RCPT_MAPS, &var_relay_rcpt_maps, 0, 0, + VAR_RELAY_DOMAINS, DEF_RELAY_DOMAINS, &var_relay_domains, 0, 0, + VAR_CANONICAL_MAPS, DEF_CANONICAL_MAPS, &var_canonical_maps, 0, 0, + VAR_SEND_CANON_MAPS, DEF_SEND_CANON_MAPS, &var_send_canon_maps, 0, 0, + VAR_RCPT_CANON_MAPS, DEF_RCPT_CANON_MAPS, &var_rcpt_canon_maps, 0, 0, + VAR_RELOCATED_MAPS, DEF_RELOCATED_MAPS, &var_relocated_maps, 0, 0, + VAR_TRANSPORT_MAPS, DEF_TRANSPORT_MAPS, &var_transport_maps, 0, 0, + VAR_PROXY_READ_MAPS, DEF_PROXY_READ_MAPS, &var_proxy_read_maps, 0, 0, + 0, + }; + + multi_server_main(argc, argv, proxymap_service, + MAIL_SERVER_STR_TABLE, str_table, + MAIL_SERVER_POST_INIT, post_jail_init, + MAIL_SERVER_PRE_ACCEPT, pre_accept, + 0); +} diff --git a/gnu/dist/postfix/src/qmgr/.indent.pro b/gnu/dist/postfix/src/qmgr/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/qmgr/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/qmgr/qmgr_deliver.c b/gnu/dist/postfix/src/qmgr/qmgr_deliver.c index 1986a074811..2bba1ab1e9a 100644 --- a/gnu/dist/postfix/src/qmgr/qmgr_deliver.c +++ b/gnu/dist/postfix/src/qmgr/qmgr_deliver.c @@ -149,10 +149,15 @@ static int qmgr_deliver_send_request(QMGR_ENTRY *entry, VSTREAM *stream) * queue name is user@nexthop, so that we can implement per-recipient * concurrency limits. However, the delivery agent protocol expects * nexthop only, so we must strip off the recipient local part. + * + * XXX Should have separate fields for queue name and for destination, so + * that we don't have to make a special case for the error delivery agent + * (where nexthop is arbitrary text). See also: qmgr_message.c. */ flags = message->inspect_xport ? DEL_REQ_FLAG_BOUNCE : DEL_REQ_FLAG_DEFLT; - nexthop = (cp = strrchr(entry->queue->name, '@')) != 0 && cp[1] ? + nexthop = strcmp(entry->queue->transport->name, MAIL_SERVICE_ERROR) != 0 + && (cp = strrchr(entry->queue->name, '@')) != 0 && cp[1] ? cp + 1 : entry->queue->name; attr_print(stream, ATTR_FLAG_MORE, ATTR_TYPE_NUM, MAIL_ATTR_FLAGS, flags, diff --git a/gnu/dist/postfix/src/qmqpd/.indent.pro b/gnu/dist/postfix/src/qmqpd/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/qmqpd/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/sendmail/.indent.pro b/gnu/dist/postfix/src/sendmail/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/sendmail/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/showq/.indent.pro b/gnu/dist/postfix/src/showq/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/showq/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/smtp/.indent.pro b/gnu/dist/postfix/src/smtp/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/smtp/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/smtpd/.indent.pro b/gnu/dist/postfix/src/smtpd/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/smtpd/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/smtpd/Makefile.in b/gnu/dist/postfix/src/smtpd/Makefile.in index 2f923e29a03..853e62560b4 100644 --- a/gnu/dist/postfix/src/smtpd/Makefile.in +++ b/gnu/dist/postfix/src/smtpd/Makefile.in @@ -221,6 +221,7 @@ smtpd_check.o: ../../include/rec_type.h smtpd_check.o: ../../include/mail_proto.h smtpd_check.o: ../../include/iostuff.h smtpd_check.o: ../../include/attr.h +smtpd_check.o: ../../include/mail_addr.h smtpd_check.o: smtpd.h smtpd_check.o: ../../include/mail_stream.h smtpd_check.o: smtpd_sasl_glue.h diff --git a/gnu/dist/postfix/src/smtpd/smtpd_chat.c b/gnu/dist/postfix/src/smtpd/smtpd_chat.c index 692a52c6ebe..9d68dd34f3e 100644 --- a/gnu/dist/postfix/src/smtpd/smtpd_chat.c +++ b/gnu/dist/postfix/src/smtpd/smtpd_chat.c @@ -157,7 +157,7 @@ void smtpd_chat_reply(SMTPD_STATE *state, char *format,...) * sleep-on-anything slows down clients that make an excessive number of * errors within a session. */ - if (state->error_count > var_smtpd_soft_erlim) + if (state->error_count >= var_smtpd_soft_erlim) sleep(delay = (state->error_count > var_smtpd_err_sleep ? state->error_count : var_smtpd_err_sleep)); else if (STR(state->buffer)[0] == '4' || STR(state->buffer)[0] == '5') diff --git a/gnu/dist/postfix/src/smtpd/smtpd_sasl_glue.c b/gnu/dist/postfix/src/smtpd/smtpd_sasl_glue.c index c05b7d6721e..936f1673665 100644 --- a/gnu/dist/postfix/src/smtpd/smtpd_sasl_glue.c +++ b/gnu/dist/postfix/src/smtpd/smtpd_sasl_glue.c @@ -310,8 +310,9 @@ void smtpd_sasl_connect(SMTPD_STATE *state) "", " ", "", &state->sasl_mechanism_list, IGNORE_MECHANISM_LEN, - &sasl_mechanism_count) != SASL_OK - || sasl_mechanism_count <= 0) + &sasl_mechanism_count) != SASL_OK) + msg_fatal("cannot lookup SASL authentication mechanisms"); + if (sasl_mechanism_count <= 0) msg_fatal("no SASL authentication mechanisms"); } diff --git a/gnu/dist/postfix/src/smtpstone/.indent.pro b/gnu/dist/postfix/src/smtpstone/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/smtpstone/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/spawn/.indent.pro b/gnu/dist/postfix/src/spawn/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/spawn/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/trivial-rewrite/.indent.pro b/gnu/dist/postfix/src/trivial-rewrite/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/trivial-rewrite/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/trivial-rewrite/resolve.c b/gnu/dist/postfix/src/trivial-rewrite/resolve.c index 0be7fb62357..a02e860184f 100644 --- a/gnu/dist/postfix/src/trivial-rewrite/resolve.c +++ b/gnu/dist/postfix/src/trivial-rewrite/resolve.c @@ -400,12 +400,13 @@ void resolve_addr(char *addr, VSTRING *channel, VSTRING *nexthop, */ if (virt_alias_doms && string_list_match(virt_alias_doms, rcpt_domain)) { - if (var_helpful_warnings - && virt_mailbox_doms - && string_list_match(virt_mailbox_doms, rcpt_domain)) - msg_warn("do not list domain %s in BOTH %s and %s", - rcpt_domain, VAR_VIRT_ALIAS_DOMS, - VAR_VIRT_MAILBOX_DOMS); + if (var_helpful_warnings) { + if (virt_mailbox_doms + && string_list_match(virt_mailbox_doms, rcpt_domain)) + msg_warn("do not list domain %s in BOTH %s and %s", + rcpt_domain, VAR_VIRT_ALIAS_DOMS, + VAR_VIRT_MAILBOX_DOMS); + } vstring_strcpy(channel, MAIL_SERVICE_ERROR); vstring_sprintf(nexthop, "User unknown%s", var_show_unk_rcpt_table ? diff --git a/gnu/dist/postfix/src/trivial-rewrite/transport.c b/gnu/dist/postfix/src/trivial-rewrite/transport.c index 504a777d07c..3c0cfc8a3a2 100644 --- a/gnu/dist/postfix/src/trivial-rewrite/transport.c +++ b/gnu/dist/postfix/src/trivial-rewrite/transport.c @@ -190,6 +190,7 @@ void transport_wildcard_init(void) #define PARTIAL DICT_FLAG_FIXED if (find_transport_entry(WILDCARD, "", FULL, channel, nexthop)) { + transport_errno = 0; wildcard_channel = channel; wildcard_nexthop = nexthop; if (msg_verbose) @@ -294,6 +295,8 @@ int transport_lookup(const char *addr, const char *rcpt_domain, /* * Fall back to the wild-card entry. */ + if (transport_errno) + transport_wildcard_init(); if (transport_errno) { dict_errno = transport_errno; RETURN_FREE(NOTFOUND); diff --git a/gnu/dist/postfix/src/trivial-rewrite/trivial-rewrite.c b/gnu/dist/postfix/src/trivial-rewrite/trivial-rewrite.c index 6e89221adce..759e8e3170e 100644 --- a/gnu/dist/postfix/src/trivial-rewrite/trivial-rewrite.c +++ b/gnu/dist/postfix/src/trivial-rewrite/trivial-rewrite.c @@ -57,6 +57,17 @@ /* This overrides the optional nexthop information that is specified /* with \fB$relayhost\fR. /* The default nexthop is the recipient domain. +/* SERVER PROCESS MANAGEMENT +/* .ad +/* .fi +/* The trivial-rewrite servers run under control by the Postfix master +/* server. Each server can handle multiple simultaneous connections. +/* When all servers are busy while a client connects, the master +/* creates a new server process, provided that the trivial-rewrite +/* server process limit is not exceeded. +/* Each trivial-rewrite server terminates after +/* serving at least \fB$max_use\fR clients of after \fB$max_idle\fR +/* seconds of idle time. /* STANDARDS /* .ad /* .fi diff --git a/gnu/dist/postfix/src/util/.indent.pro b/gnu/dist/postfix/src/util/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/util/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/util/dict.h b/gnu/dist/postfix/src/util/dict.h index 16071a69217..6f30e2fd7ad 100644 --- a/gnu/dist/postfix/src/util/dict.h +++ b/gnu/dist/postfix/src/util/dict.h @@ -59,6 +59,9 @@ extern DICT *dict_debug(DICT *); #define DICT_FLAG_DEBUG (1<<9) /* log access */ #define DICT_FLAG_FOLD_KEY (1<<10) /* lowercase the lookup key */ #define DICT_FLAG_NO_REGSUB (1<<11) /* no lhs->rhs regexp substitution */ +#define DICT_FLAG_NO_PROXY (1<<12) /* no proxy mapping */ + +#define DICT_FLAG_PARANOID (DICT_FLAG_NO_REGSUB | DICT_FLAG_NO_PROXY) extern int dict_unknown_allowed; extern int dict_errno; diff --git a/gnu/dist/postfix/src/util/dict_open.c b/gnu/dist/postfix/src/util/dict_open.c index 2f50076fe62..f949502835d 100644 --- a/gnu/dist/postfix/src/util/dict_open.c +++ b/gnu/dist/postfix/src/util/dict_open.c @@ -84,6 +84,11 @@ /* .IP DICT_FLAG_NO_REGSUB /* Disallow regular expression substitution from left-hand side data /* into the right-hand side. +/* .IP DICT_FLAG_NO_PROXY +/* Disallow access through the \fBproxymap\fR service. +/* .IP DICT_FLAG_PARANOID +/* A combination of all the paranoia flags: DICT_FLAG_NO_REGSUB +/* and DICT_FLAG_NO_PROXY. /* .PP /* Specify DICT_FLAG_NONE for no special processing. /* diff --git a/gnu/dist/postfix/src/util/vstream.c b/gnu/dist/postfix/src/util/vstream.c index 22c59440ca7..5cff4514075 100644 --- a/gnu/dist/postfix/src/util/vstream.c +++ b/gnu/dist/postfix/src/util/vstream.c @@ -640,8 +640,11 @@ static int vstream_buf_get_ready(VBUF *bp) * allocation gives the application a chance to override the default * buffering policy. */ - if (bp->data == 0) + if (bp->data == 0) { vstream_buf_alloc(bp, VSTREAM_BUFSIZE); + if (bp->flags & VSTREAM_FLAG_DOUBLE) + VSTREAM_SAVE_STATE(stream, read_buf, read_fd); + } /* * If the stream is double-buffered and the write buffer is not empty, @@ -724,6 +727,8 @@ static int vstream_buf_put_ready(VBUF *bp) */ if (bp->data == 0) { vstream_buf_alloc(bp, VSTREAM_BUFSIZE); + if (bp->flags & VSTREAM_FLAG_DOUBLE) + VSTREAM_SAVE_STATE(stream, write_buf, write_fd); } else if (bp->cnt <= 0) { if (VSTREAM_FFLUSH_SOME(stream)) return (VSTREAM_EOF); diff --git a/gnu/dist/postfix/src/virtual/.indent.pro b/gnu/dist/postfix/src/virtual/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/virtual/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/virtual/Makefile.in b/gnu/dist/postfix/src/virtual/Makefile.in index da2dc414be3..384cee5cc47 100644 --- a/gnu/dist/postfix/src/virtual/Makefile.in +++ b/gnu/dist/postfix/src/virtual/Makefile.in @@ -11,7 +11,7 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) PROG = virtual TESTPROG= INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a $(AUXLIBS) +LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a .c.o:; $(CC) $(CFLAGS) -c $*.c diff --git a/gnu/dist/postfix/src/virtual/maildir.c b/gnu/dist/postfix/src/virtual/maildir.c index de2637160e0..2f977d916c9 100644 --- a/gnu/dist/postfix/src/virtual/maildir.c +++ b/gnu/dist/postfix/src/virtual/maildir.c @@ -35,6 +35,8 @@ /* System library. */ #include "sys_defs.h" +#include <sys/stat.h> +#include <time.h> #include <errno.h> #ifndef EDQUOT @@ -81,7 +83,8 @@ int deliver_maildir(LOCAL_STATE state, USER_ATTR usr_attr) int mail_copy_status; int deliver_status; int copy_flags; - static int count; + struct stat st; + time_t starttime = time((time_t *) 0); /* * Make verbose logging easier to understand. @@ -121,20 +124,63 @@ int deliver_maildir(LOCAL_STATE state, USER_ATTR usr_attr) * use starttime.pid_count.host, where starttime is the time that your * process started, and count is the number of messages you've * delivered." + * + * Well, that stopped working on fast machines, and on operating systems + * that randomize process ID values. When creating a file in tmp/ we use + * the process ID because it still is an exclusive resource. When moving + * the file to new/ we use the device number and inode number. I do not + * care if this breaks on a remote AFS file system, because people should + * know better. + * + * On January 26, 2003, http://cr.yp.to/proto/maildir.html said: + * + * A unique name has three pieces, separated by dots. On the left is the + * result of time() or the second counter from gettimeofday(). On the + * right is the result of gethostname(). (To deal with invalid host + * names, replace / with \057 and : with \072.) In the middle is a + * delivery identifier, discussed below. + * + * [...] + * + * Modern delivery identifiers are created by concatenating enough of the + * following strings to guarantee uniqueness: + * + * [...] + * + * In, where n is (in hexadecimal) the UNIX inode number of this file. + * Unfortunately, inode numbers aren't always available through NFS. + * + * Vn, where n is (in hexadecimal) the UNIX device number of this file. + * Unfortunately, device numbers aren't always available through NFS. + * (Device numbers are also not helpful with the standard UNIX + * filesystem: a maildir has to be within a single UNIX device for link() + * and rename() to work.) + * + * [...] + * + * Pn, where n is (in decimal) the process ID. + * + * [...] */ #define STR vstring_str set_eugid(usr_attr.uid, usr_attr.gid); - vstring_sprintf(buf, "%ld.%d_%d.%s", (long) var_starttime, - var_pid, count++, get_hostname()); + vstring_sprintf(buf, "%lu.P%d.%s", + (unsigned long) starttime, var_pid, get_hostname()); tmpfile = concatenate(tmpdir, STR(buf), (char *) 0); - newfile = concatenate(newdir, STR(buf), (char *) 0); + newfile = 0; if ((dst = vstream_fopen(tmpfile, O_WRONLY | O_CREAT | O_EXCL, 0600)) == 0 && (errno != ENOENT || make_dirs(tmpdir, 0700) < 0 || (dst = vstream_fopen(tmpfile, O_WRONLY | O_CREAT | O_EXCL, 0600)) == 0)) { vstring_sprintf(why, "create %s: %m", tmpfile); + } else if (fstat(vstream_fileno(dst), &st) < 0) { + vstring_sprintf(why, "create %s: %m", tmpfile); } else { + vstring_sprintf(buf, "%lu.V%lxI%lx.%s", + (unsigned long) starttime, (unsigned long) st.st_dev, + (unsigned long) st.st_ino, get_hostname()); + newfile = concatenate(newdir, STR(buf), (char *) 0); if ((mail_copy_status = mail_copy(COPY_ATTR(state.msg_attr), dst, copy_flags, "\n", why)) == 0) { if (sane_link(tmpfile, newfile) < 0 @@ -172,6 +218,7 @@ int deliver_maildir(LOCAL_STATE state, USER_ATTR usr_attr) myfree(tmpdir); myfree(curdir); myfree(tmpfile); - myfree(newfile); + if (newfile) + myfree(newfile); return (deliver_status); } diff --git a/gnu/dist/postfix/src/virtual/virtual.c b/gnu/dist/postfix/src/virtual/virtual.c index 0ae16d2e7e5..f25f52f4acd 100644 --- a/gnu/dist/postfix/src/virtual/virtual.c +++ b/gnu/dist/postfix/src/virtual/virtual.c @@ -14,7 +14,7 @@ /* /* This delivery agent only delivers mail. Other features such as /* mail forwarding, out-of-office notifications, etc., must be -/* configured via virtual maps or via similar lookup mechanisms. +/* configured via virtual_alias maps or via similar lookup mechanisms. /* MAILBOX LOCATION /* .ad /* .fi @@ -133,6 +133,9 @@ /* For security reasons, regular expression maps are allowed but /* regular expression substitution of $1 etc. is disallowed, /* because that would open a security hole. +/* +/* For security reasons, proxied table lookup is not allowed, +/* because that would open a security hole. /* .IP \fBvirtual_mailbox_domains\fR /* The list of domains that should be delivered via the Postfix virtual /* delivery agent. This uses the same syntax as the \fBmydestination\fR @@ -156,6 +159,9 @@ /* For security reasons, regular expression maps are allowed but /* regular expression substitution of $1 etc. is disallowed, /* because that would open a security hole. +/* +/* For security reasons, proxied table lookup is not allowed, +/* because that would open a security hole. /* .IP \fBvirtual_gid_maps\fR /* Recipients are looked up in these maps to determine the group ID to be /* used when writing to the target mailbox. @@ -170,6 +176,9 @@ /* For security reasons, regular expression maps are allowed but /* regular expression substitution of $1 etc. is disallowed, /* because that would open a security hole. +/* +/* For security reasons, proxied table lookup is not allowed, +/* because that would open a security hole. /* .SH "Locking controls" /* .ad /* .fi @@ -404,15 +413,15 @@ static void post_init(char *unused_name, char **unused_argv) virtual_mailbox_maps = virtual8_maps_create(VAR_VIRT_MAILBOX_MAPS, var_virt_mailbox_maps, - DICT_FLAG_LOCK); + DICT_FLAG_LOCK | DICT_FLAG_PARANOID); virtual_uid_maps = virtual8_maps_create(VAR_VIRT_UID_MAPS, var_virt_uid_maps, - DICT_FLAG_LOCK); + DICT_FLAG_LOCK | DICT_FLAG_PARANOID); virtual_gid_maps = virtual8_maps_create(VAR_VIRT_GID_MAPS, var_virt_gid_maps, - DICT_FLAG_LOCK); + DICT_FLAG_LOCK | DICT_FLAG_PARANOID); virtual_mbox_lock_mask = mbox_lock_mask(var_virt_mailbox_lock); } |
