mirror of
https://github.com/vdukhovni/postfix
synced 2025-08-30 05:38:06 +00:00
postfix-2.0.8-20030417
This commit is contained in:
parent
310a8503ae
commit
81ada73ca4
@ -8001,6 +8001,14 @@ Apologies for any names omitted.
|
||||
from outside of Postfix. Files: cleanup/cleanup_addr.c.
|
||||
cleanup/cleanup_envelope.c cleanup/cleanup_extracted.c.
|
||||
|
||||
20030417
|
||||
|
||||
Feature: the SMTP client now falls back to native name
|
||||
service lookups (including /etc/hosts) when a host cannot
|
||||
be found in the DNS. This is controlled by a new parameter
|
||||
smtp_host_lookup (default: dns, native). Files: smtp/smtp.c,
|
||||
smtp/smtp_addr.c.
|
||||
|
||||
Open problems:
|
||||
|
||||
Low: smtp-source may block when sending large test messages.
|
||||
|
@ -22,18 +22,24 @@ 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 snapshot 2.0.8-2004XXXX
|
||||
Incompatible changes with Postfix snapshot 2.0.8-20030417
|
||||
=========================================================
|
||||
|
||||
"sendmail -t" no longer complains when recipients are given on the
|
||||
command line. Instead, it now adds recipients from headers to the
|
||||
command-line recipients.
|
||||
recipients from the command-line.
|
||||
|
||||
Major changes with Postfix snapshot 2.0.8-2004XXXX
|
||||
Major changes with Postfix snapshot 2.0.8-20030417
|
||||
==================================================
|
||||
|
||||
sender_bcc_maps and recipient_bcc_maps, after a reorganization
|
||||
of how auto-bcc recipients are added.
|
||||
Automatic BCC recipients depending on sender or recipient address.
|
||||
The configuration parameters in question are "sender_bcc_maps" and
|
||||
"recipient_bcc_maps". See conf/sample-misc.cf for details.
|
||||
|
||||
Support for sending mail to hosts not in the DNS, without having
|
||||
to turn off DNS lookups. The "smtp_host_lookup" parameter controls
|
||||
how the Postfix SMTP client looks up hosts. The default is to use
|
||||
DNS and then the native mechanism. See conf/sample-smtp.cf.
|
||||
|
||||
Incompatible changes with Postfix snapshot 2.0.8-20040415
|
||||
=========================================================
|
||||
|
@ -15,6 +15,9 @@ allow_min_user = no
|
||||
# receives a copy of each message that enters the Postfix system,
|
||||
# not including bounces that are generated locally.
|
||||
#
|
||||
# NOTE: if mail to the BCC address bounces it will be returned to
|
||||
# the sender.
|
||||
#
|
||||
always_bcc =
|
||||
|
||||
# The daemon_timeout parameter specifies how much time a daemon may
|
||||
@ -416,6 +419,9 @@ recipient_delimiter =
|
||||
# Specify the types and names of databases to use. After change,
|
||||
# run "postmap /etc/postfix/relocated", then "postfix reload".
|
||||
#
|
||||
# NOTE: if mail to the BCC address bounces it will be returned to
|
||||
# the sender.
|
||||
#
|
||||
#recipient_bcc_maps = hash:/etc/postfix/recipient_bcc
|
||||
recipient_bcc_maps =
|
||||
|
||||
@ -476,6 +482,9 @@ resolve_dequoted_address = no
|
||||
# Specify the types and names of databases to use. After change,
|
||||
# run "postmap /etc/postfix/relocated", then "postfix reload".
|
||||
#
|
||||
# NOTE: if mail to the BCC address bounces it will be returned to
|
||||
# the sender.
|
||||
#
|
||||
#sender_bcc_maps = hash:/etc/postfix/sender_bcc
|
||||
sender_bcc_maps =
|
||||
|
||||
|
@ -155,6 +155,20 @@ smtp_destination_concurrency_limit = 20
|
||||
#
|
||||
smtp_destination_recipient_limit = $default_destination_recipient_limit
|
||||
|
||||
# The smtp_host_lookup parameter specifies what mechanism(s) to use
|
||||
# when the SMTP client looks up a host. This parameter is ignored
|
||||
# when DNS lookups are disabled.
|
||||
#
|
||||
# The default is to use both DNS and the native naming service which
|
||||
# (also) uses /etc/hosts.
|
||||
#
|
||||
# Specify "dns" if hosts can be found in the DNS (preferred).
|
||||
# Specify "dns, native" if some hosts are not in the DNS.
|
||||
# Specify "native" to use the native naming service only.
|
||||
#
|
||||
#smtp_host_lookup = dns
|
||||
smtp_host_lookup = dns, native
|
||||
|
||||
#
|
||||
# TIMEOUT CONTROLS
|
||||
#
|
||||
|
@ -138,10 +138,10 @@ SENDMAIL(1) SENDMAIL(1)
|
||||
This mode of operation is implemented by running
|
||||
the <a href="smtpd.8.html"><b>smtpd</b>(8)</a> daemon.
|
||||
|
||||
<b>-bv</b> Send an email report after verifying each recipient
|
||||
address. Verification always happens in the back-
|
||||
ground. This is useful for testing address rewrit-
|
||||
ing and routing configurations.
|
||||
<b>-bv</b> Do not collect or deliver a message. Instead, send
|
||||
an email report after verifying each recipient
|
||||
address. This is useful for testing address
|
||||
rewriting and routing configurations.
|
||||
|
||||
<b>-f</b> <i>sender</i>
|
||||
Set the envelope sender address. This is the
|
||||
|
@ -89,6 +89,13 @@ SMTP(8) SMTP(8)
|
||||
Disable DNS lookups. This means that mail must be
|
||||
forwarded via a smart relay host.
|
||||
|
||||
<b>smtp</b><i>_</i><b>host</b><i>_</i><b>lookup</b>
|
||||
What host lookup mechanism the SMTP client should
|
||||
use. Specify <b>dns</b> (use DNS lookup) and/or <b>native</b>
|
||||
(use the native naming service which also uses
|
||||
/etc/hosts). This setting is ignored when DNS
|
||||
lookups are disabled.
|
||||
|
||||
<b>error</b><i>_</i><b>notice</b><i>_</i><b>recipient</b>
|
||||
Recipient of protocol/policy/resource/software
|
||||
error notices.
|
||||
|
@ -121,8 +121,8 @@ run the process as the \fBmail_owner\fR user.
|
||||
This mode of operation is implemented by running the
|
||||
\fBsmtpd\fR(8) daemon.
|
||||
.IP \fB-bv\fR
|
||||
Send an email report after verifying each recipient address.
|
||||
Verification always happens in the background. This is useful
|
||||
Do not collect or deliver a message. Instead, send an email
|
||||
report after verifying each recipient address. This is useful
|
||||
for testing address rewriting and routing configurations.
|
||||
.IP "\fB-f \fIsender\fR"
|
||||
Set the envelope sender address. This is the address where
|
||||
|
@ -95,6 +95,11 @@ specified in the \fBdebug_peer_level\fR parameter.
|
||||
.IP \fBdisable_dns_lookups\fR
|
||||
Disable DNS lookups. This means that mail must be forwarded
|
||||
via a smart relay host.
|
||||
.IP \fBsmtp_host_lookup\fR
|
||||
What host lookup mechanism the SMTP client should use.
|
||||
Specify \fBdns\fR (use DNS lookup) and/or \fBnative\fR
|
||||
(use the native naming service which also uses /etc/hosts).
|
||||
This setting is ignored when DNS lookups are disabled.
|
||||
.IP \fBerror_notice_recipient\fR
|
||||
Recipient of protocol/policy/resource/software error notices.
|
||||
.IP \fBfallback_relay\fR
|
||||
|
@ -129,12 +129,13 @@ cleanup_addr.o: ../../include/mail_params.h
|
||||
cleanup_addr.o: ../../include/ext_prop.h
|
||||
cleanup_addr.o: ../../include/mail_addr.h
|
||||
cleanup_addr.o: ../../include/canon_addr.h
|
||||
cleanup_addr.o: cleanup.h
|
||||
cleanup_addr.o: ../../include/argv.h
|
||||
cleanup_addr.o: ../../include/nvtable.h
|
||||
cleanup_addr.o: ../../include/htable.h
|
||||
cleanup_addr.o: ../../include/mail_addr_find.h
|
||||
cleanup_addr.o: ../../include/maps.h
|
||||
cleanup_addr.o: ../../include/dict.h
|
||||
cleanup_addr.o: ../../include/argv.h
|
||||
cleanup_addr.o: cleanup.h
|
||||
cleanup_addr.o: ../../include/nvtable.h
|
||||
cleanup_addr.o: ../../include/htable.h
|
||||
cleanup_addr.o: ../../include/tok822.h
|
||||
cleanup_addr.o: ../../include/resolve_clnt.h
|
||||
cleanup_addr.o: ../../include/been_here.h
|
||||
|
@ -75,12 +75,14 @@
|
||||
#include <ext_prop.h>
|
||||
#include <mail_addr.h>
|
||||
#include <canon_addr.h>
|
||||
#include <mail_addr_find.h>
|
||||
|
||||
/* Application-specific. */
|
||||
|
||||
#include "cleanup.h"
|
||||
|
||||
#define STR vstring_str
|
||||
#define STR vstring_str
|
||||
#define IGNORE_EXTENSION (char **) 0
|
||||
|
||||
/* cleanup_addr_sender - process envelope sender record */
|
||||
|
||||
@ -111,7 +113,8 @@ void cleanup_addr_sender(CLEANUP_STATE *state, const char *buf)
|
||||
if ((state->flags & CLEANUP_FLAG_BCC_OK)
|
||||
&& *STR(clean_addr)
|
||||
&& cleanup_send_bcc_maps
|
||||
&& (bcc = maps_find(cleanup_send_bcc_maps, STR(clean_addr), 0)) != 0)
|
||||
&& (bcc = mail_addr_find(cleanup_send_bcc_maps, STR(clean_addr),
|
||||
IGNORE_EXTENSION)) != 0)
|
||||
cleanup_addr_bcc(state, bcc);
|
||||
vstring_free(clean_addr);
|
||||
}
|
||||
@ -139,7 +142,8 @@ void cleanup_addr_recipient(CLEANUP_STATE *state, const char *buf)
|
||||
if ((state->flags & CLEANUP_FLAG_BCC_OK)
|
||||
&& *STR(clean_addr)
|
||||
&& cleanup_rcpt_bcc_maps
|
||||
&& (bcc = maps_find(cleanup_rcpt_bcc_maps, STR(clean_addr), 0)) != 0)
|
||||
&& (bcc = mail_addr_find(cleanup_rcpt_bcc_maps, STR(clean_addr),
|
||||
IGNORE_EXTENSION)) != 0)
|
||||
cleanup_addr_bcc(state, bcc);
|
||||
vstring_free(clean_addr);
|
||||
}
|
||||
|
@ -173,6 +173,13 @@ extern char *var_fallback_relay;
|
||||
#define DEF_DISABLE_DNS 0
|
||||
extern bool var_disable_dns;
|
||||
|
||||
#define SMTP_HOST_LOOKUP_DNS "dns"
|
||||
#define SMTP_HOST_LOOKUP_NATIVE "native"
|
||||
|
||||
#define VAR_SMTP_HOST_LOOKUP "smtp_host_lookup"
|
||||
#define DEF_SMTP_HOST_LOOKUP SMTP_HOST_LOOKUP_DNS "," SMTP_HOST_LOOKUP_NATIVE
|
||||
extern int var_smtp_dns_lookup;
|
||||
|
||||
/*
|
||||
* Location of the mail queue directory tree.
|
||||
*/
|
||||
|
@ -20,7 +20,7 @@
|
||||
* 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 "20030416"
|
||||
#define MAIL_RELEASE_DATE "20030417"
|
||||
|
||||
#define VAR_MAIL_VERSION "mail_version"
|
||||
#define DEF_MAIL_VERSION "2.0.8-" MAIL_RELEASE_DATE
|
||||
|
@ -73,6 +73,7 @@ sendmail.o: ../../include/iostuff.h
|
||||
sendmail.o: ../../include/stringops.h
|
||||
sendmail.o: ../../include/set_ugid.h
|
||||
sendmail.o: ../../include/connect.h
|
||||
sendmail.o: ../../include/split_at.h
|
||||
sendmail.o: ../../include/mail_queue.h
|
||||
sendmail.o: ../../include/mail_proto.h
|
||||
sendmail.o: ../../include/attr.h
|
||||
@ -92,3 +93,5 @@ sendmail.o: ../../include/mail_stream.h
|
||||
sendmail.o: ../../include/verp_sender.h
|
||||
sendmail.o: ../../include/deliver_request.h
|
||||
sendmail.o: ../../include/recipient_list.h
|
||||
sendmail.o: ../../include/mime_state.h
|
||||
sendmail.o: ../../include/header_opts.h
|
||||
|
@ -115,8 +115,8 @@
|
||||
/* This mode of operation is implemented by running the
|
||||
/* \fBsmtpd\fR(8) daemon.
|
||||
/* .IP \fB-bv\fR
|
||||
/* Send an email report after verifying each recipient address.
|
||||
/* Verification always happens in the background. This is useful
|
||||
/* Do not collect or deliver a message. Instead, send an email
|
||||
/* report after verifying each recipient address. This is useful
|
||||
/* for testing address rewriting and routing configurations.
|
||||
/* .IP "\fB-f \fIsender\fR"
|
||||
/* Set the envelope sender address. This is the address where
|
||||
@ -353,7 +353,7 @@
|
||||
char *verp_delims;
|
||||
|
||||
/*
|
||||
* Context for extracting recipients.
|
||||
* Callback context for extracting recipients.
|
||||
*/
|
||||
typedef struct SM_STATE {
|
||||
VSTREAM *dst; /* output stream */
|
||||
|
@ -79,6 +79,11 @@
|
||||
/* .IP \fBdisable_dns_lookups\fR
|
||||
/* Disable DNS lookups. This means that mail must be forwarded
|
||||
/* via a smart relay host.
|
||||
/* .IP \fBsmtp_host_lookup\fR
|
||||
/* What host lookup mechanism the SMTP client should use.
|
||||
/* Specify \fBdns\fR (use DNS lookup) and/or \fBnative\fR
|
||||
/* (use the native naming service which also uses /etc/hosts).
|
||||
/* This setting is ignored when DNS lookups are disabled.
|
||||
/* .IP \fBerror_notice_recipient\fR
|
||||
/* Recipient of protocol/policy/resource/software error notices.
|
||||
/* .IP \fBfallback_relay\fR
|
||||
@ -292,12 +297,14 @@ int var_smtp_pix_thresh;
|
||||
int var_smtp_pix_delay;
|
||||
int var_smtp_line_limit;
|
||||
char *var_smtp_helo_name;
|
||||
char *var_smtp_host_lookup;
|
||||
|
||||
/*
|
||||
* Global variables. smtp_errno is set by the address lookup routines and by
|
||||
* the connection management routines.
|
||||
*/
|
||||
int smtp_errno;
|
||||
int smtp_host_lookup_mask;
|
||||
|
||||
/* deliver_message - deliver message with extreme prejudice */
|
||||
|
||||
@ -401,8 +408,33 @@ static void smtp_service(VSTREAM *client_stream, char *unused_service, char **ar
|
||||
|
||||
static void pre_init(char *unused_name, char **unused_argv)
|
||||
{
|
||||
static NAME_MASK lookup_masks[] = {
|
||||
SMTP_HOST_LOOKUP_DNS, SMTP_MASK_DNS,
|
||||
SMTP_HOST_LOOKUP_NATIVE, SMTP_MASK_NATIVE,
|
||||
0,
|
||||
};
|
||||
|
||||
/*
|
||||
* Turn on per-peer debugging.
|
||||
*/
|
||||
debug_peer_init();
|
||||
|
||||
/*
|
||||
* Select hostname lookup mechanisms.
|
||||
*/
|
||||
if (var_disable_dns)
|
||||
smtp_host_lookup_mask = SMTP_MASK_NATIVE;
|
||||
else
|
||||
smtp_host_lookup_mask = name_mask(VAR_SMTP_HOST_LOOKUP, lookup_masks,
|
||||
var_smtp_host_lookup);
|
||||
if (msg_verbose)
|
||||
msg_info("host name lookup methods: %s",
|
||||
str_name_mask(VAR_SMTP_HOST_LOOKUP, lookup_masks,
|
||||
smtp_host_lookup_mask));
|
||||
|
||||
/*
|
||||
* SASL initialization.
|
||||
*/
|
||||
if (var_smtp_sasl_enable)
|
||||
#ifdef USE_SASL_AUTH
|
||||
smtp_sasl_initialize();
|
||||
@ -417,7 +449,7 @@ static void pre_init(char *unused_name, char **unused_argv)
|
||||
static void pre_accept(char *unused_name, char **unused_argv)
|
||||
{
|
||||
const char *table;
|
||||
|
||||
|
||||
if ((table = dict_changed_name()) != 0) {
|
||||
msg_info("table %s has changed -- restarting", table);
|
||||
exit(0);
|
||||
@ -447,6 +479,7 @@ int main(int argc, char **argv)
|
||||
VAR_SMTP_SASL_OPTS, DEF_SMTP_SASL_OPTS, &var_smtp_sasl_opts, 0, 0,
|
||||
VAR_SMTP_BIND_ADDR, DEF_SMTP_BIND_ADDR, &var_smtp_bind_addr, 0, 0,
|
||||
VAR_SMTP_HELO_NAME, DEF_SMTP_HELO_NAME, &var_smtp_helo_name, 1, 0,
|
||||
VAR_SMTP_HOST_LOOKUP, DEF_SMTP_HOST_LOOKUP, &var_smtp_host_lookup, 1, 0,
|
||||
0,
|
||||
};
|
||||
static CONFIG_TIME_TABLE time_table[] = {
|
||||
|
@ -69,6 +69,10 @@ typedef struct SMTP_STATE {
|
||||
* smtp.c
|
||||
*/
|
||||
extern int smtp_errno; /* XXX can we get rid of this? */
|
||||
extern int smtp_host_lookup_mask; /* host lookup methods to use */
|
||||
|
||||
#define SMTP_MASK_DNS (1<<0)
|
||||
#define SMTP_MASK_NATIVE (1<<1)
|
||||
|
||||
/*
|
||||
* smtp_session.c
|
||||
|
@ -175,9 +175,32 @@ static DNS_RR *smtp_addr_one(DNS_RR *addr_list, char *host, unsigned pref, VSTRI
|
||||
}
|
||||
|
||||
/*
|
||||
* Use gethostbyname() when DNS is disabled.
|
||||
* Use DNS lookup, but keep the option open to use native name service.
|
||||
*/
|
||||
if (var_disable_dns) {
|
||||
if (smtp_host_lookup_mask & SMTP_MASK_DNS) {
|
||||
switch (dns_lookup(host, T_A, RES_DEFNAMES, &addr, (VSTRING *) 0, why)) {
|
||||
case DNS_OK:
|
||||
for (rr = addr; rr; rr = rr->next)
|
||||
rr->pref = pref;
|
||||
addr_list = dns_rr_append(addr_list, addr);
|
||||
return (addr_list);
|
||||
default:
|
||||
smtp_errno = SMTP_RETRY;
|
||||
return (addr_list);
|
||||
case DNS_FAIL:
|
||||
smtp_errno = SMTP_FAIL;
|
||||
return (addr_list);
|
||||
case DNS_NOTFOUND:
|
||||
smtp_errno = SMTP_FAIL;
|
||||
/* maybe gethostbyname() will succeed */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Use the native name service which also looks in /etc/hosts.
|
||||
*/
|
||||
if (smtp_host_lookup_mask & SMTP_MASK_NATIVE) {
|
||||
memset((char *) &fixed, 0, sizeof(fixed));
|
||||
if ((hp = gethostbyname(host)) == 0) {
|
||||
vstring_sprintf(why, "%s: %s", host, HSTRERROR(h_errno));
|
||||
@ -200,22 +223,8 @@ static DNS_RR *smtp_addr_one(DNS_RR *addr_list, char *host, unsigned pref, VSTRI
|
||||
}
|
||||
|
||||
/*
|
||||
* Append the addresses for this host to the address list.
|
||||
* No further alternatives for host lookup.
|
||||
*/
|
||||
switch (dns_lookup(host, T_A, RES_DEFNAMES, &addr, (VSTRING *) 0, why)) {
|
||||
case DNS_OK:
|
||||
for (rr = addr; rr; rr = rr->next)
|
||||
rr->pref = pref;
|
||||
addr_list = dns_rr_append(addr_list, addr);
|
||||
break;
|
||||
default:
|
||||
smtp_errno = SMTP_RETRY;
|
||||
break;
|
||||
case DNS_NOTFOUND:
|
||||
case DNS_FAIL:
|
||||
smtp_errno = SMTP_FAIL;
|
||||
break;
|
||||
}
|
||||
return (addr_list);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user